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

	* config/ia64/ia64.c (mark_reg_gr_used_mask): Mind HARD_REGNO_NREGS.

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

	* regrename.c (build_def_use): Don't rename asm operands that
	were originally hard registers.
	(copyprop_hardreg_forward_1): Likewise.
	(find_oldest_value_reg): Copy ORIGINAL_REGNO from source.
	* varasm.c (make_decl_rtl): Use gen_rtx_raw_REG.  Set ORIGINAL_REGNO.

2001-12-31  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (HAS_INIT_SECTION, NEED_ATEXIT): Remove.
	(NAME__MAIN, SYMBOL__MAIN): Define.

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

	* cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL
	before decrementing LABEL_NUSES from a jump table.

	* final.c (alter_subreg): Assign REGNO after changing the rtx code.

	* config/alpha/alpha.c (reg_no_subreg_operand): Reject all
	non-registers.

2001-12-31  Graham Stott  <grahams@redhat.com>

	* halfpic.h: Remove foward defs of tree_node and rtx_def.

        * toplev.h: Remove forward def of tree_node, rtx_def.

	* except.h: Remove forward def of tree_node, rtx_def and
	define of tree, rtx. Also remove undefs.

	* basic-block.h: Remove forward def of tree_node and
	define of tree.

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

	* cfglayout.c (scope_def, scope_forest_info, forest,
	relate_bbs_with_scopes, make_new_scope, build_scope_forest,
	remove_scope_notes, insert_intra_before_1, insert_intra_1,
	insert_intra_bb_scope_notes, insert_inter_bb_scope_notes,
	rebuild_scope_notes, free_scope_forest_1, dump_scope_forest,
	dump_scope_forest_1, get_next_bb_note, get_prev_bb_note): Remove.
	(fixup_reorder_chain): Don't set scope for bb.
	(insn_scopes, scope_to_insns_initialize, set_block_levels,
	change_scope, scope_to_insns_finalize): New.
	(cfg_layout_initialize, cfg_layout_finalize): Update to match.
	* cfglayout.h (scope_def, scope): Remove.
	(reorder_block_def): Remove scope member.
	(scope_to_insns_initialize, scope_to_insns_finalize): Declare.
	* haifa-sched.c: Revert reemit_other_notes change.
	* sched-ebb.c (schedule_ebbs): Don't call remove_unnecessary_notes.
	Use scope_to_insns_initialize and scope_to_insns_finalize.
	* sched-rgn.c (schedule_insns): Likewise.

2001-12-31  Graham Stott  <grahams@redhat.com>

	* c-lex.c: Include tree.h before expr.h

	* c-typeck.c: Include rtl.h earlier.

	* tree.h (STRIP_NOPS): Remove extraneous semicolon.
	(STRIP_SIGN_NOPS): Likewise.
	(STRIP_TYPE_NOPS): Likewise.
	(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): Add Parenthesis around
	macro paramater.

	* final.c (struct bb_list): Delete.
	(struct bb_str): Likewise.

	* cfgloop.c (flow_loop_entry_edges_find): Fix typo.
        (flow_loop_exit_edges_find): Likewise.

	* gcse.c (gcse_main): Fix typos.
	(alloc_gcse_mem): Likewise.

	* function.h: Remove undefs for rtx and tree.

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

	* loop.c (check_dbra_loop): Fix last change: examine both
	has_multiple_exit_targets and exit_count.

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

	* integrate.c (copy_rtx_and_substitute): Fix error last change:
	we need to unconditionally create a new mem.

2001-12-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("*call_real"): Fix typo in comment.
	* config/mmix/mmix.h (EXTRA_CONSTRAINT): Pass MMIX_REG_OK_STRICT
	to mmix_extra_constraint.
	* config/mmix/mmix.c (mmix_secondary_reload_class): Only handle
	non-global register classes.  Mark now unused parameters as such.
	(mmix_extra_constraint, 'U'): Use new parameter strict and call
	calling memory_operand_p or strict_memory_address_p, not
	address_operand.
	* config/mmix/mmix-protos.h (mmix_extra_constraint): Add parameter.

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

	* unroll.c: Move include files above first use of `const'.

2001-12-30  Jakub Jelinek  <jakub@redhat.com>

	* cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump
	to fail if target is EXIT_BLOCK_PTR, die otherwise.
	(redirect_edge_and_branch): Likewise.
	* cfgcleanup.c (try_forward_edge): Don't force jump redirecting
	if target is EXIT_BLOCK_PTR.

2001-12-29  David Edelsohn  <edelsohn@gnu.org>

	* gcc.c (init_gcc_spec): Do not link with static libgcc.a if
	gcc invoked with -shared.

2001-12-29  Graham Stott  <grahams@redhat.com>

        * config/i386/i386.c (ix86_asm_dialect): Fix enum type.

        (override_options): Delete abs macro unused.

        (output_pic_addr_const): Use ASM_ATT/ASM_INTEL enumerations
        when testing ASSEMBLER_DIALECT.

        (print_reg): Likewise.
        (print_operand): Likewise.
        (print_operand_address): Likewise.
        (print_operand): abort if ASSEMBLER_DIALECT is unknown dialect.

        * config/i386/i386.h (ix86_asm_dialect): Fix enum type.

        (FIND_BASE_TERM): Fix typo.

Sat Dec 29 15:48:54 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_field): Use adjust_address, not PUT_MODE.
	(expand_expr, case VIEW_CONVERT_EXPR): Likewise.
	* reload1.c (eliminate_regs, case SUBREG): Likewise, but use
	adjust_address_nv.
	* varasm.c (make_decl_rtl): Likewise.
	* integrate.c (copy_rtx_and_substitute, case MEM): Likewise, but use
	replace_equiv_address_nv.

	* varasm.c (decode_addr_const, case INTEGER_CST): Call
	output_constant_def instead of looking at TREE_CST_RTL.

	* expr.c (convert_move): If -fforce-mem, force FROM to not be memory.

	* stor-layout.c (layout_decl): Don't misalign field of variable size
	for packed record.

	* dwarf2out.c (compute_section_prefix): Avoid cast warning.
	(gen_decl_die): Only check DECL_IGNORED_P on decls.
	(dwarf2out_decl): Check for DECL_IGNORED_P only when needed.

2001-12-29  Jakub Jelinek  <jakub@redhat.com>

	* cfglayout.c (insert_intra_before_1): New.
	(insert_inter_bb_scope_notes): Emit sibling block notes which don't
	span multiple basic blocks.

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

	* loop.c (prescan_loop): Set has_multiple_exit_targets for exception
	edges.  Rearrange jump interpretation code to use pc_set.
	(check_dbra_loop): Examine has_multiple_exit_targets not exit_count.

	* sched-deps.c (sched_analyze_insn): Set scheduling barrier for
	all insns that can throw, not just if flag_non_call_exceptions.

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

	* objc/objc-act.c (STRING_OBJECT_CLASS_NAME): Remove.
	(default_constant_string_class_name): New global.
	(objc_init): Set it.
	(synth_module_prologue): Use it.

	* objc/objc-act.c: Apply various cosmetic and formatting changes.

2001-12-29  Kazu Hirata  <kazu@hxi.com>

	* config/rs6000/darwin-tramp.asm: Fix comment formatting.
	* config/rs6000/freebsd.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.

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

	* objc/objc-act.c (build_module_descriptor): Make sure the init
	function is not deferred.
	(build_dispatch_table_initializer): Compute the method encoding if
	not already done.

2001-12-28  Kazu Hirata  <kazu@hxi.com>

	* doc/md.texi: Add @findex define_insn_and_split.

2001-12-28  Hans Bohem  <hans_boehm@hp.com>

	* config/ia64/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.
	* config/ia64/unwind-ia64.c (uw_init_context_1): Redo sp, psp,
	bsp setup.  Set pri_unat_loc to something reasonable.
	(uw_install_context): Add missing cast.
	(unw_access_gr): Fix off-by-1 indexing error.

2001-12-28  Kazu Hirata  <kazu@hxi.com>

	* except.c: Fix comment formatting.
	* flags.h: Likewise.
	* flow.c: Likewise.
	* predict.c: Likewise.
	* simplify-rtx.c: Likewise.
	* system.h: Likewise.
	* vmsdbg.h: Likewise.
	* vmsdbgout.c: Likewise.

2001-12-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Fix formatting.

2001-12-28  Geoff Keating  <geoffk@redhat.com>

	* varasm.c (record_constant_1): Correct parameter to recursive
	call in default case.

2001-12-28  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (ASM_PREFERRED_EH_DATA_FORMAT,
	ASM_OUTPUT_DWARF_PCREL): Define.
	* config/sparc/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
	* configure.in (HAVE_AS_SPARC_UA_PCREL): Check whether as supports
	.uaword %r_disp32() and linker handles it correctly.
	* configure, config.in: Rebuilt.

2001-12-28  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (store_init_value): If initializing object with array
	type of unknown size by a compound literal, set object's size from
	compound literal size.
	* doc/extend.texi (Compound Literals): Adjust documentation.

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

	* real.c (etoe113, toe113): Ifndef INTEL_EXTENDED_IEEE_FORMAT.
	(endian): Clear word 3 for INTEL_EXTENDED_IEEE_FORMAT.
	(etartdouble): Invoke etoe64 for INTEL_EXTENDED_IEEE_FORMAT.
	* real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Don't special case
	INTEL_EXTENDED_IEEE_FORMAT.

2001-12-27  Geoff Keating  <geoffk@redhat.com>

	* combine.c (try_combine): Mask off sign bits when combining
	stores to the low and high parts of a two-word value.

	* expr.c (expand_expr): Don't mark memory for non-constants as
	constant.

Thu Dec 27 20:39:55 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* integrate.c (copy_rtx_and_substitute, case MEM): If inlining
	and not for LHS, clear RTX_UNCHANGING_P.

2001-12-28  Philipp Thomas  <pthomas@suse.de>

	* cppfiles.c (stack_include_file): Don't translate <stdin>.

2001-12-27  Roger Sayle <roger@eyesopen.com>

	* builtins.c (expand_builtin_memcmp): Optimize memcmp built-in
	when all arguments are known constant.  Fixes PR opt/3508.

2001-12-27  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (two anonymous patterns): Remove.

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

	* haifa-sched.c (reemit_other_notes): New.
	(schedule_block): Use it.
	* sched-ebb.c (schedule_ebbs): Call remove_unnecessary_notes.
	* sched-rgn.c (schedule_insns): Likewise.
	* cfglayout.c (remove_scope_notes): Handle removing note at
	the end of the insn chain.
	* function.c (debug_find_var_in_block_tree): New.

2001-12-27  Alan Modra  <amodra@bigpond.net.au>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/linux64.h (ASM_DECLARE_FUNCTION_NAME): Simplify.

2001-12-27  Jakub Jelinek  <jakub@redhat.com>

	* toplev.c (independent_decode_option): Re-add -aux-info option
	handling.

Thu Dec 27 09:50:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* integrate.c (copy_insn_notes): Don't adjust REG_EH_REGION note
	if special value.

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

	* collect2.c (is_ctor_dtor): Const-ify.
	* m88k-protos.h (output_file_start): Likewise.
	* m88k.c (m88k_lang_independent_options, output_options,
	output_file_start): Likewise.
	* fix-header.c (files_to_ignore, std_include_entry, include_entry,
	std_include_table, main): Likewise.
	* protoize.c (longopts): Likewise.
	* regclass.c (int_reg_class_contents): Likewise.
	* toplev.c (dump_file, f_options, W_options): Make static.
	(lang_independent_options, f_options, W_options): Const-ify.
	* tree-dump.c (dump_file_info): Likewise.
	* unroll.c (_factor): Make static.

Wed Dec 26 17:55:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (alpha_align_insns): Remove warning.

	* config/sparc/sparc.md (call struct patterns): Show starting
	at two words long.

2001-12-26  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.h (ASM_CPU_SPEC, CPP_CPU_SPEC): Add mcpu=405.
	* sysv4.h (CPP_SYSV_SPEC, CPP_OS_VXWORKS_SPEC): Add mcpu=405.

2001-12-26  DJ Delorie  <dj@redhat.com>

	* function.c (expand_main_function): Make sure stack adjustments
	happen before sjlj exception setup.

2001-12-26  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (indirect_jump): Prefer CTR over LR.
	* xcoff.h (ASM_DECLARE_FUNCTION_NAME): Handle weak function.

Tue Dec 25 12:04:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c: Reformatting and minor code rearrangement.

2001-12-24  Douglas B. Rupp (rupp@gnat.com)

	* configure.in (quoted_stage_prefix_set_by_configure): Generate.
	* configure: Regenerated.
	* Makefile.in (SUBDIR_FLAGS_TO_PASS): Use
	quoted_stage_prefix_set_by_configure.

Mon Dec 24 10:24:59 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.h (in_expr_list_p): New declaration.
	* rtlanal.c (in_expr_list_p): New function.
	* cfgcleanup.c: Reformatting and minor code rearrangement.
	* cfglayout.c, cfgloop.c, cfgrtl.c: Likewise.

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

	PR c/5163:
	* c-decl.c (duplicate_decls): As needed, set DECL_INLINE when
	we have a function body associated.  Minor cleanups.
	(grokdeclarator): Do not set DECL_INLINE without a function body.

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

	* stmt.c (resolve_operand_names): Handle operand modifiers.

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

	* stmt.c (parse_input_constraint): Break out from ...
	(expand_asm_operands): ... here.  Loop over the operands twice,
	the first time only calling mark_addressable.  Correct and simplify
	the conditions for spilling an output operand to memory.

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

	* config/alpha/alpha.c (call_operand) [OSF]: Disallow virtual regs.

	* config/alpha/alpha.md (UNSPEC_SIBCALL): New.
	(sibcall, sibcall_value, sibcall_osf_1_er, sibcall_osf_1): Use it.
	(sibcall_value_osf_1_er, sibcall_value_osf_1): Likewise.

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

	* c-typeck.c (c_start_case): Don't strip conversions from the
	controlling expression.  Partially fixes PR c/2454.

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

	* Makefile.in (USER_H): Remove proto.h.
	* config.gcc (c*-convex-*): Set extra_headers=proto.h.

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

	* arc.c (arc_hard_regno_mode_ok): Const-ify.
	* arc.h (arc_hard_regno_mode_ok): Likewise.
	* i386.c (x86_64_reg_class_name): Make static.
	* m68k.c (regno_reg_class): Const-ify.
	* m68k.h (regno_reg_class): Likewise.
	* mcore.c (reg_class_from_letter): Likewise.
	* mcore.h (reg_class_from_letter): Likewise.
	* sh.c (reg_class_from_letter, ashiftrt_insns, shift_insns,
	ext_shift_insns, ext_shift_amounts): Likewise.
	* sh.h (reg_class_from_letter): Likewise.
	* sparc.c (hard_regno_mode_classes, hard_32bit_mode_classes,
	hard_64bit_mode_classes): Likewise.
	* sparc.h (hard_regno_mode_classes): Likewise.

	* gcc.c (modify_target): Make static.
	* gengenrtl.c (defs, formats): Likewise.
	* reload1.c (elim_table_1, init_elim_table): Const-ify.
	* tradcpp.c (directive, directive_table, handle_directive,
	skip_if_group, run_directive): Likewise.

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

	* calls.c (expand_call): Don't turn off ECF_LIBCALL_BLOCK for
	an invalid result register; do end the sequence properly.
	(emit_library_call_value_1): Likewise.

2001-12-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (rs6000_builtins): Add vsldoi variants.

	* config/rs6000/rs6000.md ("altivec_vsldoi_*"): Same.

	* config/rs6000/rs6000.c: Clean up some spacing and indentation.
	(altivec_init_builtins): Add tree types for builtins with 4 bit
	literals.
	(bdesc_3arg): Add vsldoi variants.

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

	* 1750a.h (datalbl, jmplbl): Declare array size explicitly.
	* a29k.h (a29k_debug_reg_map): Likewise.
	* arc.h (arc_regno_reg_class): Likewise.
	* c4x-protos.h (c4x_regclass_map, c4x_caller_save_map): Likewise.
	* convex.h (regno_reg_class, reg_class_from_letter): Likewise.
	* d30v.h (regno_reg_class, reg_class_from_letter): Likewise.
	* i386.h (regclass_map): Likewise.
	* m32r.h (m32r_hard_regno_mode_ok, m32r_punct_chars): Likewise.
	* mcore.h (regno_reg_class): Likewise.
	* mips.h (mips_print_operand_punct, mips_char_to_class):
	Likewise.
	* ns32k.h (regclass_map): Likewise.
	* pj.h (pj_debugreg_renumber_vec): Likewise.
	* s390.h (regclass_map): Likewise.
	* sh.h (regno_reg_class): Likewise.
	* sparc.h (sparc_regno_reg_class): Likewise.

	* hard-reg-set.h (reg_class_contents): Likewise.
	* machmode.h (class_narrowest_mode): Likewise.

2001-12-22  David Edelsohn  <edelsohn@gnu.org>

	* loop.c (scan_loop, move_movables, count_one_set): Do not
	overlook hard registers when computing statistics.

Sun Dec 23 00:49:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* calls.c (ECF_LIBCALL_BLOCK): New constant.
	(emit_call_1, initialize_argument_information,
	precompute_arguments, expand_call,
	emit_library_call_value_1): Use ECF_LIBCALL_BLOCK
	instead of ECF_PURE | ECF_CONST. Honnor LCT_CONST/LCT_PURE.

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

	* config.gcc (extra_headers): Move settings to math-68881.h and
	ppc-asm.h to common code for CPU types.  Use math-68881.h on all
	m68k targets.
	(header_files): Remove unused setting.

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

	* elxsi.c: Include "hard-reg-set.h" and/or don't declare
	`call_used_regs' explicitly.
	* i860.c: Likewise.
	* m68k.c: Likewise.
	* ns32k.c: Likewise.
	* pa.c: Likewise.
	* vax.c: Likewise.
	* we32k.c: Likewise.

Fri Dec 21 23:30:14 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (TARGET_CPU_DEFAULT_pentium_mmx): New.
	(TARGET_CPU_DEFAULT_*): Renumber.

Sat Dec 22 12:20:20 EST 2001  John Wehle  (john@feith.com)

	* rtl.h (subreg_lsb): Declare.
	* rtlanal.c (subreg_lsb): Implement.

Sat Dec 22 08:59:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* predict.c: Reformatting and minor cleanups.
	* cfg.c, cfganal.c, cfgbuild.c: Likewise.

	* expr.c (expand_expr, case ADDR_EXPR): Handling taking address of
	SAVE_EXPR.
	* function.c (gen_mem_addressof): Add missing tests for SAVE_EXPR.
	(put_addressof_into_stack): Clarify code in setting of used_p.

	* calls.c (flags_from_decl_or_type): Move ECF_SP_DEPRESSED here.
	(expand_call): Delete from here.
	Do pending stack adjustments if ECF_SP_DEPRESSED.

	* dwarf2out.c (save_rtx): Deleted.
	(mem_loc_descriptor): Do equivalent operation.
	(add_const_value_attribute, case CONST): Likewise.
	(add_name_and_src_coords_attributes): Likewise.

2001-12-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix comment formatting.

Fri Dec 21 17:30:15 2001  Jeffrey A Law  (law@redhat.com)

	* pa.h (CPP_SPEC): If not in ANSI mode, define _INCLUDE_LONGLONG.
	(CPLUSPLUS_CPP_SPEC): Define _INCLUDE_LONGLONG.

2001-12-21  Robert Lipe  <robertlipe@usa.net>

	 * system.h (PREFETCH): Explictly undefine.

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

	* c-parse.in (SAVE_WARN_FLAGS): Save warn_traditional.
	(RESTORE_WARN_FLAGS): Restore it.
	(extension): Zero warn_traditional.

2001-12-21  Kazu Hirata  <kazu@hxi.com>

	* doc/passes.texi: Fix a typo.

2001-12-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix a comment typo.

2001-12-21  Jakub Jelinek  <jakub@redhat.com>

	* combine.c (nonzero_bits): If using reg_nonzero_bits,
	we don't know anything about bits outside of X mode.
	(num_sign_bit_copies): Likewise.

2001-12-21  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.md (prefetch): Use 'a' operand code.

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

	* aclocal.m4 (gcc_AC_PROG_GNAT): Run prospective ada drivers in
	subshells.
	* configure.in: Likewise for perl Pod::Man.

	* configure: Regenerated.

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

	* builtin-attrs.def (__builtin_printf_unlocked,
	__builtin_fprintf_unlocked, printf_unlocked, fprintf_unlocked):
	Mark with the __printf__ attribute.

	* builtins.c (expand_builtin_fputs): Add an `unlocked' parameter
	and set the replacement function depending on it.
	(expand_builtin): Skip BUILT_IN_*_UNLOCKED when not optimizing.
	Handle BUILT_IN_*_UNLOCKED when optimizing.

	* builtins.def (DEF_EXT_FALLBACK_BUILTIN,
	DEF_EXT_FRONT_END_LIB_BUILTIN): New macros.
	Declare the "unlocked" stdio functions.

	* c-common.c (c_expand_builtin_printf, c_expand_builtin_fprintf):
	Add an `unlocked' parameter and set the replacement function
	depending on it.
	(c_expand_builtin): Handle BUILT_IN_PRINTF_UNLOCKED and
	BUILT_IN_FPRINTF_UNLOCKED.

	* doc/extend.texi (printf_unlocked, fprintf_unlocked,
	fputs_unlocked): Document.

2001-12-20  Josef Zlomek  <zlomek@matfyz.cz>

	* cfgloop.c (flow_loops_find): Use the information of the depth
	first search order of the CFG correctly when finding natural loops.

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

	* config/alpha/alpha.md (prologue_mcount): Update for explicit relocs.

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

	* config/alpha/alpha.c (call_operand) [OSF]: Accept pseudos.
	* config/alpha/alpha.md (call_osf, call_value_osf): Don't force
	operand into $27.

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

	* configure.in (all_headers, all_lib2funcs): Remove.
	* configure: Regenerate.
	* Makefile.in (LANG_EXTRA_HEADERS): Remove.
	(USER_H): Don't include $(LANG_EXTRA_HEADERS).
	* config/alpha/t-interix (USER_H): Don't include
	$(LANG_EXTRA_HEADERS).
	* config/i386/t-interix: Likewise.
	* config/t-openbsd: Likewise.

2001-12-20  Andreas Jaeger  <aj@suse.de>

	* libgcc2.c (__bb_exit_func): Remove unused variable.
	(num_digits): Remove unused function.

2001-12-20 Alan Shieh <ashieh@hkn.eecs.berkeley.edu>

	* config/arm/arm.c (arm_output_epilogue): Changed IP restore
	to use ldmfd instead of ldmea.
	* config/arm/arm.c (arm_compute_initial_elimination_offset):
	Modified to reflect behavior of arm_expand_prologue when generating
	interrupt handlers

2001-12-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_compute_save_reg0_reg12_mask):  New
	function. Compute which of registers r0 through r12 should be
	saved onto the stack during a function's prologue.
	(arm_compute_save_reg_mask): Use
	arm_compute_save_reg0_reg12_mask.
	(arm_compute_initial_elimination_offset): Use
	arm_compute_save_reg0_reg12_mask.

	(arm_expand_prologue): Do not mark as save of the IP register
	for an interrupt handler as being part of the frame creation
	code.

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

	* varasm.c (assemble_real): Use REAL_VALUE_TO_x and assemble_integer
	to emit floating point values.
	(assemble_real_1): Remove.

	* 1750a/1750a.c (real_value_to_target_single): New.
	(real_value_to_target_double): New.
	* 1750a/1750a.h (TARGET_FLOAT_FORMAT): New.
	(REAL_VALUE_TO_TARGET_SINGLE): New.
	(REAL_VALUE_TO_TARGET_DOUBLE): New.
	* 1750a/1750a-protos.h: Update.

	* 1750a/1750a.h, a29k/a29k.h, alpha/alpha.h, alpha/unicosmk.h,
	alpha/vms.h, arc/arc.h, arm/aof.h, arm/aout.h, avr/avr.c,
	avr/avr.h, c4x/c4x.h, clipper/clix.h, convex/convex.h, cris/cris.h,
	d30v/d30v.h, dsp16xx/dsp16xx.c, dsp16xx/dsp16xx.h, elxsi/elxsi.h,
	fr30/fr30.h, h8300/h8300.h, i370/i370.h, i386/i386.h, i386/i386elf.h,
	i386/next.h, i386/ptx4-i.h, i386/sysv4.h, i860/fx2800.h, i860/i860.h,
	i860/paragon.h, i860/sysv4.h, i960/i960-protos.h, i960/i960.c,
	i960/i960.h, ia64/ia64.h, m32r/m32r.h, m68hc11/m68hc11.c,
	m68hc11/m68hc11.h, m68k/3b1.h, m68k/altos3068.h, m68k/crds.h,
	m68k/dpx2.h, m68k/hp320.h, m68k/m68k.h, m68k/mot3300.h, m68k/news.h,
	m68k/next.h, m68k/next21.h, m68k/sgs.h, m68k/sun2o4.h, m68k/sun3.h,
	m68k/tower-as.h, m88k/m88k.h, mcore/mcore.h, mips/mips-protos.h,
	mips/mips.c, mips/mips.h, mmix/mmix-protos.h, mmix/mmix.c,
	mmix/mmix.h, mn10200/mn10200.h, mn10300/mn10300.h, ns32k/encore.h,
	ns32k/ns32k.h, pa/long_double.h, pa/pa.h, pdp11/pdp11.h, pj/pj.h,
	romp/romp.c, romp/romp.h, rs6000/rs6000.h, s390/linux.h, sh/sh.h,
	sparc/sparc.h, stormy16/stormy16.h, v850/v850.h, vax/vax.h,
	vax/vaxv.h, we32k/we32k.h, doc/tm.texi: Remove ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_DOUBLE, ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_BYTE_FLOAT,
	ASM_OUTPUT_SHORT_FLOAT, ASM_OUTPUT_THREE_QUARTER_FLOAT, and all
	associated support routines.

Thu Dec 20 16:58:46 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (flow_find_cross_jump): Avoid incrementing of ninsns
	if one of block does not contain jump.
	(outgoing_edge_math): Revert last path; require edges to be noncomplex
	nonfake to match single exit edge; require conditional jumps to not
	have side effect.

2001-12-20  Turly O'Connor  <turly@apple.com>

	* tm.texi (ASM_OUTPUT_OPERAND): Change documentation references to
	"recog_operand" to "recog_data.operand".
	* rtl.def: Likewise.

2001-12-20  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplifi_binary_operation) [DIV]: If DIV has
	narrower mode than op0, only return the bits in DIV's mode.

2001-12-20  Jakub Jelinek  <jakub@redhat.com>

	* combine.c (distribute_notes): Avoid adding REG_LABEL notes
	to JUMP_INSNs with JUMP_LABEL.

2001-12-19  Aldy Hernandez  <aldyh@redhat.com>

	* doc/install.texi: Add documentation for --enable-altivec.

	* config.gcc: Add support for --enable-altivec.

	* config/rs6000/altivec.h: New.

	* config/rs6000/linuxaltivec.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
	Define.  Fix typo.

	* config/rs6000/rs6000.c (vrsave_operation): Change unspec to
	unspec_volatile.
	(generate_set_vrsave): Generate the unspec here instead of calling
	an .md pattern.
	(generate_set_vrsave): Use gen_rtvec.
	(rs6000_emit_prologue): Replace call to gen_get_vrsave with
	gen_rtx_SET.

	* config/rs6000/rs6000.md ("*movsi_internal1"): Add constraints
	for setting special registers.
	("*set_vrsave_internal"): Use unspec_volatile.
	("set_vrsave"): Remove.
	("get_vrsave"): Remove.

	* config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add vrsave to
	SPECIAL_REGS.

2001-12-19  Bruce Korb  <bkorb@gnu.org>

	* gcc/fixinc/inclhack.def:  Remove all the fix suppression "fixes".
	(strict_ansi_not_ctd):  accommodate __STDC__ == 0 tests in UW 2.1.2
	* gcc/fixinc/mkfixinc.sh(i?86-*-sysv4.2uw2*): now uses fixincl program
	* gcc/fixinc/base/...: adjust for changes in fixes

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

	* po/gcc.pot: Regenerate.

	* configure.in (all_diff_excludes, diff_excludes): Remove.
	* configure: Regenerate.
	* Makefile.in (LANG_DIFF_EXCLUDES): Remove.
	* objc/config-lang.in (diff_excludes): Remove.

2001-12-19  Dan Nicolaescu  <dann@ics.uci.edu>

	* config/sparc/sparc.md (ldd peephole2s): For load peepholes pass
	the destination register as a parameter to mems_ok_for_ldd_peep.
	For store peepholes pass NULL_RTX.  Move all volatile checks ...
	* config/sparc/sparc.c (mems_ok_for_ldd_peep): ... here.  Add a
	register parameter, check it's not the same as base for an address.
	* config/sparc/sparc-protos.h (mems_ok_for_ldd_peep): Update.

2001-12-19  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (ia64_single_set): Return first set for
	prologue_allocate_stack and epilogue_deallocate_stack instructions.

2001-12-19  Dale Johannesen  <dalej@apple.com>

	 * config/rs6000/rs6000.h: LEGITIMIZE_RELOAD_ADDRESS:
	 redefine in terms of rs6000_legitimize_reload_address().
	 * config/rs6000/rs6000-protos.h: Add this function.
	 * config/rs6000/rs6000.c: Add this function.  Includes
	 handling for Darwin FP constants.

Wed Dec 19 11:01:21 2001  Jeffrey A Law  (law@redhat.com)

	* config/pa/t-hpux-shlib: New file.
	* config.gcc (hpux10, hpux11): Include t-hpux-shlib in tmake_file
	for 32bit hpux10 & hpux11 configurations.

2001-12-19  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/xscale-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Pass
	-mno-fpu onto gas unless -mhard-float is specified.
	(MULTILIB_DEFAULTS): Include msoft-float.

	* config/arm/t-xscale-coff (EXTRA_MULTILIB_PARTS): Remove definition.

	* config/arm/coff.h (SUPPORTS_INIT_PRIORITY): Define (to false).
	* config/arm/elf.h (SUPPORTS_INIT_PRIORITY): Define (to true).

Wed Dec 19 06:12:34 2001  Douglas B. Rupp  <rupp@gnat.com>

	* dwarf2out.c (add_name_and_src_coords_attributes): Fix VMS procedure
	descriptor output.

2001-12-18  Stan Shebs  <shebs@apple.com>

	* rs6000.h (LOCAL_ALIGNMENT): Fix parens.

Tue Dec 18 17:02:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (widen_memory_access): Only call compare_tree_int
	on an INTEGER_CST.

2001-12-18  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (rs6000_override_options): Only use DI ops when
	TARGET_64BIT.  Fix typo.

Tue Dec 18 16:39:46 CET 2001  Jan Hubicka  <jh@suse.cz>

	* att.h (ASM_FILE_START): Use asm_dialect.
	* linux.h (ASM_FILE_START): Likewise.
	* gas.h (ASM_FILE_START): Likewise.
	* i386.c (ix86_debug_arg_string, ix86_debug_addr_string,
	ix86_asm_string, ix86_asm_dialect): New.
	(override_options): Set asm_dialect.
	* i386.h (MASK_MIX_SSE_I387, MASK_INTEL_SYNTAX, MASK_DEBUG_ARG,
	MASK_DEBUG_ADDR): Kill.
	(MASK_64BIT, MASK_NO_RED_ZONE): renumber.
	(TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Use string.
	(ASSEMBLER_DIALECT): Use asm_dialect.
	(TARGET_SWITCHES): Undocument deprecated items; deprecate intel-syntax;
	remove debug-addr and debug-arg.
	(TARGET_OPTIONS): Add debug-arg, debug-addr, asm.
	(asm_dialect): New enum.
	(ix86_debug_arg_string, ix86_debug_addr_string,
	ix86_asm_string, ix86_asm_dialect): Declare.
	* invoke.texi (-mintel-syntax): Remove.
	(-masm): Document.

Tue Dec 18 16:37:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* libgcc2.c (__bb_exit_func): Kill -ax dumping code.

2001-12-18  Jason Merrill  <jason@redhat.com>

	C++ ABI change: destroy value arguments in caller.
	* calls.c (initialize_argument_information): Pass the address of
	the TARGET_EXPR temporary rather than storing it into another.

Tue Dec 18 07:09:06 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/xm-vms.h (INCLUDE_DEFAULTS): Add /gnu/include.
	* config/alpha/vms.h (STACK_CHECK_BUILTIN): #define 0 for VMS.

2001-12-18  Jakub Jelinek  <jakub@redhat.com>

	* config/linux.h (PREFERRED_DEBUGGING_TYPE): Remove.
	* config/sparc/linux.h (PREFERRED_DEBUGGING_TYPE): Remove.
	* config/sparc/linux64.h (PREFERRED_DEBUGGING_TYPE): Remove.
	(CC1_SPEC): Don't default to -gstabs+ if -m32.

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

	* elfos.h (PREFERRED_DEBUGGING_TYPE): Change to DWARF2_DEBUG.

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

	* po/gcc.pot: Regenerate.

2001-12-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Fix comment typos.
	* config/h8300/h8300.h: Fix comment formatting.

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

	* machmode.h (mode_name, mode_class, mode_size, mode_unit_size,
	mode_bitsize, mode_mask_array, mode_wider_mode): Set array size in
	declaration to NUM_MACHINE_MODES.
	(mode_size, mode_unit_size): Set array type to unsigned char.
	(mode_bitsize): Set array type to unsigned short.

	* rtl.c (rtx_length): Set array type to unsigned char.
	(rtx_length, rtx_name, rtx_format, rtx_class): Set array size to
	NUM_RTX_CODE.
	(mode_bitsize): Set array type to unsigned short.
	(mode_size, mode_unit_size): Set array type to unsigned char.
	(mode_name, mode_class, mode_bitsize, mode_size, mode_unit_size,
	mode_wider_mode, mode_mask_array): Set array size to
	NUM_MACHINE_MODES.

	* rtl.h (rtx_length, rtx_name, rtx_format, rtx_class): Set array
	size in declaration to NUM_RTX_CODE.

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

	* config/alpha/alpha.md (unop): Encode RB as $sp.

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

	* Makefile.in: Update dependencies.
	* c-lang.c: Remove unnecessary includes.
	(deferred_fns, start_cdtor, finish_cdtor, defer_fn): Move to
	c-objc-common.c.
	(finish_file): Move body to c_common_finish_file.
	* c-objc-common.c: Include varray.h and ggc.h.
	(deferred_fns, start_cdtor, finish_cdtor, defer_fn,
	expand_deferred_fns, c_objc_common_finish_file): Moved from c-lang.c.
	(c_objc_common_init): Initialize deferred function array.
	* c-tree.h (c_objc_common_finish_file,
	static_ctors, static_dtors): New.
objc:
	* Make-lang.in: Update dependencies.
	* objc/objc-act.c: Don't include varray.h.
	(defer_fn, deferred_fns): Move to c-objc-common.c.
	(objc_init): Similarly for initialization of it.
	(finish_file): Move some to c-objc-common.c, use
	c_objc_common_finish_file.

2001-12-17  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c: Remove is_gpr_return_reg prototype.

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

	* doc/cppinternals.texi: Update.

Mon Dec 17 14:21:21 2001  Jeffrey A Law  (law@redhat.com)

	* expmed.c (emit_store_flag): Extract updated comparison code
	from the return value of compare_from_rtx.
	* expr.c (do_store_flag): Similarly.

2001-12-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* caller-save.c (init_caller_save): Use MODE_BASE_REG_CLASS in
	preference to BASE_REG_CLASS.
	* recog.c (preprocess_constraints): Ditto.
	* regclass.c (record_operand_costs, scan_one_insn, regclass,
	record_reg_classes, record_address_regs): Ditto.
	* regrename.c (scan_rtx_address, scan_rtx,
	replace_oldest_value_addr, replace_oldest_value_mem): Ditto.
	* reload.c (find_reloads, find_reloads_address,
	find_reloads_address_1): Ditto.
	* reload1.c (maybe_fix_stack_asms): Ditto.
	* defaults.h (MODE_BASE_REG_CLASS): Provide default
	definition.
	* doc/tm.texi: Document MODE_BASE_REG_CLASS.

	* config/arm/arm.h (MODE_BASE_REG_CLASS): Define.

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

	* doc/install.texi2html: Use -I $SOURCEDIR.

	Separate user and internals manuals.
	* Makefile.in (info, $(docdir)/gcc.info, dvi, gcc.dvi): Update
	dependencies.
	($(docdir)/gccint.info, gccint.dvi): New targets.
	(maintainer-clean, install-info, uninstall): Update.
	* doc/.cvsignore: Add gccint.info*.
	* doc/include/gcc-common.texi: New file.
	* doc/gcc.texi: Use it.  Adjust to be a user-only manual.  Put
	copyright notice in a macro.  Don't include ISBN unless FSFPRINT
	is defined.
	* doc/gccint.texi: New file.
	* doc/configfiles.texi, doc/extend.texi, doc/invoke.texi,
	doc/md.texi, doc/passes.texi, doc/tm.texi, doc/trouble.texi:
	Update for separate user and internals manuals.

2001-12-17  Dale Johannesen  <dalej@apple.com>

	 * config/rs6000/rs6000.h:  CPP_CPU_SPEC: add mcpu=7400.
	 ASM_CPU_SPEC: Ditto.
	 RTX_COSTS: Fix timing info for 7450 multiply.
	 * config/rs6000/rs6000.md:  Fix timing info for 7450 imul.
	 Allow floats to be kept in int regs in movsf_low,
	 movsf_low_st (Darwin only)

2001-12-17  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (vrsave_operation): Recognize SETs in
	parallel.
	(is_gpr_return_reg): New.
	(rs6000_emit_prologue): Call generate_set_vrsave with additional
	argument.  Save only registers in the mask.  Attach
	REG_FRAME_RELATED_EXPR note to altivec offsets.  Do not call
	rs6000_frame_related when saving VRSAVE.
	(rs6000_emit_epilogue): Call generate_set_vrsave with additional
	argument.  Restore only registers in the mask.  Restore altivec
	registers after we restore CR.
	(generate_set_vrsave): New parameter epiloguep.  Generate unspec
	sets instead of clobbers for call saved registers.
	(altivec_frame_fixup): New.

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

	* config/sparc/sparc.md (movdi_zero): Remove.
	(movdi_insn_sp32_v9): New.

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

	* cfgcleanup.c (outgoing_edges_match): Check for insn match with
	a single outgoing edge too.

Mon Dec 17 18:27:52 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (redirect_edge_and_branch):  Do simplify abnormal
	edges resulting from computed jump

Mon Dec 17 17:57:05 CET 2001  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cfgcleanup.o): Add cselib.h dependency.
	* basic-block.h (CLEANUP_THREADING): New constant.
	* cfgcleanup.c: Include cselib.h
	(thread_jump, mark_effect): New functions.
	(try_forward_edges): Do jump threading when asked for.
	* jump.c (mark_modified_reg, save_regs, num_same_regs, modified_regs,
	modified_mem, thread_jumps, rtx_equal_for-thread_p): Kill.
	* rtl.h (thread_jumps, rtx_equal_for_thread_p): Kill.
	* toplev.c (rest_of_compilation): Do now call thread_jumps; use
	CLEANUP_THREAD instead.

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

	* sparc/linux.h (STARTFILE_SPEC): Fix typo in last change.

2001-12-17  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.c (expand_block_move): Fix limits on max size
	of bytes.

2001-12-17  Richard Sandiford  <rsandifo@redhat.com>

	* target.h (asm_out.byte_op, asm_out.aligned_op, asm_out.unaligned_op,
	asm_out.integer): New fields.
	* target-def.h (TARGET_ASM_BYTE_OP, TARGET_ASM_ALIGNED_[HSDT]I_OP,
	TARGET_ASM_UNALIGNED_[HSDT]I_OP, TARGET_ASM_INTEGER): New initializers.
	(TARGET_ASM_ALIGNED_INT_OP, TARGET_ASM_UNALIGNED_INT_OP): Collect
	the individual initializers together.
	(TARGET_ASM_OUT): Add the new initializers.
	* output.h (assemble_integer): Return bool.
	(integer_asm_op): Declare.
	(default_assemble_integer): Declare.
	(assemble_aligned_integer): New interface to assemble_integer.
	* varasm.c (integer_asm_op): New function to select pseudo-op.
	(default_assemble_integer): Default implementation of asm_out.integer.
	(assemble_integer): Use the new target hook.  Split objects into
	words or bytes if the target hook fails.  Return bool.
	* doc/tm.texi (ASM_OUTPUT_CHAR, ASM_OUTPUT_BYTE, ASM_OUTPUT_SHORT,
	ASM_OUTPUT_INT, ASM_OUTPUT_DOUBLE_INT, ASM_OUTPUT_QUADRUPLE_INT,
	UNALIGNED_SHORT_ASM_OP,	UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Undocument.
	Document new target hooks.

	* defaults.h (ASM_OUTPUT_ADDR_VEC_ELT): Use integer_asm_op.
	* dwarf2asm.c (unaligned_integer_asm_op): Remove.
	(dw2_assemble_integer): New.
	(dw2_asm_output_data, dw2_asm_output_delta, dw2_asm_output_offset,
	dw2_asm_output_pcrel, dw2_asm_output_addr, dw2_asm_output_addr_rtx,
	dw2_asm_output_encoded_addr_rtx): Use it.
	(dw2_asm_output_nstring): Use assemble_integer for the null terminator.
	(dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128): Use
	integer_asm_op to get the byte pseudo-op.  Use assemble_integer
	if it returns NULL.
	* dwarf2asm.h (dw2_assemble_integer): Declare.
	* dwarfout.c: Include dwarf2asm.h.  Use dwarf2 functions for the
	default	implementation of most macros.
	(output_unsigned_leb128): Use dw2_asm_output_data.
	(output_signed_leb128, dwarfout_source_line): Likewise.
	(output_reg_number): Use dw2_assemble_integer.
	(generate_macinfo_entry): Separate the type and offset arguments.
	Use assemble_integer to write the value.
	(dwarfout_start_source_file): Update generate_macinfo_entry usage.
	(dwarfout_end_source_file, dwarfout_define, dwarfout_undef): Likewise.
	* final.c (output_addr_const): Don't put brackets round a subtracted
	symbol value or ".".
	* halfpic.c (half_pic_finish): Use assemble_aligned_integer.

	* config/1750a/1750a.c (assemble_integer_1750a): New,
	* config/alpha/alpha.h (literal_section): Avoid ASM_OUTPUT_INT.
	* config/arc/arc.c (arc_assemble_integer): New.
	* config/arc/arc.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/arm/arm.c (arm_poke_function_name): Likewise.
	(arm_assemble_integer): New, extracted from...
	* config/arm/arm.h (OUTPUT_INT_ADDR_CONST): ...here, now removed.
	(ARM_TRAMPOLINE_TEMPLATE, ARM_FUNCTION_PROFILER): Avoid ASM_OUTPUT_INT.
	(ARM_FUNCTION_PROFILER): Likewise.
	* config/avr/avr-protos.h (asm_output_byte): Remove.
	(asm_output_char, asm_output_short): Remove.
	* config/avr/avr.c (avr_assemble_integer): New.
	(asm_output_byte, asm_output_char, asm_output_short): Remove.
	* config/clipper/clipper.h (ASM_LONG): Remove.
	* config/dsp16xx/dsp16xx-protos.h (asm_output_long): Remove.
	* config/dsp16xx/dsp16xx.c (asm_output_long): Remove.
	* config/elxsi/elxsi.c (elxsi_assemble_integer): New.
	* config/i370/i370.c (i370_hlasm_assemble_integer): New.
	* config/i370/i370.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_SHORT.
	(ASM_BYTE, ASM_SHORT, ASM_LONG): Delete.
	* config/i386/att.h, (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i386/linux.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Use
	ASM_LONG instead of UNALIGNED_INT_ASM_OP.
	* config/i386/sco5.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i386/sysv4.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Use
	ASM_LONG instead of UNALIGNED_INT_ASM_OP.
	* config/i860/fx2800.h (ASM_FILE_END): Avoid ASM_LONG.
	* config/i860/i860.c (i860_output_function_epilogue): Likewise.
	* config/i860/i860.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	(ASM_SHORT, ASM_LONG): Undefine.
	* config/i860/paragon.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i860/sysv3.h (ASM_OUTPUT_ASCII): Likewise.
	* config/i960/i960.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/ia64/ia64.c (ia64_assemble_integer): New.
	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Use integer_asm_op.
	(ASM_OUTPUT_DWARF_PCREL): Likewise.
	* config/m68hc11/m68hc11.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_DIFF_ELT, ASM_OUTPUT_ADDR_VEC_ELT): Avoid ASM_LONG.
	(ASM_SHORT, ASM_LONG): Remove.
	* config/m68k/m68k.h (INT_OP_GROUP): New macro.
	(INT_OP_STANDARD, INT_OP_DOT_WORD, INT_OP_NO_DOT, INT_OP_DC): New
	macros, the allowed values for INT_OP_GROUP.
	* config/m68k/amix.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP
	* config/m68k/atari.h (ASM_OUTPUT_ASCII): Likewise
	* config/m68k/m68kelf.h (ASM_OUTPUT_ASCII): Likewise
	* config/m68k/auxas.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP): Remove.
	(INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m68k/dpx2.h (ASM_LONG): Undefine.
	(INT_OP_GROUP): Define to INT_OP_DC.
	* config/m68k/dpx2g.h (ASM_LONG): Undefine.
	* config/m68k/hp320.h (INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m68k/lynx.h (ASM_LONG): Undefine.
	* config/m68k/dpx2g.h (ASM_LONG): Undefine.
	* config/m68k/m68kelf.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/m68k/m68kv4.h (ASM_OUTPUT_ASCII): Likewise.
	(TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_*.
	* config/m68k/mot3300.h (INT_OP_GROUP): Define to INT_OP_STANDARD
	for GAS and INT_OP_NO_DOT otherwise.
	(ASM_CHAR, ASM_BYTE, ASM_SHORT, ASM_LONG): Remove.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Avoid ASM_LONG.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/m68k/sgs.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP): Remove.
	(INT_OP_GROUP): Define to INT_OP_STANDARD.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Avoid LONG_ASM_OP.
	(ASM_OUTPUT_ASCII): Avoid BYTE_ASM_OP.
	* config/m68k/tower-as.h (ASM_LONG): Remove.
	(INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m88k/m88k.c (output_tdesc): Avoid ASM_LONG.
	* config/m88k/m88k.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	(ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Avoid ASM_LONG.
	* config/mips/iris5.h (TARGET_IRIX5): Define.
	* config/mips/mips.c (mips_assemble_integer): New.
	* config/mips/sni-svr4.h (ASM_LONG): Undefine.
	* config/mmix/mmix-protos.h (mmix_asm_output_double_int): Remove.
	* config/mmix/mmix.c (mmix_assemble_integer): New.
	(mmix_asm_output_double_int): Remove.
	(mmix_print_operand): Call mmix_output_octa directly.
	* config/mmix/mmix.h (ASM_LONG): Remove.
	* config/ns32k/ns32k.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/pa/pa.c (pa_assemble_integer): New.
	(pa_override_options): Only use aligned DI ops on 64-bit targets.
	Only use the unaligned ops if TARGET_GAS.
	* config/pdp11/pdp11.c (pdp11_assemble_integer): New.
	* config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_SHORT.
	* config/pj/pj.h (ASM_LONG): Undefine.
	* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Undefine.
	* config/rs6000/rs6000.c (rs6000_assemble_integer): New, mostly
	extracted from ASM_OUTPUT_INT in sysv4.h.  Use in_text_section()
	and in_toc_section() rather than the in_section variable.
	(rs6000_override_options): Only use DI ops when TARGET_POWERPC64.
	* config/rs6000/sysv4.h (TOC_SECTION_FUNCTION): Add in_toc_section().
	(RELOCATABLE_NEEDS_FIXUP): Define.
	* config/rs6000/xcoff.h (DOUBLE_INT_ASM_OP): Change space to tab.
	* config/s390/linux.h (ASM_SHORT, ASM_LONG, ASM_QUAD): Remove.
	(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Use integer_asm_op
	to get the word directive.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/s390/s390.c (s390_assemble_integer): New.
	* config/s390/s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Use
	integer_asm_op to get the word directive.
	* config/sparc/sol2.h (ASM_SHORT, ASM_LONG): Remove.
	* config/sparc/sparc-protos.h (output_double_int): Remove.
	* config/sparc/sparc.c (output_double_int): Move to...
	(sparc_assemble_integer): ...this new function.
	(sparc_override_options): Only use .uaxword if TARGET_ARCH64.
	* config/sparc/sparc.h (ASM_SHORT, ASM_LONG, ASM_LONGLONG): Remove.
	* config/sparc/sysv4.h (ASM_LONG): Remove.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Avoid
	ASM_LONG.
	* config/vax/vax.h (TRAMPOLINE_TEMPLATE): Use assemble_aligned_integer.
	* config/we32k/we32k.h (TRAMPOLINE_TEMPLATE): Likewise.

	* config/1750a/1750a.c, config/a29k/a29k.c, config/alpha/alpha.c,
	config/arc/arc.c, config/arm/arm.c, config/avr/avr.c, config/c4x/c4x.c,
	config/clipper/clipper.c, config/convex/convex.c, config/cris/cris.c,
	config/d30v/d30v.c, config/dsp16xx/dsp16xx.c, config/elxsi/elxsi.c,
	config/fr30/fr30.c, config/h8300/h8300.c, config/i370/i370.c,
	config/i386/i386.c, config/i860/i860.c, config/i960/i960.c,
	config/ia64/ia64.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
	config/m68k/m68k.c, config/m88k/m88k.c, config/mips/mips.c,
	config/mmix/mmix.c, config/mn10200/mn10200.c, config/mn10300/mn10300.c,
	config/ns32k/ns32k.c, config/pa/pa.c, config/pdp11/pdp11.c,
	config/sh/sh.c, config/sparc/sparc.c, config/stormy16/stormy16.c,
	config/v850/v850.c, config/vax/vax.c, config/we32k/we32k.c
	(TARGET_ASM_BYTE_OP, TARGET_ASM_ALIGNED_HI_OP,
	TARGET_ASM_ALIGNED_SI_OP, TARGET_ASM_ALIGNED_DI_OP,
	TARGET_ASM_UNALIGNED_HI_OP, TARGET_ASM_UNALIGNED_SI_OP,
	TARGET_ASM_UNALIGNED_DI_OP, TARGET_ASM_INTEGER): Redefine as
	appropriate.

	* config/defaults.h, config/darwin.h, config/elfos.h, config/svr3.h,
	config/1750a/1750a.h, config/a29k/a29k.h, config/alpha/alpha.h,
	config/arc/arc.h, config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h,
	config/clipper/clipper.h, config/convex/convex.h, config/cris/cris.h,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h, config/elxsi/elxsi.h,
	config/fr30/fr30.h, config/h8300/h8300.h, config/i370/i370.h,
	config/i386/bsd.h, config/i386/djgpp.h, config/i386/i386.h,
	config/i386/sco5.h, config/i386/sol2.h, config/i386/sun386.h,
	config/i860/i860.h, config/i960/i960.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/auxas.h,
	config/m68k/dpx2.h, config/m68k/hp320.h, config/m68k/m68k.h,
	config/m68k/mot3300.h, config/m68k/sgs.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/mcore/mcore-elf.h, config/mcore/mcore.h,
	config/mips/iris5.h, config/mips/iris6.h, config/mips/mips.h,
	config/mmix/mmix.h, config/mn10200/mn10200.h, config/mn10300/mn10300.h
	config/ns32k/encore.h, config/ns32k/ns32k.h, config/pa/pa-64.h,
	config/pa/pa.h, config/pdp11/pdp11.h, config/pj/pj.h,
	config/romp/romp.h, config/rs6000/linux64.h, config/rs6000/rs6000.h,
	config/rs6000/sysv4.h, config/rs6000/xcoff.h, config/s390/linux.h,
	config/sh/sh.h, config/sparc/linux64.h, config/sparc/sol2.h,
	config/sparc/sp64-elf.h, config/sparc/sparc.h, config/sparc/sysv4.h,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h,
	config/we32k/we32k.h (ASM_OUTPUT_CHAR, ASM_OUTPUT_BYTE, ASM_BYTE_OP,
	ASM_BYTE, ASM_OUTPUT_SHORT, ASM_OUTPUT_INT, ASM_OUTPUT_DOUBLE_INT,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Undefine, where defined.

2001-12-17  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
	(STACK_BOUNDARY): Remove definition.
	(CPP_PREDEFINES): Define __POWERPC__.

2001-12-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/c-tree.texi (Trees): Only refer to GCC.

2001-12-17  Andreas Jaeger  <aj@suse.de>

	* c-common.def: Fix typo in comment.

2001-12-16  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (sparc64-*-freebsd*): Add target.
	* config/sparc/freebsd.h: New file.
	* config/sparc/sparc.h (LIB_SPEC, LINK_SPEC): Don't define.
	* config/sparc/sunos4.h (LIB_SPEC, LINK_SPEC): Define.
	* config/sparc/sysv4.h (CPP_PREDEFINES): Undefine before defining.

2001-12-16  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_legitimize_address): Force both
	PLUS operands into registers for altivec mode.

2001-12-16  Aldy Hernandez  <aldyh@redhat.com>

	* builtins.c (apply_args_size): Change regno to unsigned.

2001-12-16  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (FUNCTION_ARG_REGNO_P): Change
	ALTIVEC_ARG_MAX_REG to ALTIVEC_ARG_NUM_REG.

2001-12-16  Zack Weinberg  <zack@codesourcery.com>

	* c-typeck.c (error_init, pedwarn_init, warning_init): Call
	gettext on argument before printing.

	* fold-const.c (negate_expr): Always call fold on new
	NEGATE_EXPR.

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

	* c-common.def (COMPOUND_LITERAL_EXPR): Contain a DECL_STMT, not
	a DECL directly.
	* c-common.h (COMPOUND_LITERAL_EXPR_DECL_STMT): New.
	(COMPOUND_LITERAL_EXPR_DECL): Adjust definition.
	* c-decl.c (build_compound_literal): Put the decl inside a
	DECL_STMT.
	* doc/c-tree.texi (COMPOUND_LITERAL_EXPR): Update documentation.
	Fixes PR c/5105.

2001-12-16  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Add powerpc-*-eabisimaltivec*.

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

	* c-common.c, c-common.h (back_end_hook): Remove.
	* c-lang.c (finish_file): Remove back_end_hook.

Sun Dec 16 13:13:01 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (highest_pow2_factor, case INTEGER_CST): Fix error in
	last change.

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

	* toplev.c (parse_options_and_default_flags): Don't enable
	flag_cprop_registers at -O1.

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

	* avr.c (avr_simplify_comparision_p, adjust_insn_length,
	mask_one_bit_p, output_reload_insisf): Don't use the 'U' suffix.
	* avr.h (reg_class): Likewise.
	* avr.md: Likewise.
	* mcore.c (try_constant_tricks, mcore_byte_offset,
	mcore_halfword_offset): Likewise.
	* sh.c (shl_sext_kind, gen_block_redirect, split_branches): Likewise.
	* v850.c (not_power_of_two_operand): Likewise.

	* clipper/clix.h (ASM_OUTPUT_ASCII): Avoid signed/unsigned
	warnings.
	* convex.h (ASM_OUTPUT_ASCII): Likewise.
	* i370.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/att.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/i386-interix.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/i386elf.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/ptx4-i.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/sco5.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/sun386.h (ASM_OUTPUT_ASCII): Likewise.
	* i386/sysv4.h (ASM_OUTPUT_ASCII): Likewise.
	* i860/bsd.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/3b1.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/amix.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/atari.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/crds.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/hp320.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/m68kv4.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/mot3300.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/sgs.h (ASM_OUTPUT_ASCII): Likewise.
	* m68k/tower-as.h (ASM_OUTPUT_ASCII): Likewise.
	* mips/bsd-5.h (ASM_OUTPUT_ASCII): Likewise.
	* mips/mips-5.h (ASM_OUTPUT_ASCII): Likewise.
	* mips/svr3-5.h (ASM_OUTPUT_ASCII): Likewise.
	* mips/svr4-5.h (ASM_OUTPUT_ASCII): Likewise.
	* ns32k/encore.h (ASM_OUTPUT_ASCII): Likewise.
	* vax/vaxv.h (ASM_OUTPUT_ASCII): Likewise.
	* we32k/we32k.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/uwin.h (MD_STARTFILE_PREFIX): Avoid redefinition warnings.
	* interix.h (TARGET_MEM_FUNCTIONS): Likewise.
	* psos.h (CPP_PREDEFINES): Likewise.
	* rs6000/linux64.h (ROUND_TYPE_ALIGN): Likewise.
	* rs6000/xcoff.h (RS6000_MCOUNT, RS6000_ITRUNC, RS6000_UITRUNC,
	ASM_OUTPUT_EXTERNAL): Likewise.
	* sparc/liteelf.h (DWARF_DEBUGGING_INFO, DWARF2_DEBUGGING_INFO):
	Likewise.
	* sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): Likewise.
	* sparc/sp86x-elf.h (DWARF_DEBUGGING_INFO, DWARF2_DEBUGGING_INFO):
	Likewise.
	* sparc/sunos4.h (SUNOS4_SHARED_LIBRARIES): Likewise.

	* c-lex.c (lex_number): Use ISXDIGIT/hex_value.
	* vax/xm-vms.h (FILE_NAME_NONDIRECTORY): Use ISUPPER/TOLOWER.
	* fold-const.c (real_hex_to_f): Use hex_value.
	* real.c (asctoeg): Use hex_value & ISXDIGIT.
	* toplev.c (toplev_main): Call hex_init.
	* tradcpp.c (main): Call hex_init.

	* nextstep-protos.h: New file.
	* nextstep.c: Include "rtl.h", "output.h" & "tm_p.h".
	* nextstep.h (INCLUDE_DEFAULTS): Delete LOCAL_INCLUDE_DIR and
	STANDARD_INCLUDE_DIR from the CROSS_COMPILE clause.
	(nextstep_asm_out_constructor, nextstep_asm_out_destructor,
	handle_pragma): Move prototypes to nextstep-protos.h.
	* config.gcc (i[34567]86-next-*, m68k-next-nextstep2*,
	m68k-next-nextstep[34]*): Append nextstep-protos.h to tm_p_file.

2001-12-16  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/3725
	* configure.in: Add AC_SUBST(target_alias).
	* configure: Regenerated.

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

	* config/alpha/alpha.md (sibcall_osf_1_er): New.
	(sibcall_value_osf_1_er): New.

2001-12-15  Dan Nicolaescu  <dann@ics.uci.edu>

	* config/sparc/sparc.c (mems_ok_for_ldd_peep): Rename from
	addrs_ok_for_ldd_peep_withmem; take MEMs as parameters, not
	addrs; eliminate restriction of only using fp and sp as base
	registers.
	* config/sparc/sparc-protos.h: Update.
	* config/sparc/sparc.md (movdi): Use TARGET_V9 not TARGET_ARCH64.
	(*cmp_cc_set, *cmp_ccx_set64, *movdi_zero): New insns derived
	from old define_peepholes.
	Convert all the ldd/std peepholes to peephole2.

2001-12-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390.md (prologue, epilogue, *return_si, *return_di): New.
	s390.c (find_unused_clobbered_reg, s390_frame_info,
	save_fpr, restore_fpr, s390_emit_prologue, s390_emit_epilogue): New.
	s390-protos.h (s390_emit_prologue, s390_emit_epilogue): Declare.
	s390.c (s390_arg_frame_offset): Use s390_frame_info.
	(leaf_function_flag, cur_is_leaf_function,
	save_fprs, restore_fprs, force_const_mem_late): Remove.
	(s390_function_prologue, s390_function_epilogue): Mostly remove.
	s390.md (lit): New.  Uses ...
	s390.c (s390_output_constant_pool): ... this, so adapt and make global.
	s390-protos.h (s390_output_constant_pool): Declare.
	s390.md (load_multiple, store_multiple): Allow use after reload.
	s390.c (load_multiple_operation, store_multiple_operation): Likewise.
	s390.h (INCOMING_FRAME_SP_OFFSET): Define.
	s390.h (CALL_REALLY_USED_REGISTERS): Define.
	config/s390/linux64.h (CALL_USED_REGISTERS): Remove, now handled ...
	s390.h (CONDITIONAL_REGISTER_USAGE): ... here.
	s390.c (s390_sr_alias_set): New global variable, initialized ...
	(override_options): ... here.  New.
	s390-protos.h (override_options): Declare.
	s390.h (OVERRIDE_OPTIONS): Call it.
	s390.c (s390_function_profiler): New.
	s390-protos.h (s390_function_profiler): Declare.
	s390.h (FUNCTION_PROFILER): Call it.
	s390.c (s390_profile): Remove.

	* s390.c (reg_used_in_mem_p): PC reload counts as memory access.
	(addr_generation_dependency_p): Consider literal pool register loads.
	(s390_adjust_priority): Do not schedule load_multiple.
	s390.md (attribute "type"): Define some additional types.
	(function_unit "integer"): Adapt.
	(many insns): Adapt "type" attribute setting.

	* s390.c (general_s_operand, s_imm_operand): New.
	(s_operand): Remove old definition, call general_s_operand instead.
	s390-protos.h (s_imm_operand): Declare.
	s390.c (base_n_index_p, r_or_s_operand, r_or_s_or_im8_operand,
	r_or_x_or_im16_operand, r_or_im8_operand): Remove.
	s390-protos.h (r_or_s_operand, r_or_s_or_im8_operand,
	r_or_x_or_im16_operand, r_or_im8_operand): Likewise.
	s390.h (PREDICATE_CODES): Add s_imm_operand, remove r_or_s*_operand.
	s390.md (many insns): Rework insn predicates.

	* s390.c (legitimate_pic_operand_p, legitimate_constant_p): Accept all
	non-symbolic constants.  Reload will force them because of ...
	(s390_preferred_reload_class): ... this.  New.
	s390-protos.h (s390_preferred_reload_class): Declare.
	s390.h (PREFERRED_RELOAD_CLASS): Call it.
	s390.md (movdi, movsi, movdf, movsf, *reload_la_64 splitters,
	*reload_la_31 splitters): Handle constants after reload.
	(many insns): no longer force all constants immediately.
	s390.c (legitimate_reload_constant_p): New helper routine.
	s390-protos.h (legitimate_reload_constant_p): Declare.
	s390.c (print_operand): Clean up CONST_INT case, add CONST_DOUBLE case.

	* s390.h (FIRST_PSEUDO_REGISTER, FRAME_POINTER_REGNUM,
	HARD_FRAME_POINTER_REGNUM, REGISTER_NAMES): Add virtual frame pointer.
	(CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Update.
	(ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Likewise.
	(REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_NONSTRICT_P): Likewise.
	(DWARF_FRAME_REGISTERS): Define.
	s390.c (regclass_map): Add virtual frame pointer.
	(legitimate_la_operand_p): Allow use of virtual frame pointer.
	s390.md (*la_ccclobber, *addaddr_ccclobber): New.
	(addaddr, addsi_64): Delete.

	* s390.h (HARD_REGNO_MODE_OK): Allow SImode and DImode values in
	floating point registers.
	(CLASS_CANNOT_CHANGE_MODE, CLASS_CANNOT_CHANGE_MODE_P): Define.
	(ADDR_FP_REGS, GENERAL_FP_REGS): New register classes.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update.

	* s390.md (movti): Replace multi-insn output with splitters.
	(movdi_31, movdf_31): Likewise.
	(movti_ss, movdi_ss, movsi_ss, movdf_ss, movsf_ss): New.
	(movdi_lhi, movdi_lli, movdi_larl, movsi_lhi, movsi_lli): New.
	(movdi_64, movdi_31, movsi, movdf_64, movdf_31): Adapt.
	(movdf_soft_64, movdf_soft_31, movsf_soft): Remove.
	(movsf_64, movsf_31): Remove, replace by ...
	(movsf): ... this.
	(movqi_64): Use lhi instead of llill.
	(*movstrictqi, *movstricthi): Don't use (strict_low_part (mem)).

	* s390.md (extendsidi2, *extendsidi2, extendhidi2, *extendhidi2,
	extendqidi2, extendhisi2, *extendhisi2, extendqisi2,
	extendqihi2 and associated splitters): Reworked.
	(zero_extendsidi2, zero_extendsidi2, *zero_extendsidi2,
	zero_extendhidi2, *zero_extendhidi2, zero_extendqidi2,
	zero_extendqidi2, *zero_extendqidi2, zero_extendhisi2,
	*zero_extendhisi2_64, zero_extendhisi2_31, zero_extendqisi2,
	*zero_extendqisi2_64, *zero_extendqisi2_mem_31,
	zero_extendqisi2_reg_31, zero_extendqihi2, *zero_extendqisi2_64,
	zero_extendqihi2, zero_extendqihi2_64, zero_extendqihi2_31,
	and associated splitters): Likewise.
	(*sethighqisi, *sethighhisi, *sethighqidi_64, *sethighqidi_31
	and associated splitters): New.
	(truncdisi2, truncdihi2, truncdiqi2, truncsihi2, do_truncsihi2,
	*truncsihi2_64, truncsiqi2, trunchiqi2): Remove.
	(ashlhi3, ashrhi3, lshrhi3, abshi3): Remove.
	s390.h (PROMOTE_PROTOTYPES): Remove.
	config/s390/linux64.h (PROMOTE_PROTOTYPES): Likewise.

	* s390.md (muldi3): Delete, use instead ...
	(mulsidi3): ... this.
	(*muldi3_64): Rename to muldi3.
	(mulsi_6432): Fix template.
	(divdi3, moddi3): Delete, replace by ...
	(divmoddi4): ... this.
	(divmodtidi3): Fix template.
	(divmodtisi3): New.
	(udivdi3, umoddi3): Delete, replace by ...
	(udivmoddi4): ... this.
	(udivmodtidi3): Fix template.
	(divsi3, modsi3): Delete, replace by ...
	(divmodsi4): ... this.
	(divmoddisi3): Fix template.
	(udivsi3, umodsi3): Adapt.

	* s390.md (anddi3): Remove SS alternative, use instead ...
	(anddi3_ss, anddi3_ss_inv): ... these.
	(anddi3_ni): New.
	(andsi3*, andhi3*, andqi3*): Likewise.
	(iordi3): Remove SS alternative, use instead ...
	(iordi3_ss, iordi3_ss_inv): ... these.
	(iordi3_oi): New.
	(iorsi3*, iorhi3*, iorqi3*): Likewise.
	(iordi3_cc, iordi3_cconly, iorsi3_cc, iorsi3_cconly): New.
	(xordi3): Remove SS alternative, use instead ...
	(xordi3_ss, xordi3_ss_inv): ... these.
	(xordi3_oi): New.
	(xorsi3*, xorhi3*, xorqi3*): Likewise.
	(xordi3_cc, xordi3_cconly, xorsi3_cc, xorsi3_cconly): New.
	(one_cmpldi2, one_cmplsi2, one_cmplhi2, one_cmplqi2):
	Expand to XOR with -1.
	(*one_cmpldi2, *one_cmplsi2, *one_cmplhi2): Remove.
	(cmpdi_tm): Delete, replace by ...
	(cmpdi_tm_reg, cmpdi_tm_mem): ... these.
	(cmpsi_cct): Delete, replace by ...
	(cmpsi_tm_reg, cmpsi_tm_mem): ... these.
	(cmpdi_tm2, cmpsi_tm2): Improve.
	(cmphi_tm_sub, cmpqi_tm_sub, cmpqi_tm2, cmpqi_tm): New.
	s390.c (s390_single_hi, s390_extract_hi,
	s390_single_qi, s390_extract_qi): New helper routines.
	s390-protos.h (s390_single_hi, s390_extract_hi,
	s390_single_qi, s390_extract_qi): Declare.
	s390.c (tmxx_operand, const1_operand): Remove.
	s390-protos.h (tmxx_operand, const1_operand): Likewise.
	s390.h (PREDICATE_CODES): Likewise.

	* s390.md (sqrtdf2, sqrtsf2): New.

	* s390.h (CRT_CALL_STATIC_FUNCTION): Define.
	(check_and_change_labels): Remove section-change special case.

	* s390.h (RETURN_ADDR_RTX): Fix use of __builtin_return_address
	in leaf functions.  Needs ...
	(DYNAMIC_CHAIN_RTX):  ... this.  New.

	* s390.c (emit_pic_move): Don't generate pseudos if no_new_pseudos.

	* s390.md (movstrdix_64, movstrsix_31, movstrdi_64, movstrsi_31,
	clrstrsi_64, clrstrsi_31, cmpstr_64, cmpstr_31): Do not clobber
	input operands using a match_dup clause.
	(movstrdi, movstrsi, clrstrdi, clrstrsi, cmpstrdi, cmpstrsi): Adapt.

	* s390.md (floatdidf2, floatdisf2, floatsidf2, floatsidf2_ieee,
	floatsisf2, floatsisf2_ieee): Add missing CC clobber.

	* s390.md (floatsidf2_ibm): Use correct operand.

	* s390.md (fixuns_truncdfdi2, fixuns_truncdfsi2, fix_truncdfsi2,
	fixuns_truncsfdi2, fixuns_truncsfsi2, floatsidf2): Remove use of
	non-portable constants.
	s390.c (s390_gen_rtx_const_DI): New helper routine.
	s390-protos.h (s390_gen_rtx_const_DI): Declare.

	* s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Fix alignment.

	* config/s390/linux.h (ASM_OUTPUT_SHORT, ASM_OUTPUT_CHAR,
	ASM_OUTPUT_BYTE): Clean up assembly output.
	(ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGN): Remove duplicate definitions.
	(ASM_OUTPUT_ASCII): Remove.

	* config/s390/t-linux (CRTSTUFF_T_CFLAGS_S): Define.

2001-12-15  Zack Weinberg  <zack@codesourcery.com>

	* unwind-dw2-fde-glibc.c: #define _Unwind_Find_FDE to itself
	before including unwind-dw2-fde.c, if we are not using the
	special code in this file.

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

	* config/alpha/alpha.h (TARGET_SWITCHES): Turn on
	MASK_EXPLICIT_RELOCS if the assembler supports it.
	* configure.in (HAVE_AS_EXPLICIT_RELOCS): New.
	* configure, config.in: Rebuild.

Sat Dec 15 17:53:03 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (emit_call_1): If ECF_SP_DEPRESSED, pretend have adjusted
	for rounded_stack_size.

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

	* c-typeck.c, config/i386/i386.h, config/mcore/mcore.h,
	config/ns32k/ns32k.h, config/rs6000/sysv4.h, fold-const.c,
	toplev.c, cppinit.c, cppmacro.c, gcc.c: Use "built-in" and
	"bit-field" spellings in messages.
	* po/gcc.pot: Regenerate.

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

	* gcc.c, config/fr30/fr30.c, config/v850/v850-c.c, toplev.c: Use
	American spelling in messages.
	* po/gcc.pot: Regenerate.

2001-12-15  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Adjust whitespacing.  Remove
	constraints from expanders.  Replace \@ with @.

2001-12-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm/unknown-elf.h (CPP_PREDEFINES): Add a suitable default.

2001-12-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* regrename.c (copyprop_hardreg_forward): Do not keep register
	value data live across abnormal call or eh egdes.

Sat Dec 15 08:29:45 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (highest_pow2_factor, case INTEGER_CST): Return
	BIGGEST_ALIGNMENT for 0.

Sat Dec 15 14:13:03 CET 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (PRED_NORETURN): Make probabilities match reality.
	(PRED_OPCODE_POSITIVE, PRED_OPCODE_NONEQUAL, PRED_ERROR_RETURN):
	Likewise.

2001-12-15  Jakub Jelinek  <jakub@redhat.com>

	* configure.in: Check for ld.
	(HAVE_LD_EH_FRAME_HDR): Define if ld supports --eh-frame-hdr option.
	* configure, config.in: Rebuilt.
	* config.gcc: Add crtbeginT.o to extra_parts where needed.
	* config/t-linux (LIB2ADDEH, LIB2ADDEHDEP): Use unwind-dw2-fde-glibc
	frame unwinding on Linux.
	* config/t-linux-gnulibc1 (LIB2ADDEH, LIB2ADDEHDEP): Use unwind-dw2-fde
	frame unwinding.
	* config/linux.h (STARTFILE_SPEC): Use crtbeginT.o for -static.
	(LINK_EH_SPEC): Define.
	* config/i386/gnu.h (STARTFILE_SPEC): Use crtbeginT.o for -static.
	* config/ia64/linux.h (STARTFILE_SPEC, LINK_EH_SPEC): Define.
	* config/ia64/fde-glibc.c (_Unwind_IteratePhdrCallback): Don't
	iterate further if pc falls into current library, but fde was not
	found.
	* config/sparc/linux.h (STARTFILE_SPEC): Use crtbeginT.o for -static
	if using glibc.
	(LINK_EH_SPEC): Define.
	* config/sparc/linux64.h (STARTFILE_SPEC32, STARTFILE_SPEC64):
	Use crtbeginT.o for -static.
	(LINK_EH_SPEC): Define.
	* config/sparc/t-linux64 (EXTRA_MULTILIB_PARTS): Add crtbeginT.o.
	* Makefile.in (crtbeginT.o): Add rule.
	* gcc.c (init_gcc_specs): For -static-libgcc, use -lgcc -lgcc_eh.
	If neither -static-libgcc nor -shared-libgcc is passed and -shared,
	use -lgcc if LINK_EH_SPEC is defined and -lgcc_s -lgcc if not.
	If none of the above switches are passed, use -lgcc -lgcc_eh.
	(init_spec): If LINK_EH_SPEC is defined, prepend it to link_spec.
	* mklibgcc.in: Don't include LIB2ADDEH objects into libgcc.a if
	creating libgcc_s.so, put them into separate libgcc_eh.a instead.
	* unwind-dw2-fde.c: Don't include any headers if this file
	is included from other .c file.
	* unwind-dw2-fde-glibc.c: New file.
	* crtstuff.c (USE_PT_GNU_EH_FRAME, USE_EH_FRAME_REGISTRY): Define.
	Use it instead of EH_FRAME_SECTION_NAME where appropriate.

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

	* builtins.c (expand_builtin_memcmp): Mark parameter with
	ATTRIBUTE_UNUSED.
	* cfgcleanup.c (insns_match_p): Likewise.
	* regrename.c (mode_change_ok): Likewise.
	* gcc.c (execute): Const-ify.

2001-12-14  Aldy Hernandez  <aldyh@redhat.com>

	* c-parse.in (typename): Do not split attributes.
	Remove unsupported attributes warning.

	* c-decl.c (groktypename): Apply attributes.

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

	* config/ia64/ia64.c (spill_restore_mem): Mark iterator
	initialization as possibly dead.

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

	* regrename.c (mode_change_ok): New.
	(find_oldest_value_reg): Use it.

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

	* regrename.c (struct value_data): Add max_value_regs.
	(init_value_data): Initialize it.
	(kill_value): Kill values that overlap the dying register.
	(set_value_regno): New.
	(kill_set_value, kill_autoinc_value, copy_value): Use it.
	(copyprop_hardreg_forward_1): Kill earlyclobber operands
	before looking at inputs.

2001-12-14  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Handle
	DECL_WEAK for function descriptors.
	* config/rs6000/xcoff.h (HANDLE_PRAGMA_WEAK): Define if assembler
	weak support present.
	(ASM_WEAKEN_LABEL): Same.

2001-12-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (anonymous pattern): Add a missing
	mode.

2001-12-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_adjust_insn_length): Fix a
	comment typo.

2001-12-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_handle_eightbit_data_attribute):
	Remove the initialization requierment.
	(h8300_handle_tiny_data_attribute): Likewise.

2001-12-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (udivqi3): Remove.
	(divqi3): Likewise.
	(udivhi3): Likewise.
	(divhi3): Likewise.
	(umodqi3): Likewise.
	(modqi3): Likewise.
	(umodhi3): Likewise.
	(modhi3): Likewise.
	(udivmodqi3): New.
	(divmodqi3): Likewise.
	(udivmodhi3): Likewise.
	(divmodhi3): Likewise.

Sat Dec 15 01:39:12 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (flow_find_cross_jump): Replace tests for note
	by active_insn_p; count conditional jump as instruction.

2001-12-14  DJ Delorie  <dj@redhat.com>
	    Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygwin.h (I386_PE_STRIP_ENCODING): Handle '*'
	at SYM_NAME[0] or SYM_NAME[3].
	(STRIP_NAME_ENCODING): Don't check for leading '*'.

2001-12-14  Ira Ruben	<ira@apple.com>

	Add -### option (displays driver-generated commands without
	executing and quotes all arguments).
	* doc/invoke.texi: Add -###.
	* gcc.c (verbose_only_flag) - New flag.
	* (execute): If -### write quoted arguments and return.
	* (display_help): Print meaning of -###.
	* (process_command): Handle -###.

2001-12-14  Ira Ruben	<ira@apple.com>

	Fix to no allow -save-temps to clobber user's source file.
	* gcc.c: Add static globals input_stat and input_stat_set.
	(do_spec_1): For 'g', 'u', 'U' case with save_temps_flag
	set, check that user's input file is not overwritten.
	(set_input): Reset input_stat_set for each new file.

Fri Dec 14 22:14:44 CET 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Fix LOOP_EXIT heuristic.

2001-12-14  Zack Weinberg  <zack@codesourcery.com>

	* combine.c (record_dead_and_set_regs): Use
	regs_invalidated_by_call.  Don't note stores for CALL_INSNs.

2001-12-14  Roger Sayle <roger@eyesopen.com>

	* builtins.def: Rename BUILT_IN_FSQRT to BUILT_IN_SQRT and
	__builtin_fsqrt to __builtin_sqrt.

	* builtins.c (expand_builtin_mathfn,expand_builtin): Same.
	* doc/extend.texi: Simplify documentation to match patch.

Fri Dec 14 21:23:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	* config.gcc: Revamp target_cpu_default2 to strings;
	support new x86 variants.
	* i386.c (override_options): Default x86_cpu_string and x86_arch_string
	properly; set prefetch_sse.
	* i386.h (x86_prefetch_sse): Declare.
	(TARGET_PREFETCH_SSE): New.
	(CPP_CPU_DEFAULT_SPEC): Define according to the new macros.
	(TARGET_CPU_DEFAULT_*): New.

Thu Dec 13 21:57:13 CET 2001  Janis Johnson <janis187@us.ibm.com>
			      Jan Hubicka  <jh@suse.cz>

	* config/i386/i386.h (struct processor_costs): Add new members
	  prefetch_block and simultaneous_prefetches.
	  (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES): New.
	* config/i386/i386.c (processor_costs structs): Add values for
	  prefetch_block and simultaneous_prefetches.
	* config/i386/i386.md (unspec values): Remove values for prefetch
	  operations, which now use the PREFETCH rtx code.
	  (prefetch_sse, prefetch_3dnow, prefetchw): Combine to use new
	  unified prefetch support.

2001-12-14  Jason Merrill  <jason@redhat.com>

	* diagnostic.c (sorry): Increment sorrycount before saving the
	buffer state.

Fri Dec 14 19:53:23 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sqrt?f): Fix conditionals.

Fri Dec 14 07:29:52 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config.gcc (alpha64-dec-*vms*): New case.
	* config/alpha/t-vms64, config/alpha/vms-crt0-64.c: New files.
	* config/alpha/vms-psxcrt0-64.c, config/alpha/vms64.h: Likewise.
	* config/alpha/xm-vms64.h: Likewise.

	* config/alpha/alpha.c (vms_attribute_table): Add new attributes.
	(alpha_write_linkage): Test for null alpha_links.
	(SECTION_VMS_GLOBAL, SECTION_VMS_INITIALIZE): New section attributes.
	(vms_section_type_flags, vms_asm_named_section): Handle them.

Fri Dec 14 12:05:14 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fpmath, ix86_fpmath_string): New.
	(override_option): Set ix86_fpmath.
	* i386.h (MASK_MIX_SSE_I387): Remove.
	(TARGET_SSE_MATH): New.
	(TARGET_MIX_SSE_I387): Use ix86_fpmath.
	(TARGET_SWITCHES): Remove "mix-sse-i387".
	(fpmath_unit): New enum.
	(ix86_fpmath, ix86_fpmath_string): Declare.
	* i386.md (swapsf): Fix condition.
	(add?f, sub?f, mul?f, div?f, sqrt?f, min?f): Use TARGET_SSE_MATH.
	(fp_?f_*_nosse): New.
	(fp_*): Use TARGET_SSE_MATH.
	* invoke.texi (-mfpmath): Document.
	(-msse2): Add.

2001-12-14  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (output_die): Print the string in the comment for
	a DW_FORM_strp.

2001-12-14  Richard Earnshaw  <rearnsha@arm.com>

	* netbsd.h (COLLECT_SHARED_INIT_FUNC)
	(COLLECT_SHARD_FINI_FUNC): Remove redundant semicolon.
	* doc/tm.texi (COLLECT_SHARED_INIT_FUNC)
	(COLLECT_SHARD_FINI_FUNC): Use @code where appropriate.

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

	* regrename.c (kill_value_regno): Simplify chain removal.
	(kill_value): Kill all of HARD_REGNO_NREGS.
	(kill_set_value): Use kill_value not kill_value_regno.
	(kill_autoinc_value): Likewise.
	(copyprop_hardreg_forward): Don't collect refresh_blocks.
	Call delete_noop_moves.

2001-12-13  Aldy Hernandez  <aldyh@redhat.com>

	* attribs.c (c_common_attribute_table): Swap decl_req and type_req
	for the mode attribute.
	(handle_mode_attribute): Handle types, not decls.

2001-12-13  Jason Merrill  <jason@redhat.com>

	* c-common.h (COMPOUND_STMT_BODY_BLOCK): New macro.

2001-12-13  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (eh_set_lr_di): Change scratch
	constraint to base register.
	(eh_set_lr_si): Same.

2001-12-13  Hans-Peter Nilsson  <hp@axis.com>

	* expr.c (expand_expr, case ADDR_EXPR): Don't honor
	flag_force_addr for modifier != EXPAND_CONST_ADDRESS,
	modifier != EXPAND_INITIALIZER and modifier != EXPAND_SUM.

Thu Dec 13 20:30:08 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (copy_blkmode_from_reg): Add missing braces to eliminate
	warning and reformat comments.
	(expand_assignment): Don't pass EXPAND_WRITE if LHS is component.
	(highest_pow2_factor, case INTEGER_CST): Return BIGGEST_ALIGNMENT
	if overflow.

2001-12-12  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Add
	SUBSUBTARGET_OVERRIDE_OPTIONS.

	* config/rs6000/eabialtivec.h: New file.

	* config/rs6000/linuxaltivec.h: New file.

	* config.gcc: Add powerpc-*-eabialtivec and
	powerpc-*-linux-gnualtivec.

2001-12-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* toplev.c (process_options, parse_options_and_default_flags):
	Set flag_no_inline before the post_options hook.

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

	* emit-rtl.c (adjust_address_1): Don't adjust address if adjust
	is false.

2001-12-13  Richard Earnshaw  <rearnsha@arm.com>

	* collect2.c (COLLECT_SHARED_INIT_FUNC)
	(COLLECT_SHARD_FINI_FUNC): Define default values.
	(write_c_file_stat): Use them to call construtor and destructor
	functions in shared libraries.
	* doc/tm.texi (COLLECT_SHARED_INIT_FUNC)
	(COLLECT_SHARD_FINI_FUNC): Document them.
	* config/netbsd.h (COLLECT_SHARED_INIT_FUNC)
	(COLLECT_SHARD_FINI_FUNC): Define.

	* config/netbsd.h (LINK_SPEC): Don't pull in estart if creating a
	shared library.  Pass -shared through to the linker.
	* config/arm/netbsd.h (LINK_SPEC): Likewise.

	* config/arm/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -fpic.
	(SHLIB_EXT, SHLIB_NAME, SHLIB_SONAME, SHLIB_OBJS, SHLIB_LINK)
	(SHLIB_INSTALL): Define.

2001-12-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (legitimize_pic_address): Handle LABEL_REFs in substantially
	the same way as we handle SYMBOL_REFS.

Thu Dec 13 07:47:24 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* loop.c (remove_constant_addition): Fix prototype and whitespace.
	(emit_prefetch_instructions): Remove warnings and whitespace
	changes.

Thu Dec 13 06:48:38 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/vms-cc.c (preprocess_args): Fix forward
	declaration.

Thu Dec 13 12:31:07 CET 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Reorganize opcode heuristics.
	* predict.def (PRED_OPCODE_POSITIVE, PRED_OPCODE_NONEQUAL,
	PRED_FPOPCODE): New.

	* i386.c (override_options): Recognize various CPU variants and set
	SSE/MMX/3dNOW flags accordingly.
	* i386.h (MASK_MMX_SET, MASK_SSE_SET, MASK_SSE2_SET, MASK_3DNOW_SET,
	MASK_3DNOW_A_SET): New.
	(MASK_ACCUMULATE_OUTGOING_ARGS_SET): New.
	(MASK_NO_ACCUMULATE_OUTGOING_ARGS): Delete.
	(MASK_*): Renumber.
	(TARGET_FLAGS): Use new masks.
	(CPP_CPU_SPECS): Recognize new CPU variants.
	* invoke.texi (-mcpu): Update documentation.

	* flags.h (flag_prefetch_loop_arrays): Declare.
	* loop.h (LOOP_PREFETCH): Define new constant.
	* loop.c (strength_reduce): Call emit_prefetch_instructions.
	(MAX_PREFETCHES, PREFETCH_BLOCKS_BEFORE_LOOP_MAX,
	PREFETCH_BLOCKS_BEFORE_LOOP_MIN, PREFETCH_BLOCKS_IN_LOOP_MIN): New
	constants.
	(check_store_data): New structure.
	(check_store, emit_prefetch_instructions, rtx_equal_for_prefetch_p):
	New functions.
	* toplev.c: Include insn-flags.h.
	(flag_prefetch_loop_arrays): New global variable.
	(lang_independent_option): Add -fprefetch-loop-arrays.
	(rest_of_compilation) Pass LOOP_PREFETCH when flag_prefetch_loop_arrays
	is set.
	* Makefile.in (toplev.c): Depend on insn-flags.h.
	* invoke.texi (-fprefetch-loop-arrays): Document.

	* predict.c (estimate_probability): Distribute the loop exit
	probability according to number of exit edges.

	* cfgcleanup.c (insns_match_p): Break out from ...;
	(flow_find_cross_jump): ... here;
	(outgoing_edges_match): Add parameter MODE; attempt to match everything
	except for tablejumps.
	(try_crossjump_to_edge): Accept complex edges.
	(try_crossjump_bb): Likewise.

2001-11-29  Corey Minyard <minyard@acm.org>

	* recog.c (validate_replace_rtx_1): Use simplify_gen_binary
	instead of plus_constant.
	* simplify-rtx.c (neg_const_int): New.
	(simplify_gen_binary, simplify_plus_minus): Use it.

2001-12-12  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_memset, expand_builtin_memcpy,
	expand_builtin_strcpy): Additional arguments TARGET and MODE.
	(expand_builtin_bzero, expand_builtin_strcpy,
	expand_builtin_strncpy, expand_builtin_bzero): Pass additional
	TARGET and MODE parameters to the above functions.
	(expand_builtin_memset, expand_builtin_memcpy): Optimize the
	case where the LEN parameter is constant zero.
	(expand_builtin_memcmp): No longer conditional on
	HAVE_cmpstrsi.  Take an additional mode parameter.  Optimize
	the cases where len is either constant zero or one.
	Optimize to call to memcpy, even if the memcpy isn't inlined.
	(expand_builtin_strncpy): Optimize to call memcpy, even if the
	memcpy isn't inlined.
	(expand_builtin_strcmp, expand_builtin_strncmp): Always attempt
	to optimize to a call to memcmp.
	(expand_builtin): expand_builtin_memcmp can always be called,
	and pass the required parameters to expand_builtin_memcmp,
	expand_builtin_memset, expand_builtin_memcpy and
	expand_builtin_strcpy.

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

	* config.gcc (arm-*-freebsd*): Add target.
	* config/arm/freebsd.h: New file.
	* config/arm/arm.h (CPP_PREDEFINES): Do not define.
	(CPP_SPEC): #undef before defining.
	(CPP_CPU_ARCH_SPEC): Add -Acpu=arm -Amachine=arm.
	* config/arm/conix-elf.h (CPP_PREDEFINES): Remove -Acpu=arm
	-Amachine=arm.
	* config/arm/linux-elf.h: Likewise.
	* config/arm/netbsd.h: Likewise.
	* config/arm/riscix.h: Likewise.
	* config/arm/riscix1-1.h: Likewise.
	* config/arm/semiaof.h: Likewise.

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

	* regrename.c (copyprop_hardreg_forward): New optimization.
	(kill_value_regno, kill_value, init_value_data, kill_clobbered_value,
	kill_set_value, kill_autoinc_value, copy_value, find_oldest_value_reg,
	replace_oldest_value_reg, replace_oldest_value_addr,
	replace_oldest_value_mem, copyprop_hardreg_forward_1,
	debug_value_data, validate_value_data): New.
	* rtl.h (copyprop_hardreg_forward): Declare.
	* toplev.c (flag_cprop_registers): New.
	(f_options): Add -fcprop-registers
	(rest_of_compilation): Invoke it.
	(parse_options_and_default_flags): Set it at -O1.
	* doc/invoke.texi: Document it.

2001-12-12  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2out.c (dw_val_class): Add dw_val_class_range_list.
	(DEBUG_RANGES_SECTION_LABEL): Define.
	(ranges_section_label): Add.
	(add_AT_range_list): New.
	(print_die, sizeof_die, value_format): Handle dw_val_class_range_list.
	(output_loc_list): Location expression length is always 2-byte.
	(output_die): Handle dw_val_class_range_list.
	(gen_lexical_block_die): Call add_AT_range_list.
	(dwarf2out_init): Initialize ranges_section_label.
	(dwarf2out_finish): Emit ranges_section_label.

2001-12-12  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (digest_init): Allow initializing
	static storage duration objects with compound literals.
	* doc/extend.texi (Compound literals): Document the extension.

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

	* emit-rtl.c (adjust_address_1): Always copy address to avoid
	shared rtl.

Wed Dec 12 07:37:52 2001  Olivier Hainque <hainque@act-europe.fr>

	* stmt.c (expand_end_case): Do subtraction of lower bound as trees
	to avoid overflow.

Wed Dec 12 07:35:24 2001  Douglas B. Rupp  <rupp@gnat.com>

	* cppfiles.c (read_include_file): Set buffer size properly when
	file is shorter than expected.

Wed Dec 12 08:35:33 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* objc/objc-act.c (encode_complete_bitfield): Fixed encoding
	enumeral types - encode them using 'i'.

2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/extend.texi (Deprecated Features): Deprecate implicit
	typename. Document that named return and initializer lists are now
	removed.

2001-12-11  Roger Sayle <roger@eyesopen.com>

	* except.c (reachable_next_level): Handle ERT_UNKNOWN to avoid
	compiler warning about enumeration values not being handled.

2001-12-11  Momchil Velikov  <velco@fadata.bg>

	* config/fp-bit.c (pack_d): Cast to ``fractype'' for long long
	shifts.

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

	* config/alpha/alpha.h (TARGET_FIXUP_EV5_PREFETCH): New.
	* config/alpha/linux.h (TARGET_FIXUP_EV5_PREFETCH): New.
	* config/alpha/alpha.md (prefetch): New.

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

	* combine.c (simplify_and_const_int): Simplify (AND (PLUS X Y) C)
	if C has only low bits set and doesn't intersect with X or Y.

Tue Dec 11 23:58:39 EST 2001  John Wehle  (john@feith.com)

	* basic-block.h (flow_preorder_transversal_compute): Declare.
	* cfganal.c (flow_preorder_transversal_compute): Implement.

Tue Dec 11 23:54:27 EST 2001  John Wehle  (john@feith.com)

	* cfganal.c (flow_depth_first_order_compute): Always
	increment dfsnum.

2001-11-30 Alan Matsuoka <alanm@redhat.com>

	* combine.c (combine_simplify_rtx) : Can't simplify
	cases that use mode class MODE_CC.

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

	* expmed.c (expand_divmod): Ignore sdiv_pow2_cheap for modes in
	which there is no divide expander.

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

	* except.c (sjlj_find_directly_reachable_regions): Don't
	consider RNL_BLOCKED a directly reachable region.
	(sjlj_assign_call_site_values): Trust directly_reachable.
	(sjlj_emit_dispatch_table): Likewise.

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

	* config/alpha/alpha.md (divmodsi_internal_er): Split, so that
	we represent the address load's dependency on the gp.
	(divmoddi_internal_er): Likewise.
	(divmodsi_internal_er_1, divmoddi_internal_er_1): New.

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

	* emit-rtl.c (widen_memory_access): New.
	* expr.h (widen_memory_access): Declare it.
	* config/alpha/alpha.c (get_aligned_mem): Use it.

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

	* combine.c (simplify_shift_const): Move SHIFT_COUNT_TRUNCATED
	simplification above out of range check.

2001-12-11  Dan Nicolaescu  <dann@ics.uci.edu>

	* config/sparc/sparc.md (prefetch): New.

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

	* output.h (regno_uninitialized): Make argument unsigned.

	* flow.c (regno_uninitialized): Make regno unsigned.

2001-12-11  David O'Brien  <obrien@FreeBSD.org>

	* elfos.h (ENDFILE_SPEC, STARTFILE_SPEC): Do not define.
	* config/cris/cris.h (ENDFILE_SPEC): Define.
	* config/i386/i386elf.h ((ENDFILE_SPEC, STARTFILE_SPEC): Define.
	* config/pa/elf.h: Likewise.

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

	* objc/objc-act.c (build_string_class_template): New.
	(build_objc_string_object): Call it.

2001-12-11  Steve Ellcey  <sje@cup.hp.com>

	* doc/tm.texi (FUNCTION_ARG_REG_LITTLE_ENDIAN): New.
	* defaults.h (FUNCTION_ARG_REG_LITTLE_ENDIAN): New.
	* calls.c (store_unaligned_arguments_into_pseudos): Check
	FUNCTION_ARG_REG_LITTLE_ENDIAN to see how structures
	are passed/returned.
	* expr.c (move_block_from_reg): Ditto.
	(move_block_from_reg): Ditto.
	(copy_blkmode_from_reg): Ditto.
	* stmt.c (expand_return): Ditto.
	* stor-layout.c (compute_record_mode): If
	FUNCTION_ARG_REG_LITTLE_ENDIAN is set then check
	MEMBER_TYPE_FORCES_BLK even if mode == VOIDmode.
	* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Set to true
	so that Structures of one field are still treated as structures.
	(FUNCTION_ARG_REG_LITTLE_ENDIAN): New, set it to true.
	(FUNCTION_ARG_PADDING): Set to ia64_hpux_function_arg_padding().
	(PAD_VARARGS_DOWN): Modify from default to not pad structures down.
	* config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): New.
	* config/ia64/ia64.c (ia64_hpux_function_arg_padding): New function
	to special case handling of structure padding.

2001-12-11  Daniel Berlin  <dan@cgsoftware.com>

	* sched-rgn.c (CONST_BASED_ADDRESS_P): CONST_INT -> CONSTANT_P.
	(may_trap_exp): Stores only are risk if they trap, too, not just
	if code == MEM.

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

	* flow.c (find_regno_partial): Indent properly.  Add a default to
	switch.

2001-12-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (combine_strings): Complain if concatenating
	__FUNCTION__.
	* c-parse.in (yylexname): Flag artificial strings.
	* tree.h (TREE_ARTIFICIAL_STRING_P): New.
doc:
	* extend.texi: Update.

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

	* c-common.c (type_for_mode): Handle unsigned vectors.
	(type_for_mode): Remove redundant calls to TYPE_MODE.

	* tree.c (make_vector): New.
	(build_common_tree_nodes_2): Use make_vector for vector types.
	Add unsigned vector types.

	* tree.h (tree_index): Add unsigned types for vectors.
	(unsigned_V16QI_type_node): New.
	(unsigned_V4SI_type_node): New.
	(unsigned_V8QI_type_node): New.
	(unsigned_V8HI_type_node): New.
	(unsigned_V4HI_type_node): New.
	(unsigned_V2SI_type_node): New.

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

	* objc/objc-act.c (finish_message_expr): Fix misplaced parens in a
	test of class names.

2001-12-11  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (m68020-*-elf*): Expand tm_file to include all needed
	cpu configuration headers.
	* config/h8300/elf.h: Include dbxelf.h.
	* config/m68k/linux.h: Likewise.
	* config/m68k/m68020-elf.h: Likewise.
	* config/m68k/m68kv4.h: Likewise.
	* config/sh/elf.h: Likewise.
	* config/m68k/m68kemb.h: Add comment about the its purpose.

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

	* objc/objc-act.c (build_constructor): Cast initializer values
	to the proper field types.

2001-12-11  Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2.c (execute_cfa_program): Fix DW_CFA_restore handling.

2001-12-10  Roger Sayle <roger@eyesopen.com>

	* builtins.c (expand_builtin): Use a switch statement to list
	those functions not expanded without optimizations, instead of a
	series of equality tests.

Tue Dec 11 07:08:57 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (LIB_SPEC): Define.
	* config/alpha/xm-vms.h (INCLUDE_DEFAULTS): Don't set component field.

	* libgcc2.c (_bb): Remove ctime declaration.

	* Makefile.in (stage[1234]-start): $(LN_S) utilities in a manner
	that works if LN_S = cp.

	* config/alpha/x-vms (version): Change "." to "_".

	* configure.in: Hardcode that vfork works on VMS host.
	* configure: Regenerated.

Mon Dec 10 18:37:31 2001  Douglas B. Rupp  <rupp@gnat.com>

	* gcc.c (convert_filename): Add do_obj parameter. Don't convert
	unless do_obj true.
	(process_command): Modify calls to convert_filename.

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

	* config/sparc/sol2-sld-64.h: Include dbxelf.h again.

Mon Dec 10 15:54:27 2001  Jeffrey A Law  (law@cygnus.com)

	* combine.c (known_cond): Check mode of each operand to determine
	if COND is comparing floating point values.

2001-12-10  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.h (processor_type): Add PPC405.
	(RTX_COSTS): Add PPC405.  Correct rs64 and ppc630 multiply costs.
	* rs6000.md: Add PPC405 information.  Utilize imul2 and imul3 for
	rios1, rs64, and ppc630 processors.
	* rs6000.c (processor_target_table): Add PPC405.

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

	* config/alpha/alpha.md (unaligned_extendhidi): Call gen_lowpart
	instead of hardcoding subregs into the _be and _le patterns.

2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c, c-parse.in, c-typeck.c: Revert concatenation changes.

Mon Dec 10 09:19:11 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.md (leave, leave_rex64): Adjust pattern to match
	what insn does.

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

	* doc/cpp.texi: Don't condition menus on @ifinfo.  Condition the
	copyright notice formerly conditioned on @ifinfo on @ifnottex
	instead.

Mon Dec 10 06:15:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* vmsdbgout.c (lookup_filename): Remove warning.

Mon Dec 10 06:09:57 2001  Douglas B. Rupp  <rupp@gnat.com>

	* Makefile.in: Add $(OUTPUT_OPTION) to compilation rules.

	* config.gcc (alpha*-dec-vms*): Change to alpha*-dec-*vms*
	(exeext, target_alias, prefix, local_prefix): Define.
	* config/alpha/x-vms (USE_COLLECT2): Make empty.
	* config/alpha/xm-vms.h (INCLUDE_DEFAULTS): Use Unix style
	file specifications. Remove ".".
	(GCC_INCLUDE_DIR): Remove redefinition (redundant).
	* fixinc/mkfixinc.sh (alpha*-dec-vms*):  Change to alpha*-dec-*vms*

2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (.po.gmo): Use POSIXLY_CORRECT argument ordering.

Sun Dec  9 21:57:24 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/t-vms (EXTRA_PARTS): Append $(VMS_EXTRA_PARTS)
	Add rules for building [vp]crt0.o
	* config/alpha/vms.h (START_FILE_SPEC): Define.
	* config/alpha/x-vms (VMS_EXTRA_PARTS): Define
	* config/alpha/vms-crt0.c, config/alpha/vms-psxcrt0.c: New files.
	* doc/invoke.texi: Document special Alpha/VMS options.

Sun Dec  9 20:25:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* hwint.h (HOST_BITS_PER_LONGLONG): Deal with __int64 type.
	* vmsdbg.h (DST_SRC_COMMAND): Test for type of long long or __int64,
	not GNUC.

Sun Dec  9 20:19:32 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
			  Douglas B. Rupp  <rupp@gnat.com>

	* tree.c (append_random_char): Conditionalize INO for VMS.

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

	* cfgcleanup.c (label_is_jump_target_p): New function.
	(try_optimize_cfg): Use label_is_jump_target_p to check if label is
	target of a JUMP_INSN from the preceding block.

Sun Dec  9 18:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>

	* vmsdbgout.c (lookup_filename): Assign null string instead
	of null pointer to fnam.

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

	* config/alpha/alpha.c (alpha_align_insns): Suppress realignment
	immediately after a call; insert nops before a call.

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

	* config/alpha/alpha.c (alpha_align_insns): Use align_functions,
	not FUNCTION_BOUNDARY.
	* config/alpha/alpha.h (TRAMPOLINE_ALIGNMENT): New.
	* config/alpha/alpha32.h, config/alpha/vms.h: Likewise.
	* config/alpha/unicosmk.h (FUNCTION_BOUNDARY): Remove.

2001-12-09  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_function_block_profiler,
	mmix_block_profiler, mmix_function_block_profiler_exit): Delete
	unused functions.
	* config/mmix/mmix-protos.h (mmix_function_block_profiler,
	mmix_block_profiler, mmix_function_block_profiler_exit): Delete
	prototypes.

	* config/cris/cris.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER):
	Delete obsoleted macros.

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

	* doc/cpp.texi, doc/cppinternals.texi, doc/invoke.texi,
	doc/md.texi, doc/rtl.texi, doc/tm.texi: Use American spelling.

	* ChangeLog.2, ChangeLog.3, ChangeLog.5, ChangeLog, alias.c,
	cfgbuild.c, expmed.c, expr.c, final.c, flow.c, fold-const.c,
	function.c, config/alpha/alpha.md, config/alpha/vms-ld.c,
	config/arm/arm.c, config/arm/arm.h, config/c4x/libgcc.S,
	config/i370/i370.c, config/i386/i386.c,
	config/i386/i386-interix.h, config/i386/i386.md,
	config/i386/i386.h, config/i386/netbsd-elf.h, config/ia64/ia64.c,
	config/m32r/m32r-protos.h, config/mcore/mcore.h,
	config/rs6000/rs6000.h, config/sparc/linux64.h,
	config/sparc/sparc.c, config/v850/v850-protos.h,
	config/cris/cris.h, config/s390/s390.md, config/elfos.h: Fix
	spelling errors.

2001-12-09  Daniel Berlin  <dan@cgsoftware.com>

	* config/rs6000/rs6000.h (enum rs6000_builtins): Add remaining
	altivec builtins (VCF?X, VCT?XS, VSEL, V*EFP, VRFI*).

	* config/rs6000/rs6000.c: Ditto.

	* config/rs6000/rs6000.md: Ditto.

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

	* 1750a.md: Add default case in switch.
	* alpha/vms.h (INITIAL_ELIMINATION_OFFSET): Add abort clause in
	if-else statement.
	* dsp16xx.c (print_operand_address): Likewise.
	* i386/osf1elf.h (FUNCTION_PROFILER): Const-ify.
	* ia64.md: Add missing braces.
	* rs6000-protos.h (s8bit_cint_operand): Prototype.
	* s390.h (INITIAL_ELIMINATION_OFFSET): Add abort clause in
	if-else statement.
	* stormy16.h (REG_CLASS_CONTENTS): Add missing braces.
	* v850.h (OUTPUT_ADDR_CONST_EXTRA): Don't issue a `return'.
	* dbxout.c (dbxout_source_file): Move a variable into the scope
	where it is used.
	* final.c (profile_function): Mark parameter with
	ATTRIBUTE_UNUSED.
	* genemit.c (gen_expand): Likewise for generated file.
	* insn-addr.h (INSN_ADDRESSES_NEW): Avoid undefined behavior.

	* vmsdbg.h: Delete spurious close-comment.
	(DST_HEADER): Fix typo in ENUM_BITFIELD parameter.
	* vmsdbgout.c (write_modbeg): Define return type.

	* m68k/3b1.h (ASM_OUTPUT_ALIGN): Wrap in do-while(0).
	* m68k/amix.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* m68k/atari.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* m68k/hp320.h (ASM_OUTPUT_ALIGN): Likewise.
	* m68k/m68kelf.h (ASM_OUTPUT_ALIGN): Likewise.
	* m68k/sgs.h (ASM_OUTPUT_ALIGN): Likewise.
	* m68k/tower-as.h (ASM_OUTPUT_ALIGN): Likewise.

2001-12-08  Tom Rix  <trix@redhat.com>

	* config/rs6000/aix43.h (NON_POWERPC_MASKS): Delete MASK_STRING.
	* config/rs6000/aix51.h (NON_POWERPC_MASKS): Same.
	* config/rs6000/rs6000.md (load_multiple, store_multiple): Do not use
	for powerpc64.
	* config/rs6000/rs6000.md (movstrsi_8reg, movstrsi_6reg,
	movstrsi_4reg, movstrsi_1_reg): Add powerpc64.
	* config/rs6000/rs6000.c (expand_block_move): Do not use
	gen_movstrsi_2reg and powerpc64.

2001-10-08  Aldy Hernandez  <aldyh@redhat.com>

	* c-common.h (rid): Add RID_CHOOSE_EXPR and
	RID_TYPES_COMPATIBLE_P.

	* c-parse.in (reswords): Add __builtin_choose_expr.
	Add __builtin_types_compatible_p.
	Add CHOOSE_EXPR token.
	Add TYPES_COMPATIBLE_P token.
	Add production for CHOOSE_EXPR.
	Add production for TYPES_COMPATIBLE_P.

	* doc/extend.texi (__builtin_choose_expr): Add documentation.
	(__builtin_types_compatible_p): Likewise.

2001-12-08  David Edelsohn  <edelsohn@gnu.org>

	* stor-layout.c (place_union_field): Apply ADJUST_FIELD_ALIGN
	to unions.

2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-parse.in: Take string literals in assembler constructs,
	not expressions.
	* c-typeck.c (build_asm_stmt, simple_asm_stmt): No need to
	check the strings are STRING_CSTs.

2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (c_lex): Peek a token ahead for a string to concatenate,
	using combine_strings to do the concatenation.
	* c-parse.in: Replace uses of the string non-terminal with STRING.
	Don't attempt string concatenation.
	(OBJC_STRING): New terminal.
	(string): Remove non-terminal.
	(_yylex): Call combine_strings on function names.  Generate
	OBJC_STRING terminals; don't pass '@' on to yacc.
	* c-typeck.c (simple_asm_stmt): Don't concatenate strings here.
	(build_asm_stmt): Similarly.

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

	* rtlanal.c (get_jump_table_offset): Delete unused variable.

2001-12-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (VUNSPEC_PREFETCH): Delete constant definition.
	(prefetch): Rewrite using PREFETCH RTL primitive.
	* arm.h (arm_builtins): Delete ARM_BUILTIN_PREFETCH).
	* arm.c (arm_init_builtins): Don't initialize a builtin for
	__builtin_prefetch here.
	(arm_expand_builtin): Don't expand __builtin_prefetch here.

2001-12-08  Richard Earnshaw  <rearnsha@arm.com>

	* final.c (cleanup_subreg_operands):  Use recog_data.operand_loc
	in test for a subreg.

2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* rtl.c (rtx_equal_p): Check for null pointers when comparing rtx
	strings.

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

	* doc/extend.texi: Fix typo last change.

	* c-decl.c (c_language): Remove duplicate.

2001-12-07  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/darwin.h: Set MAX_LONG_TYPE_SIZE to 32.
	* config/rs6000/rs6000.c (rs6000_emit_move): In Darwin-
	specific codegen, eliminate a register copy.
	(print_operand_address): Add support for Darwin's lo16(constant)
	syntax.
	(rs6000_machopic_legitimize_pic_address): Fix darwin-specific
	generation of addresses within very large data objects.
	(s8bit_cint_operand):  New.
	* config/rs6000/rs6000.md: Remove "iu" reference for 750/7400.
	Move "mtjmpr" to correct functional unit for 750/7400/7450.
	Add imul2 and imul3 insn types for multiplication by 16- and
	8-bit constants.
	Change tablejump patterns to strongly discourage using LR
	rather than CTR.
	Add %lo16 patterns for Darwin loads and stores.

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

	* alpha.md: Use (HOST_WIDE_INT)1<<63 in lieu of 0x8000000000000000.

2001-12-07  Stephane Carrez  <Stephane.Carrez@sun.com>

	* config/sparc/sparc.c (epilogue_renumber): Do not replace %fp
	with %sp because it can cause the delayed instruction to load
	below the stack.

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

	* alpha.c (alpha_expand_unaligned_store,
	alpha_expand_unaligned_store_words): Use constm1_rtx in place of
	call to immed_double_const.

2001-12-07  Aldy Hernandez  <aldyh@redhat.com>

	* doc/extend.texi (Variable Attributes): Document vector_size.

	* attribs.c (c_common_attribute_table): Add vector_size.
	(handle_vector_size_attribute): New.
	(vector_size_helper): New.
	(decl_attributes): Relayout the decl after calculating attribs.

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

	* doc/gcc.texi: Don't include install-old.texi.  Adjust menu
	description for Trouble section.
	* doc/install-old.texi: Adjust for inclusion as chapter of new
	installation manual.
	* doc/install.texi, doc/include/fdl.texi, doc/install.texi2html:
	Adjust to include old installation chapter as chapter of new
	installation manual.

Fri Dec  7 11:07:35 EST 2001  John Wehle  (john@feith.com)

	* rtl.h (get_jump_table_offset): Declare.
	* rtlanal.c (get_jump_table_offset): Implement.

Fri Dec  7 07:06:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* final.c (bb_head, bb_tail, bb_file_label_num, bb_func_label_num):
	Deleted; were used only by BB profiler code.
	(sbb_head, sbb_tail, sbb_label_num): Likewise.
	(end_final): Delete now-unused vars I, PTR, and SPTR.

	* expr.c (store_field): Remove warning.
	(expand_expr, case COMPONENT_REF, case VIEW_CONVERT_EXPR): Likewise.
	(highest_pow2_factor, case MIN_EXPR, case MAX_EXPR): Add cases.
	(highest_pow2_factor, case *_DIV_EXPR): Only can do something if
	divisor constant power of 2.
	(highest_pow2_factor, case COMPOUND_EXPR): Look at operand 1.

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

	* alpha.c (function_arg): Cast value to HOST_WIDE_INT before
	shifting.

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

	* rs6000.h (PRE_GCC3_DWARF_FRAME_REGISTERS): New.
	(DWARF_FRAME_REGISTERS): Delete.

2001-12-06  Janis Johnson  <janis187@us.ibm.com>

	* builtin-types.def (BT_FN_VOID_PTR_VAR): New.
	* builtins.def (BUILT_IN_PREFETCH): Change arguments.
	* builtins.c (expand_builtin_prefetch): Two arguments are now optional,
	with defaults for read prefetch with high degree of locality.
	* doc/extend.texi (__builtin_prefetch): Update documentation.
	* doc/md.texi (prefetch): Add documentation.

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

	* fixinc/inclhack.def (stdio_va_list): Handle __VA_LIST__ in Tru64
	UNIX V5.1A stdio.h.
	* fixinc/fixincl.x: Regenerate.
	Fixes PR libf2c/4826.

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

	* doc/tm.texi (DWARF_FRAME_REGISTERS): Add documentation.
	(PRE_GCC3_DWARF_FRAME_REGISTERS): Same.

	* unwind-dw2.c (__frame_state_for): Change DWARF_FRAME_REGISTERS
	to PRE_GCC3_DWARF_FRAME_REGISTERS.
	(frame_state): Same.
	(PRE_GCC3_DWARF_FRAME_REGISTERS): Define if not already defined.

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

	* langhooks.c (lhd_staticp): Mark parameter with
	ATTRIBUTE_UNUSED.

2001-12-06  H.J. Lu <hjl@gnu.org>

	* Makefile.in (.po.gmo): Use "-test -d po || mkdir po" to
	reduce noise.
	(.po.pox): Likewise.
	(o/$(PACKAGE).pot): Likewise.

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

	* tree.c (get_callee_fndecl): Move DECL_ABSTRACT_ORIGIN-following...
	* tree-inline.c (expand_call_inline): ... here.

2001-12-06  H.J. Lu <hjl@gnu.org>

	* Makefile.in (.po.gmo): Use "-mkdir po" for parallel build.
	(.po.pox): Likewise.
	(o/$(PACKAGE).pot): Likewise.

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

	* config.gcc: Include dbxelf.h before elfos.h.
	* elfos.h: Don't include dbxelf.h, let config.gcc handle it.

2001-12-06  Zack Weinberg  <zack@codesourcery.com>

	* cppfiles.c (open_file): If we've opened a directory by
	mistake, close it.
	(find_include_file): Avoid turning / into // or // into ///.

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

	* config/arm/arm.h (STRUCT_VALUE): Suppress definition.
	(STRUCT_VALUE_REGNUM): Restore definition.

2001-12-06  Andrew MacLeod <amacleod@redhat.com>

	* flow.c (find_regno_partial): Return register, not the expression
	the register is in.

Thu Dec  6 09:24:12 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (handle_epilogue_set): Check for FP setting case when
	SP is set from FP in same insn.

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

	* config/arm/arm.c (load_multiple_sequence): Pass pointer to
	RTX when calling alter_subreg().
	(store_multiple_sequence): Pass pointer to RTX when calling
	alter_subreg().

Thu Dec  6 06:55:13 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (assing_parms): Fix typo in last change.
	* config/clipper.c (clipper_builtin_saveregs): Remove Checker code.
	* config/m88k/m88k.c (m88k_builtin_saveregs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_builtin_saveregs): Likewise.

2001-12-06  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_unique_section): Simplify and
	correct code selecting section.

Thu Dec  6 12:45:33 CET 2001  Jan Hubicka  <jh@suse.cz>

	* final.c (count_basic_block, add_bb, add_bb_string):
	Kill.
	(end_final, final_start_function, final, final_scan_insn,
	leaf_function_p): Kill BB profiler related code.
	* flags.h (profile_block_flag): Kill.
	* libgcc2.c (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE,
	BB_BUCKETS, BBINBUFSIZE, bb_edge, bb_func_mode, bb_func,
	__bb, bb_src, bb_dst, bb_tracefile, bb_hashbuckets,
	bb_func_head, bb_callcount, bb_mode, bb_stack, bb_stacksize
	reported, GOPENDECOMPRESS, GOPENCOMPRESS, gopen, gclose,
	__bb_exit_trace_func, __bb_init_prg, __bb_trace_func,
	__bb_trace_func_ret, __bb_init_file, __bb_trace_ret,
	__bb_init_trace_func): Kill.
	* toplev.c (profile_block_flag): Kill.
	(indepdendent_decode_option, process_options): Kill -a related code.
	* alpha.c (direct_call_operand): Likewise.
	* arm.c (arm_expand_prologue, thumb_expand_prologue,
	thumb_expand_epilogue): Likewise.
	* c4x.c (c4x_expand_prologue, c4x_null_epilogue_p): Likewise.
	* c4x.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* d30v.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* fr30.c (fr30_expand_prologue): Kill BB profiler related code.
	* i386.c (ix86_can_use_return_insn_p, ix86_expand_prologue,
	ix86_expand_epilogue, ix86_expand_epilogue): Kill BB profiler related
	code.
	(ix86_output_function_block_profiler, ix86_output_block_profiler): Kill.
	* i386.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* fr30.c (fr30_expand_prologue): Kill BB profiler related code.
	* i960.c (i960_output_function_prologue): Kill BB profiler related
	code.
	* ia64.c (ia64_compute_frame_size): Likewise.
	* ia64.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* m32r.c (m32r_expand_prolofue): Kill BB profiler related code.
	* m68hc11.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* m68k.c (m68k_output_function_epilogue): Kill BB profiler related code.
	* m68k.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* m88k.c (output_options, m88k_layout_frame, m88k_expand_prologue):
	Kill BB profiler related code.
	* m88k.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* mips.c (mips_expand_prologue): Kill BB profiler related code.
	* mmix.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* rs6000.c (rs6000_override_options): Kill BB profiler related code.
	* s960.c (s390_function_prologue): Kill BB profiler related code.
	* s960.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* linux-aout.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* linux.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* linux64.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* sol2.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* sparc.c (sparc_override_options, eligible_for_sibcall_delay,
	sparc_nonflat_function_epilogue): Kill BB profiler related code.
	(sparc_function_block_profiler, sparc_block_profiler,
	sparc_function_block_profiler_exit): Kill.
	* sparc.h (OVERRIDE_OPTIONS): Kill BB profiler related code.
	(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* sun4o3.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* sunos4.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Kill.
	* stormy16.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.
	* doc/invoke.texi: Kill documentation of -a and -ax.
	* tm.texi (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	FUNCTION_BLOCK_PROFILER_EXIT, MACHINE_STATE_SAVE,
	MACHINE_STATE_RESTORE): Kill.

2001-10-26  Steve Christiansen  <smc@us.ibm.com>

	* doc/rtl.texi: Use a table to display RTL format characters.

2001-12-06  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/linux64.h (LINK_SPEC): Correct name of dynamic linker.

Wed Dec  5 19:18:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (keep_stack_depressed): Check global_live_at_start
	of EXIT_BLOCK for temp register and verify it isn't in equiv_reg_src.

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

	* config.gcc (powerpc-*-freebsd*): Use the proper tmake_file files,
	as set by the generic FreeBSD configure framework.

2001-12-04  Jason Merrill  <jason@redhat.com>

	* langhooks.h (struct lang_hooks_for_tree_inlining): Add
	start_inlining, end_inlining.
	* tree-inline.c (expand_call_inline): Call them.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
	(LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
	(LANG_HOOKS_TREE_INLINING_INITIALIZER): Add them.
	* langhooks.c (lhd_tree_inlining_start_inlining): New fn.
	(lhd_tree_inlining_end_inlining): New fn.

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

	* c-common.c (shadow_warning): New function, moved from cp/decl.c.
	* c-common.h (shadow_warning): New.
	* c-decl.c: Include c-common.h.
	(warn_if_shadowing): New, broken out of pushdecl.
	(pushdecl): Use warn_if_shadowing.
	(store_parm_decls): Prevent duplicate -Wshadow warnings.

Wed Dec  5 17:59:19 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (SIZE_TYPE, PTRDIFF_TYPE): Remove, were disabled.
	(DOLLARS_IN_IDENTIFIERS, LINK_SPEC): Remove duplicate.
	(LIB_SPEC): Remove.

Wed Dec  5 16:03:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* doc/c-tree.texi (RECORD_TYPE, UNION_TYPE): Expand on definition.
	(QUAL_UNION_TYPE): New type.

	* varasm.c (output_constant, case ERROR_MARK): New case.

	* attribs.c (handle_no_check_memory_usage_atribute): Deleted.
	(c_com): Delete its reference.
	* builtins.c: Delete memory checking code.
	* calls.c, expr.c, function.c, stmt.c: Likewise.
	* builtins.c (expand_builtin_arg_info): Remove reference to
	EXPAND_MEMORY_USE_* modifiers.
	* explow.c (expr_size): Likewise.
	* expr.c (expand_expr, expand_increment): Likewise.
	* expr.h (ARGS_SIZE_RTX): Likewise.
	* function.c (assign_parms, expand_pending_sizeso): Likewise.
	* c-decl.c (duplicate_decls): Don't handle DECL_NO_CHECK_MEMORY_USAGE.
	* expr.c (in_check_memory_usage): Delete.
	(get_push_address, get_memory_usage_from_modifier): Delete.
	(expand_assigment): Use EXPAND_WRITE on destination.
	(expand_expr): Delete ro_modifier.
	* expr.h (expand_modifier): Delete EXPAND_MEMORY_* entries and
	add EXPAND_WRITE.
	(memory_use_mode): Delete.
	* flags.h (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	* function.c (expand_function_start): Don't set
	current_function_check_memory_usage.
	* function.h (check_memory_usage): Delete.
	* libfuncs.h, optabs.c: Delete chkr_* stuff.
	* stmt.c (expand_asm_opernd): Change EXPAND_MEMORY_USE_WO to
	EXPAND_WRITE.
	* toplev.c (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	(f_options, process_options): Delete references to above.
	* tree.h (DECL_NO_CHECK_MEMORY_USAGE): Deleted.
	* varasm.c (CHKR_PREFIX): Deleted.
	(make_decl_rtl): Remove flag_prefix_function_name handling.
	(assemble_name): Likewise.
	* doc/extend.texi: Remove no_check_memory_usage attribute.
	* doc/invoke.texi: Remove -fcheck-memory-usage
	and -fprefix-function-name.

2001-12-05  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (STMP_FIXPROTO, STMP_FIXINC): Use substituted values
	from autoconf.

2001-12-05  Nick Clifton  <nickc@cambridge.redhat.com>

	* config.gcc: Include arm/xscale-coff.h before arm/arm.h.

2001-12-05  William Cohen  <wcohen@redhat.com>

	* config/arm/arm.h (THUMB_FUNCTION_PROFILER): Correct typo in
	instruction.

2001-12-05  Daniel Berlin  <dan@cgsoftware.com>

	* config/rs6000/rs6000.h (enum rs6000_builtins): Add more altivec
	builtins.

	* config/rs6000/rs6000.md: Modeling of 7450 altivec changed to
	better reflect reality (change from Apple's tree).
	Add more of altivec instructions.
	Add ftruncv4sf2 pattern.
	Remove more unspecs (vector merge instructions, etc).

	* config/rs6000/rs6000.c (bdesc_3arg): New, for 3 argument altivec
	builtins.
	(bdesc_1arg): New, for 1 argument altivec builtins.
	(altivec_expand_builtin): Handle unary and ternary ops.
	(altivec_init_builtins): Ditto.

Wed Dec  5 09:33:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/vms.h (ADA_LONG_TYPE_SIZE): New macro.
	* doc/tm.texi (ADA_LONG_TYPE_SIZE): Document it.

2001-12-05  Jakub Jelinek  <jakub@redhat.com>

	* gcse.c (store_killed_in_insn): Consider pure calls
	as potential store killers in addition to normal calls.

2001-12-05  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (expand_expr): When checking promoted value, use
	DECL_MODE (exp) and not mode.

2001-12-05  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (output_init_element): Call digest_init
	just once, not in each if branch and check its return value for
	error_mark_node.

2001-12-05  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (pushdecl): Only increase n_incomplete if pushed decl's
	type is RECORD_TYPE, UNION_TYPE or ARRAY_TYPE thereof.
	(finish_struct): Break the loop if n_incomplete went to 0.
	For ARRAY_TYPE, if it is not TYPE_DECL, layout the decl too.

Wed Dec  5 07:41:13 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/alpha.c (alpha_va_start): Update VMS case.

Wed Dec  5 07:27:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
			  Douglas B. Rupp  <rupp@gnat.com>

	* vmsdbg.h, vmsdbgout.c: Add documentation and minor cleanups.
	* doc/invoke.texi: Add -gvms.
	* doc/passes.texi: Add mention of vmsdbgout.c.
	* doc/tm.texi: Document VMS debugging output.

Wed Dec  5 06:26:27 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.h (tree, rtx): Remove no-longer-needed definitions.

	* function.c (keep_stack_depressed): Refine check for register
	clobbered over call.

	* expr.c (store_expr): When copying string constant into array,
	use functions that update memrefs instead of computations on
	addresses to better track MEMs.  Also properly handle 32/64 pointers.
	(expand_expr): Use TARGET even if not reg for multi-word CONSTRUCTOR.
	(expand_expr, case CONSTRUCTOR): Fix errors in parms to assign_temp.

	* emit-rtl.c (component_ref_for_mem_expr): Try harder to find decl
	underneath COMPONENT_REFs.
	(set_mem_attributes): Also strip VIEW_CONVERT_EXPR.

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

	* toplev.c (display_target_options): Don't print twice.

Wed Dec  5 00:42:16 EST 2001  John Wehle  (john@feith.com)

	* emit-rtl.c (set_unique_reg_note): Don't set
	a REG_EQUAL or REG_EQUIV note if multiple sets
	are present.

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

	* cfgrtl.c (verify_flow_info): Allow jump table data in fallthru if
	CASE_DROPS_THROUGH.

2001-12-04  Andrew MacLeod  <amacleod@redhat.com>

	* rtl.h (initialize_uninitialized_subregs): New prototype.
	* toplev.c (rest_of_compilation): Call initialize_uninitialized_subregs
	when optimization is on.
	* flow.c (find_regno_partial): Find subregs within an expression.
	(initialize_uninitialized_subregs): Initialize live on entry registers
	which are used in subreg expressions.

2001-12-04  Phil Edwards  <pme@gcc.gnu.org>

	* Makefile.in:  Add INSTALL_SCRIPT using INSTALL definition.

2001-12-04  DJ Delorie  <dj@redhat.com>

	* fixinc/fixincl.c (initialize): Avoid problemsome macro
	parameter names (PR 3388).

2001-12-05  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_legitimize_address): Fix typo.
	* config/rs6000/rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Here too.

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

	* c-common.def (COMPOUND_LITERAL_EXPR): New.
	* c-common.c (c_expand_expr): Handle COMPOUND_LITERAL_EXPR.
	(c_staticp): New function.
	* c-common.h (COMPOUND_LITERAL_EXPR_DECL): New.
	(c_staticp): Declare.
	* c-typeck.c (default_function_array_conversion, build_unary_op):
	Don't handle CONSTRUCTOR specially.
	(lvalue_p, mark_addressable): Handle COMPOUND_LITERAL_EXPR.
	* c-decl.c (build_compound_literal): New function.
	* c-tree.h (build_compound_literal): Declare.
	* c-parse.in (primary): Use build_compound_literal.
	* c-lang.c (LANG_HOOKS_STATICP): Define.
	* objc/objc-lang.c (LANG_HOOKS_STATICP): Likewise.
	* doc/c-tree.texi: Document COMPOUND_LITERAL_EXPR.
	* doc/extend.texi: Update documentation of compound literals.
	Fixes PR c/4787.

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

	* langhooks.h (struct lang_hooks): Add staticp.
	* langhooks-def.h (lhd_staticp, LANG_HOOKS_STATICP): New.
	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_STATICP.
	* langhooks.c (lhd_staticp): New function.
	* tree.c (staticp): Call lang_hooks.staticp for language-specific
	tree codes.

2001-12-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppspec.c (lang_specific_driver): Set is_cpp_driver.
	* gcc.c (process_command): Ensure the cpp driver sees
	--help and --target-help, and that the help is printed
	exactly once.

2001-12-04  David Edelsohn  <edelsohn@gnu.org>

	* config/elfos.h (ASM_OUTPUT_INTERNAL_LABEL): Display count unsigned.

2001-12-04  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h (OPTIMIZATION_OPTIONS): Don't unset
	flag_strict_aliasing.  Use separate assignment statements.

2001-12-04  Zack Weinberg  <zack@codesourcery.com>

	* build-make, cross-make: Delete file.
	* configure.in: Set and substitute CROSS, ALL,
	SYSTEM_HEADER_DIR, HOST_PREFIX, HOST_PREFIX_1, HOST_CC,
	HOST_CFLAGS, STMP_FIXINC, and STMP_FIXPROTO depending on
	whether build == host and host == target.  Do not
	AC_SUBST_FILE build_overrides or cross_overrides.  Do not
	AC_SUBST cross_defines or extra_c_flags.
	* Makefile.in (NATIVE_SYSTEM_HEADER_DIR): New.
	(SYSTEM_HEADER_DIR, HOST_PREFIX, HOST_CC, HOST_PREFIX,
	HOST_PREFIX_1, HOST_CFLAGS, ALL, INTERNAL_CFLAGS): Set
	partially or completely with autoconf-substituted @variable@
	notation.
	(INSTALL_TARGET, @cross_defines@, @cross_overrides@,
	@build_overrides@, @extra_c_flags@, all.build, install-build,
	install-cross-rest, install-float-h-cross): Deleted.
	(install-normal): Rename to install.  Delete old "install"
	indirection rule.

2001-12-04  Andrew MacLeod  <amacleod@redhat.com>

	* stmt.c (expand_return): Clear destination instead of clobbering it
	when setting a return value via bitsets.

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

	* tree.c (get_callee_fndecl): Only use DECL_ABSTRACT_ORIGIN if
	it has DECL_SAVED_TREE.

	* c-decl.c (duplicate_decls): Revert rth's patch.  If newdecl
	is in a different binding level, get its abstract origin to be
	olddecl.
	* tree-inline.c (expand_call_inline): Move DECL_INITIAL sanity
	check earlier.
	* tree.c (get_callee_fndecl): Follow DECL_ABSTRACT_ORIGIN if
	DECL_INITIAL is NULL.

2001-12-04  Jakub Jelinek  <jakub@redhat.com>

	* flow.c (ior_reg_cond): Return NULL if ! add and rtx wasn't optimized.
	Return correct value if one of the subexpressions was optimized to
	0 resp. 1.  Optimize (x | A) | x and (x & A) | x.
	(and_reg_cond): Similarly.

2001-12-04  Jakub Jelinek  <jakub@redhat.com>

	* function.c (assign_parms): Set last_named only for last named
	argument.

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

	* doc/install.texi: Use the GFDL.  Include years from old install
	manual in copyright notice.  Include copyright and GFDL notice on
	HTML index page.  Include usual footer on testing.html.
	* doc/install.texi2html: Build gfdl.html.  Use -I
	$SOURCEDIR/include.
	* doc/include/fdl.texi: Adapt for use in the install manual.

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

	* doc/install.texi: Document that installed native compiler for
	building cross compilers should be GCC 2.95 or later.

2001-12-03  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (CALL_REALLY_USED_REGISTERS): New macro.
	* config/mips/mips.md: Check TARGET_DEBUG_D_MODE before split
	patterns.

2001-12-03  Janis Johnson  <janis187@us.ibm.com>

	* rtl.def (PREFETCH): New rtx code.
	* doc/rtl.texi (PREFETCH): Add documentation.
	* function.c (instantiate_virtual_regs_1): Handle PREFETCH rtx.
	* rtlanal.c (reg_referenced_p): Ditto.
	* sched-vis.c (print_exp):  Ditto.
	* ssa-dce.c (find_inherently_necessary):  Ditto.

	* config/ia64/ia64.h (SIMULTANEOUS PREFETCHES): Define.
	  (PREFETCH_BLOCK): Define.
	* config/ia64/ia64.md (itanium_class): Add lfetch.
	  (prefetch, prefetch_internal): New.

	* builtin-types.def (BT_FN_VOID_PTR_INT_INT): New.
	* builtins.def (BUILT_IN_PREFETCH): New.
	* builtins.c (expand_builtin_expect): New.
	  (expand_builtin): Call it.
	* doc/extend.texi: Document __builtin_prefetch.

	* config/i386/i386.md (prefetch): Rename as prefetch_sse to avoid
	  conflicts with new generic prefetch functionality.
	* config/i386/i386.c (ix86_expand_builtin): Use new name for
	  prefetch_sse.

2001-12-02  Ziemowit Laski  <zlaski@apple.com>

	* objc/Make-lang.in: Update copyright.
	(OBJC_OBJS): Add objc-lang.o.
	(objc-lang.o): New rule.
	* objc/config-lang.in: Fix file description and update
	copyright.
	* objc/objc-act.c: Do not include langhooks.h and
	langhooks-def.h
	(lang_hooks): Move (along with LANG_HOOKS...) to objc-lang.c.
	(objc_post_options): Move to objc-lang.c.
	(objc_init_options): Move to objc-lang.c.
	(objc_init): Make non-static.
	(objc_decode_option): Make non-static.
	(HASHFUNCTION): Remove macro.
	(hash_func): New function.
	(hash_enter): Replace HASHFUNCTION with hash_func.
	(hash_lookup): Replace HASHFUNCTION with hash_func.
	(maybe_objc_tree_codes): New function.
	(init_objc): Move ObjC tree code initialization to
	maybe_objc_tree_codes().
	* objc/objc-act.h (GCC_OBJC_ACT_H): New include guard.
	(objc_init): New public prototype.
	(objc_decode_option): New public prototype.
	(maybe_add_objc_tree_codes): New public prototype.
	* objc/objc-lang.c: New file.
	(lang_hooks): Moved from objc-act.c.
	(objc_post_options): Moved from objc-act.c.
	(objc_init_options): Moved from objc-act.c.

2001-12-03  Geoff Keating  <geoffk@redhat.com>

	* emit-rtl.c (gen_lowpart_common): Avoid unwanted sign-extension
	of array elements.

2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR c/4988
	* gcc.c (process_command): Don't add a preprocessor option for
	--help and --target-help; cc1 is enough.

2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (grokdeclarator): Use ISO word.
	* cppinit.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* emit-rtl.c: Similarly.
	* final.c: Similarly.
	* gcc.c: Similarly.
	* tradcpp.c: Similarly.
	* config/arm/arm.c: Similarly.
	* config/arm/arm.h: Similarly.
	* config/avr/avr.c: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.c: Similarly.
	* config/cris/cris.c: Similarly.
	* config/cris/cris.h: Similarly.
	* config/d30v/d30v.c: Similarly.
	* config/dsp16xx/dsp16xx.c: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/h8300/h8300.c: Similarly.
	* config/i386/i386.c: Similarly.
	* config/i386/xm-djgpp.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/m32r/m32r.c: Similarly.
	* config/m68hc11/m68hc11.c: Similarly.
	* config/m88k/m88k.c: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.c: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.c: Similarly.
	* config/mmix/mmix.c: Similarly.
	* config/pa/pa.c: Similarly.
	* config/rs6000/rs6000.c: Similarly.
	* config/rs6000/sysv4.h: Similarly.
	* config/s390/s390.c: Similarly.
	* config/sparc/sparc.c: Similarly.
	* config/v850/v850-c.c: Similarly.
	* config/v850/v850.c: Similarly.

2001-12-03  Zack Weinberg  <zack@codesourcery.com>

	* rs6000.h (RETURN_IN_MEMORY): Cast result of
	int_size_in_bytes to unsigned HOST_WIDEST_INT so that -1 > 8.

Mon Dec  3 09:18:34 2001  Jeffrey A Law  (law@cygnus.com)

	* mn10200.md (negsf2): Use -0x8000 instead of 0x8000 for
	bit twiddling constant.

Mon Dec  3 16:16:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (delete_null_pointer_checks_1): Do not use delete_list;
	call purge_dead_edges after removing.
	(delete_null_pointer_checks): Do not handle delete_list.

	* cfgbuild.c (inside_basic_block_p, control_flow_insn_p): Break out from ...
	(count_basic_blocks): ... here.
	(find_basic_blocks, find_bb_boundaries): Cleanup.

	* stor-layout.c (fixup_signed_type, fixup_unsigned_type): Avoid
	overflow for types greater then 2 * HOST_WIDE_INT.

	* reload.c (find_reloads): Update the duplicates after swapingg.

Mon Dec  3 13:52:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movabsqi*): Use 'b' prefix instead of 'q'.

2001-12-02  Zack Weinberg  <zack@codesourcery.com>

	* config/rs6000/rs6000.h (MASK_ALTIVEC_ABI,
	MASK_LONG_DOUBLE_128): Delete.
	(MASK_AIX_STRUCT_RET, MASK_AIX_STRUCT_RET_SET,
	TARGET_AIX_STRUCT_RET): New flags.
	(TARGET_SWITCHES): Remove entries for -mlong-double-128 and
	-mlong-double-64.  Add entries for -m(no-)aix-struct-return
	and -m(no-)svr4-struct-return.
	(TARGET_OPTIONS): Add entry for -mlong-double-.
	(rs6000_long_double_size_string, rs6000_long_double_type_size,
	rs6000_altivec_abi): Declare.
	(TARGET_LONG_DOUBLE_128, TARGET_ALTIVEC_ABI,
	LONG_DOUBLE_TYPE_SIZE): Change definitions to match.
	(RETURN_IN_MEMORY): If !TARGET_AIX_STRUCT_RET, return
	structures of size <= 8 bytes in registers.
	(PRINT_OPERAND_PUNCT_VALID_P): Take out '$' and '*'.

	* config/rs6000/rs6000.c (rs6000_long_double_size_string,
	rs6000_long_double_type_size, rs6000_altivec_abi): New
	globals.
	(rs6000_override_options): Set rs6000_long_double_type_size
	from rs6000_long_double_size_string, if nonzero.  Set the
	MASK_AIX_STRUCT_RET bit in target_flags from DEFAULT_ABI, if
	not already set.
	(rs6000_parse_abi_options): Set rs6000_altivec_abi, not a
	target_flags bit.
	(rs6000_init_builtins): This hook now takes no arguments.

	* config/rs6000/netbsd.h, config/rs6000/linux.h: Define
	DRAFT_V4_STRUCT_RET to 1.

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

	* c-typeck.c (really_start_incremental_init, push_init_level):
	Avoid constructor_max_index being other than an INTEGER_CST.

2001-12-02  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (ASM_OUTPUT_INTERNAL_LABEL): Display count
	unsigned.
	(ASM_GENERATE_INTERNAL_LABEL): Same.
	(UNIQUE_SECTION): Fix typo.

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

	* c-decl.c (duplicate_decls): Conditionalize DECL_SAVED_TREE copy.

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

	* rtl.h (mem_attrs): Rename decl to expr; adjust all users.
	(MEM_EXPR): Rename from MEM_DECL; adjust all users.
	* emit-rtl.c (set_mem_expr): Rename from set_mem_decl.
	* expr.h, final.c, reload1.c: Adjust users.

	* alias.c (nonoverlapping_component_refs_p): New.
	(decl_for_component_ref, adjust_offset_for_component_ref): New.
	(nonoverlapping_memrefs_p): Use them.
	* emit-rtl.c (component_ref_for_mem_expr): New.
	(set_mem_attributes): Use it.
	(set_mem_offset): New.
	* expr.c (expand_assignment): Call set_mem_attributes for
	inner references; adjust the memory offset as needed.
	* print-rtl.c (print_mem_expr): New.
	(print_rtx): Use it.

Sun Dec  2 09:22:25 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/x-interix3 (SYSTEM_HEADER_DIR): Put back default.

	* config/alpha/vms.h (VMS_DEBUGGING_INFO): New macro.
	(PREFERRED_DEBUGGING_TYPE): Define as VMS_AND_DWARF2_DEBUG.
	(ASM_SPEC): Don't redefine.
	(OPTIMIZATION_OPTIONS, OVERRIDE_OPTIONS, LINK_SPEC): Define.
	* config/alpha/t-vms (EXTRA_PARTS): Use; add rule for vms-dwarf2.asm.
	* config/alpha/vms-dwarf2.asm: New file.

	* Makefile.in (OBJS): Add vmsdbgout.c and its rule.
	* c-lex.c (init_c_lex): Test for VMS_AND_DWARF2_DEBUG.
	* debug.h (gcc_debug_hooks): Add vmsdbg_debug_hooks.
	(vmsdbgout_after_prologue): New declaration.
	* defaults.h (VMS_DEBUGGING_INFO): Add to PREFERRED_DEBUGGING_TYPE.
	* dwarf2.h (dwarf_attribute): New DW_AT_VMS_rtnbeg_pd_address.
	* dwarf2out.c (dwarf2out_do_frame): Test for VMS_AND_DWARF2_DEBUG.
	(dwarf2out_frame_finish): Test for VMS_AND_DWARF2_DEBUG.
	(dwarf_attr_name): Use DW_AT_VMS_rtnbeg_pd_address.
	(add_name_and_src_coords_attributes): Test VMS_DEBUGGING_INFO
	* final.c (final_start_function): Test for VMS_AND_DWARF2_DEBUG.
	Test VMS_DEBUGGING_INFO.
	(final_end_function): Test for VMS_AND_DWARF2_DEBUG.
	(final_scan_insn): Test for VMS_AND_DWARF2_DEBUG and VMS_DEBUG.
	* flags.h (debug_info_type): Add VMS_DEBUG and VMS_AND_DWARF2_DEBUG.
	* toplev.c (compile_file): Test VMS_DEBUGGING_INFO, VMS_DEBUG, and
	VMS_AND_DWARF2_DEBUG.
	(rest_of_type_compilation): Test for VMS_AND_DWARF2_DEBUG.
	(decode_g_option): Add "vms" to debug_type_names.
	(process_options): Set vmsdbg_debug_hooks if -gvms.
	(lang_independent_init): Emit line number for VMS unless -g0.
	* tree.c: (build_complex_type): Test for VMS_AND_DWARF2_DEBUG.
	* vmsdbg.h, vmsdbgout.c: New files.

Sun Dec  2 09:03:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cfgbuild.c (SET_STATE): Add cast to eliminate warning.a

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

	* cfgrtl.c (purge_all_dead_edges): Initialize variable.
	* dwarf2out.c (is_cxx): Prototype.
	* local-alloc.c (block_alloc): Avoid 'unsigned>=0 is always true'
	warning.
	* objc/objc-act.c (defer_fn): Avoid signed/unsigned warning.

Sun Dec  2 07:12:30 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* libgcc2.c (__bb_exit_func): Fix line wrap problems.

2001-12-02  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Simplify.
	* config/rs6000/rs6000.c (rs6000_emit_move): Use adjust_address
	rather than simplify_subreg.  Check for volatile-ness.  Check that
	we're not splitting one slow operation into two slow operations.

2001-12-02  David Edelsohn  <edelsohn@gnu.org>

	* emit-rtl.c (gen_lowpart_common): Cast array element to HOST_WIDE_INT
	before shifting.

2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (duplicate_decls, push_parm_decl): Remove leading
	capital from diagnostics.
	* c-lex.c (cb_file_change): Similarly.
	* c-parse.in : Similarly.
	* cfgrtl.c (verify_flow_info): Similarly.
	* collect2.c: Similarly.
	* cppfiles.c (find_include_file): Similarly.
	* cppinit.c (cpp_handle_option): Similarly.
	* cpplex.c (cpp_spell_token): Similarly.
	* cppmain.c (do_preprocessing): Similarly.
	* gcc.c (translate_options, process_command, do_spec1,
	main, pfatal_execute): Similarly.
	* genattr.c (main): Similarly.
	* genattrtab.c (check_attr_test, operate_exp, simplify_test_exp,
	write_test_expr, main): Similarly.
	* gencodes.c (main): Similarly.
	* genconfig.c (main): Similarly.
	* genconstants.c (main): Similarly.
	* genemit.c (main): Similarly.
	* genextract.c (main): Similarly.
	* genflags.c (main): Similarly.
	* genopinit.c (main): Similarly.
	* genoutput.c (process_template, main): Similarly.
	* genpeep.c (main): Similarly.
	* genrecog.c (main): Similarly.
	* gensupport.c (is_predicable, identify_predicable_attribute,
	alter_predicate_for_insn, init_md_reader_args, main): Similarly.
	* ggc-page.c (alloc_anon): Similarly.
	* mips-tfile.c (add_string, add_procedure, add_file, read_line,
	parse_begin, parse_bend, parse_def, parse_end, parse_file,
	parse_stabs_common, parse_stabs, write_varray, write_object,
	read_seek, copy_object, main, error): Similarly.
	* profile.c (compute_branch_probabilities): Similarly.
	* reg-stack.c (check_asm_stack_operands): Similarly.
	* reload.c (find_reloads): Similarly.
	* reload1.c (spill_failure, failed_reload): Similarly.
	* rtl-error.c (_fatal_insn_not_found): Similarly.
	* toplev.c (read_integral_parameter, crash_signal,
	decode_f_option, set_target_switch, parse_options_and_default_flags)
	: Similarly.
	* tradcif.y (parse_number, yylex): Similarly.
	* tradcpp.c (main, fancy_abort): Similarly.
	* tree.c (tree_check_failed): Similarly.
	* varray.c (varray_check_failed): Similarly.
	* xcoffout.c (xcoff_output_standard_types): Similarly.
objc:
	* objc-act.c (get_object_ref, lookup_and_install_protocols,
	build_objc_string_object, objc_declare_alias, build_ivar_chain,
	finish_message_expr, build_protocol_expr, is_public,
	start_class): Similarly.

2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (duplicate_decls, parmlist_tags_warning): Remove
	trailing period from diagnostics.
	* c-lex.c (cb_file_change): Similarly.
	* cppmacro.c (check_trad_stringification): Similarly.
	* gcc.c (do_spec_1): Similarly.
	* genattr.c (main): Similarly.
	* genattrtab.c (main, operate_exp, make_length_attrs): Similarly.
	* gencodes.c (main): Similarly.
	* genconfig.c (main): Similarly.
	* genconstants.c (main): Similarly.
	* genemit.c (main): Similarly.
	* genextract.c (main): Similarly.
	* genopinit.c (main): Similarly.
	* genoutput.c (main): Similarly.
	* genpeep.c (main): Similarly.
	* genrecog.c (main): Similarly.
	* mips-tfile.c (add_file, error): Similarly.
	* profile.c (init_branch_prob): Similarly.
	* reload1.c (spill_failure): Similarly.
	* stmt.c (parse_output_constraint): Similarly.
	* varasm.c (assemble_variable): Similarly.

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

	* m68k.c (init_FPA_table): Provide static prototype.
	* mips/abi64.h (mips_function_value): Move prototype to ...
	* mips-protos.h (mips_function_value): ... here.
	* mips.c: Include halfpic.h.
	* output.h (rdata_section): Prototype.

	* h8300.c (h8300_asm_named_section): Wrap with !OBJECT_FORMAT_ELF.
	* m88k.c (m88k_svr3_asm_out_constructor,
	m88k_svr3_asm_out_destructor): Wrap with CTOR_LIST_BEGIN &&
	!OBJECT_FORMAT_ELF.
	* mcore.c (mcore_asm_named_section): Wrap with OBJECT_FORMAT_ELF.
	* sh.c (sh_asm_named_section): Wrap with !OBJECT_FORMAT_ELF.
	* sparc.c (sparc_elf_asm_named_section): Wrap with OBJECT_FORMAT_ELF.

2001-12-01  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Complex
	LO_SUM addresses less than word size are not legitimate,
	because they lead to invalid SUBREGs.
	* config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.

2001-12-01  Olivier Hainque <hainque@act-europe.fr>

	* unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL
	while scanning for multiple back edges.

2001-12-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* ginclude/ppc-asm.h (JUMP_TARGET): New macro.
	* config/rs6000/tramp.asm: Use it.

2001-12-01  Zack Weinberg  <zack@codesourcery.com>

	* gencheck.c, gengenrtl.c: Don't define xmalloc.
	* gensupport.c: Don't define xstrdup, xcalloc, xrealloc,
	xmalloc.

2001-11-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (output_ascii): Cast `p' to unsigned char.

2001-11-30  Daniel Berlin  <dan@cgsoftware.com>

	* config/rs6000/rs6000.c (altivec_expand_builtin): add
	ALTIVEC_BUILTIN_LD_INTERNAL_4sf and ALTIVEC_BUILTIN_ST_INTERNAL_4sf,
	*_16qi,_8hi, rename existing V4SI ones to *_4si.
	(altivec_init_builtins): Ditto.
	(bdesc_2arg): Rename CODE_FOR_* to match changes in MD file.

	* config/rs6000/rs6000.md: Add attribute types vecsimple,
	veccomplex, vecfloat, and vecperm, for altivec instructions.
	Modify altivec patterns to use appropriate attribute type.
	Modify altivec patterns to match RTL operations where appropriate
	(IE no unspec where we can avoid it).
	Add vector unit scheduling for ppc7450.
	Rename patterns to what they are where appropriate
	(altivec_vaddfp->addv4sf3, etc)

	* config/rs6000/rs6000.h (enum rs6000_builtins): Change VRS->VSR.
	Pass -mppc, and define _ARCH_PPC, if -mcpu=7450 is used.

	* config/rs6000/sysv4.h: Add -mcpu=7450.

	* testsuite/gcc.dg/altivec-1.c: Update test to take into account renamed
	_builtin_altivec_ld_interal function.

2001-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (AC_CHECK_FUNCS): Delete strtoul, bsearch, popen,
	strchr, strrchr, isascii, gettimeofday.
	* config.in, configure: Regenerate.

2001-11-30  Zoltan Hidvegi  <hzoli@hzoli.2y.net>

	* unroll.c (unroll_loop): Correct special exit cases.

2001-11-30  Stephane Carrez  <Stephane.Carrez@sun.com>

	* config/sparc/sparc.c (DF_MODES_NO_S): Fix pr/3623, define to
	accept DFmode and DImode only.

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

	* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Adjust for altivec.
	(STACK_DYNAMIC_OFFSET): Same.

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

	* c-decl.c (duplicate_decls): Copy DECL_SAVED_TREE.

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

	* config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): New.
	(CONDITIONAL_REGISTER_USAGE): Set call_really_used_registers to
	the values in call_used_registers.

Fri Nov 30 12:48:26 2001  Jeffrey A Law  (law@cygnus.com)

	* gthr-dce.h: If _DCE_THREADS is not defined, then just include
	gthr-single.

2001-11-30  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (is_cxx): New fn.
	(add_data_member_location_attribute): Check it.
	* dbxout.c (dbxout_type): Only look at BINFO_VPTR_FIELD for C++.

Fri Nov 30 08:26:57 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Handle const1_rtx.

2001-11-30  Daniel Berlin  <dan@cgsoftware.com>

	* genopinit.c (gen_insn): Handle MODE_VECTOR_INT and
	MODE_VECTOR_FLOAT as allowed.

2001-11-29  Zack Weinberg  <zack@codesourcery.com>

	Purge cruft now we have build libiberty.

	* Makefile.in (OBSTACK, VFPRINTF, DOPRINT, STRSTR,
	HOST_OBSTACK, HOST_VFPRINTF, HOST_DOPRINT, HOST_STRSTR,
	USE_HOST_OBSTACK, USE_HOST_VFPRINTF, USE_HOST_DOPRINT,
	USE_HOST_STRSTR): Delete variables.
	(vfprintf.o, doprint.o, strstr.o, splay-tree.o, obstack.o,
	hashtab.o, safe-ctype.o, $(HOST_PREFIX_1)obstack.o,
	$(HOST_PREFIX_1)vfprintf.o, $(HOST_PREFIX_1)doprint.o,
	$(HOST_PREFIX_1)strstr.o), $(HOST_PREFIX_1)): Delete rules.
	(LIBIBERTY, BUILD_LIBIBERTY): New variables.
	(LIBDEPS): Now just $(INTLDEPS) $(LIBIBERTY).
	(LIBS): Now just $(INTLLIBS) @LIBS@ $(LIBIBERTY).
	(HOST_LIBDEPS): Now just $(BUILD_LIBIBERTY).
	(HOST_LIBS): Ditto.
	(HOST_RTL): Remove hashtab.o safe-ctype.o.
	(OBJS): Remove splay-tree.o.
	(gen-protos): Depend on $(HOST_LIBS), not ../libiberty/libiberty.a.
	(distclean): No need to delete splay-tree.c obstack.c
	hashtab.c safe-ctype.c.
	(mostlyclean): Delete build copies of print-rtl.c bitmap.c
	errors.c ggc-none.c (all prefixed with $(HOST_PREFIX_1).
	* aclocal.m4 (gcc_AC_FUNC_VFPRINTF_DOPRNT, gcc_AC_FUNC_STRSTR):
	Delete.
	* configure.in: Don't use them.
	Set and substitute @FORBUILD@.
	* config.in, configure: Regenerate.
	* doprint.c: Move to libiberty/_doprnt.c.
	* doc/configterms.texi: Document that libiberty is now built
	up to three times.  Fix typo.

2001-11-30  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (add_data_member_location_attribute): Do the
	right thing for virtual bases.
	* dbxout.c (dbxout_type): For a virtual base, print the offset
	within the vtable.

2001-11-29  Zoltan Hidvegi  <hzoli@hzoli.2y.net>

	* doloop.c (doloop_valid_p): Check for LTU and GTU as well.

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

	* config/rs6000/rs6000.c (function_arg): Unnamed vector arguments
	go in memory.
	Remove unused attribute for named.

2001-11-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattrtab.c (attr_rtx_1): New function containing the
	majority of `attr_rtx'.  Move variable declarations into the
	scope where they are used.  Eliminate unnecessary gotos.
	(attr_rtx): Now just a wrapper for `attr_rtx_1' using VA_OPEN,
	VA_FIXEDARG, and VA_CLOSE.

2001-11-30  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_notice_update_cc): Check first
	destination also against overlap with cc_status.value2 and second
	destination against overlap with cc_status.value1.  For overlaps,
	clear overlapped value, don't just CC_STATUS_INIT.

	* config/cris/cris.h (EXTRA_CONSTRAINT_T): Fix spacing and FIXME.
	Fix typo in comment.
	(LINK_SPEC): Remove whitespace at end of line.

2001-11-29  Jakub Jelinek  <jakub@redhat.com>

	* c-lex.c (init_c_lex): Canonicalize "-" filename to "".

2001-11-29  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (ASM_DEBUG_SPEC): Only check HAVE_AS_G*_DEBUG_FLAG
	macros for the supported debugging types.

2001-11-29  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/4932
	* config/i386/i386.c (print_operand):  Verify that the
	  argument to %c is a constant and not a conditional which
	  needs to be reversed.

Thu Nov 29 11:12:59 2001  Geoffrey Keating (geoffk@redhat.com)

	* emit-rtl.c (gen_lowpart_common): Fix conversion of
	REAL_VALUE_TYPEs to an array of target integers.  Fix extraction
	of low part of those arrays for 32bit and 64bit hosts.

2001-11-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (insn-output.o): Depend on insn-codes.h.

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

	* configure.in (target_list): Add generated-manpages.
	* configure: Regenerate.
	* Makefile.in (generated-manpages): Depend on
	lang.generated-manpages.
	* objc/Make-lang.in (objc.generated-manpages): New dummy target.

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

	* config/arm/crti.asm (_init): Add .thumb_func if compiled
	with -mthumb.
	(_fini): Add .thumb_func if compiled with -mthumb.

2001-11-28  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (override_options): Fix thinko in mips_tune
	for mips32/mips64. Remove MASK_SOFT_FLOAT configuration bits.

Thu Nov 29 00:24:15 EST 2001  John Wehle  (john@feith.com)

	* alpha.md (tablejump): Use pic_offset_table_rtx
	instead of gen_rtx_REG.

Wed Nov 28 15:36:13 2001  Jeffrey A Law  (law@cygnus.com)

	* expr.c (store_expr): When copying a string constant into an
	array, reset the known alignment of the MEM for the section to
	be cleared to BITS_PER_UNIT.

2001-11-28  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c: Remove whitespace at end of line.

Wed Nov 28 14:51:23 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config.gcc (i[34567]86-*-interix3*): New case.
	* config/x-interix3, config/interix3.h, config/i386/i386-interix3.h:
	New files.

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

	* config/alpha/alpha.md (sibcall_osf_1, sibcall_value_osf_1): Use
	symbolic_operand as the predicate.

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

	* doloop.c (doloop_modify_runtime): Properly select induction
	variable; skip late entry test if biv initializer created by loop.

Wed Nov 28 08:21:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (EXPR_WFL_LINECOL): Used by Java in node other than
	EXPR_WITH_FILE_LOCATION, so change checks and documentation.

	* tree.h (TREE_VIA_PROTECTED): Update to show can be in TREE_VEC.

	* tree.h: Add missing checks on some macros; make formatting more
	consistent.

	* stor-layout.c (put_pending_size): Look for SAVE_EXPR if not at top
	level; only add to pending_sizes if find it.

	* langhooks.c (lhd_safe_from_p): Add ATTRIBUTE_UNUSED.

	* df.c (iterate_dataflow_sbitmap, iterate_dataflow_bitmap):
	Add casts to remove warnings.

	* Makefile.in (OBJS): Sort alphabetically.

	* print-rtl.c (print_rtx): If RTX code is bad, just say so.
	Also minor cleanups.

Wed Nov 28 06:52:27 2001  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* Makefile.in (ORDINARY_FLAGS_TO_PASS): Remove STAGE_PREFIX.
	(FLAGS_TO_PASS): Add STAGE_PREFIX.
	(SUBDIR_FLAGS_TO_PASS): Apply PREPEND_DOTDOT_TO_RELATIVE_PATH
	to STAGE_PREFIX.

Wed Nov 28 10:42:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (true_dependence_in_rtx): New function.
	(invalidate): Use it.

	* c-common.h (GOTO_FAKE_P): New macro.
	* tree-inline.c (GOTO_FAKE_P): Set.
	* c-tree.texi (GOTO_FAKE_P): Document.

	* varasm.c (assemble_variable): Set reloc to 3 for error_mark
	containing pointers.
	(output_addressed_constants): Check for local/external relocations.
	* elfos.h (SELECT_SECTION): Classify data section.
	* tm.texi (SELECT_SECTION): Update documentation.

	* cfganal.c (flow_dfs_compute_reverse_add_bb): set visited bit.
	(flow_dfs_compute_reverse_execute): Add only unvisited blocks.

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

	* defaults.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Also provide defaults when we have
	OBJECT_FORMAT_ROSE.

2001-11-28  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c: Tweak spacing for prototypes.
	(LOSE_AND_RETURN): New macro.
	(cris_operand_lossage): New function.
	(cris_print_index, cris_print_base): Use cris_operand_lossage
	rather than fatal_insn.
	(cris_print_operand, cris_print_operand_address): Use
	LOSE_AND_RETURN rather than fatal_insn and internal_error.
	(cris_output_addr_const): Use LOSE_AND_RETURN and
	output_operand_lossage rather than fatal_insn and internal_error
	for valid but unexpected rtx expressions.

	* config/cris/cris.c (cris_split_movdx): Don't call alter_subreg
	for a SUBREG in src or dest, abort instead.

2001-11-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* doc/passes.texi: Remove reference to c-dump.c. Update tree inlining
	doc.

2001-11-27  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (ASM_DEBUG_SPEC): Use conditional expression rather than
	preprocessor define.  If only DBX_DEBUGGING_INFO or only
	DWARF2_DEBUGGING_INFO is supported for the target, provide
	appropriate definitions.

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

	* Makefile.in: Update, and add c-objc-common.o dependencies.
	* c-lang.c: Remove unnecessary includes.
	(c_init): Move bulk of code to c_objc_common_init, and call it.
	(c_tree_printer, c_missing_noreturn_ok_p, c_disregard_inline_limits,
	inline_forbidden_p, c_cannot_inline_tree_fn): Move to
	c-objc-common.c.
	* c-objc-common.c: New.  Mostly pulled from c-lang.c.
	* c-tree.h (c_disregard_inline_limits, c_cannot_inline_fn,
	c_objc_common_init, c_missing_noreturn_ok_p): New.
	* toplev.c: Update comment.
	* doc/passes.texi: Update.
objc:
	* objc-act.c (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
	LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS,
	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Override.
	(objc_init): Update to use c_objc_common_init.

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

	* cpphash.c (_cpp_init_hashtable): Update.
	* cpphash.h (struct spec_nodes): Remove n_L.
	* cpplex.c (_cpp_lex_direct): Check for prefix L separately.

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

	* unroll.c (loop_iterations): Move last change ...
	* doloop.c (doloop_modify_runtime): ... here.

2001-11-17  Corey Minyard  <minyard@acm.org>
	    Richard Henderson  <rth@redhat.com>

	* unroll.c (loop_iterations): Detect one situation in which we
	overestimate the number of iterations.

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

	* gcc.c (set_input): Export.
	Move declaration ...
	gcc.h (set_input): ... here.

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

	* gcc.c (set_collect_gcc_options): New function, split out from
	main.
	Ignore elided switches.
	(do_spec): Invoke before executing command.
	(do_spec_1): Likewise.
	Fixes PR other/3968.

2001-11-27  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h (INT_ASM_OP): Remove.

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

	* config/i386/sol2.h (WINT_TYPE): Redefine.
	(WINT_TYPE_SIZE): Likewise.

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

	* collect2.c: Check HAVE_DUP2 instead of NO_DUP2.
	(dup2): Make static and add prototype.
	* m68k/plexus.h: Don't define NO_DUP2.
	* configure.in (AC_CHECK_FUNCS): Add dup2.
	* config.in, configure: Regenerate.

	* ia64/aix.h (REG_SIZE): Don't #undef.
	* sparc.h (REG_SIZE): Delete.
	* flow.c (mark_used_regs): Don't use REG_SIZE.
	* regs.h (REG_SIZE): Delete.

2001-11-27  Andreas Schwab  <schwab@suse.de>

	* gcc.c: Fix typo PREFERRED_DEBUGGING_FORMAT ->
	PREFERRED_DEBUGGING_TYPE.

Tue Nov 27 08:21:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (c-lang.o): Depends on langhooks-def.h.
	(expr.o, varasm.o): Depends on langhooks.h.
	* c-common.c (c_safe_from_p): Always declare.
	(c_expand_expr): Refine when declared.
	* c-lang.c (c-common.h): Now include.
	(LANG_HOOKS_SAFE_FROM_P): Define new hook.
	(c_init): Don't set lang_safe_from_expr.
	* expr.c (langhooks.h): Now include.
	(lang_safe_from_p): No longer define.
	(safe_from_p): Use lang hook.
	(expand_expr): Set IGNORE if VOID_TYPE result of VIEW_CONVERT_EXPR too.
	(expand_expr, case VIEW_CONVERT_EXPR): Pass ro_modifier down.
	* expr.h (lang_expand_constant, lang_safe_from_p): Delete.
	* langhooks-def.h (lhd_return_tree, lhd_safe_from_p): New decls.
	(LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
	* langhooks.c (lhd_return_tree, lhd_safe_from_p): New functions.
	* langhooks.h (struct lang_hooks): New fields expand_constant
	and safe_from_p.
	* output.h (output_constant): Size arg is HOST_WIDE_INT.
	* stmt.c (expand_decl_init): No longer need to expand constant
	for CONST_DECL.
	* stor-layout.c (put_pending_size): Don't check for SAVE_EXPR.
	* toplev.c (lang_expand_constant): Delete var.
	* tree.c (save_expr): Don't put another SAVE_EXPR around simple
	operations on SAVE_EXPR.
	* varasm.c (langhooks.h): Now include.
	(compare_constant_1): Use lang_hooks, not lang_expand_constant.
	(record_constant_1, output_addressed_constants): Likewise.
	(initializer_constant_valid_p, output_constant): Likewise.
	(output_constant_def): Process no-defer of string constant.
	(output_addressed_constants, case ADDR_EXPR): Use handled_component_p.
	(output_constant): Strip more conversions.
	Track our size and pad for the rest.
	(array_size_for_constructor): Remove code for non-byte STRING_CST.
	(output_constructor): SIZE now HOST_WIDE_INT.

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

	* ifcvt.c (noce_try_store_flag_constants): Test for overflow
	in computing DIFF.

2001-11-27  Zack Weinberg  <zack@codesourcery.com>

	* cppfiles.c (read_include_file): Add comment.

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

	* toplev.c (rest_of_compilation): Call free_bb_for_insn before exit.

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

	* config/ia64/sysv4.h (DBX_DEBUGGING_INFO): Undef.
	* config/ia64/aix.h (PREFERRED_DEBUGGING_TYPE): Remove
	commented out override.

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

	* cppfiles.c (stack_include_file): Don't optimize zero-length
	files.
	(read_include_file): NUL-terminate read files.
	* cpplex.c (handle_newline, skip_escaped_newlines,
	get_effective_char, skip_whitespace, parse_identifier,
	parse_identifier_slow, parse_number, parse_string,
	_cpp_lex_direct): Optimize for the fact that buffers are guaranteed
	NUL-terminated.
	* cpplib.c (destringize_and_run, cpp_define, handle_assertion):
	Be sure buffers are NUL terminated.
	* cppmacro.c (warn_of_redefinition): Kill compile warning.

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

	* c-common.c: Include tree-inline.h.
	(c_language): Move separate definitions here.
	(c_common_init_options, c_common_post_options): New.
	(c_common_lang_init): Rename c_common_init.
	* c-common.h (c_common_lang_init): Similarly.
	(c_common_init_options, c_common_post_options): New.
	* c-lang.c (c_post_options): Move body to c_common_post_options.
	(c_init_options): Use c_common_init_options.
	(c_init): Update.
	* langhooks.def: Rearrange.
	* langhooks.h: Rearrange, and improve comments.
	* toplev.c (do_compile): New function.
	(toplev_main): Use it.
	(lang_independent_f_options, parse_options_and_default_flags,
	process_options): Remove trailing periods.
	* Makefile.in: Update.
objc:	* objc-act.c (objc_post_options, objc_init_options): Use c-common.c
	functions.
	(ojbc_init): Update.

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

	* config/alpha/alpha.md (unop): Add 0 offset for some gas versions.

2001-11-26  DJ Delorie  <dj@redhat.com>

	* expr.c (store_constructor): Actually use the value computed
	if WORD_REGISTER_OPERATIONS.

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

	* config/elfos.h (SELECT_SECTION): Don't check TREE_READONLY
	for CONSTRUCTOR.

2001-11-26  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (output_mi_thunk): Handle minimal-toc and call
	correct function on AIX.

2001-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* toplev.c (process_options): Don't force
	flag_optimize_sibling_calls to zero just because exceptions are
	enabled.

Mon Nov 26 12:37:05 2001  Jeffrey A Law  (law@cygnus.com)

	* df.h (transfer_function_sbitmap): Use PARAMS around argument
	list in function prototypes.
	(transfer_function_bitmap): Likewise.

2001-11-26  Loren J. Rittle  <ljrittle@acm.org>

	* config/stormy16/stormy16.h: Remove DEFAULT_VTABLE_THUNKS.
	* config/i386/netbsd-elf.h: Likewise.

2001-11-26  David Edelsohn  <edelsohn@gnu.org>

	* doc/trouble.texi: Remove outdated RS/6000 comments.

Mon Nov 26 13:49:41 CET 2001  Jan Hubicka  <jh@suse.cz>

	* final.c (walk_alter_subreg): Fix return value.

Mon Nov 26 11:36:20 CET 2001  Jan Hubicka  <jh@suse.cz>

	* sparc.c (sparc_absnegfloat_split_legitimate): Do not call
	alter_subreg.
	* sparc.md (post-reload splitters): Do not call alter_subreg.
	* cfgrtl.c (purge_dead_edges): Fix typo in previous fix.

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

	* regclass.c (choose_hard_reg_mode): Handle vector arguments.

2001-11-26  Alan Modra  <amodra@bigpond.net.au>

	* final.c: (insn_lengths): Make it an int *, so that large jump
	tables don't overflow.

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

	* c-format.c (FMT_FLAG_DOLLAR_GAP_POINTER_OK): New.
	(format_types): Use it for scanf.
	(dollar_arguments_pointer_p): New.
	(init_dollar_format_checking): Store details of which arguments
	are pointers.
	(maybe_read_dollar_number): Reallocate dollar_arguments_pointer_p.
	(finish_dollar_format_checking): Take extra parameter
	pointer_gap_ok.  Treat unused arguments differently if
	pointer_gap_ok and the unused arguments are pointers.
	(check_format_info_main): Pass extra argument to
	finish_dollar_format_checking.
	* doc/invoke.texi (-Wno-format-extra-args): Document behavior when
	unused arguments are present between used arguments with operand
	numbers.

2001-11-25  Daniel Berlin  <dan@cgsoftware.com>

	* df.c: Add prototypes for hybrid_search_bitmap and
	hybrid_search_sbitmap.
	(hybrid_search_bitmap): New function.
	(hybrid_search_sbitmap): New function.
	(iterative_dataflow_sbitmap): Change to use hybrid_search_sbitmap.
	(iterative_dataflow_bitmap): Ditto.

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

	* config/m68hc11/m68hc11.md (peephole2): New peephole2 to optimize
	address computations.

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

	* config/m68hc11/m68hc11.c (d_register_operand): Must accept
	register b (low part of d).

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

	* config/m68hc11/m68hc11.h (FUNCTION_PROFILER): Fix label name
	passed to mcount.

Sun Nov 25 06:22:09 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/vms-ld.c, config/alpha/vms-cc.c: New files.
	* config/alpha/x-vms: New file, to compile the above.
	* config.gcc (alpha*-dec-vms*): Add x-vms.

2001-11-24  Hans-Peter Nilsson  <hp@axis.com>

	* genextract.c (main): Set ro_loc for peepholes.

Sat Nov 24 17:04:10 2001  Douglas B. Rupp  <rupp@gnat.com>

	* fix-header.c (main): Move inf_buffer termination and inf_limit
	calculation to after read.

	* config/alpha/xm-vms.h (FILE_TYPE): Remove undef and baggage.
	(__UNIX_FOPEN): Define.

Sat Nov 24 16:11:00 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (assign_stack_temp_for_type): Clear alias set before
	setting new one.

2001-11-23  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (print_operand, case 'v'): Use HOST_WIDE_INT_PRINT_HEX
	format.
	* rs6000.md (cmptf): Fix typo.

2001-11-23  Richard Sandiford  <rsandifo@redhat.com>

	* final.c (output_addr_const): Output PC as '.' even if !flag_pic.
	* varasm.c (output_constructor): Use assemble_integer rather
	than ASM_OUTPUT_BYTE.

2001-11-23  Andreas Jaeger  <aj@suse.de>

	* cpplex.c (cpp_interpret_charconst): Use HOST_WIDE_INT for sign
	extension.

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

	* config/arm/xscale-coff.h (SUBTARGET_CPU_DEFAULT): Override
	default definition.
	(SUBTARGET_EXTRA_ASM_SPEC): Remove previous definition.
	(MULTILIB_DEFAULTS): Remove previous definition.

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

	* cppmacro.c (warn_of_redefinition): Warn regardless of -pedantic.
	* gcc.dg/cpp/mi6.c, gcc.dg/cpp/redef2.c: Update.

2001-11-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cris.h: Revert thinko in last patch.

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

	* ChangeLog.0, ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog,
	FSFChangeLog.10, c-decl.c, cppfiles.c, cppinit.c, cpplex.c,
	cpplib.c, cppmain.c, cse.c, df.c, diagnostic.c, dominance.c,
	dwarf2out.c, dwarfout.c, emit-rtl.c, errors.c, except.c, except.h,
	explow.c, function.c, gcse.c, genrecog.c, predict.c, regmove.c,
	sched-rgn.c, ssa-ccp.c, stmt.c, toplev.c: Fix spelling errors.

	* predict.c, reg-stack.c: Fix spelling errors.

2001-10-09  Andrew Haley  <aph@redhat.com>

	* calls.c (check_sibcall_argument_overlap): Use slot_offset for
	start of stack slot.

2001-11-22  Graham Stott  <grahams@redhat.com>

	* cfgrtl.c (try_redirect_by_replacing_jump): Fix typo, emit
	replacement jump after original jump.

	(verify_flow_info): Remove redundent initialisation.
	Handle reaching end of insn list before finding a BARRIER.
	Only issue one missing barrier diagnostic.

2001-11-22  Graham Stott  <grahams@redhat.com>

	* local-alloc.c (combine_regs): Handle SUBREG_REG being a MEM.

Thu Nov 22 06:49:14 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.md (leave, leave_rex64): Have RTL reflect what
	insn actually does.

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

	* doc/invoke.texi (M32R/D Option Summary): Document -m32r switch.
	Fix typo -mm32rx=> -m32rx.

	* config/arm/arm.c (arm_elf_asm_named_section): Only build for elf
	targets.

	* config.gcc (xscale-coff): Add necessary header files to
	tm_file variable.

2001-11-20  Zack Weinberg  <zack@codesourcery.com>

	* rs6000.c (output_cbranch): Use $, not %$, in output template.

2001-11-21  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* tree-dump.c: Rename from c-dump.c. Include c-tree.h, not c-common.h.
	(lang_type_quals): Declare.
	(dequeue_and_dump): Use lang_hooks.tree_dump.type_quals function to
	retrieve language-specific qualifiers for a type node, instead of
	C_TYPE_QUALS. Likewise for lang_hooks.tree_dump.dump_tree instead of
	lang_dump_tree.
	* tree-dump.h: Rename from c-dump.h.
	* c-common.h (C_TYPE_QUALS): Removed.
	Move declarations for tree-dump.c interface to...
	* tree.h: ... here. Remove lang_dump_tree.
	* langhooks.h (struct lang_hooks_for_tree_dump): New.
	(struct lang_hooks): Add tree_dump hooks.
	* langhooks.c (lhd_tree_dump_dump_tree): New function.
	(lhd_tree_dump_type_quals): New function.
	* langhooks-def.h (lhd_tree_dump_dump_tree, lhd_tree_dump_type_quals):
	Declare.
	(LANG_HOOKS_INITIALIZER): Add tree_dump hooks.
	* Makefile.in: Move tree-dump.o to language-independent back-end.

2001-11-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* 1750a.h (DBX_REGISTER_NUMBER): Don't define.
	* alpha.h (DBX_REGISTER_NUMBER): Likewise.
	* arc.h (DBX_REGISTER_NUMBER): Likewise.
	* arm/aout.h (DBX_REGISTER_NUMBER): Likewise.
	* avr.h (DBX_REGISTER_NUMBER): Likewise.
	* c4x.h (DBX_REGISTER_NUMBER): Likewise.
	* clipper.h (DBX_REGISTER_NUMBER): Likewise.
	* convex.h (DBX_REGISTER_NUMBER): Likewise.
	* cris.h (DBX_REGISTER_NUMBER): Likewise.
	* dsp16xx.h (DBX_REGISTER_NUMBER): Likewise.
	* elxsi.h (DBX_REGISTER_NUMBER): Likewise.
	* fr30.h (DBX_REGISTER_NUMBER): Likewise.
	* h8300.h (DBX_REGISTER_NUMBER): Likewise.
	* i370.h (DBX_REGISTER_NUMBER): Likewise.
	* i860.h (DBX_REGISTER_NUMBER): Likewise.
	* i860/paragon.h (DBX_REGISTER_NUMBER): Likewise.
	* i860/sysv3.h (DBX_REGISTER_NUMBER): Likewise.
	* i860/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
	* m32r.h (DBX_REGISTER_NUMBER): Likewise.
	* m68hc11.h (DBX_REGISTER_NUMBER): Likewise.
	* m88k.h (DBX_REGISTER_NUMBER): Likewise.
	* mcore/mcore-elf.h (DBX_REGISTER_NUMBER): Likewise.
	* mcore.h (DBX_REGISTER_NUMBER): Likewise.
	* mn10200.h (DBX_REGISTER_NUMBER): Likewise.
	* mn10300.h (DBX_REGISTER_NUMBER): Likewise.
	* pdp11.h (DBX_REGISTER_NUMBER): Likewise.
	* romp.h (DBX_REGISTER_NUMBER): Likewise.
	* rs6000.h (DBX_REGISTER_NUMBER): Likewise.
	* rs6000/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
	* s390/linux.h (DBX_REGISTER_NUMBER): Likewise.
	* stormy16.h (DBX_REGISTER_NUMBER): Likewise.
	* v850.h (DBX_REGISTER_NUMBER): Likewise.
	* vax.h (DBX_REGISTER_NUMBER): Likewise.
	* we32k.h (DBX_REGISTER_NUMBER): Likewise.

	* defaults.h (DBX_REGISTER_NUMBER): Provide a default.
	* doc/tm.texi (DBX_REGISTER_NUMBER): Update.

2001-11-21  H.J. Lu <hjl@gnu.org>

	* config/rs6000/sysv4.h (LIB_SPEC): Fix a typo.

2001-11-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* s390.c (s390_va_arg): Eliminate ALIGN parameter in call to
	emit_cmp_and_jump_insns.

	* stormy16.c (xstormy16_expand_builtin_va_arg,
	xstormy16_expand_casesi): Likewise.

Wed Nov 21 17:37:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (keep_stack_depressed): Major rework.
	(handle_epilogue_set, emit_equiv_load): New functions.
	(thread_prologue_and_epilogue_insns): keep_stack_depressed now
	has return value.
	* jump.c (returnjump_p_1): Also return 1 if SET with SET_IS_RETURN_P.
	* rtl.h (SET_IS_RETURN_P): New macro.

	* expr.c (expand_expr, case VIEW_CONVERT_EXPR): Refine slightly
	and also support TREE_ADDRESSABLE.
	* tree.def (VIEW_CONVERT_EXPR): Document TREE_ADDRESSABLE.

2001-11-21  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (cmptf_internal1): Replace %$ with $.

Wed Nov 21 16:44:01 2001  Douglas B. Rupp  <rupp@gnat.com>

	* cppfiles.c (STAT_SIZE_TOO_BIG): Define.
	(read_include_file): Use STAT_SIZE_TOO_BIG.

	* cppinit.c (INO_T_COPY): Define.
	(INO_T_EQ): Uppercase parameters.
	(append_include_chain): Use INO_T_COPY.

2001-11-21  Richard Sandiford  <rsandifo@redhat.com>

	* cfg.c: Fix typos and formatting in the introductory comment.

Wed Nov 21 12:38:37 CET 2001  Jan Hubicka

	* profile.c (compute_branch_probabilites):  Compute probabilities
	for entry/exit edges; estimate probabilities for zero counts.

2001-11-21  Jakub Jelinek  <jakub@redhat.com>

	* explow.c (probe_stack_range): Use LCT_NORMAL as second argument
	to emit_library_call.
	* function.c (expand_main_function, expand_function_start,
	expand_function_end): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* stmt.c (expand_nl_goto_receivers): Use LCT_NORETURN as
	second argument to emit_library_call.
	* optabs.c (prepare_cmp_insn): Use LCT_CONST_MAKE_BLOCK
	as second argument to emit_library_call.
	* calls.c (emit_library_call): Update fn_type description.

2001-11-21  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (c_expand_deferred_function): Only call c_expand_body
	if fndecl is still DECL_INLINE and has DECL_RESULT.

2001-11-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* clipper.c (clipper_movstr): Avoid uninitialized warning.
	* i960.c (is_mask, legitimize_address): Likewise.
	* m88k.c (m88k_expand_prologue): Likewise.
	* m88k.md: Likewise.
	* mcore.c (emit_new_cond_insn): Likewise.
	* stormy16.c (xstormy16_emit_cbranch): Likewise.

2001-11-20  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Delete powerpcle-*-solaris2* stanza.
	* config/rs6000/eabi.asm, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/rs6000/rs6000.md,
	config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
	config/rs6000/sysv4.h, config/rs6000/t-ppccomm,
	config/rs6000/t-ppcos: Expunge all references to Solaris.

	* config/rs6000/sol-c0.c, config/rs6000/sol2.h: Delete.

	* config/rs6000/rs6000.md: Replace '%$' with '$' in all
	output templates.
	* config/rs6000/rs6000.h: Define DEFAULT_PCC_STRUCT_RETURN to 0,
	and change RETURN_IN_MEMORY to just check AGGREGATE_TYPE_P.

2001-11-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sh.md: Avoid uninitialized warnings.
	* vax.c (vax_rtx_cost): Likewise.

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

	* rs6000.c (direct_return): Check if we are saving altivec
	registers.
	(first_altivec_reg_to_save): New.
	Updated stack frame layout comments.
	(rs6000_stack_info): Calculate altivec register save size.
	Save link register if we saved some altivec registers.
	(rs6000_stack_info): Align save size to 16 if altivec abi or
	abi_darwin.
	(rs6000_stack_info): Calculate altivec register offsets.
	(rs6000_stack_info): Add altivec info to save_size.
	(debug_stack_info): Add altivec debug info.
	(rs6000_emit_prologue): Save altivec registers and vrsave.
	(compute_vrsave_mask): New.
	(altivec_expand_builtin): Remove unused variables.
	(rs6000_parse_abi_options): Add static qualifier.
	(rs6000_expand_builtin): Remove unused parameters.
	(altivec_expand_builtin): Cast bdesc_2arg to get rid of warning.
	(altivec_init_builtins): Same.
	(is_altivec_return_reg): New.
	(vrsave_operation): New.
	(ALTIVEC_REG_BIT): New.
	(generate_set_vrsave): New.

	* rs6000.md (get_vrsave): New.
	(set_vrsave): New.
	(*set_vrsave_internal): New.

	* rs6000.h (rs6000_stack): Add first_altivec_reg_save,
	altivec_save_offset, vrsave_save_offset, altive_size, vrsave_size,
	altivec_padding_size, vrsave_mask.
	(TOTAL_ALTIVEC_REGS): New.
	(EPILOGUE_USES): Add VRSAVE_REGNO.

2001-11-20  Jeff Law <law@redhat.com>

	* unroll.c (copy_loop_body): Update LABEL_NUSES for the
	exit label as necessary.

2001-11-20  Brad Kaiser  <bkaiser@acelink.net>

	* reload1.c (elimination_effects): Use function_invariant_p
	instead of CONSTANT_P when considering register equivalences.

2001-11-20  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc: Add FreeBSD/PowerPC target.
	(powerpc64-*-linux*, powerpc-*-sysv*, powerpc-*-netbsd*,
	powerpc-*-chorusos*, powerpc-*-eabiaix*, powerpc-*-eabisim*,
	powerpc-*-elf*, powerpc-*-eabi*, powerpc-*-rtems*,
	powerpc-*-linux*libc1, powerpc-*-linux*, powerpc-wrs-vxworks*,
	powerpcle-wrs-vxworks*, powerpcle-*-sysv*, powerpcle-*-elf*,
	powerpcle-*-eabisim*, powerpcle-*-eabi*, powerpcle-*-solaris2*): Add
	freebsd-spec.h to tm_file.
	(rs6000-*-lynxos*): Add lynx.h to tm_file.
	* config/freebsd.h: Tidy up.
	(USING_CONFIG_FREEBSD): Define.
	(FBSD_SWITCH_TAKES_ARG, FBSD_WORD_SWITCH_TAKES_ARG,
	FBSD_CPP_PREDEFINES, FBSD_CPP_SPEC, FBSD_STARTFILE_SPEC,
	FBSD_ENDFILE_SPEC, FBSD_LIB_SPEC): Remove (moved to freebsd-spec.h).
	(TARGET_HAS_F_SETLKW): Define.
	(ASM_OUTPUT_IDENT): Delete, the elfos.h definition is fine.
	* config/freebsd-spec.h: New file.
	* config/rs6000/freebsd.h: New file.
	* config/rs6000/rs6000.h (TARGET_VERSION): Do not define.
	* config/rs6000/rs6000.c: Test for USING_ELFOS_H rather than
	USING_SVR4_H to know when to turn on ELF support.
	* config/rs6000/sysv4.h (TARGET_VERSION, CPP_PREDEFINES): Don't undef,
	define only if not already defined.
	Add FreeBSD support.
	* config/rs6000/aix.h (TARGET_VERSION): Define.
	* config/rs6000/beos.h: Likewise.
	* config/rs6000/darwin.h: Likewise.
	* config/rs6000/mach.h: Likewise.
	* config/rs6000/lynx.h (TARGET_VERSION): Likewise.
	Don't include lynx.h directly.

2001-11-20  Graham Stott  <grahams@redhat.com>

	* unwind-dw2-fde.c (__deregister_frame_info_bases):
	Fix lossage in last change return OB.

Tue Nov 20 11:56:12 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/xm-vms.h (_POSIX_EXIT): Define.
	Remove unneeded exit related macros.

2001-11-20  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (rs6000_emit_eh_toc_restore): Remove ALIGN parm.

	* rs6000.c (rs6000_emit_move): Add TFmode case.
	* sysv4.h (MASK_LONG_DOUBLE_128, TARGET_LONG_DOUBLE_128,
	LONG_DOUBLE_TYPE_SIZE, MAX_LONG_DOUBLE_TYPE_SIZE,
	LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Move from here...
	* rs6000.h: ... to here.
	* rs6000.md (movtf, extenddftf2, extendsftf2, trunctfdf2,
	trunctfsf2, floatditf2, floatsitf2, fix_trunctfdi2,
	fix_trunctfsi2, negtf2, abstf2, nabstf2, cmptf): New patterns.

Tue Nov 20 06:41:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (get_mem_attrs): Fix typo.

2001-11-20  Jakub Jelinek  <jakub@redhat.com>

	* c-lang.c (finish_file): Backout 2001-11-16
	changes, instead set DECL_DEFER_OUTPUT for static inline functions
	before calling c_expand_deferred_function.

2001-11-20  Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2-fde.c (__register_frame_info_bases, __register_frame):
	Don't register empty .eh_frame sections.
	(__deregister_frame_info_bases, __deregister_frame): Don't
	unregister them either.

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

	* configure.in (HAVE_AS_GDWARF2_DEBUG_FLAG): Define.
	(HAVE_AS_GSTABS_DEBUG_FLAG): Define.
	* configure: Regenerate.
	* config.in: Add dummy definitions of new flags.
	* toplev.c (PREFERRED_DEBUGGING_TYPE): Move definition to...
	* defaults.h (PREFERRED_DEBUGGING_TYPE): ... here.
	* gcc.c (ASM_DEBUG_SPEC): New macro.
	(asm_debug): New static variable.
	(default_compilers): Add asm_debug when assembling from
	user input.
	(static_specs): Add asm_debug.

2001-11-20  Loren J. Rittle  <ljrittle@acm.org>

	* config.gcc (*-*-freebsd*): Remove configuration block.

2001-11-19  Loren J. Rittle  <ljrittle@acm.org>

	bootstrap/4422
	* configure.in: Setup ability to run ./stage[1234]/xgcc in
	fixinc *as if* it were a proper lang subdirectory.
	* configure: Rebuilt.

2001-11-19  Loren J. Rittle  <ljrittle@acm.org>

	* config/freebsd.h: Remove DEFAULT_VTABLE_THUNKS (again).

2001-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* 1750a.md: Don't use hex format for a const_int.

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

	* expmed.c (extract_bit_field): Don't create invalid SUBREGs.

2001-11-19  Zack Weinberg  <zack@codesourcery.com>

	* mkconfig.sh: Undefine ENABLE_NLS if GENERATOR_FILE is
	defined (prevents link errors when gettext isn't in the system
	library).

2001-11-19  DJ Delorie  <dj@redhat.com>

	* read-rtl.c (ISDIGIT, ISSPACE): Make sure we have these.
	(validate_const_int): New.
	(read_rtx): Validate constant integers.
	* config/i386/i386.md (pmulhrwv4hi3): Use decimal constants.

2001-11-19  Jakub Jelinek  <jakub@redhat.com>

	* doc/hostconfig.texi (DUMPFILE_FORMAT): Move into the table.

Mon Nov 19 16:57:44 2001  Douglas B. Rupp  <rupp@gnat.com>

	* toplev.c (DUMPFILE_FORMAT): Define default.
	(open_dump_file): Use DUMPFILE_FORMAT in sprintf.
	(close_dump_file, compile_file): Likewise.
	* config/alpha/xm-vms.h (DUMPFILE_FORMAT): Define.
	* doc/hostconfig.texi (DUMPFILE_FORMAT): Document

2001-11-19  Jeff Law <law@redhat.com>

	* gcse.c (cprop_jump): Clear JUMP_LABEL field when we create
	a nop-jump.

2001-11-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (_cpp_backup_tokens): Revert previous check-in.
	Don't fall off the base token run.

2001-11-19  Jason Wilkins <fenix@io.com>

	* Makefile.in: Use INSTALL_SCRIPT not INSTALL_PROGRAM.

Mon Nov 19 15:13:43 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.def (VIEW_CONVERT_EXPR): New tree code.
	* tree.h (handled_component_p): New declaration.
	* alias.c (handled_component_p): Move function from here ...
	* expr.c (handled_component_p): ... to here and non longer static.
	(is_zeros_p, case VIEW_CONVERT_EXPR): New case.
	(store_field): Remove unneeded MEM_COPY_ATTRIBUTES call.
	(get_inner_reference): Handle VIEW_CONVERT_EXPR.
	(expand_expr, case VAR_DECL): Clean up handling of re-layout case.
	(expand_expr, case VIEW_CONVERT_EXPR): New case.
	(expand_expr, cse ADDR_EXPR): No need to copy if already
	BIGGEST_ALIGNMENT.
	* fold-const.c (fold, case VIEW_CONVERT_EXPR): New case.
	* varasm.c (initializer_constant_value_p, case VIEW_CONVERT_EXPR): New.
	(output_constant): Handle VIEW_CONVERT_EXPR.
	* dwarf2out.c (loc-descriptor_from_tree, add_bound_info):
	Add new case for VIEW_CONVERT_EXPR.

2001-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* a29k/unix.h (ASM_FILE_START): Const-ify.
	* i386/beos-elf.h (INCLUDE_DEFAULTS): Remove semi-colon.
	* i386/isc.h (ASM_FILE_START): Const-ify.
	* i386/sun386.h (ASM_FILE_START): Likewise.
	* m32r.md: Likewise.
	* m68k/auxas.h (ADDITIONAL_REGISTER_NAMES): Add missing brackets.
	* m68k/auxgas.h ADDITIONAL_REGISTER_NAMES): Likewise.
	* m68k/tower.h (REGISTER_NAMES): Remove semi-colon.
	* mn10200.md: Initialize variable.

Mon Nov 19 18:06:21 CET 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (try_replace_reg): Copy RTX before creating note.

	* df.h (df_ref_flags): New uenum.
	(DF_REF_FLAGS): New macro.
	(struct ref): Add field "flags".
	* df.c (HANDLE_SUBREG): Remove.
	(df_ref_create): Likewise; set flags field of ref.
	(df_def_record_1): Strip down read_write subreg; remove
	commented out code; set READ_WRITE flag.
	(read_modify_subreg_p): New static function.
	(df_uses_record): Cleanup SET handling; set READ_WRITE flag;
	new argument "flags".
	(df_insn_refs_record): Update call of df_uses_record.
	(df_insn_modify): Avoid #if 0 around comment.
	(df_dump): Dump the read/write flag.

	* predict.c (propagate_freq): Make cyclic_probability and frequency
	volatile

	* i386.c (ix86_cc_mode): Accept USE.

	* cfgrtl.c (purge_dead_edges):  Cleanup EDGE_ABNORMAL flag if computed
	jump is turned into simplejump.

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

	* doc/fragments.texi, doc/trouble.texi: Remove links to old
	installation chapter.
	* doc/gcc.texi: Don't claim that this manual documents
	installation.  Mark Installation menu entry as being out of date.

Mon Nov 19 07:21:35 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/xm-vms.h: Don't define macros that autoconf handles.
	(SUCCESS_EXIT_CODE, FATAL_EXIT_CODE): Define for posix compatibility.
	* gcc.c (exit): Remove definition for VMS; moved to xm-vms.h.

2001-11-19  Jason Merrill  <jason@redhat.com>

	* cppmacro.c (_cpp_backup_tokens): Pop cur_run before decrementing
	cur_token, not after.

	* config/clipper/clix.h, config/h8300/elf.h, config/mips/linux.h:
	Lose ASM_OUTPUT_CONSTRUCTOR.
	* system.h: Poison it and INT_ASM_OP.
	* c-lang.c (finish_file): Don't check for it.
	* libgcc2.c (L_ctors): Check TARGET_ASM_CONSTRUCTOR instead.

2001-11-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mmix.c (mmix_cc1_ignored_option): Const-ify.
	(mmix_init_machine_status): Make static to match declaration.
	(mmix_unique_section): Const-ify.
	(mmix_output_quoted_string): Avoid automatic aggregate
	initialization.
	(mmix_output_register_setting): Likewise.
	(mmix_output_shiftvalue_op_from_str): Likewise.

	* mmix.h (mmix_cc1_ignored_option): Const-ify.
	(ASM_OUTPUT_BYTE): Fix format specifier warning.
	(ASM_GENERATE_INTERNAL_LABEL): Likewise.

2001-11-18  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR c/4448
	* gthr-win32.h: (__gthread_objc_thread_exit): Fix variable
	name __objc_thread_exit_status so that it matches the
	variable defined in objc/thr.h.

2001-11-18  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR bootstrap/4020
	* mklibgcc.in: Add missing semi-colons.
	* Makefile.in: Same.

Sun Nov 18 16:47:00 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case VAR_DECL): Update alignment of DECL_RTL
	after re-laying out decl in incomplete case.
	(expand_expr, case ADDR_EXPR): Fix typo in copy case.

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

	* doc/install-old.texi: Move some sections out to ...
	* doc/collect2.texi, doc/configfiles.texi, doc/headerdirs.texi:
	... here.  New files.  Make into chapters rather than sections.
	* doc/gcc.texi: Include the new files and add menu entries for
	them.
	* Makefile.in ($(docdir)/gcc.info, gcc.dvi): Update dependencies.

Sun Nov 18 14:13:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (TYPE_ALIGN_OK): New flag.
	* emit-rtl.c (set_mem_attributes): Handle it.
	* expr.c (emit_single_push_insn): Only set to alias set 0 if
	doing sibcall optimization.
	(expand_expr, case COMPONENT_REF): Call set_mem_attributes on case
	when make temporary.
	(expand_expr, case CONVERT_EXPR): Simplify convert-to-union case.
	(expand_expr, case ADDR_EXPR): Abort if TYPE_ALIGN_OK and need copy.

	* sdbout.c (sdbout_symbol): Avoid warning due to &DECL_RTL.

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

	* c-decl.c (c_decode_option): Give deprecation warning for
	-traditional.
	* doc/invoke.texi (-traditional): Note that this option is
	deprecated.

Sun Nov 18 07:40:07 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/alpha.c (alpha_start_function, VMS): Cast shift
	arg to HOST_WIDE_INT, not long.

	* config/alpha/vms.h (DIR_SEPARATOR, PREFIX). Don't define.
	(HAS_INIT_SECTION): Define.
	(REAL_ARITHMETIC): Don't undefine.

2001-11-18  Egor Duda  <deo@logos-m.ru>

	* config/i386/cygwin.h: Strip leading '*' from name, if any.

2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (c-parse.o, c-common.o): Update dependencies.
	* c-common.c: Include diagnostic.h.
	(c_common_finish): New.
	* c-common.h (c_common_finish): New.
	* c-lang.c (LANG_HOOKS_FINISH): Override.
	* c-parse.in: Don't include diagnostic.h.
	(finish_parse): Remove.
	* langhooks.h: Update comments.
	* toplev.c (lang_dependent_init): New prototype.
	(finalize): New.
	(compile_file): Split cleanup code out to finalize.
	(lang_dependent_init): Stop if lang_hooks.init fails.
	(toplev_main): Update.
	* tree.h (finish_parse): Remove.
objc:
	* objc-act.c (LANG_HOOKS_FINISH): Override.

Sat Nov 17 23:30:44 2001  Douglas B. Rupp  <rupp@gnat.com>

	* config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms_tramp.asm.
	* config/alpha/vms_tramp.asm: New file.
	* config/alpha/vms-tramp.asm: Removed.

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

	* c-common.c (struct disabled_builtin, disabled_builtins,
	disable_builtin_function, builtin_function_disabled_p): New.
	(builtin_function_2): Check for disabled built-in functions.
	* c-common.h (disable_builtin_function): Declare.
	* c-decl.c (c_decode_option): Handle -fno-builtin-FUNCTION.
	* doc/invoke.texi: Document -fno-builtin-FUNCTION.
	* doc/extend.texi: Mention -fno-builtin-FUNCTION.

2001-11-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR target/4606
	* config.gcc: Remove reference to va-clipper.h.

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

	* config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Fix the
	AltiVec-related bitfields.

Sat Nov 17 12:06:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* except.c (enum eh_region_type): Add ERT_UNKNOWN.
	(mark_eh_region, case ERT_UKNONW): New case.

2001-11-17  Christopher Faylor  <cgf@redhat.com>
	    Corinna Vinschen  <vinschen@redhat.com>

	* config/i386/cygwin.h: Search target specific include directory for
	w32api stuff, if appropriate.

Sat Nov 17 08:20:44 2001  Douglas Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (REG_ALLOC_ORDER): Redefine.

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

	* config/rs6000/rs6000.md: Change all ldvx to lvx.

2001-11-16  Alexandre Oliva  <aoliva@redhat.com>

	* gensupport.c (process_rtx): Don't assume filename is the first
	argument of any rtl.

2001-11-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax-protos.h (reg_was_0_p): New prototype.
	* vax.md (movsi, movhi, movqi): Use reg_was_0_p.
	* vax.c (follows_p, reg_was_0_p): New functions.

2001-11-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.md (casesi): Swap arguments in "(plus:SI (pc) (mult))". Reformat.
	(casesi1): Likewise.  Define new pattern which arises by simplification
	when operand 1 is a constant int.  Correct pattern which arises by
	simplification when operand 1 is zero.

2001-11-16  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (arm*-*-rtems*, arm-*-coff*, armel-*-coff*,
	arm-*-vxworks*, arm-*-riscix1.[01]*, arm-*-riscix*,
	arm-semi-aout, armel-semi-aout, arm-semi-aof, armel-semi-aof,
	arm*-*-netbsd*, arm*-*-linux*, arm*-*-uclinux*, arm*-*-aout,
	arm*-*-ecos-elf, arm*-*-elf, arm*-*-conix*, arm*-*-oabi,
	arm-*-pe*, strongarm-*-elf*, strongarm-*-coff*, strongarm-*-pe,
	xscale-*-elf, xscale-*-coff: Include various CPU headers via tm_file.
	* config/arm/aof.h: Don't include arm.h.
	* config/arm/aout.h: Likewise.
	* config/arm/coff.h: Don't include semi.h and aout.h.
	* config/arm/elf.h: Don't include aout.h.
	* config/arm/netbsd.h: Don't include netbsd.h and aout.h.
	(TARGET_VERSION): Undef before defining.
	(ARM_OS_NAME): Likewise
	(TARGET_DEFAULT): Likewise
	(TARGET_MEM_FUNCTIONS): Do not need to undefine now.
	* config/arm/pe.h: Don't include arm/coff.h.
	* config/arm/riscix.h (CPP_SPEC, SUBTARGET_CPP_SPEC): Use
	SUBTARGET_CPP_SPEC rather than overiding the arm.h CPP_SPEC definition.
	* config/arm/riscix1-1.h: Likewise.
	* config/arm/rix-gas.h: Don't include riscix.h.
	(DBX_CONTIN_LENGTH): Undef before defining.
	* config/arm/semi.h: Don't include aout.h.
	* config/arm/semiaof.h: Don't include aof.h.
	* config/arm/strongarm-coff.h: Don't include coff.h.
	* config/arm/strongarm-pe.h: Don't include strongarm-coff.h and pe.h.
	* config/arm/vxarm.h: Don't include arm/coff.h.
	* config/arm/xscale-coff.h: Don't include coff.h.

Fri Nov 16 15:22:35 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/pa/pa.c: Reflect changes in calling sequences of alter_reg and
	emit_cmp_insn.

2001-11-16  Andreas Jaeger  <aj@suse.de>

	* cfglayout.c (fixup_fallthru_exit_predecesor): Make void, rename
	to ....
	(fixup_fallthru_exit_predecessor): ... this.
	Change callers and prototype.

2001-11-16  Bernd Schmidt  <bernds@redhat.com>

	* config/i386/i386.c (ix86_expand_sse_comi): Generate setcc by
	hand; don't use gen_setcc_2.
	(ix86_expand_builtin): Fix pshufw.
	* config/i386/i386.md (maskncmpv4sf3, vmmmaskncmpv4sf3): Special
	case UNORDERED to emit the right assembler instruction.
	(mmx_pshufw): Lose operand 2.
	(cvtsi2ss): Fix representation.
	From Graham Stott:
	(mmx_clrdi, sse_clrti, stmxcsr, ldmxcsr): Set memory attribute.

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

	* doc/include/linux-and-gnu.texi: Remove.
	* doc/gnu.texi: New.
	* doc/gcc.texi: Include gnu.texi instead of linux-and-gnu.texi.
	* Makefile.in ($(docdir)/gcc.info, gcc.dvi): Update dependencies.

2001-11-16  Kazu Hirata  <kazu@hxi.com>

	* config/a29k/a29k.c: Fix comment formatting.
	* config/a29k/a29k.h: Likewise.
	* config/arc/arc.c: Likewise.
	* config/arc/arc.h: Likewise.
	* config/vax/vax.c: Likewise.
	* config/vax/vax.h: Likewise.
	* config/we32k/we32k.c: Likewise.
	* config/we32k/we32k.h: Likewise.

2001-11-16  Jeff Law  <law@redhat.com>

	* unroll.c (copy_loop_body): Initialize JUMP_LABEL field after
	creating a new jump insn.

Fri Nov 13 09:06:25 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ADDR_EXPR): Refine test for when to
	copy misaligned data.
	* varasm.c (assemble_variable): Set alignment into MEM when changed.

2001-11-16  Graham Stott  <grahams@redhat.com>

	* optabs.c (prepare_cmp_insn): Correct lossage in last change fix
	OPALIGN type.

2001-11-16  Olivier Hainque <hainque@act-europe.fr>

	* except.c: Support for catching a list of types with a single handler
	(struct eh_region): Change type and filter to lists for catch regions.
	(mark_eh_region): Mark the filter list for GC also.
	(expand_start_catch): Always build a list if argument not NULL and
	register each type of the list through add_type_for_runtime.
	(duplicate_eh_region_1): Change type into type_list for catch regions.
	(assign_filter_values): Assign a filter to each type associated with a
	catch region. Assign filter for NULL types in a unique entry in the
	filter list.
	(build_post_landing_pads): Emit compare and jump for each filter of
	the list associated with a catch region.
	(reachable_next_level): When the type thrown is known, stop the search
	as soon as one type within a catch list matches. Also, a handler is
	potentially reachable only if at least one of the types it catches
	has not been previously caught.
	(collect_one_action_chain): Retrieve the filter for a NULL type list
	from the first filter list entry. For non NULL type lists, add an
	action record for every filter assigned.
	* except.h: Reflect changes in comment before expand_start_catch.

Fri Nov 16 07:12:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ADDR_EXPR): Only copy for misaligned if
	BLKmode.

Fri Nov 16 06:37:05 2001  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/sparc/sparc.c: Remove ALIGN arg from emit_cmp_insn.

2001-11-16  Jakub Jelinek  <jakub@redhat.com>

	* c-lang.c (finish_file): Don't emit static inline functions if
	they weren't referenced.

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

	* expr.c (expand_expr, case COMPONENT_REF): Fix variable ref.

2001-11-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* config/s390/s390.md: Remove ALIGN arg from emit_cmp_and_jump_insns
	call.
	* config/i386/i386.md: Likewise.

Thu Nov 15 21:40:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* timevar.c (rtl.h): Include so get fancy abort.

2001-11-15  Dale Johannesen  <dalej@apple.com>

	* config/darwin.h (SELECT_RTX_SECTION):  Force address
	initializers into 'const' section
	* config/rs6000/rs6000.c (rs6000_emit_cmove):  Fix mode of
	if_then_else to match result, not operands

Thu Nov 15 17:57:48 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (nonoverlapping_memrefs): Use REGNO_PTR_FRAME_P.
	* emit-rtl.c (change_address): Fix typo in default alignment.
	(adjust_address_1): Use mode of NEW, not MODE, when setting size.
	* expr.c (highest_pow2_factor, case WITH_RECORD_EXPR): New case.
	* rtl.h (REGNO_PTR_FRAME_P): New macro.

	* expr.c (store_field): Pass tree instead of max size; callers changed.
	Change handling of alignment.
	Only copy to_rtx if is TARGET.
	(expand_expr_unaligned): Delete; callers now use expand_expr.
	(emit_cmp_insn): No longer take ALIGN parm; all callers changed.
	(expand_assignment): Change handling of alignment.
	Only copy to_rtx if was original.
	(get_inner_reference): No longer return alginment; callers changed.
	(expand_expr, case COMPONENT_REF): Change handling of alignment.
	(expand_expr, case ADDR_EXPR): Make copy if not sufficiently aligned.
	(compare_from_rtx): Delete ALIGN parm; all callers changed.
	(do_compare_rtx_and_jump): Likewise.
	* expr.h: Reflect above changes.
	* tree.h: Likewise.
	* dwarf2out.c (loc_descriptor_from_tree): Remove ALIGN parameter
	to get_inner_reference.
	* builtins.c: Remove ALIGN parm in call to emit_cmp_and_jump_insns.
	* doloop.c, except.c, explow.c, loop.c, stmt.c, unroll.c: Likewise.
	* optabs.c: Likewise.
	(prepare_cmp_insn): Now static; remove ALIGN parm.  Callers changed.
	(emit_cmp_and_jump_insns): Remove ALIGN parm; all callers changed.
	* expmed.c: Remove ALIGN arg from calls to compare_from_rtx,
	compare_rtx_and_jump, and emit_cmp_jump_insns.
	* fold-const.c: Remove PALIGN in calls to get_inner_reference.
	* function.c (assign_stack_temp_for_type): No longer static.
	* optabs.h (emit_cmp_insn): Remove ALIGN parm.
	(prepare_cmp_insn): Delete declaration.
	* rtl.h (assign_stack_temp_for_type): Add declaration.
	* config/alpha/alpha.c, config/d30v/d30v.c: Reflect above changes.
	* config/clipper/clipper.c, config/h8300/h8300.c: Likewise.
	* config/i386/i386.c,config/mips/mips.c: Likewise.
	* config/i860/i860.c, config/ia64/ia64.c: Likewise.
	* config/rs6000/rs6000.c, config/sh/sh.c: Likewise.

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

	* config/rs6000/rs6000.h: Fix a comment typo.
	(RTX_COSTS): Sort processor versions better.

2001-11-15  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Fix insn length of bit insns.

2001-11-15  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't abort because of orphan
	DIEs if there were errors in the source.

	* config/alpha/alpha-interix.h, config/alpha/elf.h,
	config/arm/coff.h, config/i386/djgpp.h, config/i386/i386.c,
	config/i386/i386.h, config/i386/sco5.h, config/i960/i960-coff.h,
	config/m68k/coff.h, config/m88k/m88k.h, config/m88k/m88k.c,
	config/pa/pa64-hpux.h, config/sh/sh.h, config/sparc/litecoff.h,
	config/elfos.h, config/lynx.h, config/netware.h,
	config/m68hc11/m68hc11.h, config/mcore/mcore-pe.h,
	config/s390/linux64.h: Remove definitions of INT_ASM_OP, change
	uses to use ASM_LONG.

2001-11-15  Alan Matsuoka  <alanm@redhat.com>

	* gensupport.c	process_include : Change call to alloca to
	xmalloc.

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

	* config/rs6000/rs6000.md: Use spaces instead of tabs in output
	templates.

Thu Nov 15 08:36:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* final.c (alter_subreg): If simplify_subreg can't do anything,
	handle REG ourselves and abort for others.

2001-11-15  Richard Hodson  <hodsonr@dionecorp.com>

	* config/h8300/h8300.c (dosize): Avoid corrupting R3 in interrupt
	routines.

2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* fix-header.c (read_scan_file): Update.

Thu Nov 15 08:36:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (toplev_main): Don't start timing until after
	command-line options are parsed.

2001-11-15  Andreas Schwab  <schwab@suse.de>

	* config.gcc: Set STMP_FIXPROTO and FIXPROTO_DEFINES in target
	makefile frag, not host makefile frag.
	(m88k-dg-dguxbcs*): Add m88k/t-dgux to tmake_file.
	(hppa*): Add pa/t-bsd to tmake_file where no special xmake_file is
	used.
	(hppa*-*-openbsd*): Don't use nonexitent pa/t-openbsd.
	* config/m88k/t-dguxbcs: Remove definitions already in t-dgux.
	* config/m88k/t-dgux (STMP_FIXPROTO): Define.
	* config/i386/t-cygwin (STMP_FIXPROTO): Define.
	* config/i386/t-dgux (STMP_FIXPROTO): Define.
	* config/x-interix: Don't define STMP_FIXPROTO and
	FIXPROTO_DEFINES.
	* config/t-interix: New file, define STMP_FIXPROTO.
	* config/i386/x-beos (STMP_FIXPROTO): Don't define here.
	* config/i386/t-beos (STMP_FIXPROTO): Define here instead.
	* config/t-svr4 (FIXPROTO_DEFINES): Define.
	* config/arm/t-riscix (FIXPROTO_DEFINES): Define.
	* config/i386/t-sco5 (FIXPROTO_DEFINES): Define.
	* config/i386/t-sco5gas (FIXPROTO_DEFINES): Define.
	* config/m68k/t-hp3200: Renamed from x-hp3200.
	* config/i370/t-oe: Renamed from x-oe.
	* config/mips/t-iris: Renamed from x-iris.
	* config/pa/t-bsd: Renamed from x-pa.
	* config/pa/t-pa-hpux: Renamed from x-pa-hpux.
	* config/x-linux, config/i386/x-cygwin, config/i386/x-dgux,
	config/m88k/x-dgux, config/x-svr4, config/arm/x-riscix,
	config/i386/x-sco5, config/m68k/x-hp320g, config/mips/x-iris6,
	config/rs6000/x-cygwin: Remove files.

	* configure.in: Check for target objdump and use that in eh_frame
	optimization test.
	* configure: Regenerated.

2001-11-15  Jakub Jelinek  <jakub@redhat.com>

	* jump.c (squeeze_notes): Return true if no real insns were found.
	* rtl.h (squeeze_notes): Adjust prototype.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): If
	squeeze_notes finds no real instructions, abort.
	(merge_blocks_move_successor_nojumps): Likewise.
	* loop.c (find_and_verify_loops): Likewise.
	* stmt.c (expand_end_case): Likewise.
	* ifcvt.c (dead_or_predicable): Return TRUE if squeeze_notes doesn't
	find any real instructions.

	* config/ia64/ia64.c (ia64_adjust_cost): Handle SUBREGs.

	* cfgcleanup.c (try_optimize_cfg): If try_simplify_condjump optimized
	conditional jump, request updating life into for the block
	containing it.  Fix a typo which prevented life info update.
	Clear blocks bitmap before using it.

2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c: Include c-lex.h.
	(c_common_lang_init): Change prototype.  Call init_c_lex and
	init_pragma from here.
	* c-common.h (c_common_lang_init): Change prototype.
	* c-decl.c (init_decl_processing): Rename.  Call c_parse_init.
	* c-lang.c (c_init): Change prototype.  Update.
	(c_init_options): Update.
	* c-lex.c (cpp_filename): Remove.
	(init_c_lex): Update.  Read the main file, and get the original
	file name.
	(yyparse): Finish the command line options.
	* c-parse.in (c_parse_init): Call init_reswords here.
	(init_parse): Remove.
	* c-tree.h (c_init_decl_processing): New.
	* cpphash.c (_cpp_init_hashtable): After initializing the hash
	table, populate it.
	* cppinit.c (read_original_filename, cpp_finish_options): New.
	(cpp_create_reader): New prototype. Defer hash table initialization.
	(cpp_start_read): Rename cpp_read_main_file.  Initialize the
	hash table.  Get the original filename.
	* cpplib.h (cpp_create_reader): Update.
	(cpp_start_read): Remove.
	(cpp_read_main_file, cpp_finish_options): New.
	* cppmain.c (main, do_preprocessing): Update.
	* langhooks.h (struct langhooks): Update init prototype.
	* toplev.c (general_init, parse_options_and_default_flags,
	process_options, lang_indpendent_init, lang_dependent_init,
	init_asm_output): New; perform the bulk of initialization.
	(compile_file): Move most of initialization to above functions.
	(debug_hooks): Initialize statically.
	(set_Wunused): Relocate.
	(toplev_main): Move most of initialization to other init functions.
	Have a clear logic flow.
	* tree.h (init_parse, init_decl_processing): Remove.
objc:
	* objc-act.c (objc_init): Update prototype, combine with old
	init_parse.
	(objc_init_options): Update.


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

	* cfgrtl.c (purge_all_dead_edges): Use int as argument for
	portability.
	* basic-block.h: Adjust prototype.

2001-11-15  Kazu Hirata  <kazu@hxi.com>

	* config/rs6000/aix31.h: Fix comment formatting.
	* config/rs6000/beos.h: Likewise.
	* config/rs6000/darwin.h: Likewise.
	* config/rs6000/eabi.asm: Likewise.
	* config/rs6000/linux.h: Likewise.
	* config/rs6000/linux64.h: Likewise.
	* config/rs6000/lynx.h: Likewise.
	* config/rs6000/netbsd.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/sol2.h: Likewise.
	* config/rs6000/tramp.asm: Likewise.
	* config/rs6000/xcoff.h: Likewise.
	* config/rs6000/xm-beos.h: Likewise.

2001-11-14  Alan Matsuoka  <alanm@redhat.com>

	* rtl.def (INCLUDE) : Define.
	* gensupport.c  (init_include_reader, process_include,
	save_string) :  New functions to implement an include facility
	in .md files.
	* gensupport.h : Add prototype for init_md_reader_args.
	* genattr.c genattrtab.c gencodes.c genconfig.c genemit.c
	genextract.c genflags.c genopinit.c genoutput.c
	genpeep.c genrecog.c: Change call to init_md_reader to
	init_md_reader_args.
	* md.texi: Document (include "path") and -I directives for RTL
	generation tools.

2001-11-14  DJ Delorie  <dj@redhat.com>

	* integrate.c (get_hard_reg_initial_reg): New.
	* integrate.h (get_hard_reg_initial_reg): Prototype.
	* local-alloc.c (block_alloc): Don't tie pseudos that
	represent call-saved hard regs' initial values.

2001-11-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m68k/linux.h: Include <linux.h> not "linux.h" to avoid infinite
	recursion.

2001-11-14  Roger Sayle <roger@eyesopen.com>

	* fold-const.c (fold): Optimize strlen comparisons against zero.

2001-11-14  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (sparc64-wrs-vxworks*, sparc-*-netbsd*, sparc-*-openbsd*,
	sparc-*-chorusos*, sparc-*-elf*, sparc-*-linux*aout*,
	sparc-*-linux*libc1*, sparc-*-linux*, sparc-*-lynxos*, sparc-*-rtems*,
	sparc-*-rtemself*, sparc-hal-solaris2*, sparc-*-solaris2*,
	sparc-*-sunos4.0*, sparc-*-sunos4*, sparc-*-sunos3*, sparc-*-sysv4*,
	sparc-*-vxsim*, sparclite-*-aout*, sparclite-*-elf*, sparc86x-*-aout*,
	sparc86x-*-elf*, sparc64-*-aout*, sparc64-*-elf*, sparc64-*-linux*):
	Include various CPU headers via tm_file.  a.out based platforms now
	properly include sparc/aout.h.  sol2.h usage now implies including
	elfos.h, svr4.h, and sparc/sysv4.h.
	* config/netbsd.h (TARGET_MEM_FUNCTIONS): Undef before defining it.
	Also define to '1'.
	* sparc/sparc.h (CPP_PREDEFINES, TARGET_VERSION, WORD_SWITCH_TAKES_ARG,
	SELECT_SECTION, ASM_DECLARE_FUNCTION_NAME, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, DBX_REGISTER_NUMBER, ASM_OUTPUT_SOURCE_LINE):
	Remove.  They are a.out specific and belong in sparc/aout.h.
	* sparc/aout.h (TARGET_VERSION, WORD_SWITCH_TAKES_ARG, SELECT_SECTION,
	ASM_DECLARE_FUNCTION_NAME, TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	DBX_REGISTER_NUMBER, ASM_OUTPUT_SOURCE_LINE): Define.  Moved here from
	sparc/sparc.h.
	* sparc/litecoff.h (WORD_SWITCH_TAKES_ARG, ASM_DECLARE_FUNCTION_NAME,
	TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, DBX_REGISTER_NUMBER): Define.
	Moved here from sparc/sparc.h.
	* config/sparc/linux-aout.h (DEFAULT_PCC_STRUCT_RETURN): Undef before
	defining.
	* config/sparc/linux64.h (UNALIGNED_DOUBLE_INT_ASM_OP): Undef before
	* config/sparc/lynx.h:  Don't include lynx.h.
	(SELECT_SECTION): Do not undef.
	* config/sparc/openbsd.h: Don't include sparc/sparc.h.
	* config/sparc/sol2-sld-64.h: Include sparc/sparc.h, elfos.h, svr4.h,
	and sparc/sysv4.h.
	* config/sparc/sol2.h: Don't include sparc/sparc.h and sparc/sysv4.h.
	* config/sparc/sp64-aout.h (CPP_PREDEFINES): Don't define.  Get from
	sparc/aout.h now.
	* config/sparc/sp64-elf.h (DWARF_DEBUGGING_INFO, DWARF2_DEBUGGING_INFO):
	Don't undef, there is no need.
	* config/sparc/splet.h (CPP_PREDEFINES): Define.
	* config/sparc/sun4o3.h (CPP_PREDEFINES): Likewise.
	* config/sparc/sunos4.h (CPP_PREDEFINES): Likewise.
	Don't include sparc/sparc.h.
	* config/sparc/sysv4.h (WORD_SWITCH_TAKES_ARG, ASM_OUTPUT_SOURCE_LINE,
	SELECT_SECTION, ASM_DECLARE_FUNCTION_NAME, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP): Don't undef, there is no need now.  Don't include
	elfos.h and svr4.h.
	(TARGET_VERSION): Define.
	* config/sparc/vxsim.h (TARGET_VERSION): Define.

Wed Nov 14 19:46:08 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (fixup_fallthru_exit_predecesor): New static function.
	(cfg_layout_finalize): Use it.
	* bb-reorder.c (HAVE_epilogue): Remove.
	(make_reorder_chain): Do not care special placement of
	last basic block.

	* predict.c (expected_value_to_br_prob): Delete the note
	once transformed.

	* c-decl.c (c_expand_body): Fix TV_EXPAND nesting problem;
	measure integration time separately.

Wed Nov 14 12:30:57 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (struct temp_slot): ALIGN now unsigned.

2001-11-14  Kazu Hirata  <kazu@hxi.com>

	* config/dsp16xx/dsp16xx.c: Fix comment formatting.
	* config/dsp16xx/dsp16xx.h: Likewise.
	* config/dsp16xx/dsp16xx.md: Likewise.

2001-11-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Reorganize the code
	that deals with 7-bit shifts in HImode.

Wed Nov 14 14:17:05 CET 2001  Jan Hubicka  <jh@suse.cz>

	* dbxout.c (dbxout_symbol_location): Update call of alter_subreg.
	* final.c (walk_alter_subreg): Take pointer; update call of alter_subreg.
	(final_scan_insn): Update call of alter_subreg.
	(cleanup_subreg_operands): Likewise.
	(alter_subreg): Rewrite using simplify_subreg.
	(output_address, output_operand): Update call of alter_subreg.
	* output.h (alter_subreg): Update prototype.
	* sdbout.c (sdbout_symbol): Update call of alter_subreg.
	* simplify-rtx.c (simplify_subreg): Copy ORIGINAL_REGNO.
	* Makefile.in (final.o): Add dependency on expr.h

Wed Nov 14 06:37:54 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-lang.c (finish_file): Make I unsigned to eliminate warning.

2001-11-13  Jeff Sturm  <jsturm@one-point.com>

	* doc/install.texi (sparc-*-linux*): Mention requirements for
	binutils and glibc.

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

	* Makefile.in (POD2MAN): Don't include --section=1.
	(manext): Rename to man1ext.  All users changed.
	(man7ext): New.
	(man7dir): New.
	(generated-manpages): Also depend on $(docdir)/gfdl.7,
	$(docdir)/gpl.7, and $(docdir)/fsf-funding.7.
	($(docdir)/gcov.1, $(docdir)/cpp.1, $(docdir)/gcc.1): Include
	--section=1 in calls to $(POD2MAN).
	($(docdir)/gfdl.7, $(docdir)/gpl.7, $(docdir)/fsf-funding.7): New.
	(maintainer-clean, install, uninstall): Handle the new man pages.
	($(docdir)/cpp.info, cpp.dvi): Depend on fdl.texi.
	(installdirs): Create man7dir.
	* doc/cpp.texi: Include GFDL in this manual.  In the man page,
	refer to gfdl(7) for the GFDL.  Apply Front Cover and Back Cover
	texts to man page.  Include gpl(7), gfdl(7) and fsf-funding(7) in
	the SEE ALSO man page section.
	* doc/gcov.texi: Apply GFDL to man page.  Include gpl(7), gfdl(7)
	and fsf-funding(7) in the SEE ALSO man page section.
	* doc/invoke.texi: Apply GFDL to man page.  Include gpl(7),
	gfdl(7) and fsf-funding(7) in the SEE ALSO man page section.
	* doc/include/fdl.texi, doc/include/funding.texi,
	doc/include/gpl.texi: Adjust for conversion by texi2pod.pl.
	* doc/.cvsignore: Add gfdl.7, gpl.7 and fsf-funding.7.

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

	* dwarf2asm.c (dw2_force_const_mem): Set PUBLIC or STATIC
	as appropriate for the artificial decl.

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

	* loop.c (combine_movables): Turn off combination until
	move_movables validation bugs are fixed.

2001-11-13  DJ Delorie  <dj@redhat.com>

	* config.gcc (powerpc|rs6000): Set default cpp options based
	on --with-cpu settings.
	* config/rs6000/softfloat.h: New.

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

	* config/h8300/h8300.c (shift_alg_si): Use special code for
	25-bit shifts on H8S.
	(get_shift_alg): Generate special code for 25-bit shifts on
	H8S.

2001-11-13  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (adjust_address_1): Add ADJUST argument.
	(adjust_automodify_address_1): New.
	* expr.h (adjust_address, adjust_address_nv): Adjust.
	(adjust_automodify_address, adjust_automodify_address_nv): Define.
	(adjust_address_1): Update prototype.
	(adjust_automodify_address_1): Add prototype.
	* expr.c (move_by_pieces_1): Use adjust_automodify_address.
	(store_by_pieces_2): Likewise.

Tue Nov 13 05:45:40 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (explow.o): Now depends on ggc.h.
	* explow.c (ggc.h): Include.
	(set_stack_check_libfunc): Mark stack_check_libfunc as ggc root.

	* Makefile.in (expr.o): Depends on insn-attr.h.
	* expr.c (insn-attr.h): New include.
	(force_operand): If INSN_SCHEDULING, deal with paradoxical SUBREG
	of MEM.
	(highest_pow2_factor, case INTEGER_CST): Handle negative values.
	(expand_expr): Remove unneeded mark_temp_addr_taken calls and
	clean up related usage in ADDR_EXPR.
	(expand_expr_unaligned): Likewise.

	* emit-rtl.c (change_address): Fix typo in alias setting.

2001-11-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (cfgcleanup.o): Depend on insn-config.h

2001-11-12  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR bootstrap/3451
	* c-pragma.c: Rename macros BAD, BAD2, BAD_ACTION to
	GCC_BAD, GCC_BAD2, GCC_BAD_ACTION.

2001-11-12  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (sparc-tti-*, sparc64-wrs-vxworks*, sparc-wrs-vxworks*,
	sparclite-wrs-vxworks*, sparc-*-aout*, sparc-*-netbsd*,
	sparc-*-chorusos*, sparc-*-linux*aout*, sparc-*-linux*libc1*,
	sparc-*-linux*, sparc-*-lynxos*, sparc-*-rtemsaout*, sparc-*-rtems*,
	sparc-*-rtemself*, sparc-*-solaris2*, sparc-*-sunos3*, sparc-*-sysv4*,
	sparc-*-vxsim*, sparclet-*-aout*, sparclite-*-coff*, sparclite-*-aout*,
	sparc86x-*-aout*, sparc86x-*-elf*, sparc64-*-aout*, sparc64-*-elf*,
	sparc64-*-linux*):  Include various CPU headers via tm_file.
	* config/svr3.h (ASM_OUTPUT_IDENT): Undef before defining it.
	(SELECT_SECTION): Likewise.
	(SELECT_RTX_SECTION): Likewise.
	* config/sparc/sparc_bi.h: New file.
	* config/sparc/aout.h: Don't include sparc/sparc.h and aoutos.h.
	* config/sparc/linux-aout.h: Likewise.
	* config/sparc/linux.h: Don't include sparc/sysv4.h.
	* config/sparc/linux64.h: Likewise.
	(SPARC_BI_ARCH): Don't define.  sparc_bi.h will do it instead.
	* config/sparc/lite.h:  Don't include sparc/sparc.h and gofast.h.
	* config/sparc/litecoff.h: Don't include sparc/lite.h, svr3.h,
	and dbxcoff.h
	(ASM_OUTPUT_IDENT): Do not #undef.
	(SELECT_SECTION): Likewise.
	(SELECT_RTX_SECTION): Likewise.
	* config/sparc/liteelf.h: Don't include gofast.h.
	* config/sparc/lynx-ng.h: Don't include sparc/sparc.h and lynx-ng.h.
	* config/sparc/lynx.h: Don't include sparc/sparc.h.
	* config/sparc/pbd.h: Likewise.
	* config/sparc/netbsd.h: Don't include sparc/sparc.h and netbsd.h.
	* config/sparc/rtems.h: Don't include sparc/aout.h and rtems.h.
	* config/sparc/rtemself.h: Don't include rtems.h.
	* config/sparc/sol2-64.h: Don't include sparc/sol2-sld-64.h.
	* config/sparc/sol2-sld-64.h (SPARC_BI_ARCH): Don't define, include
	sparc_bi.h instead.
	* config/sparc/sol2-sld.h: Don't include sparc/sol2.h.
	* config/sparc/sol2.h: Include sparc/sparc.h directly.
	* config/sparc/sp64-aout.h: Don't include sparc/sparc.h and aoutos.h.
	* config/sparc/sp64-elf.h: Don't include sparc/sol2.h.
	* config/sparc/sp86x-aout.h: Don't include sparc/sparc.h and gofast.h.
	* config/sparc/sp86x-elf.h: Don't include gofast.h.
	* config/sparc/splet.h: Don't include sparc/aout.h.
	* config/sparc/sun4o3.h: Don't include sparc/sparc.h.
	* config/sparc/sysv4.h: Don't include sparc/sparc.h directly.
	* config/sparc/vxsim.h: Don't include sparc/sysv4.h.
	* config/sparc/vxsparc.h: Don't include sparc/aout.h and gofast.h.
	* config/sparc/vxsparc64.h: Don't include gofast.h.
	(SPARC_BI_ARCH): Don't define.  sparc_bi.h will do it instead.

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

	* doc/standards.texi: Mention C99 TC1.

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

	* mips-protos.h (mips_output_conditional_branch): Const-ify.
	* mips.c (mips_output_conditional_branch): Likewise.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (shift_alg_si): Use special code for
	15-bit logical shifts and 31-bit logical shifts.
	(get_shift_alg): Generate special code for 15-bit and 31-bit
	logical shifts.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (shift_alg_qi): Use rotations when
	doing 6-bit logical shifts on H8S.
	(shift_alg_qi): Use special code for 21-bit shifts on H8S.
	(get_shift_alg): Generate special code for 21-bit shifts on
	H8S.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove a redundant
	label.

Mon Nov 12 11:58:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (nonoverlapping_memrefs_p): Only update size from memref
	if both size and offset known.

2001-11-12  David O'Brien  <obrien@FreeBSD.org>

	* config/ia64/freebsd.h: Fix misspelling.

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

	* doc/gcc.texi: Move several chapters out to ...
	* doc/configterms.texi, doc/fragments.texi, doc/hostconfig.texi,
	doc/include/linux-and-gnu.texi, doc/interface.texi,
	doc/makefile.texi, doc/passes.texi, doc/portability.texi:
	... here.  New files.
	* doc/gcc.texi, doc/contrib.texi: Move section headings into
	contrib.texi.
	* Makefile.in ($(docdir)/gcc.info, gcc.dvi): Update dependencies.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/alpha/alpha-interix.h: Fix comment formatting.
	* config/alpha/alpha.c: Likewise.
	* config/alpha/alpha.h: Likewise.
	* config/alpha/alpha32.h: Likewise.
	* config/alpha/freebsd.h: Likewise.
	* config/alpha/unicosmk.h: Likewise.
	* config/alpha/vms.h: Likewise.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove redundant code.

2001-11-12  Jakub Jelinek  <jakub@redhat.com>

	* dbxout.c (dbxout_symbol_location): Avoid emitting invalid register
	numbers.

Mon Nov 12 05:18:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (set_mem_attributes): If making object, can set alignment
	from type.
	(replace_equiv_address): Call update_temp_slot_address.

	* dwarf2out.c (loc_descriptor_from_tree, case COMPOUND_EXPR): New case.

	* alias.c (nonoverlapping_memrefs_p): Handle DECL_RTL being a CONCAT.

2001-11-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (shift_alg_qi): New.
	(shift_alg_hi): Likewise.
	(shift_alg_si): Likewise.
	(get_shift_alg): Change the type of count to unsigned int.
	Use the tables.

2001-11-11  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (c-lang.o): Depend on $(VARRAY_H).
	* c-decl.c (c_expand_body): Take argument can_defer_p.  Use it
	to decide whether to defer a function.
	(finish_function): Adjust.
	(c_expand_deferred_function): New function.
	* c-lang.c (deferred_fns): New variable.
	(c_init): Initialize it, and mark it as a root.
	(defer_fn): New function.
	(finish_file): Expand all deferred functions.
	* c-tree.h (defer_fn): Declare.
	(c_expand_deferred_function): Likewise.
	* objc/Make-lang.in (objc-act.o): Depend on $(VARRAY_H).
	* objc-act.c (deferred_fns): New variable.
	(objc_init): Initialize it, and mark it as a root.
	(defer_fn): New function.
	(finish_file): Expand all deferred functions.

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

	* alpha.c (unicosmk_special_name): Prototype.
	(unicosmk_ssib_name): Delete unused variable.
	* alpha/unicosmk.h (common_section, ssib_section): Prototype.
	* alpha/vms.h (PREFIX): Undef before defining.
	* arm/pe.h (SUBTARGET_NAME_ENCODING_LENGTHS): Likewise.
	* i370/i370.c (mvs_hash_alias): Prototype.  Wrap with macro
	controlling usage.  Const-ify.
	(alias_number): Delete unused variable.
	* m32r/m32r.c (m32r_sched_init): Add missing argument.
	(m32r_expand_block_move): Fix uninitialized warnings.
	* mn10300/mn10300.h (REGNO_IN_RANGE_P): Fix 'unsigned >=0 is
	always true' warnings.
	* openbsd.h (TARGET_MEM_FUNCTIONS): Don't redefine.
	* sh/sh.c: Include "integrate.h".
	(output_far_jump): Fix uninitialized warning.
	* final.c (shorten_branches): Avoid automatic aggregate
	initialization.
	* integrate.c (subst_constants): Likewise.

2001-11-11  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (shift_alg): Remove SHIFT_MAX.
	(get_shift_alg): Remove redundant code.

2001-11-11  Kazu Hirata  <kazu@hxi.com>

	* config/pa/milli64.S: Fix comment formatting.
	* config/pa/pa-64.h: Likewise.
	* config/pa/pa-linux.h: Likewise.
	* config/pa/pa-protos.h: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pa/pa.h: Likewise.
	* config/pa/pa32-linux.h: Likewise.
	* config/pa/pa32-regs.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/pa/pa64-regs.h: Likewise.
	* config/pa/som.h: Likewise.

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

	* doc/gcc.texi: Move several chapters out to ...
	* doc/bugreport.texi, doc/contribute.texi, doc/frontends.texi,
	doc/service.texi, doc/standards.texi, doc/trouble.texi,
	doc/vms.texi: ... here.  New files.
	* Makefile.in ($(docdir)/gcc.info, gcc.dvi): Update dependencies.

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

	* ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog.5, ChangeLog,
	cfg.c, cfganal.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c,
	collect2.c, combine.c, config.in, configure, configure.in,
	conflict.c, dwarf2out.c, dwarfout.c, except.c, final.c, flow.c,
	genattrtab.c, ggc-page.c, jump.c, lcm.c, predict.c, reg-stack.c,
	reload1.c, rtlanal.c, sched-rgn.c, toplev.c, unwind-dw2-fde.h: Fix
	spelling errors.

Sun Nov 11 05:56:01 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/rs6000/rs6000.c (rs6000_hash_constant, toc_hash_eq):
	Adjust operand number in CONST_DOUBLE.

	* expmed.c (extract_bit_field): No longer pass in alignment.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	(store_bit_field, store_fixed_bit_field, store_split_bit_field):
	Likewise.
	* expr.c (store_constructor, store_constructor_field): Likewise.
	(store_field, emit_group_load, emit_group_store): Likewise.
	* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
	(store_bit_field, extract_bit_field): Likewise.
	* calls.c, expr.c, function.c: Change calls to above functions.
	* ifcvt.c, stmt.c: Likewise.

	* alias.c (nonoverlapping_memrefs_p): Not overlapping if one base is
	constant and one is on frame.
	If know memref offset, adjust size from decl.

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

	* alpha/unicosmk.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Fix
	format specifier warning.
	* convex.h (ASM_OUTPUT_BYTE): Likewise.
	* elfos.h (ALIGN_ASM_OP): Undef before defining.
	* i386/att.h (ASM_GENERATE_INTERNAL_LABEL): Fix format specifier
	warning.
	* i386/bsd.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/gas.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386-interix.h (gen_stdcall_suffix): Prototype.
	* i386.h (ASM_OUTPUT_BYTE): Fix format specifier warning.
	* i386elf.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_LONG_DOUBLE): Likewise.
	* i386/interix.c (gen_stdcall_suffix): Const-ify.
	* i386/next.h (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_FLOAT, ASM_GENERATE_INTERNAL_LABEL): Fix format
	specifier warnings.
	* i386/osfrose.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/ptx4-i.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_LONG_DOUBLE): Likewise.
	* i386/sco5.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/sequent.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/sun386.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/svr3dbx.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* m68k/3b1.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_LONG_DOUBLE,
	ASM_OUTPUT_FLOAT, ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* m68k/altos3068.h (ASM_OUTPUT_FLOAT_OPERAND): Likewise.
	* m68k/amix.h (ASM_OUTPUT_ASCII, ASM_GENERATE_INTERNAL_LABEL):
	Likewise.
	* m68k/atari.h (ASM_OUTPUT_ASCII, ASM_GENERATE_INTERNAL_LABEL):
	Likewise.
	* m68k/crds.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Likewise.
	* m68k/dpx2.h (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_FLOAT, ASM_OUTPUT_BYTE, ASM_OUTPUT_FLOAT_OPERAND):
	Likewise.
	* m68k/hp320.h (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_BYTE):
	Likewise.
	* m68k.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_BYTE):
	Likewise.
	* m68k/m68kv4.h (ASM_OUTPUT_ASCII): Delete unused variable.
	* m68k/mot3300.h (ASM_OUTPUT_BYTE): Fix format specifier warning.
	* m68k/news.h (PRINT_OPERAND): Likewise.
	* m68k/next.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_FLOAT_OPERAND, ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
	* m68k/next21.h (ASM_OUTPUT_FLOAT_OPERAND): Likewise.
	* m68k/plexus.h (ASM_SPEC): Insert space between macro name and
	definition.
	* m68k/sgs.h (ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_FLOAT, ASM_OUTPUT_ASCII, ASM_OUTPUT_FLOAT_OPERAND,
	ASM_OUTPUT_DOUBLE_OPERAND): Fix format specifier warnings.
	* m68k/sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Likewise.
	* m68k/tower-as.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_FLOAT, ASM_OUTPUT_BYTE,
	PRINT_OPERAND): Likewise.
	* m88k/m88k.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_BYTE):
	Likewise.
	* mips/elf.h (PUT_SDB_SIZE, ASM_DECLARE_OBJECT_NAME): Likewise.
	* mips/elf64.h (PUT_SDB_SIZE, ASM_DECLARE_OBJECT_NAME): Likewise.
	* mips/iris5gas.h (PUT_SDB_SIZE): Likewise.
	* mips/linux.h (ASM_DECLARE_OBJECT_NAME): Likewise.
	* mips.c (mips_output_external_libcall): Mark parameter with
	ATTRIBUTE_UNUSED.
	(mips_asm_file_start): Move variable into the scope where it's
	used.
	* mips.h (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* mips/netbsd.h (ASM_DECLARE_OBJECT_NAME): Likewise.
	* mips/sni-gas.h (PUT_SDB_SIZE): Likewise.
	* ns32k/encore.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* ns32k.c (print_operand): Likewise.
	* pa.c (print_operand, output_div_insn): Likewise.
	* pa.h (ASM_OUTPUT_MI_THUNK, ASM_GENERATE_INTERNAL_LABEL,
	ASM_OUTPUT_BYTE, PRINT_OPERAND_ADDRESS): Likewise.
	* pa/pa64-hpux.h (UNIQUE_SECTION): Const-ify.
	* sparc/linux.h (ASM_GENERATE_INTERNAL_LABEL): Fix format
	specifier warnings.
	* sparc/linux64.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* sparc/pbd.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_SOURCE_LINE): Don't list macro arguments in undef.
	* sparc/vxsim.h (ASM_GENERATE_INTERNAL_LABEL): Fix format
	specifier warnings.
	* svr3.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.

	* sdbout.c (sdbout_end_epilogue): Mark parameter with
	ATTRIBUTE_UNUSED.
	* varasm.c (assemble_global): Likewise.

2001-11-11  H.J. Lu <hjl@gnu.org>

	* config.gcc: Add "elfos.h svr4.h" to $tm_file for Linux/mips.

Sun Nov 11 01:26:00 CET 2001  Jan Hubicka  <jh@suse.cz>

	* final.c (*_MAX_SKIP): Use *_max_skip variables.
	* flags.h (align_loops_max_skip, align_jumps_max_skip,
	align_labels_max_skip): New global variables.
	* toplev.c (align_loops_max_skip, align_jumps_max_skip,
	align_labels_max_skip): New global variables.
	(toplev_main): Set new variables.
	* i386.c (override_options): Set max_skip values.

2001-11-10  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (Label Output): Document ASM_OUTPUT_LABEL_REF.
	* final.c (output_addr_const): Use ASM_OUTPUT_LABEL_REF.
	* config/stormy16/stormy16.c (xstormy16_print_operand): For '%C',
	don't print an @fptr for labels either.
	(xstormy16_output_addr_vec): Don't print @fptr here.
	* config/stormy16/stormy16.h (ASM_OUTPUT_LABEL_REF): New macro.

Sat Nov 10 08:50:50 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa-ccp.c (examine_flow_edges): Use old-style definition, not
	an ANSI/ISO definitino.
	(ssa_const_prop): Likewise.

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

	* config/rs6000/rs6000.c (rs6000_reg_names): Remove leading "v" or
	altivec registers.

2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cppexp.c (parse_number): Use ISXDIGIT/hex_value.
	* cpplex.c (hex_digit_value): Use hex_p/hex_value.
	* cppmain.c (general_init): Call hex_init.
	* tradcif.y (parse_number): Use TOLOWER/ISXDIGIT/hex_value/hex_p.

	* config.gcc (i[34567]86-dg-dgux*): Don't set `out_file'.

	* i386/dgux.h (ASM_FILE_START): Set to the meaningful portions
	of dgux.c:output_file_start().

	* i386/dgux.c: Delete file.

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

	* config/alpha/alpha.c (decl_in_text_section): New.
	(current_file_function_operand): Use it.
	(alpha_encode_section_info, alpha_end_function): Likewise.

2001-11-07  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc: Add FreeBSD/IA-64 target. Expand config/i64/elf.h headers.
	* config/i64/ia64.h (TARGET_VERSION,ASM_SPEC,LINK_SPEC): Remove,
	they are OS specific.  Use CPP_CPU_SPEC rather than CPP_PREDEFINES,
	so OS specific files and use CPP_PREDEFINES for their needs.
	* config/i64/elf.h (TARGET_VERSION): Add.  Also, move inclusion of
	target headers to tm_file.
	* config/ia64/aix.h (TARGET_VERSION): Likewise.
	* config/ia64/hpux.h (TARGET_VERSION): Likewise.
	* config/ia64/linux.h (TARGET_VERSION): Likewise.
	(FUNCTION_PROFILER): Remove.
	* config/ia64/ia64.h (FUNCTION_PROFILER): Update definition using the
	version in config/ia64/linux.h.
	* config/ia64/freebsd.h: New file.
	* config/freebsd.h: Tidy up.
	(_USING_CONFIG_FREEBSD): Define.
	(FBSD_CPP_PREDEFINES): Add __KPRINTF_ATTRIBUTE__.
	(FBSD_CPP_SPEC): Define generic FreeBSD spec.
	(FBSD_STARTFILE_SPEC): Likewise.
	(FBSD_ENDFILE_SPEC): Likewise.
	(FBSD_LIB_SPEC): Likewise.
	(WCHAR_UNSIGNED): Undefine, FreeBSD's wchars are signed.
	(USER_LABEL_PREFIX): Define to ELF compatible value as some CPU headers
	set an ELF-improper one.

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

	* pa.c (emit_move_sequence): Use cint_ok_for_move to check whether a
	constant can be loaded in a single instruction to a register.  When
	loading immediate constants, use PLUS instead of HIGH/LO_SUM.  Use
	depdi for insertion of most significant 32-bits on 64-bit hosts.
	* pa.h (LEGITIMATE_CONSTANT_P): Accept constants that can be built
	with ldil/ldo/depdi instruction sequence on 64-bit hosts.
	* pa.md: New addmove pattern for adding constant_int to HImode
	register and moving result to HImode register.  Remove HImode HIGH
	and LO_SUM patterns.

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

	* Makefile.in: Update.
	* c-decl.c (print_lang_decl, print_lang_type): Remove.
	(print_lang_identifier): Rename c_print_identifier.
	* c-lang.c (LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(print_lang_statistics, lang_print_xnode): Remove.
	* c-parse.in (set_yydebug): Rename c_set_yydebug.
	* c-tree.h (c_set_yydebug, c_print_identifier): New.
	* langhooks-def.h (lhd_print_tree_nothing, lhd_set_yydebug): New.
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New members.
	(lang_print_tree_hook): New.
	* langhooks.c (lhd_print_tree_nothing, lhd_set_yydebug): New.
	* print-tree.c: Include langhooks.h.
	(print_node): Update.
	* toplev.c (decode_d_option): Update.
	* tree.c: Include langhooks.h.
	(dump_tree_statistics): Update.
	* tree.h (print_lang_statistics, print_lang_decl, print_lang_type,
	print_lang_identifier, set_yydebug, lang_print_xnode): Remove.
objc:
	* objc-act.c (LANG_HOOKS_PRINT_IDENTIFIER,
	LANG_HOOKS_SET_YYDEBUG): Override.
	(lang_print_xnode, print_lang_statistics): Remove.

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

	* dwarf2asm.c (dw2_force_const_mem): Invoke STRIP_NAME_ENCODING
	on the symbol string.

2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pa/elf.h (ASM_DECLARE_FUNCTION_NAME,
	ASM_OUTPUT_EXTERNAL_LIBCALL): Undef before defining.
	* config.gcc (hppa1.1-*-rtems*): Remove duplicate clause.

	* clipper.h (ASM_OUTPUT_REG_POP): Fix typo.

	* tlink.c (recompile_files): Copy strings passed to `putenv'.

2001-11-09  Geoffrey Keating  <geoffk@redhat.com>

	* tree.h (TYPE_VOLATILE): Trap use not on TYPEs.
	(TYPE_READONLY): Likewise.

	* flow.c (insn_dead_p): Allow for AUTO_INC notes all the time.

	* config/stormy16/stormy16.h (ASM_SPEC): Revert last change,
	don't pass --gdwarf2 to the assembler if the compiler will also
	provide debug info.

	* config/stormy16/stormy16.c (xstormy16_expand_casesi):
	Don't change INDEX.

Fri Nov  9 17:51:09 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (nonoverlapping_memrefs_p): New function.
	(true_dependence, canon_true_depenence, write_dependence_p): Call it.

	* emit-rtl.c (set_mem_attributes): Get alignments for constants.

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

	* rs6000.h (REG_CLASS_CONTENTS): Add VRSAVE bit to ALL_REGS.
	(CONDITIONAL_REGISTER_USAGE): Disable AltiVec registers unless
	generating altivec code.
	(FIXED_REGISTERS): VRSAVE is fixed.
	(CALL_USED_REGISTERS): VRSAVE is call used.

2001-11-09  Jason Eckhardt  <jle@rice.edu>

	* config/mips/mips.c (mips_output_conditional_branch): Do not hard
	code the branch target as ".+16/.+12", but rather use labels.

Fri Nov  9 11:27:42 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/milli64.S: Use %r25 and %r0 instead of arg1 and r0
	to work around limitations of certain versions of GAS.

	* pa.md (mulsi3): Remove PA64 hack to work around SUBREG issues.
	(muldi3): Update due to SUBREG_BYTE changes.
	(casesi): Similarly.

2001-11-09  Zack Weinberg  <zack@codesourcery.com>

	* doc/invoke.texi: Remove comment referring to -xf77-version.

2001-11-09  Kazu Hirata  <kazu@hxi.com>

	* config/convex/convex.c: Fix comment formatting.
	* config/convex/convex.h: Likewise.

2001-11-08  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (.po.pox): Look both in srcdir and builddir
	for $(PACKAGE).pot.
	(po/$(PACKAGE).pot): Don't move-if-change the new potfile over
	to the source directory.

2001-11-09 Ben Elliston  <bje@redhat.com>
	   Michael Meissner  <meissner@redhat.com>
	   Andrew MacLeod  <amacleod@redhat.com>
	   Richard Henderson  <rth@redhat.com>
	   Nick Clifton  <nickc@redhat.com>
	   Catherine Moore  <clm@redhat.com>

	* m32r.c: Add support for m32rx processor.
	* m32r.h: Ditto.
	* m32r.md: Ditto.
	* t-m32r: Ditto.
	* m32r-protos.h: Add prototypes for m32rx functions.
	* doc/invoke.texi: Document -m32rx option.

2001-11-09  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (movdf): Avoid calling validize_mem during
	or after reload.

2001-11-09  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi2html: Use $MAKEINFO --no-split.

2001-11-09  Andreas Schwab  <schwab@suse.de>

	* Makefile.in ($(HOST_PREFIX_1)rtl.o,
	$(HOST_PREFIX_1)print-rtl.o, $(HOST_PREFIX_1)bitmap.o,
	$(HOST_PREFIX_1)vfprintf.o, $(HOST_PREFIX_1)doprint.o,
	$(HOST_PREFIX_1)strstr.o, $(HOST_PREFIX_1)errors.o,
	$(HOST_PREFIX_1)ggc-none.o): Update dependencies.

2001-11-09  H.J. Lu <hjl@gnu.org>

	* config/mips/mips.c (mips_output_function_prologues): Cast
	`tsize' to long for output.

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

	* c-lang.c (LANG_HOOKS_NAME): New.
	(lang_hooks): Constify.
	(c_init_options): Update.
	(lang_identify): Remove.
	* c-parse.in (language_string): Remove.
	* dbxout.c: Include langhooks.h.
	(dbxout_symbol_location): Update.
	* dwarf2out.c: Include langhooks.h.
	(gen_compile_unit_die): Update.
	* dwarfout.c: Include langhooks.h.
	(prototyped_attribute, output_compile_unit_die): Update.
	* langhooks-def.h (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New members.  Constify.
	* stringpool.c: Don't include toplev.h.
	(set_identifier_size): Remove.
	* toplev.c (toplev_main): Initialize identifier size.
	(print_version): Update.
	* tree.h (language_string, init_lex, lang_identify,
	set_identifier_size): Remove.
	* Makefile.in: Update dependencies.
	* config/darwin.c: Include langhooks.h.
	(func_name_maybe_scoped): Update.
	* config/darwin.h (ASM_END_FILE): Update.
	* config/nextstep.h (ASM_END_FILE): Update.
	* config/nextstep21.h (ASM_END_FILE): Update.
	* config/i386/sun386.h (ASM_END_FILE): Update.
	* config/rs6000/rs6000.c (ASM_END_FILE): Include langhooks.h.
	(rs6000_output_function_epilogue): Update.
objc:
	* objc-act.c (LANG_HOOKS_NAME): Override.
	(struct lang_hooks): Constify.
	(objc_init_options): Update.
	(lang_identify): Remove.

Fri Nov  9 00:25:18 EST 2001  John Wehle  (john@feith.com)

	* fold-const.c (lshift_double): Honor PREC.
	(rshift_double): Likewise.

2001-11-08  Kazu Hirata  <kazu@hxi.com>

	* config/1750a/1750a.c: Fix comment formatting.
	* config/1750a/1750a.h: Likewise.

2001-11-08  Phil Edwards  <pedwards@disaster.jaj.com>

	* configure.in (--enable-languages): Be more permissive about
	syntax.  Check for empty lists better.  Warn about $LANGUAGES.
	* configure: Regenerated.

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

	* dwarf2asm.c (dw2_force_const_mem): Fix typo.

2001-11-08  Geoffrey Keating  <geoffk@redhat.com>

	* config.gcc: Rename stormy16 to xstormy16.
	* config/stormy16/stormy-abi: Likewise.
	* config/stormy16/stormy16-protos.h: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/stormy16/stormy16.md: Likewise.

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

	* tree.h (TYPE_VOLATILE): Add enable-checking code.
	(TYPE_READONLY): Likewise.

Thu Nov  8 18:00:55 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload1.c (reload): Don't delete equiv insn if can throw.

	* expr.c (emit_block_move): If X is readonly emit CLOBBER for it.
	(clear_storage): Likewise, for OBJECT.

Thu Nov  8 16:23:51 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.c (emit_move_sequence): Fix SUBREG expression to
	use proper byte offset when extending a constant from
	SImode to DImode.

2001-11-09  Jakub Jelinek  <jakub@redhat.com>

	* cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns
	which cannot throw.

Thu Nov  8 18:00:55 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (convert_memory_address, case SUBREG): Only return
	inner object if SUBREG_PROMOTED_VAR_P or known to be pointer.

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

	* Makefile.in (GCC_FOR_TARGET): Add build_tooldir/sys-include.
	(CROSS_SYSTEM_HEADER_DIR): Use build_tooldir not tooldir.
	(ORDINARY_FLAGS_TO_PASS, stmp-fixinc): Likewise.

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

	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add -maltivec.

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

	* dwarf2out.c (debug_str_hash): New.
	(struct indirect_string_node): New.
	(struct dw_val_struct): Change type of val_str to it.
	(DEBUG_STR_SECTION_FLAGS): Define.
	(add_AT_string): Push string into hashtable, increment reference
	counter.
	(AT_string): Return string from ht_identifier.
	(AT_string_form): New.
	(free_AT): For dw_val_class_str, just decrement reference counter.
	(size_of_string): Remove.
	(size_of_die): Use AT_string_form to decide what size the string
	occupies in DIE.
	(size_of_pubnames): Use strlen instead of size_of_string.
	(value_format): Use AT_string_form for dw_val_class_str.
	(output_die): Output DW_FORM_strp strings using
	dw2_asm_output_offset.
	(indirect_string_alloc, output_indirect_string): New.
	(dwarf2out_finish): Emit .debug_str strings if there are any.

2001-11-08  Andreas Franck  <afranck@gmx.de>

	* configure.in: Add AC_ARG_PROGRAM to support program name
	transformation with --program-prefix, --program-suffix and
	--program-transform-name.
	* configure: Regenerated.
	* Makefile.in (GCC_INSTALL_NAME, CPP_INSTALL_NAME,
	PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, GCOV_INSTALL_NAME,
	GCCBUG_INSTALL_NAME, GCC_CROSS_NAME, CPP_CROSS_NAME,
	PROTOIZE_CROSS_NAME, UNPROTOIZE_CROSS_NAME): Handle
	program_transform_name the way suggested by autoconf.
	(GCC_TARGET_INSTALL_NAME): Define.
	(install-driver): Use the transformed target alias name.

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

	* config/mips/mips.c (save_restore_insns): Remove GP from the
	restore registers mask early instead of special casing it inside
	the loop.

2001-11-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cp/decl.c (shadow_warning): New function.
	(pushdecl): Improve -Wshadow warnings.  Don't give both a warning
	and an error when a block scope decl shadows a parameter.

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

	* config/fp-bit.h (usi_to_float): Define for US_SOFTWARE_GOFAST
	case as well.

2001-11-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (negdf2, negsf2): Use multiplication rather than subtraction
	to implement floating negation on processors prior to PA 2.0.

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

	* dwarf2asm.c (mark_indirect_pool_entry, mark_indirect_pool): New.
	(USE_LINKONCE_INDIRECT): Define.
	(dw2_output_indirect_constant_1): Try to output indirect constants
	into linkonce sections if possible.
	(dw2_force_const_mem): Likewise.  Register indirect_pool with GGC.
	(dw2_output_indirect_constants): Likewise.

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

	* config/rs6000/rs6000.h (REG_ALLOC_ORDER): Add vrsave.

2001-11-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (pushdecl): Remove file and line.
	* c-typeck.c (pop_init_level): Remove size.

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

	* doc/invoke.texi: Add -maltivec, -mno-altivec, and -mabi=altivec
	for rs6000.

	* config/rs6000/rs6000.h (MASK_ALTIVEC): New.
	(TARGET_ALTIVEC): New.
	(TARGET_SWITCHES): Add altivec.
	(FIRST_PSEUDO_REGISTER): Change to 109.
	(CALL_USED_REGISTERS): Same.
	(FIRST_ALTIVEC_REGNO): New.
	(LAST_ALTIVEC_REGNO): New.
	(ALTIVEC_REGNO_P): New.
	(UNITS_PER_ALTIVEC_WORD): New.
	(ALTIVEC_VECTOR_MODE): New.
	(FIXED_REGISTERS): Add altivec registers.
	(REG_ALLOC_ORDER): Same.
	(HARD_REGNO_NREGS): Adjust for altivec registers.
	(HARD_REGNO_MODE_OK): Same.
	(MODES_TIEABLE_P): Same.
	(REGISTER_MOVE_COST): Same.
	(REGNO_REG_CLASS): Same.
	(reg_class): Add ALTIVEC_REGS.
	(REG_CLASS_NAMES): Same.
	(REG_CLASS_CONTENTS): Same.
	(REG_CLASS_FROM_LETTER): Add 'v' constraint for ALTIVEC_REGS.
	(ALTIVEC_ARG_RETURN): New.
	(FUNCTION_VALUE): Handle VECTOR_TYPE.
	(LIBCALL_VALUE): Handle altivec vector modes.
	(VECTOR_MODE_SUPPORTED_P): New.
	(ALTIVEC_ARG_MIN_REG): New.
	(ALTIVEC_ARG_MAX_REG): New.
	(ALTIVEC_ARG_NUM_REG): New.
	(FUNCTION_VALUE_REGNO_P): Return true for altivec return register.
	(FUNCTION_ARG_REGNO_P): Support passing args in altivec registers.
	(REGISTER_NAMES): Add altivec regs.
	(DEBUG_REGISTER_NAMES): Same.
	(ADDITIONAL_REGISTER_NAMES): Same.
	(rs6000_builtins): New.
	(MD_EXPAND_BUILTIN): New.
	(MD_INIT_BUILTINS): New.
	(LEGITIMATE_OFFSET_ADDRESS_P): This addressing mode is not valid
	for AltiVec instructions.
	(LEGITIMATE_LO_SUM_ADDRESS_P): Same.
	(HARD_REGNO_MODE_OK): Altivec modes can only go in altivec
	registers.
	(SECONDARY_MEMORY_NEEDED): We need memory to copy vector modes.
	(TARGET_SWITCHES): Add no-altivec.
	(DATA_ALIGNMENT): Align vectors to 128 bits.
	(TARGET_OPTIONS): Add abi= option.
	Add rs6000_abi_string extern.
	(LOCAL_ALIGNMENT): New.
	(CPP_CPU_SPEC): Define __ALTIVEC__ when -maltivec.
	(MASK_ALTIVEC_ABI): New.
	(TARGET_ALTIVEC_ABI): New.
	(CONDITIONAL_REGISTER_USAGE): Set first 20 AltiVec registers to
	call-saved.
	(STACK_BOUNDARY): Adjust for altivec.
	(BIGGEST_ALIGNMENT): Same.
	(rs6000_args): Add vregno.
	(USE_ALTIVEC_FOR_ARG_P): New.
	(FIXED_REGISTERS): Add vrsave register.
	(CALL_USED_REGISTERS): Same.
	(CONDITIONAL_REGISTER_USAGE): Set VRSAVE info.
	(VRSAVE_REGNO): New.
	(reg_class): Add VRSAVE_REGS.
	(REG_CLASS_NAMES): Same.
	(REG_CLASS_CONTENTS): Same.
	(REGNO_REG_CLASS): Same.

	* config/rs6000/sysv4.h (STACK_BOUNDARY): Adjust for altivec.
	(ABI_STACK_BOUNDARY): Same.
	(BIGGEST_ALIGNMENT): Same.
	(ADJUST_FIELD_ALIGN): Remove undef.  Define anew.
	(ROUND_TYPE_ALIGN): Same.

	* config/rs6000/aix.h (ROUND_TYPE_ALIGN): Change BIGGEST_ALIGNMENT
	to 64.

	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Change BIGGEST_ALIGNMENT
	to 64.

	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Change BIGGEST_ALIGNMENT
	to 64.

	* config/rs6000/rs6000.c (rs6000_expand_builtin): New.
	(altivec_expand_builtin): New.
	(altivec_init_builtins): New.
	(TARGET_EXPAND_BUILTIN): New.
	(TARGET_INIT_BUILTINS): New.
	(rs6000_init_builtins): New.
	(struct builtin_description): New.
	(bdesc_2arg): New.
	(rs6000_reg_names): Add altivec registers.
	(alt_reg_names): Same.
	(secondary_reload_class): Altivec regs can hold altivec regs and
	memory.
	(rs6000_emit_move): Force constants into memory for AltiVec moves.
	(print_operand): Add 'y' case for printing altivec memory
	operands.
	(rs6000_legitimize_address): Legitimize vector addresses into
	[REG+REG] or [REG].
	(altivec_expand_binop_builtin): New.
	New string rs6000_current_abi.
	(rs6000_override_options): Call rs6000_parse_abi_options.
	(rs6000_parse_abi_options): New.
	(function_arg_boundary): Vector arguments must be 16
	byte aligned.
	(function_arg_advance): Handle vector arguments.
	(function_arg_partial_nregs): Same.
	(init_cumulative_args): Same.
	(function_arg): Same.

	* config/rs6000/rs6000.md (altivec_lvx): New.
	(type): Add altivec attribute.
	(movv4si): New.
	(*movv4si_internal): New.
	(movv16qi): New.
	(*movv16qi_internal): New.
	(movv8hi): New.
	(*movv8hi_internal1): New.
	(movv4sf): New.
	(*movv4sf_internal1): New.
	(altivec_stvx): New.
	(vaddubm): New.
	(vadduhm): New.
	(vadduwm): New.
	(vaddfp): New.
	(vaddcuw): New.
	(vaddubs): New.
	(vaddsbs): New.
	(vadduhs): New.
	(vaddshs): New.
	(vadduws): New.
	(vaddsws): New.
	(vand): New.
	(vandc): New.
	(vavgub): New.
	(vavgsb): New.
	(vavguh): New.
	(vavgsh): New.
	(vavguw): New.
	(vavgsw): New.
	(vcmpbfp): New.
	(vcmpequb): New.
	(vcmpequh): New.
	(vcmpequw): New.
	(vcmpeqfp): New.
	(vcmpgefp): New.
	(vcmpgtub): New.
	(vcmpgtsb): New.
	(vcmpgtuh): New.
	(vcmpgtsh): New.
	(vcmpgtuw): New.
	(vcmpgtsw): New.
	(vcmpgtfp): New.
	(vcmpgefp): New.
	(vcmpgtub): New.
	(vcmpgtsb): New.
	(vcmpgtuh): New.
	(vcmpgtsh): New.
	(vcmpgtuw): New.
	(vcmpgtsw): New.
	(vcmpgtfp): New.
	(vmaxub): New.
	(vmaxsb): New.
	(vmaxuh): New.
	(vmaxsh): New.
	(vmaxuw): New.
	(vmaxsw): New.
	(vmaxfp): New.
	(vmrghb): New.
	(vmrghh): New.
	(vmrghw): New.
	(vmrglb): New.
	(vmrglh): New.
	(vmrglw): New.
	(vminub): New.
	(vminsb): New.
	(vminuh): New.
	(vminsh): New.
	(vminuw): New.
	(vminsw): New.
	(vminfp): New.
	(vmuleub): New.
	(vmulesb): New.
	(vmuleuh): New.
	(vmulesh): New.
	(vmuloub): New.
	(vmulosb): New.
	(vmulouh): New.
	(vmulosh): New.
	(vnor): New.
	(vor): New.
	(vpkuhum): New.
	(vpkuwum): New.
	(vpkpx): New.
	(vpkuhss): New.
	(vpkshss): New.
	(vpkuwss): New.
	(vpkswss): New.
	(vpkuhus): New.
	(vpkshus): New.
	(vpkuwus): New.
	(vpkswus): New.
	(vrlb): New.
	(vrlh): New.
	(vrlw): New.
	(vslb): New.
	(vslh): New.
	(vslw): New.
	(vsl): New.
	(vslo): New.
	(vsrb): New.
	(vrsh): New.
	(vrsw): New.
	(vsrab): New.
	(vsrah): New.
	(vsraw): New.
	(vsr): New.
	(vsro): New.
	(vsububm): New.
	(vsubuhm): New.
	(vsubuwm): New.
	(vsubfp): New.
	(vsubcuw): New.
	(vsububs): New.
	(vsubsbs): New.
	(vsubuhs): New.
	(vsubshs): New.
	(vsubuws): New.
	(vsubsws): New.
	(vsum4ubs): New.
	(vsum4sbs): New.
	(vsum4shs): New.
	(vsum2sws): New.
	(vsumsws): New.
	(vxor): New.

2001-11-07  Daniel Berlin  <dan@cgsoftware.com>

	* Makefile.in (df.o): Add fibheap.h to dependencies.

	* df.h: Add prototypes for transfer functions, iterative_dataflow
	functions.
	(enum df_flow_dir): New enum.
	(enum df_confluence_op): New enum.
	(struct df): Add inverse_rts_map.

	* df.c: Add sbitmap.h to the list of includes.
	(df_rd_global_compute): Removed.
	(df_ru_global_compute): Removed.
	(df_lr_global_compute): Removed.
	(df_rd_transfer_function): New function.
	(df_ru_transfer_function): New function.
	(df_lr_transfer_function): New function.
	(df_analyse_1): allocate/compute/free df->inverse_rts_map.
	Use iterative_dataflow_bitmap instead of df_*_global_compute.
	(iterative_dataflow_sbitmap): New function.
	(iterative_dataflow_bitmap): New function.

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

	* doc/gcc.texi: Move terminology and spelling conventions to
	htdocs/codingconventions.html.

2001-11-07  Graham Stott  <grahams@redhat.com>

	* cse.c (cse_insn): Emit BARRIER after unconditional jump.

Wed Nov  7 13:33:34 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expmed.c (expand_mult): Force operand to register before computing
	cost.
	* i386.c (x86_decompose_lea): New global vairable.
	* i386.h (x86_decompose_lea): Declare.
	(TARGET_DECOMPOSE_LEA): New macro.
	(RTX_COST): Handle leas properly.

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

	* config/alpha/elf.h (DO_SELECT_SECTION): TREE_READONLY is not
	defined for a CONSTRUCTOR; don't check it.

2001-11-06  Danny Smith  <dannysmith@users.sourceforge.net>

	* gcov.c (output_data): Use IS_ABSOLUTE_PATHNAME to
	test for absolute pathnames.

2001-11-06  Olivier Hainque <hainque@act-europe.fr>

	* unwind-dw2.c (execute_cfa_program): Evaluate call frame
	instructions up to the target pc inclusive.

2001-11-06  Steve Christiansen  <smc@us.ibm.com>

	* loop.c (loop_regs_scan):  Don't invalidate PIC register.

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

	* config/mips/mips.md(movdf_internal2): Add constraints for float
	to general register move.
	* config/mips/elf64.h: Add default ABI.

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

	* alias.c:: Include langhooks.h.
	* emit-rtl.c: Similarly.
	* toplev.c: Similarly.
	* tree-inline.c: Similarly.
	* langhooks-def.h: New, the old langhooks.h.  Give the default
	hooks a common prefix.
	* langhooks.h: Contents extracted from toplev.h.
	* toplev.h: Move langhook stuff to langhooks.h.
	* langhooks.c: Give default hooks a common prefix.

	* c-lang.c: Include langhooks-def.h.
	* objc/objc-act.c: Similarly.
	* Makefile.in: Update.
	* objc/Make-lang.in: Update.

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

	* doc/install.texi: Document that configure options not listed in
	this file are unsupported.  Document --with-system-zlib.

Tue Nov  6 09:21:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.h (mem_for_const_double): New declaration.
	* varasm.c (mem_for_const_double): New function.
	* config/convex/convex.md (movdf): Use it.
	* config/m68k/hp320.h (LEGITIMATE_PIC_OPERAND_P): Likewise.
	* config/m68k/linux.h, config/m68k/m68k.h: Likewise.
	* config/m68k/m68kv4.h: Likewise.

	* config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Adjust for addition
	of new GP reg classes.

	* expr.c (store_field): When making temp object for unaligned
	component, set it to alias set 0.

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

	* c-common.c (c_expand_expr_stmt): Apply default conversions to
	non-lvalue arrays if C99.
	* c-typeck.c (default_conversion): Split out code handling
	array-to-pointer and function-to-pointer conversions into a
	separate default_function_array_conversion function.
	(default_function_array_conversion): New function.  Keep track of
	whether any NON_LVALUE_EXPRs were stripped.  Return non-lvalue
	arrays unchanged outside C99 mode instead of giving an error for
	them.
	(build_component_ref): Use pedantic_non_lvalue when handling
	COMPOUND_EXPR.  Don't handle COND_EXPR specially.
	(convert_arguments): Use default_function_array_conversion.
	(build_unary_op): For ADDR_EXPR, take a flag indicating whether
	non-lvalues are OK.
	(unary_complex_lvalue): Likewise.
	(internal_build_compound_expr): Use
	default_function_array_conversion.  Apply default conversions to
	function in compound expression.
	(build_c_cast, build_modify_expr, digest_init, build_asm_stmt):
	Use default_function_array_conversion.
	* doc/extend.texi: Update documentation of subscripting non-lvalue
	arrays.
	Fixes PR c/461.

2001-11-05  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4: (AM_WITH_NLS): Don't look at ALL_LINGUAS.
	(AM_GNU_GETTEXT): Set CATALOGS to a list of .gmo files
	corresponding to the complete set of .po and .gmo files in
	the source directory's po subdir, modified by LINGUAS.  Don't
	look at ALL_LINGUAS.
	* configure.in: Don't set ALL_LINGUAS.
	* configure: Regenerate.

	* Makefile.in (.po.gmo): Don't move into source directory.
	(.po.pox): Clarify comments.
	(install-po): Look for .gmo files in both srcdir and objdir;
	don't fail if a file is totally missing.
	(distclean): rmdir ada subdirectory too.

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

	* config/rs6000/rs6000.c (rs6000_select_section): Handle
	CONSTRUCTORs _correctly_.

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

	* c-decl.c (delete_block): Remove.
	* c-tree.h (delete_block): Remove.

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

	* cppexp.c (lex, parse_defined): Update warning about defined.

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

	* config/rs6000/rs6000.c (rs6000_select_section): Handle
	CONSTRUCTORs too.

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

	* config/arm/arm.c (arm_return_in_memory): Cope with
	int_size_in_bytes returning -1.

	* config/arm/unknown-elf.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Handle
	DECL being NULL.

Mon Nov  5 16:15:25 CET 2001  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (bb-reorder.o): Add dependency on cfglayout.h;
	remove unneeded dependencies;
	(cfglayout.o): New.
	* cfglayout.c, cfglayout.h: New files; break out from ...
	* bb-reorder.c: ... here; Remove unneeded includes;

2001-11-04  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md (load_toc_aix_{si,di}): Mark r2 as used.

2001-11-04  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_emit_move): Handle 64-bit
	mode as well.  Do not explicitly create intermediate regs.

2001-11-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arm/aof.h (aof_text_section, aof_data_section): Don't declare.
	(common_section): Delete unused variable.
	(ASM_OUTPUT_ASCII): Fix signed/unsigned warnings.
	(ASM_GENERATE_INTERNAL_LABEL): Fix format specifier warning.
	* arm-protos.h (arm_poke_function_name, aof_add_import,
	aof_delete_import): Const-ify.
	* arm.c (legitimize_pic_address): Wrap variables in the macro
	controlling their usage.
	(arm_finalize_pic): Mark variable with ATTRIBUTE_UNUSED.
	(arm_poke_function_name, pic_chain, import, aof_add_import,
	aof_delete_import): Const-ify.
	* i386.c (ix86_osf_output_function_prologue): Const-ify.
	* i386/sysv4.h (ASM_OUTPUT_FLOAT, ASM_OUTPUT_DOUBLE,
	ASM_OUTPUT_LONG_DOUBLE): Fix format specifier warnings.
	* i860/fx2800.h (DBX_OUTPUT_STANDARD_TYPES): Const-ify.
	* i860/sysv3.h: Add missing comment closure.
	* m68k/apollo68.h (ASM_RETURN_CASE_JUMP): Add missing semi-colon.
	* m88k/dgux.h (SELECT_RTX_SECTION): Add missing argument in call
	to symbolic_operand.

	* config.gcc (m680[02]0-*-*): Rename case from m68000-*-*.
	(i960-*-*): Set tmake_file.
	(sparc86x-*-elf*): Fix typo in header name.

	* sched-rgn.c (schedule_insns): Delete unused variable.

2001-11-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	PR c/2820
	* c-typeck.c (lookup_field): Rework to return a chain down to
	the looked-up field.
	(build_component_ref): Use the new lookup_field to handle
	nested anonymous entities correctly.

Sun Nov  4 11:53:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.c (sparc_emit_set_const32, GEN_HIGHINT64):
	Change parameters to gen_rtx_CONST_DOUBLE.
	(GEN_INT64, sparc_emit_set_const64): Likewise.
	* config/sparc/sparc.md (movdf split): Likewise.

2001-11-03  Geoffrey Keating  <geoffk@redhat.com>

	* unroll.c (calculate_giv_inc): Use find_last_value rather
	than just hoping the last instruction is the right SET.
	[Fixes 990604-1.c on stormy16.]

	* config/stormy16/stormy16.h (LIB_SPEC): Don't supply any libgloss
	library at all if -T is used.

	* config/stormy16/stormy16.c (stormy16_print_operand): Avoid
	some uses of uninitialized variables in error cases.

	* config/stormy16/stormy16.c (stormy16_output_shift): Don't
	look at 'temp' if we won't be using it.

	* config/stormy16/stormy16.h (CONST_COSTS): Define.
	(RTX_COSTS): Define.
	(ADDRESS_COST): Define.
	(MEMORY_MOVE_COST): Allow for memory_move_secondary_cost.

	* config/stormy16/stormy16.h (ASM_SPEC): Pass -g to the assembler.

	* config/stormy16/stormy16.h (ASM_OUTPUT_MI_THUNK): Call
	stormy16_asm_output_mi_thunk.
	* config/stormy16/stormy16.c (stormy16_asm_output_mi_thunk): New
	function.
	* config/stormy16/stormy16-protos.h
	(stormy16_asm_output_mi_thunk): New prototype.

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

	* ChangeLog.2, ChangeLog.4, ChangeLog.5, ChangeLog,
	FSFChangeLog.10, FSFChangeLog.11, alias.c, attribs.c,
	caller-save.c, calls.c, cfg.c, cfganal.c, cfgcleanup.c, cfgrtl.c,
	cppmacro.c, fold-const.c, ifcvt.c, local-alloc.c, profile.c,
	sched-int.h, toplev.c, config/alpha/alpha.c,
	config/alpha/alpha.md, config/c4x/c4x.h, config/cris/cris.h,
	config/cris/cris.md, config/i370/i370.md, config/i386/i386.c,
	config/i386/i386.h, config/i386/i386.md, config/i386/xm-djgpp.h,
	config/ia64/ia64.c, config/m68hc11/m68hc11.c, config/m68k/m68k.md,
	config/mcore/mcore.h, config/mmix/mmix.c, config/ns32k/ns32k.h,
	config/ns32k/ns32k.md, config/rs6000/rs6000.c,
	config/rs6000/sysv4.h, config/sh/sh.md: Fix spelling errors.

2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (dbxout.o): Depend on function.h.
	* collect2.c (is_in_list): Hide unused function.
	* dbxout.c: Include function.h.
	(source_label_number, dbxout_source_line, dbxout_source_file,
	dbxout_function_end, dbxout_begin_function): Wrap/move inside
	macros controlling usage.
	* gcc.c (TARGET_EXECUTABLE_SUFFIX): Undef before defining.
	* output.h (exports_section): Prototype.

	* convex.c (convex_output_function_prologue): Fix format specifier
	warning.
	(asm_declare_function_name): Fix signed/unsigned warning.
	(print_operand): Fix format specifier warning.
	* convex.h (S_REGNO_P, A_REGNO_P): Fix signed/unsigned warning.
	* dsp16xx-protos.h (uns_comparison_operator,
	num_1600_core_shifts): Prototype.
	* dsp16xx.c: Include tm_p.h, not dsp16xx-protos.h.
	(frame_size, frame_pointer_offset): Delete.
	(dsp16xx_output_function_prologue, dsp16xx_output_function_epilogue):
	Make static.  Fix format specifier warnings.
	* dsp16xx.h (IS_ACCUM_REG): Fix unsigned>=0 warning.
	(EXTRA_SECTION_FUNCTIONS): Prototype const_section.
	* dsp16xx.md: Add default case in switches.
	* fr30.h (IN_RANGE): Delete.
	* ia64.h (ASM_OUTPUT_MI_THUNK): Fix format specifier warnings.
	* mcore-protos.h (mcore_output_cmov): Const-ify.
	* mcore.c (mcore_output_cmov): Likewise.
	* mcore.h (switch_to_section): Make static and prototype.
	* mn10200.h (REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_P): Fix
	unsigned>=0 warnings.
	* mn10300.h (REGNO_IN_RANGE_P): Likewise.
	* rs6000-protos.h (read_only_data_section,
	read_only_private_data_section): Prototype.
	* rs6000.h (ASM_OUTPUT_BYTE): Fix format specifier warning.
	* sh.c (sh_adjust_cost): Mark parameter with ATTRIBUTE_UNUSED.
	* sh.h (GENERAL_REGISTER_P): Fix unsigned>=0 warning.

2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2asm.c (dw2_asm_output_pcrel): Mark parameters with
	ATTRIBUTE_UNUSED.
	* final.c (final_scan_insn): Add brackets around body of if-stmt.
	* gcc.c (convert_filename): Add static prototype.  Const-ify.
	Wrap variable in macros controlling its use.
	* output.h (sdata_section): Add prototype.

	* 1750a.h (EXTRA_SECTION_FUNCTIONS): Add prototype.
	(ASM_OUTPUT_ASCII): Avoid signed/unsigned warning.
	* c4x.h (INIT_SECTION_FUNCTION): Add prototype.
	(ASM_FILE_START): Const-ify.
	(ASM_OUTPUT_BYTE_FLOAT, ASM_OUTPUT_SHORT_FLOAT): Fix format
	specifier warning.
	* c4x.md: Don't use the 'U' integer suffix.
	* clipper.md (clipper_movstr): Delete declaration.
	* d30v-protos.h (d30v_move_2words): Const-ify.
	(debug_stack_info): Add prototype.
	* d30v.c: Include "integrate.h".
	(d30v_function_arg_boundary, d30v_function_arg,
	d30v_function_arg_partial_nregs, d30v_function_arg_advance): Avoid
	signed/unsigned warnings.
	(d30v_print_operand_memory_reference, d30v_move_2words):
	Const-ify.
	* d30v.h (REG_CLASS_FROM_LETTER): Use unsigned array subscript.
	* fr30.c (fr30_pass_by_reference, fr30_pass_by_value): Prototype.
	* fr30.md: Const-ify.
	* h8300.h (EXTRA_SECTION_FUNCTIONS): Add prototype.
	* i370.c (i370_label_scan, mvs_get_label): Make definition static.
	(mvs_get_label_page): Hide unused static function.
	* i860.c (current_function_original_name): Const-ify.
	* i860/sysv3.h (current_function_original_name): Likewise.
	* i860/sysv4.h (current_function_original_name): Likewise.
	* i960.md: Add default case in switches.  Remove unused variable.
	* i960/vx960-coff.h (MULTILIB_DEFAULTS): Undef before defining.
	* m32r.md: Const-ify.
	* m68hc11-protos.h (m68hc11_asm_file_start): Const-ify.
	* m68hc11.c: Include "reload.h".
	(static_chain_reg, print_options, m68hc11_asm_file_start):
	Const-ify.
	* m68hc11.md: Delete unused variable.  Const-ify.  Add parens
	around & in comparison.
	* mcore.h (TARGET_ASM_NAMED_SECTION): Undef before defining.
	* mn10200.c (shift_mode): Remove trailing comma.
	* mn10300-protos.h (output_tst): Const-ify.
	* mn10300.c (output_tst): Likewise.
	* pa/long_double.h (ASM_OUTPUT_LONG_DOUBLE): Fix format specifier
	warnings.
	* pa-protos.h (output_ascii): Use regular char *, not unsigned.
	* pa.c (output_ascii): Likewise.
	* pa/som.h (EXTRA_SECTION_FUNCTIONS): Add prototype.
	* pdp11.md (expand_unop): Delete declarations.
	* pj-protos.h (pj_output_addsi3): Const-ify.
	* pj.c (pj_output_push_int, pj_output_load, pj_output_inc,
	pj_output_cnv_op, mode_to_char, pj_output_varidx, pj_print_cond,
	unique_src_operand): Add prototypes.
	(pj_output_store_into_lval): Make definition static.
	(pj_function_incoming_arg): Don't use unary plus.
	(pj_output_addsi3): Const-ify.
	* romp.md (get_symref): Delete declarations.
	* v850-c.c (mark_current_function_as_interrupt): Don't return
	value from void function.
	* v850.c: Include "integrate.h".
	* v850.h (ASM_OUTPUT_LABELREF): Const-ify.
	* vax-protos.h (const_section): Add prototype.

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

	* machmode.def: Add documentation for the seventh argument in
	vector modes.

2001-11-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/invoke.texi (MMIX Options) <-mno-knuthdiv>: Say remainder
	consistently.
	<-mno-toplevel-symbols>: Change @code{:} to @samp{:}.
	<-melf>: Don't have markup for ELF acronym.

2001-11-03  Hans-Peter Nilsson  <hp@bitrange.com>

	* config.gcc (mmix-*-*): New target.
	* doc/invoke.texi: Document MMIX options.
	* doc/contrib.texi: Add note about MMIX port to my entry.
	* config/mmix/t-mmix: New file.
	* config/mmix/mmix.h: New file.
	* config/mmix/mmix-protos.h: New file.
	* config/mmix/mmix.c: New file.
	* config/mmix/mmix.md: New file.
	* config/mmix/crti.asm: New file.
	* config/mmix/crtn.asm: New file.

2001-11-03  Kazu Hirata  <kazu@hxi.com>

	* config/sparc/linux-aout.h: Fix comment formatting.
	* config/sparc/linux.h: Likewise.
	* config/sparc/linux64.h: Likewise.
	* config/sparc/lynx.h: Likewise.
	* config/sparc/pbd.h: Likewise.
	* config/sparc/sol2-sld-64.h: Likewise.
	* config/sparc/sol2.h: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.md: Likewise.
	* config/sparc/sunos4.h: Likewise.
	* config/sparc/vxsim.h: Likewise.
	* config/sparc/vxsparc.h: Likewise.
	* config/sparc/vxsparc64.h: Likewise.

Sat Nov  3 10:37:56 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cselib.c (cselib_subst_to_values, case CONST_DOUBLE): Remove
	reference to CONST_DOUBLE_MEM in comment.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Remove one operand.
	(gen_rtx, case CONST_DOUBLE): Call it with one less operand.
	(init_emit_once): Don't clear CONST_DOUBLE_MEM.
	* function.c (pop_function_context_from): Don't call
	restore_varasm_status.
	* function.h (restore_varasm_status): Delete declaration.
	* gengenrtl.c (CONST_DOUBLE_FORMAT): Delete CONST_DOUBLE_MEM slot.
	* rtl.c: Likewise.
	* rtl.def (CONST_DOUBLE): Update comment.
	* rtl.h (CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW): Update operand number.
	(CONST_DOUBLE_CHAIN): Likewise.
	(CONST_DOUBLE_MEM): Delete.
	(gen_rtx_CONST_DOUBLE): Update parameters.
	* varasm.c (struct varasm_status): x_pool_offset now HOST_WIDE_INT.
	Remove reference to CONST_DOUBLE_MEM.
	(const_alias_set): New variable.
	(immed_double_const): Change call to gen_rtx_CONST_DOUBLE.
	(immed_real_const_1): Adjust tests for 0, 1, and 2.
	Don't set CONST_DOUBLE_MEM.
	(clear_const_double_mem): Don't do anything with const_tiny_rtx.
	(output_constant_def): Don't look at TREE_CST_RTL if INTEGER_CST.
	Put constant in const_alias_set.
	(struct pool_constant): ALIGN now unsigned.
	OFFSET now HOST_WIDE_INT.
	Delete LABEL.
	(restore_varasm_status): Deleted.
	(mark_pool_constant): Mark desc->rtl.
	(force_const_mem): Rework to store rtl in hash table,
	not CONST_DOUBLE_MEM.
	Put constant in const_alias_set.
	(find_pool_constant): Check desc->rtl.
	(mark_constants, mark_constant): Don't special-case CONST_DOUBLE.
	(init_varasm_once): Initialize const_alias_set.

	* expr.c (expand_expr, case ADDDR_EXPR): If at top level, don't call
	force_const_mem.

	* reload.c (combine_reloads): Don't combine an output reload if there
	are other reloads around for part of the output.

	* emit-rtl.c (set_mem_attributes): Set RTX_UNCHANGINGP_P if T is a
	constant expression.
	(set_mem_decl): New function.
	* expr.h (set_mem_decl): New declaration.
	* final.c (get_decl_from_op): Don't use ORIGINAL_REGNO if not pseudo.
	(output_asm_operand_names): Add tab.
	* reload1.c (alter_reg): Set decl of MEM from REG_DECL.

	* builtins.c (get_memory_rtx): Properly set MEM alias set and
	attributes.

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

	* doc/extend.texi, doc/gcc.texi, doc/install.texi, doc/tm.texi:
	Use "invalid" instead of "illegal".  Use @r in comments in
	examples.

2001-11-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (pushdecl): Move block inside if conditional to remove
	possibility of a segfault.  Lookup block-level extern
	variables in enclosing scopes correctly.

	* testsuite/gcc.c-torture/compile/20001018-1.x: Remove XFAIL.

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

	* expmed.c (store_bit_field): Use simplify_gen_subreg to make
	SUBREG so we avoid SUBREGing memory.

	* expmed.c (store_bit_field): Same.

2001-11-02  DJ Delorie  <dj@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Make sure that
	using FP registers for DImode mem-mem moves is acceptable.

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

	* builtins.c (apply_args_size): Handle vector arguments.
	(apply_result_size): Same.

	* machmode.def: Set WIDER mode field for all vector entries.

2001-11-02  Graham Stott  <grahams@redhat.com>

	* recog.c (decode_asm_operands):  Check that the SRC is ASM_OPERANDS.

2001-11-01  Eric Christopher  <echristo@redhat.com>

	* config.gcc: Revert part of earlier patch.
	* config/mips/linux.h: Ditto.
	* df.c: Include tm_p.h to avoid warnings.
	* config/mips/mips.h (ABI_GAS_ASM_SPEC): Add defaults.  Adjust
	#if/#endif.
	* config/mips/mips.c: Define mips_abi regardless.
	(mips_output_function_prologues): Add long casts for .frame
	output.
	(override_options): Allow use of ABI_32.

2001-11-01  Kazu Hirata  <kazu@hxi.com>

	* config/m68hc11/m68hc11.c: Fix comment formatting.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/m68hc11/m68hc11.md: Likewise.

2001-11-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-typeck.c (default_conversion): Retain the original expression
	codes.
	* gcc.dg/Wparentheses.c: New tests.

2001-11-01  David S. Miller  <davem@redhat.com>

	* doc/install.texi (Specific, sparc-sun-solaris2*): Bring
	64-bit SPARC description more in line with reality.

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

	* Makefile.in (GCOV_OBJS): Add version.o.
	* gcov.c: Include "version.h" and <getopt.h>.
	(gcov_version_string): Remove.
	(print_usage): Take a parameter to determine whether this is a
	call from --help or an error message.  Give fuller output that
	follows the GNU Coding Standards for --help.
	(print_version): New function.
	(options): New.
	(process_args): Use getopt_long.  Support long options.  Follow
	GNU Coding Standards for --help and --version.
	* doc/gcov.texi: Document long options.
	Addresses part of PR other/704.

2001-11-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (output_move_double): Fix typo in double load.

2001-11-01  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_encode_label): Compute a string
	before passing it to ggc_alloc_string.

2001-11-01  Kazu Hirata  <kazu@hxi.com>

	* config/m68k/3b1.h: Fix comment formatting.
	* config/m68k/3b1g.h: Likewise.
	* config/m68k/a-ux.h: Likewise.
	* config/m68k/amix.h: Likewise.
	* config/m68k/apollo68.h: Likewise.
	* config/m68k/atari.h: Likewise.
	* config/m68k/aux-exit.c: Likewise.
	* config/m68k/ccur-GAS.h: Likewise.
	* config/m68k/crds.h: Likewise.
	* config/m68k/dpx2.h: Likewise.
	* config/m68k/dpx2g.h: Likewise.
	* config/m68k/hp310.h: Likewise.
	* config/m68k/hp320.h: Likewise.
	* config/m68k/isi.h: Likewise.
	* config/m68k/linux.h: Likewise.
	* config/m68k/lynx.h: Likewise.
	* config/m68k/m68k-psos.h: Likewise.
	* config/m68k/m68k.c: Likewise.
	* config/m68k/m68k.h: Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/m68k/m68kelf.h: Likewise.
	* config/m68k/m68kv4.h: Likewise.
	* config/m68k/mot3300.h: Likewise.
	* config/m68k/news.h: Likewise.
	* config/m68k/next.h: Likewise.
	* config/m68k/pbb.h: Likewise.
	* config/m68k/plexus.h: Likewise.
	* config/m68k/sgs.h: Likewise.
	* config/m68k/sun3.h: Likewise.
	* config/m68k/tower.h: Likewise.
	* config/m68k/vxm68k.h: Likewise.

2001-10-31  DJ Delorie  <dj@redhat.com>

	* config/mips/mips.h (mips_cache_flush_func): Prototype.
	(TARGET_OPTIONS): Support -mflush-func= and -mno-flush-func.
	(INITIALIZE_TRAMPOLINE): Use mips_cache_flush_func if nonzero.
	* config/mips/mips.c (mips_cache_flush_func): New.
	* doc/invoke.texi: Document the new options.

2001-10-31  Hans-Peter Nilsson  <hp@axis.com>

	* config.gcc (cris-*-linux*, tm_file): Rearrange order.
	* config/cris/linux.h (LIB_SPEC, STARTFILE_SPEC): Don't redefine.

	* config/cris/cris.h (EH_RETURN_DATA_REGNO): Fix formatting.

	* config/cris/cris.c: Include output.h after tree.h but before
	target.h.

2001-10-31  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (INTL_TARGETS, POSUB): Delete all references.
	(INTL_SUBDIRS): Just intl.
	(.SUFFIXES): Add .gmo .po .pox.
	(native): Also depend on build-@POSUB@.
	(intl.all, intl.install): Depend on config.h and things it includes.
	(po-generated): New target; depend on c-parse.c and tradcif.c.
	(install-normal): Also depend on install-@POSUB@.
	(XGETTEXT, GMSGFMT, MSGMERGE, PACKAGE, CATALOGS): New variables.
	(build-, install-, build-po, update-po, install-po,
	.po.gmo, .po.pox, $(PACKAGE).pot, po/$(PACKAGE).pot): New rules.

	* aclocal.m4: Prefix each entry in CATALOGS with "po/"
	* configure.in: Don't munge XGETTEXT.  Don't generate
	po/Makefile.in.
	* configure: Regenerate.

	* exgettext: Delete.
	* config/m68k/m68k.h: Add doc strings for -msky and -mnosky.
	* objc/Make-lang.in: Replace $(INTL_TARGETS) with po-generated.

2001-10-31  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (two anonymous patterns): New.

2001-10-31  Aldy Hernandez  <aldyh@redhat.com>

	* tree.h (tree_index): Add support for V16QI and V8HI.
	(V8HI_type_node): New.
	(V16QI_type_node): New.

	* tree.c (build_common_tree_nodes_2): Same.

	* c-common.c (type_for_mode): Same.

2001-10-31  Kazu Hirata  <kazu@hxi.com>

	* config/i386/att.h: Fix comment formatting.
	* config/i386/beos-elf.h: Likewise.
	* config/i386/bsd.h: Likewise.
	* config/i386/bsd386.h: Likewise.
	* config/i386/crtdll.h: Likewise.
	* config/i386/cygwin.asm: Likewise.
	* config/i386/cygwin.h: Likewise.
	* config/i386/djgpp.h: Likewise.
	* config/i386/freebsd-aout.h: Likewise.
	* config/i386/freebsd.h: Likewise.
	* config/i386/gas.h: Likewise.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/i386-protos.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/i386.md: Likewise.
	* config/i386/i386elf.h: Likewise.
	* config/i386/interix.c: Likewise.
	* config/i386/isc.h: Likewise.
	* config/i386/isccoff.h: Likewise.
	* config/i386/iscdbx.h: Likewise.
	* config/i386/linux.h: Likewise.
	* config/i386/lynx.h: Likewise.
	* config/i386/mingw32.h: Likewise.
	* config/i386/netbsd-elf.h: Likewise.
	* config/i386/next.h: Likewise.
	* config/i386/osf1elf.h: Likewise.
	* config/i386/osfrose.h: Likewise.
	* config/i386/sco5.h: Likewise.
	* config/i386/seq-gas.h: Likewise.
	* config/i386/seq-sysv3.h: Likewise.
	* config/i386/sequent.h: Likewise.
	* config/i386/sol2.h: Likewise.
	* config/i386/sun386.h: Likewise.
	* config/i386/uwin.asm: Likewise.
	* config/i386/uwin.h: Likewise.
	* config/i386/vxi386.h: Likewise.
	* config/i386/win32.h: Likewise.
	* config/i386/winnt.c: Likewise.
	* config/i386/xm-cygwin.h: Likewise.
	* config/i386/xm-mingw32.h: Likewise.

2001-10-31  Kazu Hirata  <kazu@hxi.com>

	* builtins.def: Fix comment typos.
	* config/alpha.c: Likewise.
	* config/arm/arm.c: Likewise.
	* config/avr/avr.h: Likewise.
	* config/d30v/d30v.c: Likewise.
	* config/d30v/d30v.h: Likewise.
	* config/d30v/d30v.md: Likewise.
	* config/dsp16xx/dsp16xx.c: Likewise.
	* config/fr30/fr30.c: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i860/i860.c: Likewise.
	* config/i960/i960.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/mips/mips.c: Likewise.
	* config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/s390/s390.c: Likewise.
	* config/sparc/sparc.c: Likewise.

2001-10-30  Kazu Hirata  <kazu@hxi.com>

	* config/mips/elf.h: Fix comment formatting.
	* config/mips/elf64.h: Likewise.
	* config/mips/iris5.h: Likewise.
	* config/mips/iris5gas.h: Likewise.
	* config/mips/iris6.h: Likewise.
	* config/mips/isa3264.h: Likewise.
	* config/mips/linux.h: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/mips16.S: Likewise.
	* config/mips/netbsd.h: Likewise.
	* config/mips/osfrose.h: Likewise.
	* config/mips/r3900.h: Likewise.
	* config/mips/sni-svr4.h: Likewise.
	* config/mips/svr4-t.h: Likewise.
	* config/mips/ultrix.h: Likewise.

2001-10-30  Daniel Berlin  <dan@cgsoftware.com>

	* bitmap.c (bitmap_element_free): Don't forget to update head->indx
	when we update head->current.

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

	* tree.c (id_string_size): Remove.
	(dump_tree_statistics): Update.
	* toplev.c (compile_file): If dumping stats, dump tree stats too.

Tue Oct 30 19:00:43 CET 2001  Jan Hubicka  <jh@suse.cz>

	* sched-rgn.c (schedule_insns): Fix comment.

2001-10-30  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Correct previous change: don't assume that
	gas's version number _isn't_ the last thing on the line, or
	isn't the only number on the line, either.
	* configure: Regenerate.

2001-10-30  Kazu Hirata  <kazu@hxi.com>

	* cfgcleanup.c: Fix a comment typo.

2001-10-30  Kazu Hirata  <kazu@hxi.com>

	* alias.c: Fix comment formatting.
	* recog.c: Likewise.
	* config/cris/cris.c: Likewise.
	* config/cris/cris.h: Likewise.
	* config/i960/i960.c: Likewise.
	* config/i960/i960.h: Likewise.

2001-10-30  Kazu Hirata  <kazu@hxi.com>

	* config/arm/arm.c: Fix a comment typo.
	* config/arm/arm.h: Likewise.
	* config/ia64/ia64.c: Likewise.

2001-10-30  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or
	REG_EQUIV notes for ASM_OPERANDS.  Return the new note (if any).
	* rtl.h (set_unique_reg_note): Change return value.
	* gcse.c (try_replace_reg): Use set_unique_reg_note.
	* cse.c (cse_insn): Likewise.
	* expr.c (emit_move_insn): Likewise.
	* explow.c (force_reg): Likewise.
	* local-alloc (update_equiv_regs): Likewise.
	* loop.c (move_moveables, load_mems): Likewise.
	* reload (find_reloads): Likewise.

2001-10-30  Paolo Bonzini  <bonzini@gnu.org>

	Localization fixes.
	* c-decl.c (parmlist_tags_warning, start_struct,
	check_for_loop_decls): Separate messages for struct, union and
	enum cases to allow for languages in which they have different
	genders.
	* c-format.c (scanf_flag_specs): Separate short and long name of
	the assignment suppression feature.
	(check_format_types): Localize "pointer" and "different types"
	strings.
	* c-lex.c (lex_number): Localize "an unsigned long int" and
	related strings.
	(lex_string) [MULTIBYTE_CHARS]: Use initial lowercase letter on
	warning message.
	* c-typeck.c (build_unary_up): Separate messages for increment and
	decrement cases to allow for languages in which they use different
	articles.  Localize the strings "increment" and "decrement" in one
	case.

Tue Oct 30 11:08:11 CET 2001  Jan Hubicka  <jh@suse.cz>

	* lcm.c (optimize_mode_switching):  Do not rebuild liveness information
	when no changes has been made.

	* gcse.c (reg_set_bitmap): Turn into reg_set.
	(modify_mem_list_set, canon_modify_mem_list_set)
	(clear_modify_mem_tables, free_modify_mem_tables): New.
	(gcse_main); Use free_modify_mem_tables.
	(free_gcse_mem): Likewise; free the bitmaps.
	(alloc_gcse_main): Initialize the bitmaps.
	(canon_list_insert): Set canon_modify_mem_list_set.
	(record_last_mem_set_info): Likewise; set modify_mem_list_set.
	(compute_hash_table): Use clear_modify_mem_tables.
	(reset_opr_set_tables): Likewise.
	(oprs_not_set_p): reg_set_bitmap is regset.
	(mark_set, mark_clobber): Likewise.

	* df.h (DF_EQUIV_NOTES): New constant.
	(df_insn_refs_record): Record uses inside or REG_EQUIV/EQUAL notes
	when asked for.

	* sched-rgn.c (CHECK_DEAD_NOTES): New constant.
	(init_regions, schedule_insns): Conditionalize the checking
	code by CHECK_DEAD_NOTES; avoid multiple calls to update_life_info.

Tue Oct 30 11:02:31 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movti_rex64 splitter): Fix condition.

2001-10-29  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Do not assume that gas's version number is the
	last thing on the first line of as --version output.
	* configure: Regenerate.

	* tradcpp.c: Include intl.h.  Rename WARNING, ERROR, FATAL to
	MT_WARNING, MT_ERROR, MT_FATAL.
	(main): Call gcc_init_libintl.
	(v_message): Call gettext on msgid and "warning: "
	* tradcif.y: Include intl.h.
	(yyerror): Make parameter definition consistent with
	prototype.  Call gettext on msgid argument.

2001-10-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* combine.c (num_sign_bit_copies): Avoid signed/unsigned
	warnings.

	* sparc/sol2.h: Include <sys/mman.h> when L_trampoline is defined.

Mon Oct 29 19:22:07 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload1.c (eliminate_regs): Test for reg_renumber being allocated
	before referencing it.

2001-10-26  DJ Delorie  <dj@redhat.com>

	* config/rs6000/sysv4.h (LINK_SPEC): Allow -msdata=none to
	override -G, and force -G0.

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

	* ChangeLog.2, ChangeLog.3, ChangeLog.4, FSFChangeLog.10,
	FSFChangeLog.11, c-common.c, c-common.def, c-common.h, c-decl.c,
	c-dump.c, c-typeck.c, except.c, sdbout.c, simplify-rtx.c,
	timevar.h, tree.h, varasm.c: Fix spelling errors and typos.

	* loop.h (struct induction): Rename ext_dependant to
	ext_dependent.
	* loop.c: Change all uses.
	(check_ext_dependant_givs): Rename to check_ext_dependent_givs.
	All callers changed.
	* timevar.c (DEFTIMEVAR): Fix spelling of identifier__ parameter.

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

	* c-parse.in (expr_no_commas, primary), c-typeck.c
	(parser_build_binary_op): Use IS_EXPR_CODE_CLASS.

2001-10-29  David Edelsohn  <edelsohn@gnu.org>

	Undo assemble_name change in earlier patch.

Mon Oct 29 21:11:40 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* objc/objc-act.c (finish_message_expr): For the GNU runtime: when
	determining the type of the receiver, do not check that TREE_CODE
	of receiver is CALL_EXPR before calling receiver_is_class_object().
	(receiver_is_class_object): For the GNU runtime: recognize
	the case that the receiver is self in a class method context.
	Check that TREE_CODE of receiver is CALL_EXPR when checking that
	the receiver is a call to objc_get_class.

2001-10-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (floatunssisf2): Set subreg 0 of operand 2 to zero.

Mon Oct 29 07:23:33 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (OBJS): Put all files in alphabetical order.

	* dwarf2out.c (add_const_value_attribute): Fix error in last
	change.

Mon Oct 29 12:43:06 CET 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (purge_all_dead_edges): Add update_life_p argument.
	* cfgcleanup.c (merge_blocks): Update the life flag after merging;
	fix warning.
	* cfgrtl.c (purge_all_dead_edges): Allow updating of liveness.
	(life_analysis): call purge_all_dead_edges after deleting noops.
	(delete_noop_move): Do not purge CFG.
	* toplev.c (rest_of_compilation): Update purge_all_dead_edges call.

2001-10-28  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use assemble_name.
	* config/rs6000/darwin.h (RS6000_OUTPUT_BASENAME): Delete.
	(ASM_GLOBALIZE_LABEL): Use assemble_name.
	(ASM_OUTPUT_COMMON): Likewise.
	* config/rs6000/rs6000.c (print_operand): Use assemble_name.
	(rs6000_output_function_epilogue): Likewise.
	(output_mi_thunk): Fix typo.
	(rs6000_output_symbol_ref): Use assemble_name.
	(output_toc): Likewise.
	* config/rs6000/sysv4.h (RS6000_OUTPUT_BASENAME): Delete.
	* config/rs6000/xcoff.h (RS6000_OUTPUT_BASENAME): Delete;
	assemble_name calls STRIP_NAME_ENCODING.
	(ASM_OUTPUT_LABEL): Use assemble_name.
	(ASM_GLOBALIZE_LABEL): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(ASM_OUTPUT_ALIGNED_COMMON): Indent pseudo-op.  Use assemble_name.
	(ASM_OUTPUT_LOCAL): Likewise.

Sun Oct 28 15:45:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (get_memory_rtx): Handle POINTERS_EXTEND_UNSIGNED case.
	(expand_builtin_apply, expand_builtin_return): Likewise.
	(expand_builtin_va_arg, expand_builtin_va_copy): Likewise.

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

	* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, FSFChangeLog.10, FSFChangeLog.11,
	c-common.c, c-common.h, c-parse.in, c-typeck.c, cfg.c, config.gcc,
	configure, configure.in, except.c, except.h, flow.c, function.c,
	gcc.c, gcse.c, genrecog.c, libgcc2.c, loop.c, loop.h, params.def,
	predict.def, predict.h, reg-stack.c, regmove.c, sched-deps.c,
	sched-int.h, sibcall.c, ssa.c, stringpool.c, toplev.c, tree.c,
	unroll.c: Fix spelling errors.

	* doc/extend.texi, doc/invoke.texi: Fix spelling.

	* doc/gcc.texi: Document use of "dependent" and American spelling.

Sun Oct 28 17:05:36 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_group_load): Support CONCATs by storing them to memory
	and reloading.

Sun Oct 28 09:59:54 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor_field): Only call adjust_address on MEM.

Sun Oct 28 16:48:09 CET 2001  Jan Hubicka  <jh@suse.cz>

	* genrecog.c (write_switch):  Output if before switch for
	DT_elt_zero_wide_safe.

2001-10-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (toplev.o, halfpic.o): Depend on halfpic.h
	* i386/osfrose.h (SUBTARGET_SWITCHES): Add missing comma.
	(FUNCTION_PROFILER): Const-ify.
	* halfpic.c: Include "expr.h", "output.h" and "halfpic.h".
	(eliminate_constant_term, assemble_name, output_addr_const):
	Remove declarations.
	(ptr_half_pic_address_p, half_pic_hash): Prototype.
	(all_refs, half_pic_prefix, half_pic_hash, half_pic_declare,
	half_pic_external, half_pic_address_p, half_pic_ptr): Const-ify.
	* halfpic.h (ptr_half_pic_address_p, half_pic_finish): Prototype.
	(half_pic_declare, half_pic_external): Const-ify.
	* toplev.c: Include "halfpic.h".

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

	* config/alpha/alpha.md, config/arm/arm.c, config/arm/arm.h,
	config/d30v/d30v.h, config/fr30/fr30.c, config/i370/x-oe,
	config/i386/i386.c, config/i386/i386-interix.h,
	config/i386/i386.md, config/i386/i386.h, config/i386/sco5.h,
	config/i860/i860.h, config/i860/i860.md, config/m68k/aux-exit.c,
	config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.md,
	config/ns32k/ns32k.h, config/pa/pa.c, config/rs6000/rs6000.c,
	config/sparc/sparc.c, config/m68hc11/m68hc11.c,
	config/cris/cris.c, config/cris/cris.h, config/s390/s390.c,
	config/s390/s390.h, config/stormy16/stormy16.h, doc/tm.texi: Fix
	spelling errors.

	* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
	c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
	collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
	haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
	regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
	system.h, toplev.c: Fix spelling errors.

Sat Oct 27 17:32:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (insert_insn_end_bb): Don't assume PAT is a SET.

	* dwarf2out.c (reg_number): Abort if pseudo.
	(reg_loc_descriptor): Return 0 if pseudo.
	(is_based_loc): Return 0 if pseudo.
	(mem_loc_descriptor): Return 0 for pseudo and handle 0 return from
	recursive calls.
	(concat_loc_descriptor): Return 0 if either part's descriptor is 0.
	(loc_descriptor): Return 0 if can't find location and handle 0
	return from recursive calls.
	(loc_descriptor_from_tree): Likewise.
	Fix handling of indirect.
	Also return 0 for PLACEHOLDER_EXPR.
	Clean up COMPONENT_REF cases.
	(add_AT_location_descriptor): Simplify, but handle 0 return from
	loc_descriptor.
	(add_const_value_attribute): Avoid shift count warning.
	(add_bound_info): Remove test for PLACEHOLDER_EXPR here.
	Set comp_unit_die as context if not in function.

	* config/mips/mips-protos.h: Break up long lines.
	Remove needless #ifdef/#endif blocks.
	Don't declare functions declared in file made by genpreds or recog.h.
	* config/mips/mips.c (mips_output_function_prologue): TSIZE
	is now HOST_WIDE_INT; delete unneeded casts.
	* config/mips/mips.h: Don't use #elif.

	* expr.c (stor_constructor_field): Always call adjust_address.
	Copy TARGET before changing its alias set.
	(store_field): Likewise, for TO_RTX.
	(get_inner_reference): Stop at PLACEHOLDER_EXPR if can't find
	replacement.
	(safe_from_p, case ADDR_EXPR): Properly check for conflict.
	(find_placeholder): Return 0 if can't find object.
	(expand_expr, case PLACEHOLDER_EXPR): Abort if find_placeholder
	returns 0.

Sat Oct 27 16:31:23 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (if_convert): Call clear_aux_for_blocks.

Sat Oct 27 12:12:09 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successors_nojumps): Set BB_UPDATE_LIFE.
	(merge_blocks): Properly udpate life after making edge nonfallthru.
	* cfgrtl.c (merge_blocks_nomove): Update global_live_at_end.

2001-10-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove redundant code.

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

	* c-typeck.c (convert_arguments): When comparing for enumeral
	type equality, use TYPE_MAIN_VARIANT.
	* gcc.dg/Wconversion.c: New tests.

2001-10-26  Kazu Hirata  <kazu@hxi.com>

	* s390/s390.c: Fix comment typos.
	* s390/s390.h: Likewise.
	* s390/s390.md: Likewise.

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

	* tree-inline.c (WALK_SUBTREE_TAIL): New macro.
	(walk_tree): Use it for tail calls where appropriate.

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

	* cse.c (check_for_label_ref): Don't require REG_LABEL notes for
	non-local label_refs.

2001-10-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (4 anonymous patterns): New.

2001-10-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Clean up.  Return the
	algorithm through the shift_info structure.
	(emit_a_shift): Update the use of get_shift_alg.

2001-10-27  Daniel Berlin  <dan@cgsoftware.com>

	* sched-rgn.c: Remove bitset typedef.
	Change bitset to sbitmap in prototypes / variable types.
	Remove bbset_size.
	Remove edgeset_bits.
	Remove edgeset_size.
	s/BITSET_ADD/SET_BIT/g
	s/BITSET_INVERT/sbitmap_ones/g
	s/BITSET_INTER/sbitmap_a_and_b/g
	s/BITSET_UNION/sbitmap_a_or_b/g
	s/BITSET_DIFFER/sbitmap_difference/g
	s/bitset_member/TEST_BIT/g
	(BITSET_*): Removed.
	(bitset_member): Removed.
	(extract_bitlst): Rewrite, now that we have sbitmaps, we can use
	EXECUTE_IF_SET_IN_SBITMAP.
	(split_edges): Rewrite, use sbitmap functions instead of bitset
	operations.
	(schedule_region): Allocate/free sbitmaps, rather than bitsets.

2001-10-26  Andreas Schwab  <schwab@suse.de>

	* reload1.c (emit_input_reload_insns): Fix parens in last
	(undocumented) change that was supposed to change only whitespace.

Fri Oct 26 07:18:08 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cfgcleanup.c (BB_SET_FLAG, BB_CLEAR_FLAG): Add cast to avoid warning.

	* local-alloc.c (update_equiv_regs): Don't make REG_EQUAL note for
	ASM_OPERANDS.

2001-10-26  Andreas Jaeger  <aj@suse.de>

	* flow.c (clear_log_links): Remove unused variable.
	* cfgcleanup.c (cleanup_cfg): Likewise.

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

	* tree-inline.c (remap_decl): Don't copy size and size_unit here.
	(remap_save_expr): Map a remapped SAVE_EXPR to error_mark_node.

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

	* config/alpha/alpha.h (enum reg_class): Add R24_REG, R25_REG;
	rename PV_REG to R27_REG.
	(REG_CLASS_CONTENTS, REGNO_REG_CLASS): Update.
	(REG_CLASS_FROM_LETTER): Update.
	(PREFERRED_RELOAD_CLASS): Don't widen a reg class.
	* config/alpha/alpha.md (divsi3): Don't hard-code r24, r25, r27.
	(udivsi3, modsi3, umodsi3): Likewise.
	(divdi3, udivdi3, moddi3, umoddi3): Likewise.

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

	* cfg.c (clear_aux_for_blocks): Split out of ...
	(free_aux_for_blocks): here.
	(clear_aux_for_edges): Split from ...
	(free_aux_for_edges): here.
	* basic-block.h: Declare them.
	* lcm.c (compute_antinout_edge): Use them.
	(compute_laterin, compute_available, compute_nearerout): Likewise.
	(optimize_mode_switching): Likewise.

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

	* Makefile.in (unstage*): Remove as, ld, collect-ld before
	moving everything back to the main build directory.

2001-10-26  Christopher Faylor  <cgf@redhat.com>

	* config/i386/cygwin.h: Search target specific include directory, if
	appropriate.

2001-10-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2out.c (PTR_SIZE, default_eh_frame_section): Move outside
	of macro guards. Fix #endif comment.

	* output.h (default_exception_section, default_eh_frame_section):
	Move prototypes outside of macro guard.

	* crtstuff.c: Fix #endif comment.

Thu Oct 25 12:21:58 2001  Jeffrey A Law  (law@cygnus.com)

	* doc/md.texi (movMM): Clarify semantics of storing into a
	non-paradoxical SUBREG.

2001-10-25  Zack Weinberg  <zack@codesourcery.com>

	* langhooks.c (lang_hook_default_clear_binding_stack): New.
	(lang_hook_default_get_alias_set): Move next to other alias
	hooks.
	* langhooks.h: Prototype lang_hook_default_clear_binding_stack.
	(LANG_HOOKS_CLEAR_BINDING_STACK): New macro.
	(LANG_HOOKS_INITIALIZER): Add it.
	* toplev.h (struct lang_hooks): Add clear_binding_stack.
	* toplev.c (compile_file):  Call lang_hooks.clear_binding_stack
	instead of a loop calling poplevel.

2001-10-25  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/mips/isa3264.h (SUBTARGET_CPP_SIZE_SPEC): Replace
	occurrences of #elif with #if...#endif.

2001-10-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cris.h (EH_RETURN_DATA_REGNO): Fix unsigned>=0 warning.

Thu Oct 25 08:46:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (can_address_p): No longer static.
	* emit-rtl.c (get_mem_attrs): New parameter, MODE; all callers changed.
	Return 0 if all parameters are default values.
	(set_mem_attributes): Set MEM_KEEP_ALIAS_SET_P.
	(adjust_address_1): Try harder to compute a size.
	* expr.c (expand_assignment, store_constructor): If can't address,
	set MEM_KEEP_ALIAS_SET_P.
	(store_constructor_field): Don't change set if MEM_KEEP_ALIAS_SET_P.
	(store_field): Likewise.
	(store_constructor): Simplify call to store_constructor_field.
	* expr.h (can_address_p): New declaration.
	* gensupport.c (gen_rtx_CONST_INT): New function.
	* rtl.h (MEM_KEEP_ALIAS_SET_P): New macro.
	(MEM_SIZE): Get size from mode, if not set and not BLKmode.
	(MEM_COPY_ATTRIBUTES): Copy MEM_KEEP_ALIAS_SET_P.

	* stmt.c (expand_end_case): Remove orig_minval and use tree_low_cst.

2001-10-24  Christopher Faylor  <cgf@redhat.com>

	* config/i386/cygwin.h: Use proper path for mingw crt files when
	-mno-cygwin.

Wed Oct 24 18:43:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (file_info_cmp): Always return consistent results.

2001-10-24  Roger Sayle <roger@eyesopen.com>

	* stmt.c (expand_end_case): Index jumptables from zero for
	suitably small values of minval.

2001-10-24  Jakub Jelinek  <jakub@redhat.com>

	* stor-layout.c (place_union_field): If any field was aligned with
	attribute aligned, set record type's TYPE_USER_ALIGN.
	(place_field): Likewise.
	(finalize_record_size): Don't clear TYPE_USER_ALIGN.
	(layout_type) [ARRAY_TYPE]: Copy element's TYPE_USER_ALIGN.

2001-10-24  Zack Weinberg  <zack@codesourcery.com>

	* c-common.h (struct c_common_identifier): Remove rid_code field.
	(C_RID_CODE): Use ->node.rid_code instead of ->rid_code.

	* c-typeck.c (constructor_designated): New local flag.
	(struct constructor_stack): Add "designated" field to match.
	(start_init): Clear it.
	(really_start_incremental_init, push_init_level): Push and
	clear it.
	(pop_init_level): Pop it.
	(set_designator): Set it.

	(pop_init_level): Suppress "missing initializer" warnings if
	constructor_designated is true.
	(process_init_element): Suppress warning about union
	initialization under traditional C, if constructor_designated
	is true.

Wed Oct 24 15:35:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* integrate.c (copy_rtx_and_substitute, case CALL): Fix error in last
	change.

Wed Oct 24 13:26:12 2001  Jeffrey A Law  (law@cygnus.com)

	* h8300.h (RETURN_ADDR_RTX): Remove old, incorrect definition.

2001-10-24  Dan Nicolaescu  <dann@ics.uci.edu>

	* ssa-ccp.c (ssa_ccp_substitute_constants): Don't do anything if
	the node was already a set to a constant.

Wed Oct 24 12:41:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (set_mem_attributes): Fix typo in last change.
	* print-rtl.c (print_rtx, case MEM): Improve display of MEM_DECL.

2001-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* s390/linux.h (ASM_OUTPUT_BYTE): Fix format specifier warnings.
	(ASM_OUTPUT_ASCII): Const-ify.  Fix signed/unsigned warning.
	(ASM_OUTPUT_MI_THUNK): Fix format specifier warnings.
	* s390.c (s390_final_chunkify): Don't use string concatenation.
	(s390_function_prologue, s390_function_epilogue): Const-ify.
	* s390.h (FUNCTION_PROFILER): Remove unused variable.

2001-10-24  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (finish_decl): Don't add DECL_STMTs for nested function
	prototypes.

2001-10-23  Stan Shebs  <shebs@apple.com>

	* config/rs6000/x-darwin: Use -no-cpp-precomp instead of
	-traditional-cpp in first-stage compilation.

Tue Oct 23 21:45:40 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gensupport.c (target_flags): Add.

Tue Oct 23 13:05:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.

	* builtins.c (expand_builtin_setjmp): Only call convert_memory_address
	if needed.
	(expand_builtin_longjmp, expand_builtin_alloca): Likewise.
	* except.c (expand_builtin_frob_return_addr): Likewise.
	(expand_builtin_eh_return): Likewise.
	* stmt.c (expand_computed_goto): Likewise.
	* explow.c (memory_address): Likewise.
	(allocate_dynamic_stack_space): Clean up predicate testing.
	(probe_stack_range): Convert SIZE to Pmode.
	* calls.c (rtx_for_function_call): Only call convert_memory_address
	if needed.
	Pass function call operand as ptr_mode, not Pmode.
	* expr.c (expand_assignment): Clean up calls to convert_memory
	address by only doing so when needed and making offsets Pmode.
	(store_constructor, expand_expr, expand_expr_unaligned): Likewise.
	* function.c (assign_parms): Ensure address in MEM for RESULT_DECL
	is in Pmode, not ptr_mode.

2001-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* darwin-protos.h (constructor_section, destructor_section,
	mod_init_section, mod_term_section): Prototype.
	* darwin.c (machopic_finish, update_non_lazy_ptrs, update_stubs):
	Const-ify.
	* darwin.h (ASM_DECLARE_OBJECT_NAME, ASM_DECLARE_FUNCTION_NAME):
	Likewise.
	(SECTION_FUNCTION): Prototype `FUNCTION'.  Delete
	objc_section_init declaration.
	(EXTRA_SECTION_FUNCTIONS): Prototype objc_section_init.
	(objc_section_init, try_section_alias): Make static.
	(alias_section): Make static and hide unused function.
	(ASM_GENERATE_INTERNAL_LABEL): Fix format specifier warning.

Tue Oct 23 13:05:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (can_address_p): Compnonents are not addressable if
	the containing type has alias set 0.
	(get_alias_set): Rework to use STRIP_NOPS.
	Only call front-end routine on object, type, or object with
	NOPs stripped, not inner values.
	Use language hook to call front-end routine.
	* builtins.c (get_memory_rtx): Always call set_mem_attributes.
	(expand_builtin_apply): Call set_mem_align on MEMs we make.
	Don't pass alignment to emit_block_move.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but for clear_storage.
	* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
	and remove C++ specific parts.
	* c-common.h (c_common_get_alias_set): Add declaration.
	* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	* calls.c (emit_call_1): Fix typo in sibcall_pop case.
	(save_fixed_argument_area): Call set_mem_align.
	Remove alignment in call to emit_block_move.
	(emit_library_call_value_1, store_one_arg): Likewise.
	(target_for_arg): Remove; disabled long ago.
	* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
	once and similar cleanups.
	(offset_address): Use proper introductory comment.
	* expr.c (emit_block_move): Use alignment from that of MEM args, not
	from explicit operand; all callers changed.
	(clear_storage): Likewise.
	(expand_assignment): Don't call set_mem_alias_set on to_rtx.
	(store_field): Remove kludge on alias set used for to_rtx.
	(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
	(expand_expr_unaligned): Call set_mem_attributes instead of
	set_mem_alias_set.
	* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
	* function.c (assign_stack_temp_for_type): Set MEM alignment.
	(expand_function_end): Track MEM attributes of trampolines.
	* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
	* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
	attributes from original.
	* langhooks.c (lang_hook_default_get_alias_set): New function.
	(hook_get_alias_set_0): New function.
	* langhooks.h (hook_get_alias_set_0): New declaration.
	(lang_hook_default_get_alias_set): Likewise.
	(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
	* reload1.c (alter_reg): Use adjust_address_nv.
	* rtl.c (get_mode_alignment): Moved to here.
	* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
	change default if unknown from 1 to BITS_PER_UNIT.
	* stor-layout.c (get_mode_alignment): Remove from here.
	* toplev.h (struct lang_hoks): Add get_alias_set field.
	* tree.h (lang_get_alias_set): Delete declaration.
	* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
	* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
	(ix86_va_arg): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_va_arg): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	(expand_block_move_mem): Remove dead code.

2001-10-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (warn_div_by_zero): New.
	* c-common.h (warn_div_by_zero): New.
	* c-decl.c (c_decode_option): Take it on the command line.
	* c-typeck.c (build_binary_op): Warn about division by zero.
	* doc/invoke.texi: Document the new command line option, fix
	documentation of -Wmultichar.
	* testsuite/gcc.dg/divbyzero.c: New tests.
	* testsuite/gcc.dg/noncompile/20010524-1.c: Update.

Tue Oct 23 15:30:23 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_int_movcc): Cleanup; use expand_simple_*op.

	* toplev.c (rest_of_compilation): Use CLEANUP_UPDATE_LIFE
	to avoid update_life_info call.
	* basic-block.h (CLEANUP_UPATE_LIFE): Define.
	* cfgcleanup.c (bb_flags): New enum.
	(BB_FLAGS, BB_SET_FLAG, BB_CLEAR_FLAG, FORWARDER_BLOCK_P): New macros.
	(notice_new_block, update_forwarder_flag): New functions.
	(try_simplify_condjump): Use FORWARDER_BLOCK_P.
	(try_forward_edges): Likewise; update flags.
	(merge_blocks): Likewise.
	(outgoing_edges_match): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise; initialize and clear the flags;
	recompute life info if needed.
	(cleanup_cfg): No need to clear aux pointers.

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

	* config/i386/i386.c (override_options): Default to minimum
	stack alignment when optimizing for code size.
	* doc/invoke.texi (-mpreferred-stack-boundary): Document the
	change.

	* config/i386/i386.c (override_options): Set upper limit of
	-mpreferred-stack-boundary to 12.

2001-10-22  Zack Weinberg  <zack@codesourcery.com>

	* recog.c (peephole2_optimize): Add default case to switch.

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

	* doc/gcc.texi (Sending Patches): Remove.

2001-10-22  Hans-Peter Nilsson  <hp@bitrange.com>

	* unwind-dw2-fde.c (fde_unencoded_compare): Derefer pc_begin
	fields when comparing.

2001-10-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arm.h (HOST_INT, HOST_UINT): Delete.  Remove all uses.
	* arm.c (HOST_INT, HOST_UINT): Likewise.

2001-10-22  Stan Shebs  <shebs@apple.com>

	* config/darwin-protos.h (darwin_exception_section): Declare.
	(darwin_eh_frame_section): Declare.

Mon Oct 22 18:21:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movti_rex64): Fix mode.

2001-10-22  Stan Shebs  <shebs@apple.com>

	* target.h (struct gcc_target): Add asm_out.exception_section,
	asm_out.eh_frame_section.
	* target-def.h (TARGET_ASM_EXCEPTION_SECTION): New macro.
	(TARGET_ASM_EH_FRAME_SECTION): New.
	(TARGET_INITIALIZER): Update.
	* output.h (default_exception_section): Declare.
	(default_eh_frame_section): Declare.
	* dwarf2out.c: Include target.h.
	(output_call_frame_info): Call target hook for eh frames.
	(default_eh_frame_section): New function.
	* except.c: Include target.h.
	(output_function_exception_table): Call target hook for exception
	section.
	* varasm.c (default_exception_section): Rename from
	exception_section, remove EXCEPTION_SECTION macro.

	* config/darwin.h (darwin_eh_frame_section): New function.
	(EXCEPTION_SECTION): Remove.
	(TARGET_ASM_EXCEPTION_SECTION): Define.
	* config/nextstep.h (EH_FRAME_SECTION_ASM_OP): Remove.
	(nextstep_exception_section): New function.
	(nextstep_eh_frame_section): New function.
	(TARGET_ASM_EXCEPTION_SECTION): Define.
	(TARGET_ASM_EH_FRAME_SECTION): Define.

	* config/pa/som.h (EXCEPTION_SECTION): Remove.
	(TARGET_ASM_EXCEPTION_SECTION): Define.
	* config/rs6000/sysv4.h, config/rs6000/xcoff.h
	(EXCEPTION_SECTION): Remove.
	(TARGET_ASM_EXCEPTION_SECTION): Define.
	* config/stormy16/stormy16.h: Remove comments referencing
	EXCEPTION_SECTION and EH_FRAME_SECTION_ASM_OP.

	* doc/tm.texi: Document TARGET_ASM_EXCEPTION_SECTION and
	TARGET_ASM_EH_FRAME_SECTION.

2001-10-22  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/mips/mips.md (mul_acc_si): Fix precedence of conditional
	terms.

	* c-format.c: Fix spelling typo in comment.

	* sched-int.h: Fix typo in GCC preamble.

2001-10-21  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR debug/4252
	* doc/invoke.texi: Remove references to -fdump-translation-unit.

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

	* config/i386/i386.c (ix86_expand_clear): New.
	* config/i386/i386-protos.h: Declare it.
	* config/i386/i386.md (setcc peep2s): Use it.
	(movsi_xor): Unexport.

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

	* flow.c (clear_log_links): Use free_INSN_LIST_list, not
	free_EXPR_LIST_list for LOG_LINKS.

2001-10-21  Robert Lipe  <robertlipe@usa.net>

	* config/i386/i386.c (sco_asm_named_section): Delete.
	(sco_asm_out_constructor): Delete.
	* config/i386/sco5.h (ASM_QUAD): Undo damage from att.h.
	(ASM_OUTPUT_DOUBLE_INT): Likewise.
	(TARGET_ASM_CONSTRUCTOR): Delete.  Use default.
	(TARGET_ASM_NAMED_SECTION): Use default for ELF.
	(EXCEPTION_SECTION): Delete EH scn renaming hack.

2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-format.c (maybe_read_dollar_number): Use safe-ctype macros
	and/or fold extra calls into fewer ones.
	* collect2.c (dump_file): Likewise.
	* cppexp.c (parse_number): Likewise.
	* cpplex.c (_cpp_lex_direct): Likewise.
	* final.c (output_asm_insn, asm_fprintf): Likewise.
	* fix-header.c (inf_scan_ident, main): Likewise.
	* fixinc/fixfixes.c (char_macro_use_fix, char_macro_def_fix):
	Likewise.
	* fold-const.c (real_hex_to_f): Likewise.
	* gen-protos.c (parse_fn_proto): Likewise.
	* genattrtab.c (check_attr_test, check_attr_value): Likewise.
	* genrecog.c (change_state, write_action): Likewise.
	* gensupport.c (shift_output_template): Likewise.
	* local-alloc.c (requires_inout): Likewise.
	* mips-tfile.c (IS_ASM_IDENT): Likewise.
	* protoize.c (is_id_char, main): Likewise.
	* real.c (asctoeg): Likewise.
	* recog.c (asm_operand_ok): Likewise.
	* reload.c (find_reloads): Likewise.
	* scan.c (scan_identget_token): Likewise.
	* sched-vis.c (print_value): Likewise.
	* stringpool.c (ggc_alloc_string): Likewise.
	* toplev.c (read_integral_parameter, decode_g_option): Likewise.
	* tradcif.y (parse_number, yylex, parse_escape): Likewise.
	* tradcpp.c (rescan): Likewise.
	* tree.c (clean_symbol_name): Likewise.
	* varasm.c (decode_reg_name): Likewise.

	* alpha.h (ASM_OUTPUT_ASCII): Likewise.
	* darwin.c (name_needs_quotes, func_name_maybe_scoped): Likewise.
	* dsp16xx.h (ASM_OUTPUT_ASCII): Likewise.
	* m88k.c (output_ascii): Likewise.
	* m88k.h (OVERRIDE_OPTIONS): Likewise.
	* mcore.h (REG_CLASS_FROM_LETTER): Likewise.
	* ns32k/encore.h (ASM_OUTPUT_ASCII): Likewise.
	* sh.h (REG_CLASS_FROM_LETTER): Likewise.

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

	* langhooks.c (lang_hook_default_do_nothing,
	lang_hook_default_decode_option): New defaults.
	* langhooks.h: Make hooks unconditional and non-NULL.
	* toplev.c (compile_file, toplev_main): Update.
	* toplev.h: Update comments.
	* objc/objc-act.c (lang_hooks): Update to new paradigm.

2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arm.h (FUNCTION_ARG_REGNO_P): Use IN_RANGE.

	* system.h (IN_RANGE): New macro.

2001-10-21  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (AM_WITH_NLS): Also create and substitute
	INTLDEPS variable, which does not include $LIBICONV.
	* Makefile.in: Use INTLDEPS in LIBDEPS.
	* configure: Regenerate.

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

	* cpphash.h (struct cpp_buffer): Delete read_ahead and extra_char.
	* cpplex.c (lex_percent, lex_dot): Remove.
	(get_effective_char, skip_block_comment, skip_line_comment,
	parse_identifier_slow, parse_number, parse_string, save_comment,
	_cpp_lex_direct): Update to do lookback freely.
	(IF_NEXT_IS, BACKUP): New macros.
	* cpplib.c (cpp_push_buffer): Don't set read_ahead and extra_char.
	* cppmacro.c (paste_tokens): Update.

2001-10-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/invoke.texi (i386 and x86-64 Options): Fix typo.

2001-10-20  Hans-Peter Nilsson  <hp@axis.com>

	* reload1.c (reload): Check CONSTANT_P before calling
	LEGITIMATE_PIC_OPERAND_P.
	* config/cris/cris.c (cris_legitimate_pic_operand): Revert
	workaround of 2001-10-13.

Sat Oct 20 15:16:10 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (split_di): Handle splitting of DFmode.

Sat Oct 20 07:27:14 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (set_mem_attributes): Alignment is in bits.
	(adjust_address_1, offset_address): Likewise.

	* final.c (output_asm_operand_names): New fcn, from output_asm_insn.
	(output_asm_insn): Call it for each line output.
	Don't record an operand more than once.

	* toplev.h (struct lang_hooks): HONOR_READONLY now bool.
	* main.c: Include config.h and system.h, but not ansidecl.h.
	* Makefile.in (main.o): Update accordingly.

Sat Oct 20 12:05:31 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (SSE_REGPARM_MAX): Set to 8 for x86_64.

Sat Oct 20 12:01:07 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (find_sub_basic_blocks): Use sbitmap parameter.
	* cfgbuild.c (find_bb_boundaries, compute_outgoing_frequencies):
	Break out from ...
	(find_sub_basic_blocks): ... here;
	(find_many_sub_basic_blocks): New.
	* recog.c (split_all_insns): Update find_sub_basic_blocks call.

	* i386.h (ASM_PREFERRED_EH_DATA_FORMAT): Define sdata4.

	* i386.c (ix86_va_arg): Kill indirect_p handling; fix aliasing issues.:

	* i386.c (split_di, split_ti): Revamp to use simplify_subreg.

	* timevar.def (TV_LIFE, TV_LIFE_UPDATE, TV_MODE_SWITCH): new.
	* flow.c (update_life_info): Measure time.
	* c-decl.c: Include timevar.h
	(c_expand_body): Measure time.
	* toplev.c (rest_of_compilation): Measure time of mode switching
	separately.
	* Makefile.in (c-decl.o, cfgcleanup.o): Add dependency.

	* toplev.c (flag_asynchronous_unwind_tables): New global variable.
	(lang_independent_options): Add asynchronous-unwind-tables
	(toplev_main): flag_asynchronous_unwind_tables implies
	flag_unwind_tables.
	* flags.h (flag_asynchronous_unwind_tables): Declare.
	* dwarf2out.c (dwarf2out_stack_adjust): Take into account
	flag_asynchronous_unwind_tables.
	(output_call_frame_info): Likewise.
	* invoke.texi (-fasynchronous-unwind-tables): Document.
	* i386.c (optimization_options): Enable
	flag_asynchronous_unwind_tables.

	* i386.c (ix86_expand_setcc):  Always expect target to be QImode.
	* i386.md (s* expanders): Destination is QImode.

	* toplev.c (rest_of_compilation): Do not call clear_log_links.
	* rtl.h (clear_log_links): Kill.
	* flow.c (clear_log_links): Make static; accept blocks parameter;
	do no clear life info.
	(update_life_info): Call clear_log_links.

	* cfganal.c (forwarder_block_p): Avoid active_insn_p calls.

2001-10-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (handle_newline, skip_escaped_newlines,
	get_effective_char, skip_block_comment, skip_line_comment,
	parse_identifier_slow, parse_number, parse_string,
	_cpp_lex_direct): Update to do more stepping back.
	(trigraph_ok): Similarly.  Rename trigraph_p.
	(SAVE_STATE, RESTORE_STATE): Remove.
	(BUFF_SIZE_UPPER_BOUND): Tweak.  Add sanity check.

	* cpplib.c (destringize): Rename destringize_and_run, and
	call run_directive directly.
	(_cpp_do__Pragma): Simplify.

2001-10-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pe.c (arm_pe_unique_section): Const-ify.
	* pe.h (TARGET_ASM_NAMED_SECTION): Undef before defining.
	(switch_to_section): Add static prototype.

	* output.h (drectve_section): Prototype.

2001-10-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config.gcc (i[34567]86-*-gnu*, arc-*-elf*, d30v-*,
	fr30-*-elf, hppa*64*-*-linux*, parisc*64*-*-linux*, hppa*-*-linux*,
	parisc*-*-linux*, i370-*-linux*, i[34567]86-*-chorusos*,
	i[34567]86-*-elf*, i[34567]86-ncr-sysv4*, i[34567]86-*-netware,
	i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
	i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-freebsd*,
	i[34567]86-*-netbsdelf*, i[34567]86-*-linux*libc1,
	i[34567]86-*-linux*, i[34567]86-moss-msdos*, i[34567]86-*-moss*,
	i[34567]86-go32-rtems*, i[34567]86-*-rtems*, i[34567]86-*-rtemself*,
	i[34567]86-*-solaris2*, i[34567]86-*-sysv5*, i[34567]86-*-sysv4*,
	i[34567]86-*-udk*, i[34567]86-*-osf1*, i[34567]86-dg-dgux*,
	i860-alliant-*, i860-*-sysv4*, ia64*-*-aix*, ia64*-*-linux*,
	ia64*-*-hpux*, m32r-*-elf*, m88k-dg-dgux*, m88k-*-sysv4*, mcore-*-elf,
	mips*-*-linux*, mn10200-*-*, mn10300-*-*, pj*-linux*, pjl-*,
	powerpc64-*-linux*, powerpc-*-sysv*, powerpc-*-netbsd*,
	powerpc-*-chorusos*, powerpc-*-eabiaix*, powerpc-*-eabisim*,
	powerpc-*-elf*, powerpc-*-eabi*, powerpc-*-rtems*,
	powerpc-*-linux*libc1, powerpc-*-linux*, powerpc-wrs-vxworks*,
	powerpcle-wrs-vxworks*, powerpcle-*-sysv*, powerpcle-*-elf*,
	powerpcle-*-eabisim*, powerpcle-*-eabi*, powerpcle-*-solaris2*,
	rs6000-*-mach*, s390-*-linux*, s390x-*-linux*, sh-*-elf*,
	sh-*-rtemself*, sh-*-rtems*, sh-*-linux*, stormy16-*-elf,
	v850-*-rtems*, v850-*-*, x86_64-*-linux*), cris-*-aout, cris-*-elf,
	cris-*-none, cris-*-linux*: Update ${tmfile} list.
	(c4x-*-rtems*, c4x-*, i[34567]86-go32-rtems*, i[34567]86-*-rtemscoff*,
	i[34567]86-*-rtems*, i[34567]86-*-rtemself*, i[34567]86-*-osf1*,
	mn10200-*-*, mn10300-*-*, powerpc-*-beos*, powerpc-*-darwin*,
	powerpc-wrs-vxworks*, powerpcle-wrs-vxworks*, v850-*-rtems*,
	v850-*-*): Delete superflous ${cpu_type} setting.
	* config/linux.h: Delete svr4.h include.
	(SET_ASM_OP): Delete.
	* config/netware.h (INT_ASM_OP): Undef before define.
	* config/ptx4.h: Delete elfos.h include.
	(PREFERRED_DEBUGGING_TYPE): Undef instead of wrapping.
	* config/svr4.h: Delete elfos.h include. Update commentary.
	* config/arc/arc.h, config/d30v/d30v.h, config/fr30/fr30.h,
	config/m32r/m32r.h, config/m88k/sysv4.h, config/mn10200/mn10200.h,
	config/mn10200/mn10300.h, config/stormy16/stormy16.h,
	config/v850/v850.h: Delete svr4.h include.
	* config/i370/linux.h, config/i386/osf1elf.h, config/m68k/linux.h,
	config/m68k/m68kv4.h, config/m88k/sysv4.h,
	config/sparc/sysv4.h: Update includes.
	* config/i386/beos-elf.h, config/i386/netware.h, config/i386/ptx4-i.h,
	config/i386/rtemself.h, config/i386/sol2.h, config/i386/sysv4.h,
	config/i386/sysv5.h, config/i386/udk.h, config/ia64/linux.h,
	config/m88k/dguxbcs.h: Delete includes.
	* config/i386/dgux.h, config/i386/osf1elfgdb.h: Delete include.
	(PREFERRED_DEBUGGING_TYPE): Undef before defining it.
	* config/i860/fx2800.h (ASM_OUTPUT_SOURCE_LINE): Undef before defining
	it.
	* config/m88k/dgux.h: Delete include.
	(SDB_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE):  Undef before
	defining it.
	* config/pj/pj.h (ASM_GENERATE_INTERNAL_LABEL,
	ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_SKIP): Undef before defining it.
	* config/sh/elf.h: Update include.
	(SDB_DEBUGGING_INFO, DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE,
	DWARF2_ASM_LINE_DEBUG_INFO): Move behind includes.

2001-10-19  Catherine Moore  <clm@redhat.com>

	* config/stormy16/stormy-abi:  Updates to varargs descriptions.
	* config/stormy16/stormy16.c (stormy16_build_va_list):  Reverse
	base and count fields.
	(stormy16_expand_builtin_va_start):  last_reg_count changed to
	size_of_reg_args.  Use count + size in first comparison.

Fri Oct 19 15:24:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* langhooks.h (LANG_HOOKS_HONOR_READONLY): New macro.
	* toplev.h (struct lang_hooks): New field HONOR_READONLY.
	* emit-rtl.c (set_mem_attributes): Set RTX_UNCHANGING_P from
	TREE_READONLY and TYPE_READONLY if lang_hooks.honor_readonly.
	Set alignment from type if INDIRECT_REF.
	(adjust_address_1, offset_address): Simplify alignment compuitation.
	* expr.c (expand_expr, case INDIRECT_REF): Don't set RTX_UNCHANGING_P
	here; done by set_mem_attributes.

2001-10-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (rtlanal.o): Depend on $(TM_P_H).
	* arm-protos.h (rdata_section, zero_init_section, common_section):
	Prototype.
	* arm.h (ASM_OUTPUT_DEF_FROM_DECLS): Const-ify.
	* avr.h (ASM_OUTPUT_SKIP): Rename macro parameter to avoid
	traditional mode stringification.
	* function.c (thread_prologue_and_epilogue_insns): Wrap variable
	in macros controling its use.
	* rtlanal.c: Include tm_p.h.
	* varasm.c (asm_output_aligned_bss): Mark parameter with
	ATTRIBUTE_UNUSED.
	(assemble_constant_align, assemble_start_function, assemble_align,
	assemble_variable, assemble_trampoline_template,
	output_constant_def_contents): Wrap potentially empty if-stmt body
	in brackets.

2001-10-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* a29k-protos.h (literal_section): Prototype.
	* a29k.h (ASM_FILE_START): Don't discard pointer qualifier.
	* a29k.md: Ensure function pointers are prototyped.
	* genattrtab.c (write_eligible_delay): Mark parameter with
	ATTRIBUTE_UNUSED.

2001-10-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calls.c (emit_call_1): Mark parameter with ATTRIBUTE_UNUSED.
	* 1750a.c (print_operand): Fix format specifier warning.
	* 1750a.h (ASM_FILE_START): Don't discard pointer qualifier.
	* 1750a.md: Likewise.
	* gcc.c (init_gcc_specs): Wrap with ENABLE_SHARED_LIBGCC.
	* genemit.c (output_add_clobbers): Mark parameter with
	ATTRIBUTE_UNUSED.
	* genrecog.c (write_subroutine): Likewise.
	* integrate.c (expand_inline_function): Delete unused variable.
	* varasm.c (remove_from_pending_weak_list): Wrap with
	ASM_WEAKEN_LABEL.

2001-10-19  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplify_plus_minus): Negate constant iff its neg
	field is different to previous argument's neg field.

	* config/alpha/alpha.c (summarize_insn): Don't abort on ASM_INPUT.

Fri Oct 19 15:24:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* final.c (get_decl_from_op): New function.
	(output_asm_insn): Call it; write "*" when item with decl is address.

2001-10-19  Janis Johnson  <janis187@us.ibm.com>

	* doc/install.texi (Specific, sparc-sun-solaris2*) Copy documentation
	about 64-bit support from the 3.0_branch version.

2001-10-19  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (AM_WITH_NLS): AC_DEFINE HAVE_LIBINTL_H and
	USE_INCLUDED_LIBINTL when appropriate.
	* configure, config.in: Regenerate.
	* Makefile.in (datadir): Set to @datadir@.
	(intl.o): Also depend on $(CONFIG_H) and system.h.

	* intl.c: Factor out common gettext initialization sequence.
	(gcc_init_libintl):  New function.
	* intl.h: Include intl/libgnuintl.h if USE_INCLUDED_LIBINTL;
	otherwise include libintl.h if HAVE_LIBINTL_H; otherwise turn
	off NLS.  Add multiple include guard.  No need to #ifdef-guard
	an #undef.  Prototype gcc_init_libintl here.

	* collect2.c (main), cppmain.c (general_init), gcc.c (main),
	gcov.c (main), protoize.c (main), toplev.c (toplev_main):
	Use gcc_init_libintl.

2001-10-19  Catherine Moore  <clm@redhat.com>

	* config/stormy16/stormy16.h (ASM_COMMENT_START): Define.

	* config/stormy16/stormy16.c (stormy16_split_move):  Make
	sure that REG_INC notes are present for auto_inc operands.

2001-10-19  Andreas Jaeger  <aj@suse.de>

	* configure: Regenerated.
	* configure.in: Add x86_64 to switch statements.

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

	* config/alpha/alpha.md (sibcall_osf_1): Load destination
	address into $27 explicitly.
	(sibcall_value_osf_1): Likewise.

Thu Oct 18 16:07:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
	(offset_address): New function.
	(free_emit_status): Free regno_decl.
	(init_emit): Pass proper number of elements to xcalloc.
	Allocate regno_decl.
	(mark_emit_status): Mark regno_decl values.
	* expr.c (highest_pow2_factor): New function.
	(expand_assigment): Use it and offset_address.
	Properly handle ptr_mode vs. Pmode in offset calculation.
	(store_constructor, expand_expr_unaligned): Likewise.
	(expand_expr, case COMPONENT_EXPR): Likewise.
	* expr.h (offset_address): New decl.
	* function.h (struct emit_status): Add regno_decl.
	(REGNO_DECL): New macro.
	* final.c (output_asm_name): Move in file and don't conditionalize
	on flag_print_asm_name.
	(output_asm_insn): Only call output_asm_name if flag_print_asm_name.
	Output names of operands, if known.
	* function.c (assign_parms): Set REGNO_DECL.
	* integrate.c (integrate_decl_tree): Likewise.
	* stmt.c (expand_decl): Likewise.
	* regclass.c (reg_scan_mark_refs): Propagate REGNO_DECL for copies.

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

	* attribs.c (handle_noinline_attribute): New function.
	(handle_used_attribute): Likewise.
	(c_common_attribute_table): Added noinline and used.
	* doc/extend.texi (Function Attributes): Document them.
	* c-decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
	Warn when merging inline with attribute noinline.
	(start_decl, start_function): Warn if inline and attribute
	noinline appear in the same declaration.

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

	* config.gcc: Update c4x and i370 for C front end-specific
	dependencies.
	* config/c4x/c4x-c.c: New.
	* config/c4x/c4x-protos.h (c4x_handle_pragma): Remove.
	(code_tree, data_tree, pure_tree, noreturn_tree, interrupt_tree):
	New declarations.
	* config/c4x/c4x.c: Don't include c-lex.h or c-pragma.h.
	(code_tree, data_tree, pure_tree, noreturn_tree, interrupt_tree):
	Make extern.
	(c4x_init_pragma): Remove.
	(c4x_parse_pragma, c4x_pr_CODE_SECTION, c4x_pr_DATA_SECTION,
	c4x_pr_FUNC_IS_PURE, c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT,
	c4x_pr_ignored): Move to c4x-c.c.
	* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/c4x/t-c4x: Update.
	* config/i370/i370-c.c: New.
	* config/i370/i370.c: Don't include c-lex.h or c-pragma.h.
	(i370_pr_map): Move to i370-c.c.
	* config/i370/t-i370: New.

	* doc/tm.texi: Update.

2001-10-17  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c: Make assorted mechanical formatting and
	typo fixes throughout.
	(machopic_output_stub): Remove some dead code.

2001-10-17  Richard Earnshaw <rearnsha@arm.com>

	* cpplex.c (_cpp_get_buff): Fix off-by-one error that caused memory
	leak.

Wed Oct 17 05:26:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (print-rtl.o): Depend on TREE_H.
	* alias.c (get_alias_set): Make two passes over objects to first
	see if inner object is access via restricted pointer.
	Defer allocating alias set for restricted pointer until here.
	Call find_placeholder with second arg nonzero.
	Minor cleanups.
	* c-common.c (c_apply_type_quals_to_decl): Defer getting alias
	set for restricted pointer types.
	* emit-rtl.c (set_mem_attributes): Set more attributes.
	(set_mem_align, change_address, adjust_address_1): New functions.
	(change_address_1): Now static.
	(adjust_address, adjust_address_nv): Deleted.
	(replace_equiv_address): Call change_address_1.
	* expr.c (get_inner_reference): Handle PLACEHOLDER_EXPR.
	(find_placeholder): Get starting point from PLIST arg.
	(expand_expr, case PLACEHOLDER_EXPR): Initialize find_placeholder arg.
	* expr.h (set_mem_align, change_address, adjust_address_1): New decls.
	(adjust_address, adjust_address_nv): New macros.
	* print-rtl.c (tree.h): New include.
	(print_rtx, case MEM): Print all memory attributes.

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

	* config/alpha/alpha.c (direct_call_operand): Don't fall off end.

2001-10-16  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* c-tree.texi: Eliminate duplicated word.
	* cpp.texi: Likewise.
	* install.texi: Likewise.
	* invoke.texi: Likewise.
	* tm.texi: Likewise.

2001-10-17  Michael Collison  <collison@isisinc.net>

	* dsp16xx.c: Fix comment formatting to match GNU standards.
	(dsp16xx_output_function_prologue): Change type of 'size'
	parameter from 'int' to HOST_WIDE_INT.
	(dsp16xx_output_function_epilogue): Change type of 'size'
	parameter from 'int' to HOST_WIDE_INT.

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

	* configure.in (HAVE_AS_GOTOFF_IN_DATA): New x86 check.
	* configure, config.in: Rebuild.

	* config/i386/i386.c (ix86_output_addr_vec_elt): New.
	(ix86_output_addr_diff_elt): New.
	* config/i386/i386.h (ASM_OUTPUT_ADDR_VEC_ELT): Use them.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
	(JUMP_TABLES_IN_TEXT_SECTION): New.
	* config/i386/i386.md (tablejump): Handle HAVE_AS_GOTOFF_IN_DATA.
	* config/i386/i386-protos.h: Update.

	* config/i386/386bsd.h, config/i386/beos-elf.h,
	config/i386/freebsd-aout.h, config/i386/freebsd.h,
	config/i386/i386-interix.h, config/i386/i386elf.h,
	config/i386/linux.h, config/i386/netbsd-elf.h,
	config/i386/netbsd.h, config/i386/openbsd.h,
	config/i386/ptx4-i.h, config/i386/rtemself.h,
	config/i386/sco5.h, config/i386/sysv4.h, config/i386/x86-64.h
	(ASM_OUTPUT_ADDR_DIFF_ELT, JUMP_TABLES_IN_TEXT_SECTION): Remove.

2001-10-16  Florian Weimer  <fw@deneb.enyo.de>

	* stmt.c (expand_asm_operands): Update commentary.

2001-10-16  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (GCC_NAME): Remove, no longer used.
	(NO_MATH_LIBRARY): Ditto.
	(MATH_LIBRARY): Define to emptiness.
	(DWARF2_DEBUGGING_INFO): Define.
	(PREFERRED_DEBUGGING_TYPE): Define.
	(EXTRA_SECTION_FUNCTIONS): Add darwin_exception_section.
	(EXCEPTION_SECTION): Define.
	(ASM_PREFERRED_EH_DATA_FORMAT): Define.
	* config/darwin.c (darwin_encode_section_info): Handle case of
	DECL_INITIAL being error_mark_node.

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

	* alpha.c (current_file_function_operand): Don't fail for profiling.
	(direct_call_operand): New.
	* alpha-protos.h: Declare it.
	* alpha.h (EXTRA_CONSTRAINT): Use it.
	(PREDICATE_CODES): Add it.
	(ASM_OUTPUT_MI_THUNK): Remove.
	* alpha32.h (ASM_OUTPUT_MI_THUNK): Remove.
	* alpha.md (sibcall_osf_1, sibcall_value_osf_1): Add 's' alternative.

2001-10-16  Krister Walfridsson  <cato@df.lth.se>

	* config/i386/netbsd-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Define.
	(JUMP_TABLES_IN_TEXT_SECTION): Define.

Wed Oct 17 00:21:31 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cfg.c (free_edge): Break out from ....
	(remove_edge): ... here.
	(clear_edges): Use free_edge.

	* att.h (ASM_QUAD): Add comment.
	* bsd.h, sco5.h, sun386.h (ASM_QUAD): Define.

Wed Oct 17 00:01:02 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (split_ti): New function.
	(ix86_split_to_parts): Support TImodes.
	* i386.h (VALID_INT_MODE_P): Add TImode.
	* i386.md (movdi splitter): Fix.
	(movti): Support 64bit integer registers.
	(movti_rex64): New function and splitter.

	* i386.c (*_cost): Add movsx/movzx cost.
	* i386.h (struct processor_costs): Add movsx/movzx fields.
	(RTX_COSTS): Handle zero/sign extend + avoid believing that
	64bit operations require split on 64bit machine.
	(CONST_COST): Make large 64bit constants expensive on 64bit compilation.

	* i386.c (ix86_setup_incoming_varargs): Fix mode of PLUS.
	(ix86_expand_move): Avoid pushes of memory if size does not match;
	move long constants to register.
	(x86_initialize_trampoline): Fix mode.
	* i386.h (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT):
	Use ASM_QUAD on 64bit.
	* i386.md (test pattern): Disallow impossible constants.
	(tablejump PIC expander): Fix emitting of sum.
	(movdicc_rex64): Rename to movdicc.
	* linux64.h (LINK_SPEC): Add missing '%'.

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

	* tree-inline.c (inlinable_function_p): Leave it up to the
	front-end to turn -finline-functions into DECL_INLINE set for all
	functions.

2001-10-16  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin.h (ASM_COMMENT_START): Define.

2001-10-16  Alan Modra  <amodra@bigpond.net.au>

	* recog.c: Formatting and comment typo fixes.

	* configure.in (gcc_cv_as_bfd_srcdir): New.  Use it to find gas
	version in single tree build.
	* configure: Regenerate.

2001-10-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (cr_logical): Swap order of CODE and
	MODE arguments to gen_rtx and compare operand with const0_rtx.

2001-10-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* system.h: Poison old unused target macros.
	* config/dsp16xx.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
	* config/stormy16/stormy16.c: Update references to obsolete macros.
	* config/stormy16/stormy16.h: Similarly.
	* config/stormy16/stormy16.md: Similarly.
	* config/cris/cris.h: Similarly.

2001-10-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (struct pragma_entry): Store the name as a hashnode.
	(lookup_pragma_entry, insert_pragma_entry, do_pragma,
	cpp_register_pragma): Update accordingly.

2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-pragma.h (cpp_register_pragma_space): Remove.
	* cpplib.h (cpp_register_pragma_space): Remove.
	* cpplib.c (lookup_pragma_entry, insert_pragma_entry): New.
	(cpp_register_pragma_space): Remove.
	(cpp_register_pragma): Simplify using lookup_pragma_entry,
	add sanity checks.
	(do_pragma): Similarly.
	(_cpp_init_internal_pragmas): Don't register namespaces.

	* config/v850/v850.h (REGISTER_TARGET_PRAGMAS):
	Don't register namespaces.
	* cp/lex.c (init_cp_pragma): Similarly.
	* doc/tm.texi: Update.

2001-10-10  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR c/4157
	* config/i386/cygwin.h: Add missing space to MINGW_INCLUDES

2001-10-13  Michael Collison  <collison@dhcp-12-114.townisp.com>

	* config/dsp16xx/dsp16xx.md: Rewrite for more efficient code and
	add scheduling support.
	* config/dsp16xx/dsp16xx.h: Rewrite for more efficient code.
	* config/dsp16xx/dsp16xx.c: Rewrite for more efficient code.
	* config/dsp16xx/dsp16xx-protos.h: Add new function prototypes.


2001-10-13  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_legitimate_pic_operand): Kludge around
	missing CONSTANT_P test in core GCC.

2001-10-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmain.c (struct printer): New member source.
	(scan_translation_unit): Fix spacing at start of lines.
	(cb_line_change): Update.

	* gcc.dg/cpp/spacing2.c: New test.

2001-10-12  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/arit.c: Use __builtin_labs, not abs.

	* config/cris/cris.h (SET_STRIPPABLE_EXECUTABLE): Don't define.

	* config/cris/cris.c (cris_target_asm_function_epilogue): Move
	misplaced sprintf and fprintf argument.

2001-10-12  Zack Weinberg  <zack@codesourcery.com>

	* ABOUT-NLS, aclocal.m4: Update i18n framework from gettext 0.10.40.
	* configure.in, Makefile.in: Take out obsolete check-po logic.
	* configure, config.in: Regenerate.

2001-10-12  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (finish_objc): Correct precondition for emitting
	symtab declarations.

2001-10-12  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c: Remove uses of "register" specifier in
	declarations of arguments and local variables.

2001-10-12  Christopher Faylor  <cgf@redhat.com>

	* config/i386/cygwin.h: Revert erroneous checkin of crtbegin and
	ENDFILE_SPEC definition.

2001-10-12  Kazu Hirata  <kazu@hxi.com>

	* gthr-dce.h: Fix comment formatting.
	* gthr-posix.h: Likewise.
	* gthr-single.h: Likewise.
	* gthr-solaris.h: Likewise.
	* gthr-vxworks.h: Likewise.
	* gthr-win32.h: Likewise.

2001-10-12  Jakub Jelinek  <jakub@redhat.com>

	* final.c (output_asm_insn): Make sure assembly dialects are
	terminated, not nested.  Output `|' and `}' characters if they
	don't appear inside assembly dialect selection.
	* config/i386/i386.md (rep_movdi_rex64, rep_movsi, rep_movsi_rex64,
	rep_movqi, rep_movqi_rex64, rep_stosdi_rex64, rep_stossi,
	rep_stossi_rex64, rep_stosqi, rep_stosqi_rex64, strsetsi_1,
	strsetsi_rex_1): Add {} braces.

2001-10-11  Zack Weinberg  <zack@codesourcery.com>

	* toplev.c (compile_file): Ignore return value from yyparse.
	Always pop any nested binding levels after yyparse returns.

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

	* doc/c-tree.texi (Expression trees): Add VTABLE_REF.

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

	* dwarf2out.c (add_const_value_attribute): If long < HOST_WIDE_INT,
	fall back to add_AT_long_long for large CONST_INT.

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

	* config/i386/i386.md (setcc splitters): Add four splitters to
	simplify compound compares that simplify_comparison can't handle.

2001-10-11  Zack Weinberg  <zack@codesourcery.com>

	* cpplex.c (digraph_spellings, token_spellings): Make static.

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

	* unroll.c (loop_iterations): Fixup last patch.

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

	* rtl.h (REG_VTABLE_REF): New.
	* rtl.c (reg_note_name): Add it.
	* combine.c (distribute_notes): Handle it.
	* final.c (final_scan_insn): Handle it.
	* tree.def (VTABLE_REF): New.
	* expr.c (expand_expr): Handle it.
	* varasm.c (assemble_vtable_entry, assemble_vtable_inherit): New.
	* output.h: Declare them.

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

	* dwarf2out.c (rtl_for_decl_location): If no DECL_RTL, look
	for a DECL_INITIAL.

2001-10-11  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (UNALIGNED_DOUBLE_INT_ASM_OP): Only
	available in 64-bit mode.

2001-10-11  Hans-Peter Nilsson  <hp@axis.com>

	* config.gcc: Add cris-*-aout, cris-*-elf, cris-*-none,
	cris-*-linux* cases.
	* config/cris/cris-protos.h: New file.
	* config/cris/cris.c: New file.
	* config/cris/cris.h: New file.
	* config/cris/cris.md: New file.
	* config/cris/linux.h: New file.
	* config/cris/aout.h: New file.
	* config/cris/arit.c: New file.
	* config/cris/cris_abi_symbol.c: New file.
	* config/cris/mulsi3.asm: New file.
	* config/cris/t-aout: New file.
	* config/cris/t-cris: New file.
	* config/cris/t-elfmulti: New file.
	* config/cris/t-linux: New file.
	* doc/invoke.texi: Add CRIS options.
	* doc/install.texi (Specific): Add blurb for CRIS.

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

	* config/float-i128.h: Make sure __STDC__VERSION__ is defined
	before using it.
	* config/float/i32.h: Likewise.
	* config/float-i386.h: Likewise.
	* config/float-i64.h: Likewise.
	* config/float-m68k.h: Likewise.
	* config/float-sh.h: Likewise.
	* config/float-sparc.h: Likewise.

2001-10-11  Hans-Peter Nilsson  <hp@axis.com>

	* doc/contrib.texi: Add note about CRIS port to my entry.

2001-10-11  Kazu Hirata  <kazu@hxi.com>

	* basic-block.h: Fix formatting.
	* bitmap.h: Likewise.
	* cpplib.h: Likewise.
	* c-tree.h: Likewise.
	* diagnostic.h: Likewise.
	* flags.h: Likewise.
	* ggc.h: Likewise.
	* longlong.h: Likewise.
	* real.h: Likewise.
	* reload.h: Likewise.
	* rtl.h: Likewise.
	* tree.h: Likewise.

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

	* c-parse.in (asm_operand): Allow named operands.
	* genconfig.c (max_recog_operands): Set to 29.
	* local-alloc.c (requires_inout): Skip multiple digits.
	* recog.c (asm_operand_ok): Likewise.
	(preprocess_constraints): Use strtoul for matching constraints.
	(constrain_operands): Likewise.
	* regmove.c (find_matches): Likewise.
	* reload.c (find_reloads): Likewise.
	* stmt.c (parse_output_constraint): Don't reject in-out
	constraint on operands > 9.  Reject '[' in constraint.
	(expand_asm_operands): Handle named operands.  Use strtoul
	for matching constraints.
	(check_operand_nalternatives): Split out from expand_asm_operands.
	(check_unique_operand_names): New.
	(resolve_operand_names, resolve_operand_name_1): New.

	* doc/extend.texi (Extended Asm): Document named operands.
	* doc/md.texi (Simple Constraints): Document matching constraints
	on operands > 9.

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

	* combine.c (try_combine): Handle a SEQUENCE of one insn.

	* i386.c (test splitter): Narrow tests vs paradoxical subregs.
	(jcc splitters): Add two splitters to simplify compound compares
	that simplify_comparison can't handle.

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

	* langhooks.c: Include langhooks.h.
	* Makefile.in (langhooks.o): Depend on it.

Wed Oct 10 23:49:06 EDT 2001  John Wehle  (john@feith.com)

	* rtlanal.c (noop_move_p): Insns with a REG_RETVAL note
	should not be considered as a no-op.
	* flow.c (delete_noop_moves): Handle REG_LIBCALL notes.

2001-10-10  Stan Shebs  <shebs@apple.com>

	* alias.c: Remove uses of "register" specifier in declarations
	of arguments and local variables.
	* c-common.c: Ditto.
	* c-convert.c: Ditto.
	* c-decl.c: Ditto.
	* c-format.c: Ditto.
	* c-semantics.c: Ditto.
	* c-typeck.c: Ditto.
	* caller-save.c: Ditto.
	* calls.c: Ditto.
	* cfg.c: Ditto.
	* cfgbuild.c: Ditto.
	* cfgrtl.c: Ditto.
	* collect2.c: Ditto.
	* combine.c: Ditto.
	* convert.c: Ditto.
	* cppexp.c: Ditto.
	* cppfiles.c: Ditto.
	* cse.c: Ditto.
	* dbxout.c: Ditto.
	* defaults.h: Ditto.
	* df.c: Ditto.
	* dwarf2out.c: Ditto.
	* dwarfout.c: Ditto.
	* emit-rtl.c: Ditto.
	* explow.c: Ditto.
	* expmed.c: Ditto.
	* expr.c: Ditto.
	* final.c: Ditto.
	* fix-header.c: Ditto.
	* floatlib.c: Ditto.
	* flow.c: Ditto.
	* fold-const.c: Ditto.
	* function.c: Ditto.
	* gcc.c: Ditto.
	* gcse.c: Ditto.
	* gen-protos.c: Ditto.
	* genattrtab.c: Ditto.
	* gencheck.c: Ditto.
	* genconfig.c: Ditto.
	* genemit.c: Ditto.
	* genextract.c: Ditto.
	* genflags.c: Ditto.
	* gengenrtl.c: Ditto.
	* genoutput.c: Ditto.
	* genpeep.c: Ditto.
	* genrecog.c: Ditto.
	* gensupport.c: Ditto.
	* global.c: Ditto.
	* gmon.c: Ditto.
	* graph.c: Ditto.
	* haifa-sched.c: Ditto.
	* hard-reg-set.h: Ditto.
	* hash.c: Ditto.
	* integrate.c: Ditto.
	* jump.c: Ditto.
	* lists.c: Ditto.
	* local-alloc.c: Ditto.
	* loop.c: Ditto.
	* mips-tdump.c: Ditto.
	* mips-tfile.c: Ditto.
	* optabs.c: Ditto.
	* prefix.c: Ditto.
	* print-rtl.c: Ditto.
	* read-rtl.c: Ditto.
	* real.c: Ditto.
	* recog.c: Ditto.
	* reg-stack.c: Ditto.
	* regclass.c: Ditto.
	* regmove.c: Ditto.
	* reload.c: Ditto.
	* reload1.c: Ditto.
	* reorg.c: Ditto.
	* resource.c: Ditto.
	* rtl.c: Ditto.
	* rtlanal.c: Ditto.
	* scan.c: Ditto.
	* sched-deps.c: Ditto.
	* sched-rgn.c: Ditto.
	* sdbout.c: Ditto.
	* simplify-rtx.c: Ditto.
	* stmt.c: Ditto.
	* stor-layout.c: Ditto.
	* toplev.c: Ditto.
	* tradcif.y: Ditto.
	* tradcpp.c: Ditto.
	* tree.c: Ditto.
	* unroll.c: Ditto.
	* varasm.c: Ditto.
	* xcoffout.c: Ditto.

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

	* rtl.h (can_reverse_comparison_p): Remove.

2001-10-10  Christopher Faylor <cgf@redhat.com>

	* config/i386/cygwin.h: Avoid adding include files if -nostdinc is
	used.

2001-10-10  Danny Smith  <danny_r_smith_2001@yahoo.co.nz>

	* config/i386/mingw32.h (WIN32_NO_ABSOLUTE_INST_DIRS): New define.
	(Thanks to Chris Faylor for suggesting macro name).
	(CPP_PREDEFINES): Define __MINGW32__ but don't set value; add more
	WIN32 defines.
	(STANDARD_INCLUDE_DIR): Remove i386- from directory name.
	(STANDARD_INCLUDE_COMPONENT): Change to MINGW.
	(MATH_LIBRARY): Undef before definition.
	(OUTPUT_QUOTED_STRING): Likewise.
	* config/i386/cygwin.h: Use WIN32_NO_ABSOLUTE_INST_DIRS.

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

	* unwind-dw2-fde.c (fde_compare_t): Change return type to int.
	(fde_unencoded_compare): Likewise.  Don't use subtraction to get
	a tristate comparison value.
	(fde_single_encoding_compare, fde_mixed_encoding_compare): Likewise.

2001-10-10  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c++/4512
	* unroll.c (loop_iterations): Ignore insns generated by loop
	unrolling.

	* config.gcc (mips*-*-gnu*): Delete support.
	* config/mips/gnu.h: Remove.

2001-10-10  Kazu Hirata  <kazu@hxi.com>

	* calls.c: Fix formatting.
	* c-decl.c: Likewise.
	* cfgcleanup.c: Likewise.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* dwarf2out.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* integrate.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* sched-rgn.c: Likewise.
	* sdbout.c: Likewise.
	* stmt.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.

2001-10-10  Janis Johnson  <janis187@us.ibm.com>, Alexandre Oliva  <aoliva@redhat.com>

	* langhooks.c: Include rtl.h, insn-config.h and integrate.h.
	* Makefile.in (langhooks.o): Add dependencies.

Wed Oct 10 00:41:29 EDT 2001  John Wehle  (john@feith.com)

	* rs6000.c (rs6000_emit_load_toc_table): Don't
	strdup the toc label.
	(create_TOC_reference): Likewise.

2001-10-09  Danny Smith  <danny_r_smith_2001@yahoo.co.nz>

	* config.gcc (i[34567]86-*-mingw32*): Make msvcrt-dependent
	version default.

2001-10-09  Danny Smith  <danny_r_smith_2001@yahoo.co.nz>

	* config/i386/i386.c (ix86_attribute_table): Correct
	min_len, max_len fields for dllimport, dllexport and shared.

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

	* doc/c-tree.texi, doc/cppinternals.texi, doc/extend.texi,
	doc/install.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi:
	Consistently use "nonzero" instead of "non-zero".

2001-10-09  Kazu Hirata  <kazu@hxi.com>

	* acconfig.h: Fix comment formatting.
	* c-dump.h: Likewise.
	* c-tree.h: Likewise.
	* conditions.h: Likewise.
	* expr.h: Likewise.
	* function.h: Likewise.
	* gthr.h: Likewise.
	* hwint.h: Likewise.
	* integrate.h: Likewise.
	* intl.h: Likewise.
	* loop.h: Likewise.
	* optabs.h: Likewise.

2001-10-09  Kazu Hirata  <kazu@hxi.com>

	* c-common.h: Fix comment formatting.
	* c-dump.c: Likewise.
	* cfg.c: Likewise.
	* diagnostic.h: Likewise.
	* except.c: Likewise.
	* gcc.h: Likewise.
	* gcov-io.h: Likewise.
	* genattrtab.c: Likewise.
	* output.h: Likewise.
	* predict.h: Likewise.
	* reload1.c: Likewise.
	* reload.h: Likewise.
	* resource.h: Likewise.
	* scan.h: Likewise.
	* system.h: Likewise.
	* tree.h: Likewise.
	* tree-inline.c: Likewise.
	* tsystem.h: Likewise.
	* varasm.c: Likewise.
	* xcoffout.h: Likewise.

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

	* doc/gcc.texi: Document preference for "nonzero" over "non-zero".

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

	* config/alpha/freebsd.h, config/alpha/lib1funcs.asm,
	config/i386/i386elf.h, config/i386/netbsd-elf.h,
	config/i386/netware.h, config/mcore/gfloat.h,
	config/mcore/mcore.c, config/mcore/mcore.h, config/mcore/mcore.md,
	config/netware.h, gccbug.in: Update FSF address.

2001-10-09  Kazu Hirata  <kazu@hxi.com>

	* c-common.c: Fix comment typos.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* global.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* protoize.c: Likewise.
	* regclass.c: Likewise.
	* reorg.c: Likewise.
	* rtl.h: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.
	* doc/cpp.texi: Likewise.
	* doc/c-tree.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/objc.texi: Likewise.
	* doc/tm.texi: Likewise.

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

	* varasm.c (set_named_section_flags): Initialize "declared".

2001-10-08  Robert Lipe  <robertlipe@usa.net>

	* varasm.c (struct in_named_entry): Add declared.
	(named_section_first_declaration): New function.
	(default_elf_asm_named_section): Use it.
	* output.h (named_section_first_declaration): New.

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

	* i386.md (movsi_xor): Export.
	(setcc peep2): Use it when available; add an alternative to
	match zero_extendhisi2_and.

2001-10-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* romp-protos.h (romp_initialize_trampoline): New function.
	* romp.c (romp_initialize_trampoline): Likewise.
	* romp.h (INITIALIZE_TRAMPOLINE): Define in terms of
	romp_initialize_trampoline.

2001-10-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m68k/3b1.h (ASM_OUTPUT_SOURCE_LINE): Don't reference `last_linenum'.
	* m68k/auxas.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* m68k/crds.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* m68k/mot3300.h (ASM_OUTPUT_SOURCE_LINE): Likewise.

2001-10-08  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* unroll.c (loop_iterations): Extend check for multiple back edges.

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

	* langhooks.h: New file.
	* Makefile.in (OBJS): Added langhooks.o.
	(c-lang.o): Depend on langhooks.h.
	(c-common.o): Don't depend on tree-inline.h.
	(tree-inline.o): Depend on toplev.h.
	(langhooks.o): New rule.
	* c-common.c: Don't include tree-inline.h.
	(c_mark_lang_decl): Mark argument c as unused.
	(c_common_lang_init): Don't initialize hooks here.
	* c-lang.c: Include langhooks.h, then override some macros.
	(lang_hooks): Initialize with macros in langhooks.h.
	(c_init): Don't initialize hooks here.
	* toplev.c (struct lang_hooks_for_tree_inlining): New struct.
	(struct lang_hooks): Add tree_inlining.  Refer to langhooks.h.
	* tree-inline.c: Include toplev.h.  Don't define hook variables.
	* tree-inline.h: Don't define hook types nor declare hook
	variables.  Move macros to...
	* langhooks.c: ... new file, as functions.  Adjust all callers.

2001-10-08  Jeffrey A Law  <law@cygnus.com>

	* sibcall.c (optimize_sibling_and_tail_recursive_calls): Call
	purge_mem_unchanging_flag on all instructions, not just on those
	before NOTE_INSN_FUNCTION_BEG.

2001-10-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (_cpp_create_definition): Leave comments off.

	* doc/cpp.texi: Update.

2001-10-08  DJ Delorie  <dj@redhat.com>

	* c-decl.c (grokfield): Make sure the only unnamed fields
	we're allowing are either structs or unions.
	* doc/extend.texi: Add documentation for the unnamed field
	extension.

2001-10-08  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (gcc_AC_PROG_GNAT): New.
	* configure.in: Use it.
	* configure: Regenerated.
	* config/pa/t-linux, config/pa/t-pa, config/pa/t-pa64,
	config/pa/t-pro: Set T_ADAFLAGS, not ADA_CFLAGS.

2001-10-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (open_file): Don't mark zero-length files
	never-reread here.  Don't output diagnostics here either.
	(stack_include_file): Mark them never-reread here.
	(_cpp_read_file): Update.

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

	* config/i386/sol2.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.

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

	* expr.c (store_expr): When converting a CONST_INT for storage
	in a SUBREG, convert it to both SUBREG modes before stripping
	the SUBREG.

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

	* varasm.c (restore_varasm_status): New.
	* function.h: Declare it.
	* function.c (pop_function_context_from): Call it.

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

	* c-common.h (struct c_lang_decl): Add declared_inline.
	* c-tree.h (DECL_DECLARED_INLINE_P): New.
	* c-lang.c (c_disregard_inline_limits): Use it.
	* c-decl.c (duplicate_decls): Likewise.
	(pushdecl, redeclaration_error_message): Likewise.
	(pushdecl): Allocate DECL_LANG_SPECIFIC if needed.
	(grokdeclarator): Likewise.  Set DECL_DECLARED_INLINE_P.
	Set DECL_INLINE if -finline-functions.
	(store_parm_decls): Don't allocate DECL_LANG_SPECIFIC here.

2001-10-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (funlike_invocation_p): Move some logic to caller
	in enter_macro_context.  Create a padding token in its own context
	if necessary when the search for '(' fails.
	(enter_macro_context): Update.

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

	* ChangeLog.2, c-decl.c, config/i386/i386.md, doc/gcc.texi, gcc.c,
	genmultilib, toplev.c: Fix spelling errors of "separate" as
	"seperate", and corresponding spelling errors of related words.

2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_setjmp_receiver): Const-ify.
	* c-common.c (fname_var_t, c_tree_code_type, c_tree_code_length):
	Likewise.
	* c-dump.c (dump_option_value_info): Likewise.
	* c-format.c (format_length_info, format_char_info,
	format_flag_spec, format_flag_pair, format_kind_info): Likewise.
	* collect2.c (names): Likewise.
	* cppdefault.h (default_include): Likewise.
	* cppexp.c (suffix, vsuf_1, vsuf_2, vsuf_3): Likewise.
	* flow.c (life_analysis): Likewise.
	* gcc.c (dir_separator_str, modify_target, option_map,
	target_option_translations, spec_list_1, extra_specs_1,
	init_spec): Likewise.
	* gcov.c (gcov_version_string): Likewise.
	* genattr.c (write_units): Likewise.
	* genattrtab.c (make_length_attrs, write_function_unit_info): Likewise.
	* gengenrtl.c (rtx_definition, defs): Likewise.
	* genrecog.c (pred_table): Likewise.
	* global.c (global_alloc): Likewise.
	* lcm.c (optimize_mode_switching): Likewise.
	* local-alloc.c (find_free_reg): Likewise.
	* params.h (param_info): Likewise.
	* predict.c (predictor_info): Likewise.
	* protoize.c (unexpansion_struct): Likewise.
	* real.c (bmask): Likewise.
	* recog.h (insn_operand_data, insn_data): Likewise.
	* regclass.c (initial_fixed_regs, initial_call_used_regs): Likewise.
	* stmt.c (expand_nl_goto_receiver): Likewise.
	* toplev.c (da, debug_args, lang_opt, documented_lang_options,
	target_switches, target_options): Likewise.
	* tradcif.y (token, tokentab2, yylex): Likewise.
	* tree.h (attribute_spec): Likewise.

	* alpha.c (override_options, alpha_lookup_xfloating_lib_func):
	Likewise.
	* arc.c (arc_output_function_epilogue): Likewise.
	* arm.c (processors, all_cores, all_architectures,
	arm_override_options, isr_attribute_arg, isr_attribute_args,
	arm_isr_value): Likewise.
	* avr.c (mcu_type_s, reg_class_tab, order_regs_for_local_alloc):
	Likewise.
	* c4x.c (c4x_int_reglist): Likewise.
	* d30v.c (override_options): Likewise.
	* h8300.c (shift_insn): Likewise.
	* i386.c (size_cost, i386_cost, i486_cost, pentium_cost,
	pentiumpro_cost, k6_cost, athlon_cost, pentium4_cost, ix86_cost,
	ix86_expand_sse_comi, ix86_expand_sse_compare, override_options,
	builtin_description, bdesc_comi, bdesc_2arg, bdesc_1arg,
	ix86_init_mmx_sse_builtins, ix86_expand_builtin): Likewise.
	* i386.h (processor_costs, ix86_cost): Likewise.
	* m68hc11.c (m68hc11_cost, m6811_cost, m6812_cost): Likewise.
	* m68hc11.h (processor_costs, m68hc11_cost): Likewise.
	* m68k.c (codes_68881, codes_FPA): Likewise.
	* m88k.c (mode_from_align, max_from_align, all_from_align,
	best_from_align, m_options): Likewise.
	* m88k.h (ORDER_REGS_FOR_LOCAL_ALLOC): Likewise.
	* mcore.c (mode_from_align): Likewise.
	* mips/elf64.h (UNIQUE_SECTION): Likewise.
	* mips/iris6gld.h (UNIQUE_SECTION): Likewise.
	* mips.c (mips_sw_reg_names, mips_regno_to_class): Likewise.
	* mips.h (mips_regno_to_class): Likewise.
	* ns32k.c (scales): Likewise.
	* pa.c (import_string, magic_milli): Likewise.
	* rs6000.c (alt_reg_names, rs6000_override_options): Likewise.
	* sparc.c (leaf_reg_remap, sparc_override_options,
	reg_leaf_alloc_order, reg_nonleaf_alloc_order, reg_alloc_orders):
	Likewise.
	* sparc.h (sparc_cpu_select, leaf_reg_remap): Likewise.

2001-10-07  Dale Johannesen  <dalej@apple.com>

	* reload1.c (reload_reg_free_p): Teach register interference
	checking that multiple output reloads are emitted in
	reverse order.
	reload1.c (reload_reg_reaches_end_p):  Ditto.
	reload1.c (reloads_conflict):  Ditto.

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

	* doc/c-tree.texi, doc/tm.texi: Consistently put NULL and
	NULL_TREE inside @code.

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

	* doc/gcc.texi: Document consistent style of "32-bit",
	"Objective-C", and "@code{NULL}".

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

	* cpplex.c (enum spell_type): Add SPELL_NUMBER.
	(cpp_token_len, cpp_spell_token, cpp_output_token,
	_cpp_equiv_tokens): Handle it.
	* cpplib.h (TTYPE_TABLE): Use SPELL_NUMBER for CPP_NUMBER and
	CPP_COMMENT, SPELL_NONE for CPP_PADDING and CPP_EOF.
	* cppexp.c (_cpp_parse_expr): Use the correct operator code in
	error messages.

Sat Oct  6 07:42:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc.c (default_compilers): Remove .ada.

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

	* doc/cppinternals.texi: Update.

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

	* gcc.c (main): Set this_file_error if the appropriate
	compiler for a language has not been installed.

2001-10-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_va_arg): Use set_mem_alias_set.

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

	* gccbug.in (CATEGORIES): Add ada.

2001-10-05  Catherine Moore  <clm@redhat.com>

	* config/stormy16/stormy-abi:  Document abi changes.
	* config/stormy16/stormy16.h (REG_ALLOC_ORDER): Redefine.
	(ICALL_REGS): New register class.
	(NUM_ARGUMENT_REGISTERS): Now 6.
	(DEFAULT_PCC_STRUCT_RETURN): Don't try to return structs
	in registers.
	(REG_CLASS_FROM_LETTER): Map 'z' to ICALL_REGS.
	* config/stormy16.md (call_internal, call_value_internal,
	indirect_jump): Use new 'z' constraint.

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

	* doc/cppinternals.texi: Update.

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

	* dwarf2out.c (FRAME_BEGIN_LABEL): New.
	(output_call_frame_info): Use it instead of __FRAME_BEGIN__ and
	the gas section-name-as-label feature.

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

	* doc/cppinternals.texi: Update.

Fri Oct  5 08:17:46 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.c (ix86_split_to_parts): Use trunc_int_for_mode
	to ensure valid SImode constants.

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

	* Makefile.in (c-decl.o): Depend on tree-inline.h.
	(c-lang.o): Likewise, as well as insn-config.h and integrate.h.
	* c-decl.c: Include tree-inline.h.
	(c_expand_body): Call optimize_inline_calls. Determine whether
	a function is inlinable upfront, and only clear
	DECL_SAVED_TREE, DECL_INITIAL and DECL_ARGUMENTS if it isn't.
	* c-lang.c: Include tree-inline.h, insn-config.h and integrate.h.
	(c_disregard_inline_limits): New function.
	(inline_forbidden_p, c_cannot_inline_tree_fn): Likewise.
	(c_post_options): Enable tree inlining if inlining is enabled.
	Don't inline trees when instrumenting functions.
	(c_init): Initialize lang_disregard_inline_limits and
	lang_cannot_inline_tree_fn.
	* tree-inline.c (initialize_inlined_parameters): Handle calls
	with fewer arguments than declared parameters, and fewer
	parameters than passed arguments.  Don't assume value is a
	DECL.
	(declare_return_variable): Convert return value back to the
	original type, if it was promoted.
	(tree_inlinable_function_p): New function.
	(inlinable_function_p): Don't look at DECL_INLINE if we're
	inlining all functions.  Make it work with a NULL id.
	Re-check DECL_UNINLINABLE after language-specific checks.
	* tree-inline.h (tree_inlinable_function_p): Declare it.
	* integrate.c (save_for_inline): Don't bother to prepare argvec
	when not inlining.
	* cse.c (check_for_label_ref): Don't check deleted labels.

	* Makefile.in (tree-inline.o): Depend on newly-included headers.
	* tree-inline.c: Include headers needed for the functions moved in.
	(struct inline_data, INSNS_PER_STMT): Moved from cp/optimize.c.
	(remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
	(copy_body, initialize_inlined_parameters): Likewise.
	(declare_return_variable, inlinable_function_p): Likewise.
	(expand_call_inline, expand_calls_inline): Likewise.
	(optimize_inline_calls, clone_body): Likewise.
	(walk_tree, walk_tree_without_duplicates): Moved from cp/tree.c.
	(copy_tree_r, remap_save_expr): Likewise.

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

	* Makefile.in (OBJS): Added tree-inline.o.
	(c-common.o): Depend on tree-inline.h.
	(tree-inline.o): New target.
	* c-common.c: Include tree-inline.h.
	(c_mark_lang_decl): Don't mark saved_tree.
	(c_common_lang_init): Set lang_anon_aggr_type_p.
	* c-common.h (walk_tree_fn, DECL_SAVED_TREE): Moved to tree.h.
	(struct c_lang_decl): Moved saved_tree to tree_decl.
	* ggc-common.c: Mark saved_tree and inlined_fns of FUNCTION_DECLs.
	* integrate.h (function_attribute_inlinable_p): Declare it.
	* integrate.c (function_attribute_inlinable_p): Export it.
	* tree-inline.c: New file.  Define variables declared in...
	* tree-inline.h: New file.  Declare functions to be moved to
	tree-inline.c.  Define macros and declare types and hooks for
	language-specific tree inlining.
	(flag_inline_trees): Moved definition from cp/decl2.c.
	* tree.h (walk_tree_fn, DECL_SAVED_TREE): Moved from c-common.h.
	(TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved from cp/cp-tree.h.
	(struct tree_decl): Moved saved_tree from c_lang_decl and
	inlined_fns from C++'s lang_decl.

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

	* Makefile.in (STAGE2_FLAGS_TO_PASS): Remove patches which
	propagated HOST_CC, HOST_CFLAGS, HOST_LDFLAGS and HOST_CPPFLAGS.

2001-10-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* doc/cppinternals.texi: Update.

2001-10-04  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (init_cumulative_args): Remember to set
	cum->prototype.
	* config.gcc: Redo linux configuration. Add target_cpu_default
	of soft-float to all mipsisa32 combinations and tx39.
	* config/mips/linux.h: Remove include of mips.h.

2001-10-03  Loren J. Rittle  <ljrittle@acm.org>

	* Makefile.in (STAGE2_FLAGS_TO_PASS): Propagate HOST_CFLAGS,
	HOST_LDFLAGS and HOST_CPPFLAGS.

2001-10-03  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (objc_inherit_code, objc_pq_context,
	objc_public_flag): Make static.
	(objc_interface_context, objc_implementation_context,
	objc_method_context, objc_ivar_chain, objc_ivar_context): Move to
	global tree array in objc/objc-act.[ch].
	(methoddef): Remove unnecessary code.

	* objc/objc-act.c: (hashed_attribute, hashed_entry, imp_entry):
	Hoist struct definitions to objc-act.h.
	(nst_method_hash_list, cls_method_hash_list, imp_list, imp_count,
	cat_count): Place declaration in objc-act.h.
	(objc_tree_index): Move enumeration to objc-act.h.
	(objc_global_trees): Place declaration and macro accessors in
	objc-act.h.
	(implementation_context): Remove duplicate; use
	objc_implementation_context instead:
	(method_context): Remove duplicate; use objc_method_context
	instead.
	(objc_ellipsis_node, objc_method_prototype_template,
	implemented_classes, function_type): Move global vars to
	objc_global_trees.
	(init_objc): Use LAST_BASE_TREE_CODE instead of LAST_CODE.
	(build_message_expr): Move actual construction of ObjC message
	send nodes to finish_message_expr.
	(finish_message_expr): New routine, contains code formerly in
	build_message_expr.
	* objc/objc-act.h (finish_message_expr): New prototype.
	(objc_ivar_chain, objc_method_context, objc_ellipsis_node): Remove
	declarations; these vars are now part of objc_global_trees.
	(objc_tree_index, objc_global_trees): Move definitions from
	objc-act.c.
	* objc/objc-tree.def: Update copyright info.

Wed Oct  3 12:22:11 EDT 2001  John Wehle  (john@feith.com)

	* dwarf2asm.c (unaligned_integer_asm_op): Abort if
	op is NULL.
	* sparc/sysv4.h (UNALIGNED_DOUBLE_INT_ASM_OP): Use
	only if TARGET_ARCH64.

2001-10-02  Bernd Schmidt  <bernds@redhat.com>

	* doc/extend.texi: Fix some problems with previous checkin.
	* doc/invoke.texi: Likewise.

2001-10-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h: Update comments.
	(cpp_context): Update.
	(spec_nodes): Remove n__Pragma.
	* cppinit.c (cpp_create_reader): Update.
	(builtin_array): Add _Pragma.
	* cpplib.h: Update comments.
	(NODE_DISABLED, BT_PRAGMA): New.
	(cpp_start_lookahead, cpp_stop_lookahead): Remove prototypes.
	* cppmacro.c (struct cpp_macro): Remove disabled.
	(builtin_macro): Return int, handle _Pragma, push the new token
	on the context stack.
	(funlike_invocation_p): Unconstify, update.
	(enter_macro_context): Handle builtins here.
	(replace_args, push_token_context, push_ptoken_context):
	Update for prototype changes.
	(_cpp_pop_context): Update.
	(cpp_get_token): Don't handle buitins, nor _Pragma here.
	(cpp_sys_macro_p): Update.
	(_cpp_free_definition): Clear disabled flag.
	(_cpp_create_definition): Upate.
	* cppmain.c: Update comments.

Tue Oct  2 12:46:01 CEST 2001  Bo Thorsen     <bo@suse.co.uk>,
				Andreas Jaeger <aj@suse.de>,
				Jan Hubicka    <jh@suse.cz>

	* doc/invoke.texi (i386 Options): Document x86-64 options.
	(i386 and x86-64 Options): Rename i386 options section.

	* config/i386/i386.h (TARGET_UNWIND_INFO): New.
	(TARGET_SWITCHES): Add -munwind-info.
	(MASK_NO_UNWIND_INFO): New.
	(NO_BUILTIN_SIZE_TYPE, NO_BUILTIN_PTRDIFF_TYPE): Define for
	biarch compilation.
	(ASM_OUTPUT_DOUBLE_INT): New.

	* config/i386/linux64.h: New spec file for Linux x86-64 support.
	* config.gcc: Fix tm_file settings for x86-64.
	* config/i386/x86-64.h: New file with OS independent x86-64
	definitions.
	* config/i386/biarch64.h: New file used to configure compiler
	to biarch/64bit compilation.

	* config/i386/i386.c: (override_options): Set flags default
	for 64bit compilation.

Tue Oct  2 12:46:01 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (legitimize_pic_address): Add missing bits of 64bit support.
	(ix86_expand_int_movcc): Optimize DImode conditional moves with
	constants on x86_64.
	(ix86_attr_length_immediate_default): Support MODE_DI.
	* i386.md (fixdi splitter): Add missing "&& 1" in splitter
	condition.
	(indirect_jump, tablejump): Turn into expander.

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

	* c-common.c (c_format_attribute_table): Make format and
	format_arg attributes apply to function types rather than to
	decls.
	(is_valid_printf_arglist): Construct an attribute list and pass
	that to check_function_format rather than a name.
	* c-common.h (check_function_format): Adjust prototype.
	* c-decl.c (duplicate_decls): Preserve attributes from type of
	built-in decl when allowing for harmless conflict in types.
	* c-format.c (record_function_format,
	record_international_format, function_format_list,
	international_format_info, international_format_list): Remove.
	(function_format_info): Remove next, name and assembler_name.
	Make format_num and first_arg_num be unsigned HOST_WIDE_INT.
	(decode_format_attr): New.
	(handle_format_attribute): Handle receiving a type rather than a
	decl.  Call decode_format_attr.  Store format information in a
	function_format_info.
	(handle_format_arg_attribute): Correct comment.  Handle receiving
	a type rather than a decl.  Use unsigned HOST_WIDE_INT for
	arg_num.
	(check_format_info_recurse, check_format_info_main): Take argument
	numbers as unsigned HOST_WIDE_INT.
	(check_function_format): Take a list of attributes from the
	function type rather than a name or assembler name.  Check for
	format attributes in that list and the attributes on the type of
	the current function rather than looking through
	function_format_list.
	(check_format_info): Use unsigned HOST_WIDE_INT for argument
	numbers.
	(check_format_info_recurse): Take format_arg attributes from the
	type of the function calls rather than using
	international_format_list.  Allow for multiple format_arg
	attributes.
	* c-typeck.c (build_function_call): Pass type attributes to
	check_function_format rather than name or assembler name.  Don't
	require there to be a name or assembler name to check formats.

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

	* attribs.c (decl_attributes): Possibly call
	insert_default_attributes to insert default attributes on
	functions in a lazy manner.
	* builtin-attrs.def: New file; define the default format and
	format_arg attributes.
	* c-common.c (c_format_attribute_table): Move to earlier in the
	file.
	(c_common_nodes_and_builtins): Initialize format_attribute_table.
	(enum built_in_attribute, built_in_attributes,
	c_attrs_initialized, c_init_attributes,
	c_common_insert_default_attributes): New.
	(c_common_lang_init): Don't initialize format_attribute_table.  Do
	call c_init_attributes.
	* Makefile.in (c-common.o): Depend on builtin-attrs.def.
	* c-common.h (init_function_format_info): Don't declare.
	(c_common_insert_default_attributes): Declare.
	* c-decl.c (implicitly_declare, builtin_function): Call
	decl_attributes.
	(init_decl_processing): Don't call init_function_format_info.
	(insert_default_attributes): New.
	* c-format.c (handle_format_attribute,
	handle_format_arg_attribute): Be quiet about inappropriate
	declaration when applying default attributes.
	(init_function_format_info): Remove.
	* tree.h (enum attribute_flags): Add ATTR_FLAG_BUILT_IN.
	(insert_default_attributes): Declare.

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

	* c-format.c (CPLUSPLUS_STD_VER): Define to STD_C94.

2001-10-01  Jim Wilson  <wilson@redhat.com>

	* sched-deps.c (add_dependence): When elide conditional dependence,
	check that insn doesn't modify cond2.

2001-10-01  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.h (enum processor_type): Add support
	for 7400 (G4) and 7450.
	(RTX_COSTS): Ditto.
	* config/rs6000/rs6000.c (rs6000_override_options): Ditto.
	(rs6000_issue_rate): Ditto.
	(rs6000_adjust_cost): Fix cycle counts for compares.
	(debug_stack_info):  Fix an obvious typo.
	* config/rs6000/rs6000.md: Add functional units for 7400 and 7450.
	* doc/invoke.texi: Document.
	* config/rs6000/darwin.h (TARGET_DEFAULT): Set to be reasonable
	for Darwin.
	(PROCESSOR_DEFAULT): Ditto.

2001-10-01  Loren J. Rittle  <ljrittle@acm.org>

	* Makefile.in (STAGE2_FLAGS_TO_PASS): Propagate HOST_CC.
	(fixinc.sh): Map CC, CFLAGS and LDFLAGS to HOST_* versions for
	later recursive make invocation.

2001-10-01  Hans Boehm  <boehm@acm.org>

	* optabs.c (emit_libcall_block): When using non-call exceptions,
	don't add REG_LIBCALL reg notes to trapping calls.

2001-10-01  David Billinghurst <David.Billinghurst@riotinto.com>

	* flow.c (propagate_block_delete_libcall): Remove unused first arg
	(propagate_one_insn):  Update for above change

2001-10-01  David Billinghurst <David.Billinghurst@riotinto.com>

	* unwind-sjlj.c (_Unwind_GetRegionStart, _Unwind_GetDataRelBase,
	_Unwind_GetTextRelBase): Argument is unused.

Mon Oct  1 19:20:57 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (get_alias_set): Try to replace PLACEHOLDER_EXPR.
	Loop through NOPs, placeholders, and components.
	Don't go through NOPs if change mode.
	(record_alias_subset): Do nothing if SUBSET and SET are the same.
	* emit-rtl.c (set_mem_alias_set): Enable check.
	* expr.c (find_placeholder): New function.
	(expand_expr, case PLACEHOLDER_EXPR): Use it.
	(expand_expr, case COMPONENT_EXPR): Always copy OP0 when we need
	to modify it and avoid unneeded copies.
	* expr.h (expand_expr): Always define.
	(find_placeholder): New declaration.

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

	* config/m68hc11/m68hc11.md ("add-split"): Fix add split when
	operand 2 is the stack pointer.
	("addr-peephole"): Fix address computation peephole when operand 2
	is the stack pointer.

Mon Oct  1 09:26:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.c (ix86_va_arg): Call set_mem_alias_set.
	(ix86_setup_incoming_varargs): Likewise.

2001-10-01  Jason Merrill  <jason_merrill@redhat.com>

	* stor-layout.c (layout_type): Don't complain about too-large
	array here.

Mon Oct  1 06:43:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (keep_stack_depressed): Don't use delete_insn.

	* expr.h (set_mem_alias_set): Move decl to here.
	* rtl.h (mem_attrs): New typedef and struct.
	(union rtunion_def): Add field for mem_attrs.
	(X0MEMATTR, MEM_ATTRS): New macros.
	(MEM_ALIAS_SET): Use MEM_ATTRS.
	(MEM_DECL, MEM_OFFSET, MEM_SIZE, MEM_ALIGN): New macros.
	(MEM_COPY_ATTRIBUTES): Copy MEM_ATTRS.
	(set_mem_alias_set): Delete decl from here.

	* alias.c (set_mem_alias_set): Delete from here.
	* emit-rtl.c (mem_attrs_htab): New variable.
	(rtx_htab_mark, rtx_htab_mark_1): Deleted.
	(mem_attrs_htab_hash, mem_attrs_htab_eq): New functions.
	(mem_attrs_mark, get_mem_attrs): Likewise.
	(gen_rtx_MEM): Clear MEM_ATTRS.
	(set_mem_attributes): Move to here.
	(set_mem_alias_set): Likewise, and call get_mem_attrs.
	(init_emit_once): const_int_htab now deletable htab.
	Initialize mem_attrs_htab.
	* explow.c (set_mem_attributes): Delete from here.
	* function.c (put_var_into_stack): Clear MEM_ATTRS.
	(gen_mem_addressof): Likewise; rework to use set_mem_attributes.
	* ggc-common.c (ggc_mark_rtx_children, case MEM): New case.
	* reload1.c (reload): Rework changing REG to MEM.

2001-09-30  H.J. Lu <hjl@gnu.org>

	* acconfig.h (PREFIX_INCLUDE_DIR): New variable.
	* config.in: Rebuild.

2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("cmpqi_1"): Fix constraints.
	("tsthi_1"): Avoid allocation in register y.
	("*movqi_68hc12"): Reorganize and fix constraints.
	("zero_extendqisi2"): Prefer d over x and y for operand 1.
	("addqi3"): Likewise.
	("addhi3"): Fix constraints.
	("*logicalhi3_zexthi"): Disparage soft registers.

2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Fix move of sp
	to tmp reg.

2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h(INCOMING_RETURN_ADDR_RTX): Remove so
	that we use setjmp/longjmp exceptions.

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

	* cpphash.h (POOL_ALIGN, POOL_FRONT, POOL_LIMIT, POOL_BASE,
	POOL_SIZE, POOL_ROOM, POOL_COMMIT, struct cpp_chunk,
	struct cpp_pool, _cpp_init_pool, _cpp_free_pool, _cpp_pool_reserve,
	_cpp_pool_alloc, _cpp_next_chunk): Remove.
	(_cpp_extend_buff, BUFF_ROOM): Update.
	(_cpp_append_extend_buff): New.
	(struct cpp_reader): Remove macro_pool, add a_buff.
	* cppinit.c (cpp_create_reader): Initialize a_buff, instead of
	macro_pool.
	(cpp_destroy): Free a_buff instead of macro_pool.
	* cpplex.c (new_chunk, chunk_suitable, _cpp_next_chunk,
	new_chunk, _cpp_init_pool, _cpp_free_pool, _cpp_pool_reserve,
	_cpp_pool_alloc, ): Remove.
	(parse_number, parse_string): Update use of _cpp_extend_buff.
	(_cpp_extend_buff): Update.
	(_cpp_append_extend_buff, cpp_aligned_alloc): New.
	* cpplib.c (glue_header_name, parse_answer):
	Update use of _cpp_extend_buff.
	(cpp_register_pragma, cpp_register_pragma_space): Use
	_cpp_aligned_alloc.
	(do_assert, do_unassert): Check for EOL, update.
	* cppmacro.c (stringify_arg, collect_args): Update to use
	_cpp_extend_buff and _cpp_append_extend_buff.
	(save_parameter, parse_params, alloc_expansion_token,
	_cpp_create_definition): Rework memory management.

2001-09-29  Andris Pavenis  <pavenis@lanet.lv>

	* config/i386/xm-djgpp.h (GCC_DRIVER_HOST_INITIALIZATION): Don't
	update md_exec_prefix.
	(UPDATE_PATH_HOST_CANONICALIZE): Don't free PATH as it can point
	to string constant.

2001-09-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (EXTRA_CC_MODES): Add CCLmode.
	(SELECT_CC_MODE): Use s390_select_ccmode.
	* config/s390/s390-protos.h (s390_select_ccmode): Add.
	* config/s390/s390.c (s390_select_ccmode): New.
	(s390_match_ccmode): Add CCLmode.
	(s390_branch_condition_mask, s390_branch_condition_mnemonic): New.
	(output_branch_condition, output_inverse_branch_condition): Removed.
	(print_operand): Use s390_branch_condition_mnemonic.
	* config/s390/s390.md (addsi3_cc, addsi3_cconly, addsi3_cconly2,
	subsi3_cc, subsi3_cconly): Use logical instructions and CCLmode.
	(bunordered, bordered, buneq, bungt, bunlt, bnuge, bunle, bltgt): New.

	* config/s390/s390.c (check_and_change_labels): Preserve CC mode
	when converting conditional branches to far branches.
	* config/s390/s390.md (cmpstr_const, cmpstr_64, cmpstr_31, cmpint_si,
	cmpint_di): Use CCSmode instead of CCUmode.

	* config/s390/s390.c (legitimate_la_operand_p): New.
	* config/s390/s390-protos.h (legitimate_la_operand_p): Add.
	* config/s390/s390.md (movsi): Convert load address patterns to
	arithmetic operations when necessary.
	(addaddr_picR, addaddr_picL, addaddr_picN): Removed.
	(do_la): Renamed to *do_la and use legitimate_la_operand_p.
	(*do_la_reg_0): Don't use before reload.

	* config/s390/s390.c (legitimize_address): Make more efficient
	use of two-register addressing mode.

	* config/s390/s390.c (s390_function_prologue): Fix incorrect prolog
	with -mno-backchain in some corner cases.

	* config/s390/s390.md (cmpsi_cct): Operands 0 and 1 do not commute.

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

	* reload.c (find_reloads): Mark new USE insns with QImode.
	(find_reloads_toplev, find_reloads_address, subst_reg_equivs,
	find_reloads_subreg_address): Likewise.
	* regrename.c (note_sets, clear_dead_regs): Abort if pseudos are
	encountered.
	* reload1.c (reload_combine_note_use): Likewise, inside USEs and
	CLOBBERs.
	(reload): Make sure there are no USEs with mode other than
	VOIDmode.  At the end, remove those marked with QImode.

2001-09-29  Per Bothner  <per@bothner.com>

	* cppdefault.c (cpp_include_defaults):  Also search PREFIX_INCLUDE_DIR.
	* Makefile.in (includedir):  Rename to local_includedir.
	(includedir):  Define as $(prefix)/include.
	* config.in (PREFIX_INCLUDE_DIR):  New variable.
	* configure.in (PREFIX_INCLUDE_DIR):  Test for new variable.

2001-09-29  Bernd Schmidt  <bernds@redhat.com>

	* config/i386/i386.c (init_mmx_sse_builtins): Fix type of storelps and
	storehps builtins.
	* doc/extend.texi (Vector Extensions): New node.
	* doc/invoke.texi (Machine Dependent Options): Add documentation for
	i386 -mmmx, -msse, -m3dnow.

Sat Sep 29 15:08:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* doc/invoke.texi (Optimize Options): Revert an accidental checkin.

2001-09-29  Hans-Peter Nilsson  <hp@axis.com>

	* cse.c (cse_insn) [HAVE_cc0]: Fix typo delete-insn -> delete_insn.

	* doc/invoke.texi (Optimize Options): Delete spurious @table.

2001-09-28  Richard Henderson  <rth@redhat.com>

	* varasm.c (assemble_integer): Bound alignment check by
	BIGGEST_ALIGNMENT.

	* cfgrtl.c (redirect_edge_and_branch): Abort if redirect_jump fails.

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

	* config/i386/sol2.h (CPLUSPLUS_CPP_SPEC): Define.

2001-09-25  Bernd Schmidt  <bernds@redhat.com>

	Mostly from Graham Stott  <grahams@redhat.com>
	* c-common.c (type_for_mode): Add support for V2SFmode.
	* tree.c (build_common_tree_nodes_2): Likewise.
	* tree.h (enum tree_index, global_trees): Likewise.
	* config/i386/i386.c (x86_3dnow_a): New variable.
	(override_options): Support 3Dnow extensions.
	(bdesc_2arg, bdesc_1arg): Some SSE instructions are also part of
	Athlon's version of 3Dnow.
	(ix86_init_mmx_sse_builtins): Create 3Dnow builtins.
	(ix86_expand_builtin): Handle them.
	(ix86_hard_regno_mode_ok): Support V2SFmode if using 3Dnow.
	* config/i386/i386.h (MASK_3DNOW, MASK_3DNOW_A, TARGET_3DNOW,
	TARGET_3DNOW_A): New macros.
	(TARGET_SWITCHES): Add 3Dnow switches.
	(VALID_MMX_REG_MODE_3DNOW): New macro.
	(VECTOR_MODE_SUPPORTED_P): Use it.
	(enum ix86_builtins): Add entries for 3Dnow builtins.
	* config/i386/i386.md (movv2sf_internal, movv2sf, pushv2sf, pf2id,
	pf2iw, addv2sf3, subv2sf3, subrv2sf3, gtv2sf3, gev2sf3, eqv2sf3,
	pfmaxv23sf3, pfminv2sf3, mulv2sf3, femms, prefetch_3dnow, prefetchw,
	pfacc, pfnacc, pfpnacc, pi2fw, floatv2si2, pavgusb, pfrcpv2sf2,
	pfrcpit1v2sf3, pfrcpit2v2sf3, pfrsqrtv2sf2, pfrsqit1v2sf3,
	pmulhrwvhi3, pswapdv2si2, pswapdv2sf2): New patterns.
	(mmx_pmovmskb, mmx_maskmovq, sse_movntdi, umulv4hi3_highpart,
	mmx_uavgv8qi3, mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pextrw,
	mmx_pshufw, umaxv8qi3, smaxv4hi3, uminv8qi3, sminv4hi3, sfence,
	sfence_insn, prefetch): Make these available if TARGET_SSE or
	TARGET_3DNOW_A.

Fri Sep 28 19:18:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_setup_incoming_varargs, ix86_va_arg,
	ix86_va_start, ix86_build_va_list): Declare.
	* i386.c (ix86_setup_incoming_varargs, ix86_va_arg,
	ix86_va_start, ix86_build_va_list): New global functions.
	* i386.md (sse_prologue_save_insn): New insn.
	(sse_prologue_save): New expander.
	* i386.h (EXPAND_BUILTIN_VA_ARG, EXPAND_BUILTIN_VA_START,
	BUILD_VA_LIST_TYPE, SETUP_INCOMING_VARARGS): New macros.

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

	* cpplex.c (new_buff, _cpp_get_buff, _cpp_extend_buff):
	Use size_t everywhere, make definitions consistent with
	prototypes.

Fri Sep 28 14:59:34 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (replace_store_insn): Use delete_insn.
	* loop.c (move_movables): Likewise; avoid delete_insn
	from clobbering notes moved elsewhere.
	(check_dbra_loop): Use delete_insn.
	* ssa.c (convert_from_ssa): Likewise.
	* cse.c (cse_insn): Use delete_insn.

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

	* cpphash.h (struct cpp_buff): Make unsigned.
	(_cpp_get_buff): Take length of size_t.
	(_cpp_unaligned_alloc): New.
	(BUFF_ROOM, BUFF_FRONT, BUFF_LIMIT): New.
	(struct cpp_reader): Remove ident_pool.  Add u_buff.
	* cppinit.c (cpp_create_reader): Initialize u_buff, not ident_pool.
	(cpp_destroy): Destroy u_buff, not ident_pool.
	* cpplex.c (parse_number, parse_string, save_comment,
	cpp_token_as_text): Update to use the unaligned buffer.
	(new_buff): Make unsigned.
	(_cpp_unaligned_alloc): New.
	* cpplib.c (glue_header_name): Update to use the unaligned buffer.
	* cppmacro.c (new_number_token, builtin_macro, stringify_arg):
	Similarly.
	(collect_args): Make unsigned.

2001-09-27  Zack Weinberg  <zack@codesourcery.com>

	* cpplex.c (cpp_output_token): Use a putc loop for
	SPELL_OPERATOR, and fwrite for SPELL_IDENT.

	* configure.in: Detect fwrite_unlocked and fprintf_unlocked.
	* configure, config.in: Regenerate.
	* system.h: Replace fwrite and fprintf with their unlocked
	variants if available.

2001-09-27  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (dwarf2out_frame_finish): Never elide .debug_frame
	in favor of .eh_frame.

2001-09-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (FUNCTION_VALUE): Change hardcoded 33 and 3
	to macros.
	(LIBCALL_VALUE): Likewise.

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

	* cpphash.h: Update comment.
	* cpplex.c: Update comments.
	(_cpp_can_paste): Remove.
	* cpplib.h (_cpp_can_paste): Remove.
	* cppmacro.c (paste_tokens, paste_all_tokens): Update to use the
	lexer rather than _cpp_can_paste.

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

	* doc/cppinternals.texi: Update.

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

	* cpphash.h (struct cpp_pool): Remove locks and locked.
	(struct cpp_context): Add member buff.
	(struct cpp_reader): Remove member argument_pool.
	(_cpp_lock_pool, _cpp_unlock_pool): Remove.
	* cppinit.c (cpp_create_reader, cpp_destroy): Argument_pool is dead.
	* cpplex.c (chunk_suitable): Remove pool argument.
	(MIN_BUFF_SIZE, BUFF_SIZE_UPPER_BOUND, EXTENDED_BUFF_SIZE): New.
	(new_buff, _cpp_extend_buff): Update.
	(_cpp_get_buff): Fix silly pointer bug.  Be more selective about
	which buffer is returned.
	(_cpp_next_chunk, _cpp_init_pool): Pool locking removed.
	(_cpp_lock_pool, _cpp_unlock_pool): Remove.
	* cppmacro.c (lock_pools, unlock_pools): Remove.
	(push_ptoken_context): Take a _cpp_buff.
	(enter_macro_context): Pool locking removed.
	(replace_args): Use a _cpp_buff for the replacement list with
	arguments replaced.
	(push_token_context): Clear buff.
	(expand_arg): Use _cpp_pop_context.
	(_cpp_pop_context): Free a context's buffer, if any.

2001-09-26  DJ Delorie  <dj@redhat.com>

	* c-typeck.c (digest_init): Check for sizeless arrays.

2001-09-26  Richard Henderson  <rth@redhat.com>

	* optabs.c (init_one_libfunc): Create a dummy function type
	instead of using error_mark_node.

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

	* cpphash.h (struct _cpp_buff, _cpp_get_buff, _cpp_release_buff,
	_cpp_extend_buff, _cpp_free_buff): New.
	(struct cpp_reader): New member free_buffs.
	* cppinit.c (cpp_destroy): Free buffers.
	* cpplex.c (new_buff, _cpp_release_buff, _cpp_get_buff,
	_cpp_extend_buff, _cpp_free_buff): New.
	* cpplib.h (struct cpp_options): Remove unused member.
	* cppmacro.c (collect_args): New.  Combines the old parse_arg
	and parse_args.  Use _cpp_buff for memory allocation.
	(funlike_invocation_p, replace_args): Update.

Wed Sep 26 13:20:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* final.c (final_scan_insn): Use delete_insn instead of delete_note.

2001-09-25  Andrew Haley  <aph@cambridge.redhat.com>

	* except.c (sjlj_mark_call_sites): Change address inside sequence.

2001-09-24  Andrew Haley  <aph@cambridge.redhat.com>

	* config/sh/linux.h (LINK_SPEC): Set dynamic-linker to agree with
	glibc.

2001-09-25  Janis Johnson  <janis187@us.ibm.com>
	    Jim Wilson  <wilson@redhat.com>

	* doc/install.texi (Specific, ia64-*-linux): Document.

Tue Sep 25 17:13:56 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cfgrtl.o): Add.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): Declare.
	* cfg.c
	(HAVE_return): Undefine.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): New global functions.
	(first_delete_block): New static variable.
	(init_flow): Clear first_delete_block.
	(basic_block_for_insn, label_value_list, tail_recursion_label_list,
	 can_delete_note_p, can_delete_label_p, commit_one_edge_insertion,
	 try_redirect_by_replacing_jump, last_loop_beg_note,
	 back_edge_of_syntactic_loop_p, force_nonfallthru_and_redirect,
	 delete_insn, delete_insn_chain, create_basic_block_structure,
	 create_basic_block, flow_delete_block, compute_bb_for_insn,
	 free_bb_for_insn, update_bb_for_insn, set_block_for_insn,
	 set_block_for_new_insns, split_block, merge_blocks_nomove,
	 block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
	 redirect_edge_and_branch, force_nonfallthru_and_redirect,
	 force_nonfallthru, redirect_edge_and_branch_force, tidy_fallthru_edge,
	 tidy_fallthru_edges, split_edge, insert_insn_on_edge,
	 commit_one_edge_insertion, commit_edge_insertions, dump_bb, debug_bb,
	 debug_bb_n, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
	 purge_all_dead_edges): Move to ....
	* cfgrtl.c: New file; .... Here.

	* bb-reorder.c (fixup_reorder_chain): Use alloc_aux_for_block.
	(reroder_basic_block): Use alloc_aux_for_blocks.
	* predict.c (estimate_bb_frequencies): Likewise; use
	alloc_aux_for_edges.
	* profile.c (compute_branch_probabilities): Likewise.
	(branch_prob): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.

	* emit-rtl.c (emit_insns_after): Never return NULL.

	* basic-block.h (set_block_for_new_insns): Delete.
	* cfgrtl.c (set_block_for_new_insns): Delete.

	* cfgcleanup.c (try_optimize_cfg): Add fake exit edges for noreturn
	calls when crossjumping.

	* cfgcleanup.c (try_simplify_condjump): Cleanup invert_jump call.
	* unroll.c (copy_loop_body): Use delete_insn.

	* final.c (final, final_scan_insn): Use delete_insn/delete_note.
	* function.c (fixup_var_refs_insn, fixup_var_refs_1,
	keep_stack_depressed): Likewise.
	* gcse.c (cprop_cc0_jump): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop.c (scan_loop, loop_delete_insns): Likewise.
	* regmove.c (try_auto_increment, fixup_match_1): Likewise.
	* reload1.c (reload, calculate_needs_all_insns, reload_as_needed,
	delete_output_reload, delete_address_reloads_1,
	reload_cse_delete_noop_set, reload_combine, reload_cse_move2add):
	Likewise.
	* sibcall.c (replace_call_placeholder): Likewise.
	* cse.c (cse_insn): Likewise.

2001-09-25  Bernd Schmidt  <bernds@redhat.com>

	From Graham Stott  <grahams@redhat.com>
	(def_builtin): Only define builtins appropriate for target_flags.  All
	callers changed.
	(builtin_decsription): Add new field mask which is used to determine
	when to define the builtin via the macro def_builtin.

	(bdesc_comi): Initialize new mask fields.
	(bdesc_2srg): Likewise.
	(bdesc_1arg): Likewise.

	* config/i386/i386.c (ix86_init_builtins): Correct return type
	building v4hi_ftype_v4hi_int_int tree node.
	(ix86_expand_sse_comi): Fix typo swapping operands.
	Don't swap comparison condition, it is already swapped.
	(ix86_expand_sse_compare): Before swapping operands
	move operand 1 into new rtx and not the target rtx.
	Don't swap comparison condition, it is already swapped.
	Always check whether we need to create a new TARGET.

	* config/i386/i386.md: (sse_comi) Fix typos.
	(sse_ucomi): Likewise.
	(cvtss2si): Fix operand 0 contraint.
	(cvttss2si): Likewise.
	(sse_unpckhps): Fix mode for operand 2.
	(sse_unpcklps): Likewise.

2001-09-25  Graham Stott  <grahams@redhat.com>

	* sibcall.c (skip_copy_to_return_value): Tighten return value
	copy check.

2001-09-24  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (lwa_operand): Address must be word aligned.

Mon Sep 24 18:57:59 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (type_hash_marked_p): Consider as marked if debug symbol
	number has been set.
	(type_hash_mark): Mark type itself.

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

	* c-lex.c (cb_def_pragma): Update.
	(c_lex): Update, and skip padding.
	* cppexp.c (lex, parse_defined): Update, remove unused variable.
	* cpphash.h (struct toklist): Delete.
	(union utoken): New.
	(struct cpp_context): Update.
	(struct cpp_reader): New members eof, avoid_paste.
	(_cpp_temp_token): New.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (_cpp_temp_token): New.
	(_cpp_lex_direct): Add PREV_WHITE when parsing args.
	(cpp_output_token): Don't print leading whitespace.
	(cpp_output_line): Update.
	* cpplib.c (glue_header_name, parse_include, get__Pragma_string,
	do_include_common, do_line, do_ident, do_pragma,
	do_pragma_dependency, _cpp_do__Pragma, parse_answer,
	parse_assertion): Update.
	(get_token_no_padding): New.
	* cpplib.h (CPP_PADDING): New.
	(AVOID_LPASTE): Delete.
	(struct cpp_token): New union member source.
	(cpp_get_token): Update.
	* cppmacro.c (macro_arg): Convert to use pointers to const tokens.
	(builtin_macro, paste_all_tokens, paste_tokens, funlike_invocation_p,
	replace_args, quote_string, stringify_arg, parse_arg, next_context,
	enter_macro_context, expand_arg, _cpp_pop_context, cpp_scan_nooutput,
	_cpp_backup_tokens, _cpp_create_definition): Update.
	(push_arg_context): Delete.
	(padding_token, push_token_context, push_ptoken_context): New.
	(make_string_token, make_number_token): Update, rename.
	(cpp_get_token): Update to handle tokens as pointers to const,
	and insert padding appropriately.
	* cppmain.c (struct printer): New member prev.
	(check_multiline_token): Constify.
	(do_preprocessing, cb_line_change): Update.
	(scan_translation_unit): Update to handle spacing.
	* scan-decls.c (get_a_token): New.
	(skip_to_closing_brace, scan_decls): Update.
	* fix-header.c (read_scan_file): Update.

	* doc/cpp.texi: Update.

2001-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-aux-info.c (affix_data_type): Use ATTRIBUTE_MALLOC.  Avoid
	leak by passing malloc'ed pointer to reconcat, not concat.

2001-09-24  DJ Delorie  <dj@redhat.com>

	* varasm.c (array_size_for_constructor): Handle STRING_CSTs also.

2001-09-24  Ulrich Weigand  <uweigand@de.ibm.com>:

	* flow.c (delete_dead_jumptables): Delete jumptable if the only
	reference is from the literal pool.

2001-09-24  Janis Johnson  <janis187@us.ibm.com>

	* doc/install.texi (Final install): Request additional information
	in mail about successful builds.

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

	* pa.c (return_addr_rtx): Return NULL_RTX if count is not zero.  Use
	initial value of return pointer register instead of value in frame-20.
	Revise comments.

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

	* som.h (ASM_OUTPUT_EXTERNAL): Improve formatting.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Only generate a .IMPORT statement for
	the libcall if there isn't a referenced identifier for the symbol.

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

	* pa.h (TRAMPOLINE_TEMPLATE): Add two words to the template for
	non 64-bit machines.  Use these as a plabel for the trampoline.
	(TRAMPOLINE_SIZE): Adjust size for new words.
	(INITIALIZE_TRAMPOLINE): Initialize new words.
	(TRAMPOLINE_ADJUST_ADDRESS): New.  Adjust address to make it a
	pointer to the plabel in the trampoline.

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

	* pa.c (function_arg): Pass floating arguments in both general and
	floating registers in indirect (dynamic) calls when generating code
	for the 32 bit ABI and the HP assembler.

2001-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi: Markup fixes.
	Use Solaris 2, SunOS 4 as appropriate.
	(Specific, *-*-solaris2*): Explain this.
	Unconditionally warn against /usr/ucb tools.
	Remove Sun as warning, obsolete.
	Move X11 header bug workaround here, update patches.
	(Specific, sparc-sun-solaris2*): Detail Sun as fix status.
	(Specific, sparc-sun-solaris2.7): Update patch 106950 status.

2001-09-23  Zack Weinberg  <zack@codesourcery.com>

	* errors.h (warning, error, fatal, internal_error): Don't mark
	with ATTRIBUTE_PRINTF_n.
	* toplev.h (internal_error, fatal_io_error, warning, error,
	pedwarn, pedwarn_with_file_and_line, warning_with_file_and_line,
	error_with_file_and_line, sorry, error_for_asm, warning_for_asm):
	Likewise.

Sun Sep 23 18:19:48 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (pop_function_context_from): var_refs_queue
	and temp slots now in GC memory.
	(mark_function_status, free_after_compilation): Likewise;
	also struct function now in GC memory.
	(assign_stack_temp_for_type): struct temp_slot now in GC memory.
	(combine_temp_slots): Likewise.
	(schedule_fixup_var_refs): var_refs_queue now in GC memory.
	(prepare_function_start): Use GC memory for struct function.
	(mark_temp_slot): Deleted.
	(gcc_mark_struct_function): struct function now in GC memory.

	* fold-const.c (extract_muldiv, case PLUS_EXPR): Only adjust
	code for division, not modulus.

	* rtl.def (MEM): Remove obsolete part of comment.

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

	* c-format.c (init_function_format_info): Check __builtin_printf
	and __builtin_fprintf even if -ffreestanding.  Check C99 functions
	in gnu89 mode.

Sat Sep 22 09:09:32 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (format_attribute_table): Remove decl.
	* tree.h (format_attribute_table, lang_attribute_table): New decls.
	(lang_attribute_common): Likewise.

	* function.c (fix_lexical_address): Use set_mem_alias_set.
	(expand_function_start): Likewise.
	* config/alpha/alpha.h (SETUP_INCOMING_VARARGS): Likewise.

	* varasm.c (output_constant): Fix unused variable warning.

	* attribs.c: New file, from c-common.c.
	(attribute_tables): Now four elements.
	(format_attribute_table, lang_attribute_common): New variables.
	(init_attributes): Reflect above changes.
	(handle_mode_attribute): Delete check for wider than uintmax.
	* c-common.c: Delete parts moved to attribs.c.
	(enum attrs): Deleted; unused.
	(c_format_attribute_table): New variable.
	(c_common_lang_init): Initialize format_attribute_table with it.
	* c-common.h (decl_attributes): Remove decl.
	* tree.h (decl_attribute): Move it to here.
	* Makefile.in (C_AND_OBJS_OBJS): Add attribs.o.
	(attribs.o): New rule.

2001-09-22  Andreas Jaeger  <aj@suse.de>

	* builtins.c (c_getstr): Remove unused variable.

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

	* reload1.c (reload): Use delete_insn instead of splatting
	NOTE_INSN_DELETED.

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

	* reload.c (push_secondary_reload): Don't check for "=" in output
	constraint after ""->ALL_REGS check.

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

	* predict.c (expected_value_to_br_prob): Use pc_set.

	* optabs.c (init_one_libfunc): Gen a FUNCTION_DECL for use by
	ENCODE_SECTION_INFO; get SYMBOL_REF from make_decl_rtl.

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

	* rtl.h (LCT_RETURNS_TWICE): New.
	* calls.c (emit_call_1): Set current_function_calls_setjmp for
	ECF_RETURNS_TWICE.
	(emit_library_call_value_1): Map LCT_RETURNS_TWICE
	to ECF_RETURNS_TWICE.
	* except.c (sjlj_emit_function_enter): Use LCT_RETURNS_TWICE for
	call to setjmp.

	* unwind-sjlj.c: Invent the setjmp.h declarations if inhibit_libc.

	* config/stormy16/stormy16.h (DONT_USE_BUILTIN_SETJMP): New.
	(JMP_BUF_SIZE): New.

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

	* config/stormy16/stormy16.h (REG_CLASS_FROM_LETTER): Map 'd'
	to R8_REGS.

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

	* tree.def (FDESC_EXPR): New.
	* expr.c (expand_expr): Handle it.
	* varasm.c (initializer_constant_valid_p): Likewise.
	(output_constant): Likewise.
	* defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
	* config/ia64/ia64.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
	(ASM_OUTPUT_FDESC): New.
	* doc/tm.texi: Document the new macros.

2001-09-21  Richard Earnshaw  (reanrsha@arm.com)

	* cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave
	ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block
	once merging is complete.

Fri Sep 21 11:20:12 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* integrate.c (allocate_initial_values): Eliminate unused arg warning.

2001-09-21  Richard Earnshaw  (reanrsha@arm.com)

	* cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes
	that would be invalid after a merge.

Fri Sep 21 14:24:29 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill.
	* cfg.c (delete_insn): Rename from ....; use remove_insn; do not
	remove some labels.
	(flow_delete_insn): This one.
	(delete_insn_chain): Rename from ...; do not care labels.
	(flow_delete_insn_chain): ... this one.
	(flow_delete_block): Remove the insns one BB has been expunged.
	(merge_blocks_nomove): Likewise.
	(try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(tidy_fallthru_edge): Likewise.
	(commit_one_edge_insertion): Likewise.
	* cfgbuild.c (find_basic_block): Likewise.
	(find_basic_blocks_1): Likewise.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise.
	* cse.c (delete_trivially_dead_insns): Likewise.
	* df.c (df_insn_delete): Likewise.
	* doloop.c (doloop_modify): Use delete_related_insns.
	* emit-rtl.c (try_split): Likewise.
	(remove_insn): Update BB boundaries.
	* expect.c (connect_post_landing_pads): Use delete_related_insns.
	* flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(propagate_block_delete_insn): Likewise.
	(propagate_block_delete_libcall): Likewise.
	* function.c (delete_handlers): Use delete_related_insns.
	(thread_prologue_and_epilogue_insns): Likewise.
	* gcse.c (delete_null_pointer_checks): Use delete_related_insns.
	* genpeep.c (gen_peephole): Use delete_related_insns.
	* ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating
	BB boundaries.
	(find_cond_trap): Likewise.
	* integrate.c (save_for_inline): Use delete_related_insns.
	(copy_insn_list): Likewise.
	* jump.c (pruge_linie_number_notes): Likewise.
	(duplicate_loop_exit_test): Likewise.
	(delete_computation): Likewise.
	(delete_related_insn): Rename from ...; use delete_insn
	(delete_insn): ... this one.
	(redirect_jump): Use delete_related_insns.
	* loop.c (scan_loop): Likewise.
	(move_movables): Likewise.
	(find_and_verify_loops): Likewise.
	(check_dbra_loop): Likewise.
	* recog.c (peephole2_optimize): Likewise.
	* reg-stack.c (delete_insn_for_stacker): Remove.
	(move_for_stack_reg): Use delete_insn.
	* regmove.c (combine_stack_adjustments_for_block): Likewise.
	* reload1.c (delete_address_reloads): Use delete_related_insns.
	(fixup_abnormal_edges): Use delete_insn.
	* recog.c (emit_delay_sequence): Use delete_related_insns.
	(delete_from-delay_slot): Likewise.
	(delete_scheduled_jump): likewise.
	(optimize_skip): Likewise.
	(try_merge_delay_insns): Likewise.
	(full_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.
	(make_return_insns): Likewise.
	(dbr_schedule): Likewise.
	* rtl.h (delete_insn): Rename to delete_related_insns.
	(delete_insn, delete_insn_chain): New prototypes.
	* ssa-ccp (sse_fast_dce):  Remove deleting of DEF, as it is done
	by df_insn_delete already.
	* ssa-dce.c (delete_insn_bb): Use delete_insn.
	* ssa.c (convert_from_ssa): Use delete_related_insns.
	* unroll.c (unroll_loop): Likewise.
	(calculate_giv_inc): Likewise.
	(copy_loop_body): Likewise.

	* i386-protos.h (ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): Declare.
	* i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers):
	new static valurables.
	(x86_64_reg_class): New enum
	(x86_64_reg_class_name): New array.
	(classify_argument, examine_argument, construct_container,
	 merge_classes): New static functions.
	(optimization_options): Enable flag_omit_frame_pointer and disable
	flag_pcc_struct_return on 64bit.
	(ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): New global functions.
	(init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg.
	(function_arg_advance): Handle x86_64 passing conventions.
	(function_arg): Likewise.
	* i386.h (FUNCTION_ARG_BOUNDARY): New macro.
	(RETURN_IN_MEMORY): Move offline.
	(FUNCTION_VALUE, LIBCALL_VALUE): Likewise.
	(FUNCTION_VALUE_REGNO_P): New macro.
	(FUNCTION_ARG_REGNO_P): Move offline.
	(struct ix86_args): Add maybe_vaarg.
	* next.h (FUNCTION_VALUE_REGNO_P): Delete.
	* unix.h (FUNCTION_VALUE_REGNO_P): Delete.

2001-09-21  Hartmut Penner  <hpenner@de.ibm.com>

	* s390.md: Changed attributes for scheduling.
	* s390.c: (s390_adjust_cost, s390_adjust_priority)
	Changed scheduling

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

	Table-driven attributes.
	* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
	config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
	config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
	config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
	doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
	tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* tree.h (struct tree_decl): Change machine_attributes to
	attributes.
	* doc/c-tree.texi: Document that all attributes are now attached
	to decls and types.
	* c-common.c (add_attribute, attrtab, attrtab_idx,
	default_valid_lang_attribute, valid_lang_attribute): Remove.
	(attribute_tables, attributes_initialized,
	c_common_attribute_table, default_lang_attribute_table): New
	variables.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_unused_attribute, handle_const_attribute,
	handle_transparent_union_attribute, handle_constructor_attribute,
	handle_destructor_attribute, handle_mode_attribute,
	handle_section_attribute, handle_aligned_attribute,
	handle_weak_attribute, handle_alias_attribute,
	handle_no_instrument_function_attribute,
	handle_no_check_memory_usage_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute): New
	functions.
	(init_attributes, decl_attributes): Rewrite to implement
	table-driven attributes.
	* c-common.h (enum attribute_flags): Move to tree.h.
	* c-format.c (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Rename to
	handle_format_attribute and handle_format_arg_attribute.  Update
	for table-driven attributes.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Remove prototypes.
	(handle_format_attribute, handle_format_arg_attribute): Add
	prototypes.
	* c-decl.c (grokdeclarator): Handle attributes nested inside
	declarators.
	* c-parse.in (setattrs, maybe_setattrs): Remove.
	(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
	Update to handle nested attributes properly.
	(maybe_resetattrs, after_type_declarator,
	parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
	absdcl1_ea, direct_absdcl1): Update to handle nested attributes
	properly.
	(make_pointer_declarator): Update to handle nested attributes
	properly.
	* doc/extend.texi: Update documentation of limits of attributes
	syntax.  Warn about problems with attribute semantics in C++.
	* target.h (struct target): Remove valid_decl_attribute and
	valid_type_attribute.  Add attribute_table and
	function_attribute_inlinable_p.
	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
	TARGET_VALID_TYPE_ATTRIBUTE): Remove.
	(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
	Add.
	(TARGET_INITIALIZER): Update.
	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
	definition.
	(function_attribute_inlinable_p): New function.  Check for the
	presence of any machine attributes before using
	targetm.function_attribute_inlinable_p.
	(function_cannot_inline_p): Update.
	* Makefile.in (integrate.o): Update dependencies.
	* doc/tm.texi: Update documentation of target attributes and
	example definition of TARGET_VALID_TYPE_ATTRIBUTE.
	* tree.c (default_valid_attribute_p, valid_machine_attribute):
	Remove.
	(default_target_attribute_table,
	default_function_attribute_inlinable_p): New.
	(lookup_attribute): Update comment to clarify handling of multiple
	attributes with the same name.
	(merge_attributes, attribute_list_contained): Allow multiple
	attributes with the same name but different arguments to appear in
	the same attribute list.
	* tree.h (default_valid_attribute_p): Remove prototype.
	(struct attribute_spec): New.
	(default_target_attribute_table): Declare.
	(enum attribute_flags): Move from c-common.h.  Add
	ATTR_FLAG_TYPE_IN_PLACE.
	(default_function_attribute_inlinable_p): Declare.
	* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(vms_attribute_table): New.
	* config/arc/arc.c (arc_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arc_attribute_table, arc_handle_interrupt_attribute): New.
	* config/arm/arm.c (arm_valid_type_attribute_p,
	arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arm_attribute_table, arm_handle_fndecl_attribute,
	arm_handle_isr_attribute): New.
	* config/avr/avr.c (avr_valid_type_attribute,
	avr_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(avr_attribute_table, avr_handle_progmem_attribute,
	avr_handle_fndecl_attribute): New.
	* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(c4x_attribute_table, c4x_handle_fntype_attribute): New.
	* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(h8300_attribute_table, h8300_handle_fndecl_attribute,
	h8300_handle_eightbit_data_attribute,
	h8300_handle_tiny_data_attribute): New.
	* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
	i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
	Remove prototypes.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
	declarations.
	* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ix86_attribute_table, ix86_handle_cdecl_attribute,
	ix86_handle_regparm_attribute): New.
	* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Remove.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
	* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ia64_attribute_table): New.
	* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
	interrupt_ident2, model_ident1, model_ident2): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(init_idents): Update.
	(m32r_attribute_table, m32r_handle_model_attribute): New.
	* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
	* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(mcore_attribute_table, mcore_handle_naked_attribute): New.
	* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
	* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
	* config/sh/sh.c (sh_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(sh_attribute_table, sh_handle_interrupt_handler_attribute,
	sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
	New.
	* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
	(TARGET_ATTRIBUTE_TABLE): Define.
	(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
	New.
	* config/v850/v850.c (v850_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(v850_attribute_table, v850_handle_interrupt_attribute,
	v850_handle_data_area_attribute): New.
	* config/v850/v850-c.c (mark_current_function_as_interrupt):
	Return void.  Call decl_attributes instead of
	valid_machine_attribute.

Fri Sep 21 01:49:41 2001  J"orn Rennecke <amylaar@redhat.com>

	* sh-protos.h (sh_pr_n_sets): Declare.
	* sh.c (calc_live_regs): If the initial value for PR has been copied,
	look at the copy to determine if PR needs to be saved.
	sh_pr_n_sets: New function.
	* sh.h (RETURN_ADDR_RTX): Use get_hard_reg_initial_val.
	(ALLOCATE_INITIAL_VALUE): Define.

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

Fri Sep 21 01:13:56 2001  J"orn Rennecke <amylaar@redhat.com>

	* integrate.c (allocate_initial_values): New function.
	* integrate.h (allocate_initial_values): Declare.
	* local-alloc.c (local_alloc): Move call to allocate_reg_info from
	here...
	* reload1.c (reload): And initialization of reg_equiv_memory_loc
	from here...
	* toplev.c (rest_of_compilation): To here.
	Call allocate_initial_values.
	* tm.texi: add description for ALLOCATE_INITIAL_VALUE.

Thu Sep 20 09:00:27 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* ggc-page.c (ggc_marked_p): Properly convert return to boolean.

2001-09-20  DJ Delorie  <dj@redhat.com>

	* c-typeck.c (really_start_incremental_init): Discriminate
	between zero-length arrays and flexible arrays.
	(push_init_level): Detect zero-length arrays and handle them
	like fixed-sized arrays.
	* expr.c (store_constructor): Handle zero-length arrays and
	flexible arrays correctly.
	* doc/extend.texi: Update zero-length array notes.

2001-09-20  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (itanium_split_issue): Allow max 2 FP per cycle.
	(insn_matches_slot): Handle TYPE_L and TYPE_X slots when checking
	for issue port conflicts.
	(cycle_end_fill_slots): TYPE_L instructions take two slots.

2001-09-20  Andrew MacLeod  <amacleod@redhat.com>

	* testsuite/gcc.c-torture/execute/990208-1.x: New. XFAIL at -O3
	on ia64.

Thu Sep 20 09:00:27 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (hashtab.h): Include.
	(int_const_binop): Remove FORSIZE arg and compute from type; all
	callers changed.
	Call size_int_type_wide for all single-word constants.
	(size_htab_hash, size_htab_eq): New functions.
	(size_int_type_wide): Rework to use hash table.
	* ggc-common.c (hashtab.h): Include.
	(struct d_htab_root): New struct.
	(d_htab_roots): New variable.
	(ggc_add_deletable_htab, ggc_htab_delete): New functions
	(ggc_mark_roots): Handle deletable htabs.
	* ggc-page.c (ggc_marked_p): New function.
	* ggc-simple.c (ggc_marked_p): Likewise.
	* ggc.h: Reformatting throughout.
	(ggc_marked_p, ggc_add_deletable_htab): New declarations.
	* tree.c (init_obstacks): Make type_hash_table a deletable root.
	(type_hash_add): Allocate struct type_hash from GC memory.
	(mark_hash_entry, mark_type_hash): Deleted.
	(type_hash_marked_p, type_hash_mark): New functions.
	* Makefile.in (ggc-common.o, fold-const.o): Include hashtab.h.

Thu Sep 20 12:49:34 2001  J"orn Rennecke <amylaar@redhat.com>

	* sh.c (shiftcosts): Don't use shiftcosts array for modes wider
	than SImode.

Thu Sep 20 09:00:27 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_type, case ARRAY_TYPE): Kludge to disable
	array-too-large test for signed sizetype.

Thu Sep 20 12:19:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (indirect_jump): Allow Pmode operand.
	(tablejump): LIkewise; perform expansion to 64bit mode.
	* i386.c (symbolic_operand): Allow 64bit PIC references.
	(pic_symbolic_operand): Likewise.
	(ix86_find_base_term): Strip the 64bit PIC references.
	(legitimate_pic_address_disp_p): Handle 64bit PIC.
	(legitimize_pic_address): Likewise.
	(i386_simplify_dwarf_addr): Strip down the 64bit PIC references.
	* i386.h (CASE_VECTOR_MODE): Set to SImode for 64bit PIC compilation.

2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* stringpool.c (get_identifier_with_length): New function.
	* tree.h (get_identifier_with_length): New prototype.

2001-09-19  Alan Modra  <amodra@bigpond.net.au>
	    David Edelsohn  <edelsohn@gnu.org>

	Revert:
	* config/rs6000/rs6000.c (logical_operand): CONST_INTs are
	already sign-extended.

	* config/rs6000/aix.h (INIT_TARGET_OPTABS): Define TFmode handlers.
	* config/rs6000/rs6000.c (logical_operand): Always compare op as
	HOST_WIDE_INT.
	(rs6000_emit_set_long_const): Avoid unnecessary shift.
	(output_profile_hook): Declare label_name const.
	* config/rs6000/rs6000.md (boolcsi3, boolcdi3): Change predicates
	to match constraints.

2001-09-19  Stan Shebs  <shebs@apple.com>

	* alias.c: Fix typos in comments.
	* sched-rgn.c (init_ready_list): Ditto.
	* unwind-dw2.c (uw_frame_state_for): Ditto.
	* unwind-dw2-fde.c (_Unwind_Find_FDE): Ditto.
	* unwind.inc (_Unwind_RaiseException_Phase2): Ditto.
	* config/rs6000/rs6000.c (rs6000_adjust_priority): Ditto.

2001-09-19  Richard Henderson  <rth@redhat.com>

	* cfg.c (force_nonfallthru_and_redirect): Handle redirecting
	to the exit block.
	* Makefile.in (cfg.o): Depend on TM_P_H.

2001-09-19  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (local_symbol_p): Split out from ...
	(local_symbolic_operand): ... here.
	(small_symbolic_operand): Check mode.
	(global_symbolic_operand): New.
	(input_operand): Reject symbolics if explicit relocs.
	(call_operand): Tidy.
	(alpha_legitimize_address): Use movdi_er_high_g.
	(alpha_expand_mov): Likewise.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	* config/alpha/alpha.md (UNSPEC_LITERAL, UNSPEC_LITUSE): New.
	(UNSPEC_LDGP2, UNSPECV_PLDGP2): New.
	(UNSPECV_LDGP2): Remove.
	(all call patterns): Use 's' not 'i' for symbolic constraint.
	(call_osf call_value_osf): Use call_operand.
	(all osf call patterns): Use $gp.  New peepholes for explicit relocs.
	(movdi_er_nofix, movdi_er_fix): Remove symbolic alternative.
	(prologue_ldgp_1_er): Remove.
	(ldgp_er_1, ldgp_er_2, prologue_ldgp_er_2): New.
	(builtin_setjmp_receiver_er patterns): Use them.
	(exception_receiver_er): Likewise.

2001-09-19  Richard Henderson  <rth@redhat.com>

	* cfgbuild.c (find_sub_basic_blocks): Handle insns that can throw.

	* emit-rtl.c (try_split): Copy NORETURN, SETJMP, ALWAYS_RETURN
	and NON_LOCAL_GOTO notes.
	* recog.c (peephole2_optimize): Likewise.  Handle EH_REGION;
	copy over CALL_INSN_FUNCTION_USAGE.

2001-09-18  Catherine Moore  <clm@redhat.com>

	* config/stormy16/stormy16.h (DEFAULT_PCC_STRUCT_RETURN):
	Define as 0.

2001-09-18  Ulrich Weigand  <uweigand@de.ibm.com>:

	* config.gcc (s390-*-linux-*, s390x-*-linux*): Switch to
	new-style tm_file specification.  Specify correct tm_p_file,
	md_file, and out_file for s390x.

	* config/s390/linux.h, linux64.h:  Don't include other target
	macro header files.  Now handled via tm_file.

	* config/s390/linux.h, s390.h:  (IEEE_FLOAT, TARGET_IEEE_FLOAT,
	TARGET_IBM_FLOAT): Move from linux.h to s390.h to ensure they
	are defined before use.

Tue Sep 18 09:51:11 2001  Eric Christopher  <ecechristo@redhat.com>

	* config/mips/mips.c (mips_asm_file_start): Conditionalize Elf
	code generation only for Gnu assembler.

2001-09-18  Catherine Moore  <clm@redhat.com>

	* config/stormy16 (LIB_SPEC): Remove -lnosys.

2001-09-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_frame_set): New.
	(mips_emit_frame_related_store): When storing two 32-bit FPRs, use
	a parallel frame-related expression with a set for each register.

2001-09-18  Philip Blundell  <philb@gnu.org>

	* config/arm/lib1funcs.asm (L_dvmd_lnx): Don't rely on kernel
	header files.

2001-09-17  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.h (FIXED_REGISTERS): Use FIXED_R2.
	* config/rs6000/aix.h (FIXED_R2): Define.
	* config/rs6000/darwin.h (FIXED_R2): Define.
	* config/rs6000/sysv4.h (FIXED_R2): Define.

2001-09-17  Jeff Sturm  <jsturm@one-point.com>

	* except.c (dw2_build_landing_pads): New local
	clobbers_hard_regs.  Emit an ASM_INPUT as a scheduling
	barrier after clobbers.  Fixes c++/4012.

2001-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (find_file): Use ACONCAT in lieu of alloca/strcpy/strcat.

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

	* dostage2, dostage3, listing, make-l2.com, makefile.vms,
	patch-apollo-includes, vmsconfig.com: Remove obsolete files.

2001-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-aux-info.c (affix_data_type): Use ASTRDUP in lieu of
	alloca/strcpy.

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

	* cpphash.h (_cpp_lex_direct): New.
	* cpplex.c (_cpp_lex_token): Update.
	(lex_token): Rename _cpp_lex_direct; lex into pfile->cur_token,
	and increment that pointer.
	* cppmacro.c (alloc_expansion_token): New.
	(lex_expansion_token): Lex macro expansion directly into
	macro storage.

2001-09-16  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in: Make rtl-error.o depend on $(CONFIG_H).

Sun Sep 16 21:59:46 CEST 2001  Jan hubicka  <jh@suse.cz>

	* basic-block.h (free_bb_for_insn): Declare.
	* bb-reorder.c (label_for_bb): Use block_label.
	(emit_jump_to_block_after): Remove.
	(insert_intra_1): Do not update block_for_insn.
	(insert_inter_bb_scope_notes): Likewise; update bb->end
	* cfg.c (free_bb_for_insn): New.
	(try_rediret_by_replacing_jump): Avoid set_block_for_new_insns call.
	(force_nonfallthru_and_redirect): Likewise; do not update BB boundaries.
	(commit_one_edge_insertion): Likewise.
	(commit_one_edge_insertion): Do not update BB boundary.
	(commit_edge_insertions): Do not call compute_bb_for_insn.
	* cfgbuild.c (find_basic_blocks): Do not free basic_block_for_insn.
	* cfgcleanup.c (merge_blocks_move_predecessor): Use reorder_insns_nobb.
	(merge_blocks_move_successor_nojumps): Likewise.
	(try_crossjump_to_edge): Do not update block_for_insn.
	* combine.c (combine_instructions): Remove compute_bb_for_insn call.
	* df.c (df_pattern_emit_later): Do not update BB boundary.
	(df_jump_pattern_emit_after): Likewise.
	(df_insn_move_before): Use emit_insn_before.
	* emit-rtl.c (try_split): Emit after trial to get bb boundary updated
	 properly.
	(add_insn_after, add_insn_before, emit_insns_after): Update BB
	boundaries and basic_block_for_insn.
	(reorder_insns_nobb): Rename from reorder_insns.
	(reorder_insns): New.
	(emit_block_insn_before, emit_block_insn_after): Kill.
	* flow.c (check_function_return_warnings): Do not call
	compute_bb_for_insn; Do not free basic_block_for_insn.
	(attempt_auto_inc): Do not update basic_block_for_insn.
	* function.c (emit_return_into_block): Likewise;
	do not update BB boundaries.
	* gcse.c (handle_avail_expr): Do not update basic_block_for_insn.
	(insert_insn_end_bb): Use emit_insn_before; Likewise.
	(pre_insert_copy_insn): Likewise.
	(update_ld_motion_notes): Likewise.
	(insert_insn_start_bb): Likewise.
	(replace_store_insn): Likewise.
	* ifcvt.c (noce_process_if_block): Likewise.
	(if_convert): Do not call compute_bb_for_insn.
	* lcm.c (optimize_mode_switching): Do not update BB boundaries.
	Use emit_insn_before and emit_insn_after.
	* recog.c (split_all_insns): Do not update BB boundaries;
	Do not call compute_bb_for_insn.
	(peephole2_optimize): Do not update BB boundaries.
	* reg-stack.c (emit_pop_insn): Use emit_insn_after and
	emit_insn_before.
	(emit_swap_insn): Likewise.
	(convert_regs_1): Likewise.
	* reload1.c (reload): Call compute_bb_for_insn.
	* rtl.h (reorder_insns_nobb): Declare.
	* ssa.c (rename_equivalent_regs): Use emit_insn_before.
	* toplev.c (rest_of_compilation): Call free_bb_for_insn
	at places CFG is invalidated; do not call compute_bb_for_insn.

	* cfg.c (expunge_block): Invalidate BB structure.

	* (merge_blocks_nomove): Update properly BLOCK_FOR_INSN
	array.

	* cfg.c (verify_flow_info): Verify the basic_block_for_insn array.

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

	* cpphash.h (_cpp_lex_token): Update prototype.
	* cpplex.c (_cpp_lex_token): New prototype.
	* cpplib.c (skip_rest_of_line, check_eol, _cpp_handle_directive,
	lex_macro_node, read_flag, do_pragma_poison): Update.
	* cppmacro.c (cpp_get_token, parse_params,
	lex_expansion_token): Update.

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

	* cppmain.c (scan_translation_unit): Don't worry about
	putting a space after hashes.
	* cpplib.c (directive_diagnostics): New.
	(_cpp_handle_directive): Update to use directive_diagnostics.
	(run_directive): Don't toggle prevent_expansion.
	(do_line): Backup in case of the line extension.
	* cpplib.h (cpp_lexer_pos): Remove.
	* cppmacro.c (_cpp_create_definition): Precede a leading #
	with whitespace.

2001-09-15  Richard Henderson  <rth@redhat.com>

	* c-typeck.c (comptypes): Handle zero-length arrays properly.

2001-09-15  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* c-common.c (c_promoting_integer_type_p): Handle ?Imode types.

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

	PR preprocessor/3571
	* tradcpp.c (handle_directive): Skip non-vertical space.

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

	* cppmain.c (setup_callbacks): Set line callback only
	if outputting preprocessed source.

2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* collect2.c (main): Const-ification.
	* gcc.c (translate_options, process_command): Use xstrdup in
	lieu of xmalloc/strcpy.
	(main): Use concat in lieu of xmalloc/strcpy/strcat.

2001-09-14  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* doc/install.texi (Specific, alphaev5-cray-unicosmk*): Fix
	example.

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

	* scan-decls.c (scan_decls): Fix typo.

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

	* cpphash.h (struct cpp_reader): Remove lexer_pos, directive_pos.
	Split mlstring_pos into mls_line and mls_col.
	* cppinit.c (cpp_create_reader): Initialize line to 1.
	(cpp_destroy): Free tokenruns.
	(push_include): Don't update lexer_pos.
	* cpplex.c (unterminated, parse_string): Update.
	(lex_token): Don't update lexer_pos, update.
	* cpplib.c (if_stack): Save line instead of line + col.
	(start_directive, _cpp_do__Pragma, do_else, do_elif,
	push_conditional, _cpp_pop_buffer): Update.
	* cppmacro.c (funlike_invocation_p): Don't save lexer_pos.
	(_cpp_create_definition): Update.

2001-09-15  Eric Christopher  <echristo@redhat.com>

	* config/mips/abi64.h: Add support for MEABI.

2001-09-15  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md: Add unspec #2.
	(reload_indi): Use.
	(reload_outdi): Ditto.
	(reload_outsi): Ditto.
	(HILO_delay): New.

2001-09-15  Eric Christopher  <echristo@redhat.com>
	    Jason Eckhardt  <jle@redhat.com>

	* config.gcc: Add mipsisa32 target and mipsisa32-linux target.
	* config/mips/isa32-linux.h: New file.
	* config/mips/isa3264.h: Ditto.
	* config/mips/mips-protos.h: Add mips_hard_regno_nregs.
	* config/mips/mips.c (mips_hard_regno_nregs): Move here from mips.h.
	(output_block_mode): Support MEABI.
	(function_arg): Ditto. Fix floating point arg passing.
	(mips_va_start): Ditto.
	(override_options): Add isas 32 and 64, meabi, mips32 and mips64
	processors.
	(mips_asm_file_start): Add new section to pass abi to gdb.
	(function_arg_pass_by_reference): Support MEABI.
	(mips_parse_cpu): Support mips32 and mips64 processors.
	* config/mips/mips.h: Support ABI_MEABI, TARGET_MIPS4KC,
	TARGET_MIPS5KC.  Support isa32 and isa64.
	(processor_type): Add r4kc, r5kc, r20kc.
	(GENERATE_MULT3_SI): New.
	(GENERATE_MULT3_DI): Ditto.
	(GENERATE_MULT3): Remove.
	(ISA_HAS_64BIT_REGS): Add isa == 64.
	(ISA_HAS_8CC): Add mips_isa = 32 and 64.
	(ISA_HAS_MADD_MSUB): New.
	(ISA_HAS_CLZ_CLO): Ditto.
	(ISA_HAS_DCLZ_DCLO): Ditto.
	(ABI_GAS_ASM_SPEC): New.
	(GAS_ASM_SPEC): Use. Add support for mips32, mips64.
	(ASM_SPEC): Ditto.
	(LINK_SPEC): Ditto.
	(SUBTARGET_CC1_SPEC): Ditto.
	(SUBTARGET_CPP_SIZE_SPEC): Ditto.
	(PAD_VARARGS_DOWN): Support MEABI.
	(HARD_REGNO_NREGS): Move to mips.c.
	(ASM_OUTPUT_IDENT): Add #undef.
	* config/mips/mips.md: Add r4kc, r5kc, r20kc.
	(mulsi3): Use GENERATE_MULT3_SI.
	(mulsi3_mult3): Ditto.  Support mips32, mips64.
	(mul_acc_si): Use ISA_HAS_MADD_MSUB.
	(mul_sub_si): New pattern.
	(unnamed splitters): New.
	(muldi3): Use GENERATE_MULT3_DI.
	(muldi3_internal2): Ditto.
	(movdicc): Support mips32.
	* config/mips/t-isa3264: New file.

2001-09-15  Hans-Peter Nilsson  <hp@axis.com>

	* rtl.h (FIND_REG_INC_NOTE) [HAVE_PRE_INCREMENT
	|| HAVE_PRE_DECREMENT || HAVE_POST_INCREMENT
	|| HAVE_POST_DECREMENT]: Call find_regno_note for REGs.

	* reorg.c (fill_slots_from_thread): After call to
	steal_delay_list_from_target, update own_thread as new_thread may
	have branched.

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

	* cpperror.c (print_location): Take line and column, for
	default positioning use the previously lexed token.
	(_cpp_begin_message): Take line and column.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line): Update.
	* cpphash.h (_cpp_begin_message): Update prototype.
	* cppinit.c (push_include): Don't set output line.
	* cpplex.c (_cpp_lex_token): Callback for start of new output lines.
	* cpplib.c (do_diagnostic, _cpp_pop_buffer): Update.
	(do_pragma): Kludge for front ends.  Don't expand macros at all.
	* cpplib.h (cpp_lookahead, cpp_token_with_pos, cpp_get_line): Remove.
	(struct cpp_token): Remove output_line.
	(struct cpp_callbacks): New member line_change.
	* cppmacro.c (builtin_macro, paste_all_tokens, replace_args,
	cpp_get_token): Preserve BOL flag.
	(cpp_get_line): Remove.
	(_cpp_backup_tokens): Remove useless abort().
	* cppmain.c (cb_line_change): New.
	(scan_translation_unit): Don't worry about starting new lines here.
	* scan-decls.c (scan_decls): Update.
	* c-lex.c (c_lex, init_c_lex): Update.
	(cb_line_change, src_lineno): New.

Fri Sep 14 13:54:50 EDT 2001  John Wehle  (john@feith.com)

	* tree.c (append_random_chars): Generate the random
	characters in a reproducable fashion.

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

	* config/i386/i386.c (internal_label_prefix): New.
	(internal_label_prefix_len): New.
	(override_options): Set them.
	(local_symbolic_operand): New.
	(legitimate_pic_address_disp_p): Use it.
	(legitimize_pic_address): Likewise.

2001-09-14  Marc Espie <espie@openbsd.org>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK):  Generate reference to GOT
	correctly.

2001-09-14  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* config/alpha/alpha.md (unaligned_extendhidi_be): Fix.
	* config/alpha/unicosmk.h (INIT_TARGET_OPTABS): New.

2001-09-14  Nick Clifton  <nickc@cambridge.redhat.com>

	* rtlanal.c (subreg_regno_offset): Add semicolon to end of
	invocation of SUBREG_REGNO_OFFSET.

	* haifa-sched.c: Fix typo in FSF copyright statement.
	* sched-deps.c: Fix typo in FSF copyright statement.
	* sched-ebb.c: Fix typo in FSF copyright statement.
	* sched-rgn.c: Fix typo in FSF copyright statement.
	* sched-vis.c: Fix typo in FSF copyright statement.

	* config.gcc: Move inclusion of arm elf specific header files
	from the files themselves into the tm_file variable.  Make
	sure that elfos.h is included before target specific elf
	headers.
	* config/arm/aout.h (NO_DOLLAR_IN_LABEL): Only define if not
	already defined.
	(ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Protect definition.
	* config/arm.arm.h (TARGET_MEM_FUNCTIONS,
	ASM_OUTPUT_CASE_LABEL): Protect definition.
	(CC1_SPEC, FP_DEFAULT, ARM_FUNCTION_PROFILE): Only define if
	not already defined.
	* config/arm/conix-elf.h: (USER_LABEL_PREFIX,
	LOCAL_LABEL_PREFIX, MAKE_DECL_ONE_ONLY, UNIQUE_SECTION):
	Remove duplicate definition.
	(READONLY_DATA_SECTION, SUBTARGET_EXTRA_SECTION,
	(SUBTARGET_EXTRA_SECTION_FUNCTION, RDATA_SECTION_ASM_OP,
	(RDATA_SECTION_FUNCTION): Remove redundant definition.
	(STARTFILE_SPEC, ENDFILE_SPEC): Protect definition.
	Remove inclusion of arm/elf.h.
	* config/arm/unknown-elf.h: as for conix-elf.h.
	(STARTFILE_SPEC): Include crti.o and crtn.o.
	* config/arm/linux-elf.h: as for conix-elf.h.
	* config/arm/ecos-elf.h: Remove inclusion of unknown-elf.h.
	* config/arm/strongarm-elf.h: Remove inclusion of
	unknown-elf.h.
	* config/arm/xscale-elf.h: Remove inclusion of unknown-elf.h.
	* config/arm/unknown-elf-oabi.h: Remove inclusion of
	unknown-elf.h and elf.h.
	* config/arm/uclinux-elf.h: Remove inclusion of linux-elf.h.
	* config/arm/linux-gas.h (DBX_DEBUGGING_INFO,
	ASM_WEAKEN_LABEL): Remove redundant definition.
	* config/arm/elf.h: Test for inclusion of elfos.h
	(USER_LABEL_PREFIX, ASM_DECLARE_RESULT, ASM_DECLARE_RESULT,
	ASM_DECLARE_OBJECT_NAME, ASM_FINISH_DECLARE_OBJECT_NAME,
	SUBTARGET_EXTRA_SECTION, SUBTARGET_EXTRA_SECTION_FUNCTION,
	EXTRA_SECTIONS, INT_ASM_OP, ASM_WEAKEN_LABEL): Remove
	redundant definition.
	(TYPE_OPERAND_FMT, ASM_DECLARE_FUNCTION_NAME,
	ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_INTERNAL_LABEL,
	ASM_OUTPUT_ALIGNED_COMMON): Protect definition.
	* t-arm-elf (EXTRA_MULTILIB_PARTS): Add crti.o and crtn.o.
	Add rules to build crti.o and crtn.o
	* crti.asm: New file.
	* crtn.asm: New file.

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

	* c-parse.in (_yylex): Use _cpp_backup_tokens.
	* cpphash.h (struct tokenrun): Add prev.
	(struct lexer_state): Remove bol.
	(struct cpp_reader): Remove old lookahead stuff, add lookaheads.
	(_cpp_free_lookaheads, _cpp_release_lookahead, _cpp_push_token)
	: Remove.
	* cppinit.c (cpp_create_reader): Don't set bol.
	(cpp_destroy): Don't free lookaheads.
	* cpplex.c (lex_directive): Remove.
	(next_tokenrun): Update.
	(_cpp_lex_token): Clean up logic.
	(lex_token): Update to return a pointer to lexed token, since it
	can move to the start of the buffer.  Simpify newline handling.
	* cpplib.c (SEEN_EOL): Update.
	(skip_rest_of_line): Remove lookahead stuff.
	(end_directive): Line numbers are already incremented.  Revert
	to start of lexed token buffer if we can.
	(_cpp_handle_directive, do_pragma, do_pragma_dependency,
	parse_answer): Use _cpp_backup_tokens.
	(run_directive, cpp_pop_buffer): Don't set bol, set saved_flags
	instead.  Don't check for EOL.
	(do_include_common, do_line, do_pragma_system_header): Use
	skip_rest_of_line.
	* cpplib.h (BOL, _cpp_backup_tokens): New.
	* cppmacro.c (save_lookahead_token, take_lookahead_token,
	alloc_lookahead, free_lookahead, _cpp_free_lookaheads,
	cpp_start_lookahead, cpp_stop_lookahead, _cpp_push_token): Remove.
	(builtin_macro): Don't use cpp_get_line.
	(cpp_get_line): Short term kludge.
	(parse_arg): Handle directives in arguments here.  Back up when
	appropriate.  Store EOF at end of argument list.
	(funlike_invocation_p): Use _cpp_backup_tokens.
	(push_arg_context): Account for EOF at end of list.
	(cpp_get_token): Remove lookahead stuff.  Update.

2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-parse.in (yyerror): Const-ification and/or static-ization.
	* c-typeck.c (push_member_name): Likewise.
	* collect2.c (main): Likewise.
	* dbxout.c (dbxout_parms): Likewise.
	* diagnostic.c (format_with_decl): Likewise.
	* dwarf2out.c (output_ranges): Likewise.
	* dwarfout.c (fundamental_type_code): Likewise.
	* except.c (dw2_output_call_site_table): Likewise.
	* gcc.c (do_spec_1): Likewise.
	* genopinit.c (optabs): Likewise.
	* objc/objc-act.c (synth_id_with_class_suffix, start_class,
	gen_declaration_1, handle_impent): Likewise.
	* protoize.c (default_include, in_system_include_dir, abspath):
	Likewise.
	* sched-vis.c (visualize_stall_cycles): Likewise.
	* sdbout.c (plain_type_1, sdbout_end_function,
	sdbout_end_epilogue): Likewise.
	* varasm.c (decode_reg_name): Likewise.

	* 1750a.c (mod_regno_adjust): Likewise.
	* alpha.c (alpha_write_one_linkage,
	unicosmk_output_default_externs): Likewise.
	* arm.c (arm_condition_codes): Likewise.
	* arm.h (arm_condition_codes): Likewise.
	* avr.c (output_movsisf, encode_section_info): Likewise.
	* darwin.h (GEN_BINDER_NAME_FOR_STUB, GEN_SYMBOL_NAME_FOR_SYMBOL):
	Likewise.
	* i386.c (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
	* i386.h (hi_reg_name, qi_reg_name, qi_high_reg_name): Likewise.
	* m88k.c (output_function_profiler): Likewise.
	* mips.c (mips_output_conditional_branch): Likewise.
	* ns32k.c (ns32k_out_reg_names): Likewise.
	* ns32k.h (ns32k_out_reg_names): Likewise.
	* pj.c (pj_output_rval): Likewise.
	* rs6000.c (GEN_LOCAL_LABEL_FOR_SYMBOL): Likewise.
	* sparc.c (sparc_flat_function_prologue,
	sparc_flat_function_epilogue): Likewise.

2001-09-13  Markus Werle <numerical.simulation@web.de>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Binaries): Add "Binaries for HP-UX 11.00 at
	Aachen University of Technology".

2001-09-13  Andreas Schwab  <schwab@suse.de>

	* config/float-m68k.h: Define DECIMAL_DIG and FLT_EVAL_METHOD for
	C99.

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

	* config/alpha/alpha.c (small_symbolic_operand): New.
	(override_options): Set MASK_SMALL_DATA based on pic/PIC.
	(some_operand, input_operand): Don't handle HIGH.
	(alpha_legitimize_address): Use it.  Emit HIGH with PLUS gp.
	(alpha_expand_mov): Likewise.
	(print_operand) [H]: Just print HIGH symbol.
	(print_operand_address): Handle small data.
	* config/alpha/alpha.h (MASK_SMALL_DATA, TARGET_SMALL_DATA): New.
	(TARGET_SWITCHES): Add -msmall-data/large-data.
	(PIC_OFFSET_TABLE_REGNUM): New.
	(PREFERRED_RELOAD_CLASS): Don't handle HIGH.
	(PREDICATE_COES): Update.
	* config/alpha/alpha.md (adddi_er_high): New.
	(adddi_er_low): Handle small data.
	* config/alpha/elf.h (DO_SELECT_SECTION): If SMALL_DATA,
	prefer .sdata to .rodata.
	(SELECT_RTX_SECTION): Likewise.

2001-09-12  Josh Martin  <josh.martin@abq.sc.philips.com>

	* fixinc/inclhack.def(hpux11_size_t): Keep HP-UX headers from
	defining __size_t and leaving size_t undefined.

2001-09-12  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (expunge_block): Declare.
	* cfg.c (expunge_block): Remove static declaration.

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

	* integrate.c (copy_insn_list): Copy label name from
	NOTE_INSN_DELETED_LABEL.

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

	* c-common.c (c_tree_code_name): Const-ification.
	* c-decl.c (c_decode_option): Likewise.
	* c-typeck.c (warn_for_assignment): Likewise.
	* collect2.c (libexts, is_ctor_dtor, main, ignore_library):
	Likewise.
	* cppinit.c (output_deps): Likewise.
	* dependence.c (dependence_string, direction_string): Likewise.
	* dwarf2out.c (output_ranges): Likewise.
	* fixinc/fixfixes.c (emit_gnu_type): Likewise.
	* fixinc/gnu-regex.c (re_error_msgid): Likewise.
	* gcc.c (standard_exec_prefix, standard_exec_prefix_1,
	standard_startfile_prefix, standard_startfile_prefix_1,
	standard_startfile_prefix_2, tooldir_base_prefix,
	standard_bindir_prefix, find_a_file): Likewise.
	* genattrtab.c (make_length_attrs): Likewise.
	* gencheck.c (tree_codes): Likewise.
	* genemit.c (gen_split): Likewise.
	* genrecog.c (special_mode_pred_table): Likewise.
	* graph.c (graph_ext): Likewise.
	* protoize (default_include): Likewise.
	* reload.c (reload_when_needed_name): Likewise.
	* sched-vis.c (visualize_stall_cycles): Likewise.
	* tlink.c (recompile_files): Likewise.
	* toplev.c (decode_g_option): Likewise.
	* tradcpp.c (output_deps): Likewise.
	* varasm.c (decode_reg_name): Likewise.

	* arm.c (arm_condition_codes, strings_fpa, thumb_condition_code):
	Const-ification.
	* arm.md: Likewise.
	* avr.c (avr_regnames, encode_section_info): Likewise.
	* c4x.c (float_reg_names): Likewise.
	* darwin.h (ASM_GLOBALIZE_LABEL): Likewise.
	* elfos.h (const_section): Likewise.
	* i386.c (ix86_comp_type_attributes): Likewise.
	* i386/win32.h (STRIP_NAME_ENCODING): Likewise.
	* ia64/aix.h (UNIQUE_SECTION): Likewise.
	* ia64.c (type_names): Likewise.
	* m68hc11.c (reg_class_names): Likewise.
	* m88k.c (m_options): Likewise.
	* mips.c (mips_output_conditional_branch, mips_unique_section):
	Likewise.
	* rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
	* sparc.c (sparc_flat_function_prologue, sparc_flat_function_epilogue,
	ultra_code_names): Likewise.
	* sparc.h (OVERRIDE_OPTIONS): Likewise.

2001-09-12  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (gcc_cv_as_shf_merge): Fix a typo.
	Use --fatal-warnings option for gas.
	* configure: Rebuilt.

2001-09-12  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* doc/install.texi (Specific, alphaev5-cray-unicosmk*): Document.

2001-09-11  Jim Wilson  <wilson@redhat.com>

	* alias.c (clear_reg_alias_info): Only handle pseudo registers.

2001-10-11  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* builtins.c (c_strlen): Treat an offset too large for a
	HOST_WIDE_INT as out of range.

Tue Sep 11 18:57:47 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (EDGE_CRITICAL): Remove; renumber other flags.
	(EDGE_CRITICAL_P): New predicate.
	* cfg.c (force_nonfallthru_and_redirect, split_edge): Kill EDGE_CRITICAL
	handling.
	(insert_insn_on_edge): Use EDGE_CRITICAL_P.
	(dump_edge_info): Remove "crit".
	* cfganal.c (mark_critical_edges): Kill.
	* cfgbuild.c (find_basic_blocks): Remove mark_critical_edges call.
	* cfgcleanup.c (cleanup_cfg): Likewise.
	* profile.c (instrument_edges): Use EDGE_CRITICAL_P.
	(find_spanning_tree): Likewise.
	* reg-stack.c (convert_regs_1): Likewise.
	* ssa.c (mark_regs_equivalent_over_bad_edges): Likewise.

	* basic-block.h (create_basic_block_structure): New.
	(create_basic_block): Update prototype.
	(force_nonfallthru): New.
	* bb-reorder.c (fixup_reorder_chain): Fixup use force_nonfallthru.
	* cfg.c (create_basic_block_structure): Rename from create_basic_block;
	handle updating of block_for_insn, creating of empty BBs and BBs at
	the end of INSN chain.
	(create_basic_block): New function.
	(split_block): Use create_basic_block.
	(force_nonfallthru_and_redirect): Break out from ...; cleanup
	(redirect_edge_and_branch_force): ... here.
	(force_nonfallthru): New.
	(split_edge): Rewrite to use force_nonfallthru and create_block.
	* cfgbuild.c (find_basic_blocks_1): Use create_basic_block_structure.
	(find_basic_blocks): Free basic_block_for_insn.
	* cfgcleanup.c (merge_blocks): Use force_nonfallthru.

	* cfg.c: Fix formating.
	* cfgcleanup.c: Fix formating.
	(merge_blocks, tail_recursion_label_p): Return bool.
	(merge_blocks_move_predecessor_nojumps,
	 merge_blocks_move_successor_nojumps): Return void.

2001-09-11  Jakub Jelinek  <jakub@redhat.com>

	* configure.in: Check whether assembler supports section merging.
	* config.in: Rebuilt.
	* configure: Rebuilt.
	* varasm.c (variable_section, output_constant_pool): Pass alignment
	to SELECT_SECTION and SELECT_RTX_SECTION.
	(mergeable_string_section): New.
	(mergeable_constant_section): New.
	(default_elf_asm_named_section): Output SECTION_MERGE and
	SECTION_STRINGS flags plus SECTION_ENTSIZE entity size.
	* output.h (mergeable_string_section): New.
	(mergeable_constant_section): New.
	(SECTION_MERGE, SECTION_STRINGS, SECTION_ENTSIZE): Define.
	* toplev.c (flag_merge_constants): New.
	(f_options): Add -fmerge-constants and -fmerge-all-constants
	options.
	(toplev_main): Default to -fno-merge-constants if not optimizing.
	* flags.h (flag_merge_constants): Add extern.
	* invoke.texi (-fmerge-constants, -fmerge-all-constants): Document.
	* tm.texi (SELECT_SECTION, SELECT_RTX_SECTION): Document added third
	argument.
	* config/elfos.h (ASM_SECTION_START_OP, ASM_OUTPUT_SECTION_START):
	Define if assembler has working .subsection -1 support.
	(SELECT_RTX_SECTION, SELECT_SECTION): Add third macro argument.
	Put constant into special SHF_MERGE sections if the linker should
	attempt to merge duplicates.
	* config/ia64/sysv4.h (SELECT_RTX_SECTION, SELECT_SECTION): Add third
	macro argument.
	Put constant into special SHF_MERGE sections if the linker should
	attempt to merge duplicates.
	* config/alpha/elf.h: Likewise.
	(ASM_SECTION_START_OP, ASM_OUTPUT_SECTION_START): Define if assembler
	has working .subsection -1 support.
	* config/nextstep.h: Add third argument to SELECT_RTX_SECTION and
	SELECT_SECTION.
	* config/svr3.h: Likewise.
	* config/darwin.h: Likewise.
	* config/arm/aof.h: Likewise.
	* config/arm/linux-elf.h: Likewise.
	* config/avr/avr.h: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/d30v/d30v.h: Likewise.
	* config/i386/dgux.h: Likewise.
	* config/i386/osfrose.h: Likewise.
	* config/i386/sco5.h: Likewise.
	* config/i386/svr3gas.h: Likewise.
	* config/ia64/aix.h: Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/m68k/m68k.h: Likewise.
	* config/m88k/dgux.h: Likewise.
	* config/m88k/m88k.h: Likewise.
	* config/mcore/mcore-pe.h: Likewise.
	* config/mips/mips.h: Likewise.
	* config/pa/pa.h: Likewise.
	* config/pa/pa-linux.h: Likewise.
	* config/romp/romp.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/rs6000/xcoff.h: Likewise.
	* config/s390/linux.h: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sysv4.h: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/v850/v850.h: Likewise.
	* config/vax/vms.h: Likewise.
	* config/arm/arm.c (arm_elf_asm_named_section): Output SECTION_MERGE
	and SECTION_STRINGS flags plus SECTION_ENTSIZE entity size.
	* config/sparc/sparc.c (sparc_elf_asm_named_section): Use
	default_elf_asm_named_section for SHF_MERGE sections.

Tue Sep 11 17:55:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* bb-reorder.c (fixup_reorder_chain): Fallthru edge to exit block
	is OK.

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

	* c-common.c (split_specs_attrs): Allow for empty attributes with
	empty TREE_PURPOSE.  Fixes PR c/4294.

Tue Sep 11 11:37:52 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (cached_make_edge, make_single_succ): New.
	(make_edge): Remove first parameter.
	* bb-reroder.c (fixup_reorder_chain): Use make_single_succ_edge.
	* cfg.c (cached_make_edge): Rename from make_edge; return newly
	created edge; use obstack allocation.
	(make_edge, make_single_succ_edge): New.
	(first_removed_edge): New static variable.
	(init_flow): Initialize first_removed_edge and n_edges.
	(clear_edges): Use remove_edge.
	(flow_delete_block): Likewise.
	(remove_edge): Add removed edges to the removed edges list.
	(split_block, redirect_edge_and_branch_force, split_edge):
	Use make_edge.
	* cfganal.c (flow_call_edges_add): Updaet make_edge call.
	(add_noreturn_fake_exit_edges): Likewise.
	(connect_infinite_loops_to_exit): Liekwise.
	* cfgbuild.c (make_label_edge, make_edges, find_sub_basic_blocks):
	Use cached_make_edge.
	* cfgcleanup.c (try_crossjump_to_edge): Use make_single_succ_edge.
	* profile.c (branch_prob): Update make_edge call.
	* ssa-dce.c (ssa_eliminate_dead_code): Likewise.

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

	* config/alpha/alpha.c: Tidy formatting.
	(local_symbolic_operand): Verify mode.
	(alpha_sa_mask): Ignore unicos for eh_return.
	(alpha_expand_epilogue): Handle sp_adj2 zero, not NULL.
	* config/alpha/alpha.md (umk divsi patterns): Remove.
	(extendsfdf2): Remove unicos check.
	(tablejump): Merge vms and unicos code; always use direct set
	plus label_ref use.

2001-09-11  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* config.gcc (alpha*-*-unicosmk*): New target.

	* config/alpha/alpha-protos.h (symbolic_operand,
	unicosmk_add_call_info_word, unicosmk_add_extern,
	unicosmk_defer_case_vector, unicosmk_unique_section,
	unicosmk_output_align, unicosmk_text_section, unicosmk_data_section,
	unicosmk_asm_file_start, unicosmk_asm_file_end,
	unicosmk_output_common): Declare.

	* config/alpha/alpha.c (NUM_ARGS, override_options, call_operand,
	direct_return, function_arg, alpha_va_start, alpha_va_arg,
	alpha_does_function_need_gp, alpha_end_function): Support Cray
	Unicos/Mk.
	(alpha_init_machine_status, alpha_mark_machine_status,
	alpha_free_machine_status, unicosmk_output_deferred_case_vectors,
	unicosmk_gen_dsib, unicosmk_output_ssib, unicosmk_need_dex,
	unicosmk_asm_named_section, unicosmk_insert_attributes,
	unicosmk_section_type_flags, symbolic_operand,
	unicosmk_output_module_name, unicosmk_output_default_externs,
	unicosmk_output_dex, unicosmk_output_externs,
	unicosmk_output_addr_vec, unicosmk_ssib_name,
	unicosmk_initial_elimination_offset, unicosmk_asm_file_start,
	unicosmk_asm_file_end, unicosmk_output_common,
	unicosmk_section_type_flags, unicosmk_unique_section,
	unicosmk_add_call_info_word, unicosmk_text_section,
	unicosmk_data_section, unicosmk_extern_list, unicosmk_extern_head,
	unicosmk_add_extern, unicosmk_dex, unicosmk_dex_list,
	unicosmk_dex_count, unicosmk_special_name): New.
	(TARGET_INSERT_ATTRIBUTES, TARGET_SECTION_TYPE_FLAGS): Define for
	TARGET_ABI_UNICOSMK.
	(get_aligned_mem, alpha_expand_unaligned_load,
	alpha_expand_unaligned_store, alpha_expand_unaligned_load_words,
	alpha_expand_unaligned_store_words): Support big-endian mode.
	(print_operand): Likewise. New format specifier 't'. Use
	TARGET_AS_SLASH_BEFORE_SUFFIX.
	(alpha_is_stack_procedure): Rename from vms_is_stack_procedure.
	(alpha_pv_save_size): Update with above change.
	(alpha_sa_mask, alpha_sa_size, alpha_expand_prologue,
	alpha_start_function, alpha_expand_epilogue): Likewise. Support Cray
	Unicos/Mk.

	* config/alpha/alpha.h (TARGET_ABI_UNICOSMK): New.
	(TARGET_ABI_OSF): Exclude TARGET_ABI_UNICOSMK.
	(TARGET_AS_SLASH_BEFORE_SUFFIX): New.
	(EXTRA_CONSTRAINT): New constraint 'U'.
	(PREDICATE_CODES): Add symbolic_operand.

	* config/alpha/alpha.md (UNSPEC_UMK_LAUM, UNSPEC_UMK_LALM,
	UNSPEC_UMK_LAL, UNSPEC_UMK_LOAD_CIW): New constants.
	(mulsi3, *mulsi_se, mulvsi3): Disable for TARGET_ABI_UNICOSMK.
	(integer division and modulus patterns): Split in default and
	Unicos/Mk versions.
	(*divmodsi_internal, *divmoddi_internal): Disable for
	TARGET_ABI_UNICOSMK.
	(unaligned_extend?idi, unaligned_load?i, unaligned_store?i): Split in
	little-endian and big-endian versions.
	(ext, ins, msk): Likewise.
	(extv, extzv, insv): Support big-endian mode.
	(call, call_value, tablejump): Support TARGET_ABI_UNICOSMK.
	(call_umk, call_value_umk, *call_umk, tablejump_umk,
	*tablejump_umk_internal, *call_value_umk): New.
	(*movdi_nofix): Add pattern for loading an address into a register on
	TARGET_ABI_UNICOSMK.
	(umk_laum, umk_lal, umk_lalm, *umk_load_ciw): New.
	(umk_mismatch_args, arg_home_umk): New.
	(various insns): Don't use mov, fmov, nop, fnop and unop.
	(realign): Support TARGET_ABI_UNICOSMK.

	* config/alpha/unicosmk.h: New file.
	* config/alpha/t-unicosmk: New file.

	* fixinc/inclhack.def (unicosmk_restrict): New.
	* fixinc/fixincl.x: Regenerate.

	* ginclude/stddef.h (size_t): Check for and define __SIZE_T__.
	(wchar_t): Check for and define __WCHAR_T__.

2001-09-11  Richard Sandiford  <rsandifo@redhat.com>

	* combine.c (simplify_shift_const): Treat shifts by the mode
	size as undefined.

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

	* cpphash.h (struct tokenrun): New.
	(struct cpp_context): New member bol.
	(struct cpp_reader): New members.
	(_cpp_init_tokenrun): New.
	* cppinit.c (cpp_create_reader): Set up the token runs.
	* cpplex.c (lex_directive, lex_token, next_tokenrun): New.
	(lex_token): New internalised version of _cpp_lex_token.  Don't
	handle directives or the multiple include optimization here any
	more.  Simply lex a token.
	* cpplib.c (run_directive): Clear bol.
	(_cpp_pop_buffer): Set bol.
	* cppmacro.c (funlike_invocation_p): Keep tokens whilst parsing
	arguments.

2001-09-11  Michael Meissner  <meissner@redhat.com>

	* config/mips/mips.h (CC1_SPEC): If -mgp32 default to -mfp32, and
	give an error if the user uses -mfp32.
	(CPP_FPR_SPEC): Define __mips_fpr to be 32 or 64 depending on the
	default options.
	(CPP_SPEC): Define __mips_fpr to be 32 or 64, depending on the
	floating point register size.
	(EXTRA_SPECS): Add CPP_FPR_SPEC.

	* config/mips/netbsd.h (ASM_FINISH_DECLARE_OBJECT): Use
	HOST_WIDE_INT_PRINT_DEC to properly print the result of
	int_size_in_bytes.
	* config/mips/elf.h (ASM_FINISH_DECLARE_OBJECT): Ditto.
	* config/mips/elf64.h (ASM_FINISH_DECLARE_OBJECT): Ditto.

2001-09-11  Hans-Peter Nilsson  <hp@axis.com>

	* dbxout.c (dbxout_parms): Fix typo in comment.
	* unroll.c (loop_find_equiv_value): Ditto.
	* toplev.c (rest_of_compilation): Ditto.
	* loop.c (scan_loop): Ditto.
	* dwarf2out.c (struct dw_fde_struct): Ditto.

2001-09-10  Zack Weinberg  <zackw@panix.com>

	* cpplex.c (parse_identifier): Fast-path optimize.  Avoid
	copying identifier when we're just going to throw it away.
	(parse_identifier_slow): New routine to handle abnormal cases.
	(_cpp_lex_token): Update call site.

	* hashtable.c (ht_lookup): Don't assume that the string we've
	been given is NUL-terminated.
	* system.h: #define __builtin_expect(a, b) to (a) if not
	GCC >=3.0.

2001-09-10  Michael Meissner  <meissner@redhat.com>

	* config.gcc (sparc64-*-solaris2): Add alias to be compatible with
	binutils, gdb.

2001-09-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/t-aix43 (SHLIB_INSTALL): Use mode 751 (a+x,r-o).

Mon Sep 10 16:26:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (c_getstr): Correct thinko in last change and further
	cleanup.

2001-09-10  Tim Freeman <tim@fungibole.com>

	* dwarf2out.c (incomplete_types, decl_scope_table): Make them
	into varray's and register them as roots with the garbage
	collector so they are not collected too soon.

Mon Sep 10 14:21:26 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cfg.o, cfganal.o, cfgloop.o, cfgbuild.o, cfgcleanup.o):
	New.
	* basic-block.h (flow_obstack, label_value_list,
	tail_recursion_label_list): Declare
	(tidy_fallthru_edges): Declare.
	(expunge_block, last_loop_beg_note): Delete.
	(can_fallthru, flow_nodes_print, flow_edge_list_print): Declare.
	* cfg.c: New file
	(basic_block_for_insn, label_value_list): Move from flow.c; make global.
	(n_basic_blocks, n_edges, basic_block_info, entry_exit_blocks,
	init_flow, clear_edges, can_delete_note_p, can_delete_label_p,
	flow_delete_insn, flow_delete_insn_chain, create_basic_block,
	expunge_block, flow_delete_block, compute_bb_for_insn,
	update_bb_for_insn, set_block_for_insn, set_block_for_new_insns,
	make_edge, remove_edge, redirect_edge_succ, redirect_edge_succ_nodup,
	redirect_edge_pred, split_block, marge_blocks_nomove, block_label,
	try_redirect_by_replacing_jump, last_loop_beg_note,
	redirect_edge_and_branch, redirect_edge_and_branch_force,
	tidy_fallthru_edge, tidy_fallthru_edges, back_edge_of_syntactic_loop_p,
	split_edge, insert_insn_on_edge, commit_one_edge_insertion,
	commit_edge_insertions, dump_flow_info, debug_flow_info,
	dump_edge_info, dump_bb, debug_bb, debug_bb_n, print_rtl_with_bb,
	verify_flow_info, purge_dead_edges, purge_all_dead_edges):
	Move here from flow.c
	* cfganal.c: New file.
	(forwarder_block_p, can_fallthru, mark_critical_edges,
	 mark_dfs_back_edges, need_fake_edge_p, flow_call_edges_add,
	 find_unreachable_blocks, create_edge_list, free_edge_list,
	 print_edge_list, verify_edge_list, find_edge_index, flow_nodes_print,
	 flow_edge_list_print, remove_fake_successors, remove_fake_edges,
	 add_noreturn_fake_exit_edges, connect_infinite_loops_to_exit,
	 flow_reverse_top_sort_order_compute, flow_depth_first_order_compute,
	 flow_dfs_compute_reverse_init, flow_dfs-compute_reverse_add_bb,
	 flow_dfs-compute_reverse_execute, flow_dfs_compute_reverse_finish);
	Move here from flow.c
	* cfgbuild.c: New file
	(count_basic_blocks, find_label_refs, make_label_edge, make_eh_edge,
	 make_edges, find_basic_blocks_1, find_basic_blocks,
	 find_sub_basic_blocks): Move here from flow.c
	* cfgcleanup.c: New file.
	(try_simplify_condjump, try_forward_edges, tail_recursion_label_p,
	 merge_blocks_move_predecessor_nojumps,
	 merge_blocks_move_successor_nojumps, merge_blocks,
	 flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge,
	 try_crossjump_bb, try_optimize_cfg): Move here from flow.c
	(delete_unreachable_blocks, cleanup_cfg): Likewise; return true
	if succeeded.
	* cfgloop.c: New file
	(flow_loops_cfg_dump, flow_loop_nested_p, flow_loop_dump,
	 flow_loops_dump, flow_loops_free, flow_loop_entry_edges_find,
	 flow_loop_exit_edges_find, flow_loop_nodes_find,
	 flow_loop_pre_header_scan, flow_loop_pre_header_find,
	 flow_loop_tree_node_add, flow_loops_tree_build,
	 flow_loop_level_compute, flow_loops_level_compute, flow_loop_scan,
	 flow_loops_find, flow_loops_update, flow_loop_outside_edge_p):
	Move here from flow.c
	* flow.c: Remove everything moved elsewhere
	* output.h (cleanup_cfg): Return bool.

	* bb-reorder.c (reorder_block_def): Remove 'index'.
	(insert_intra_1): Add argument BB, set block for new note.
	(make_reorder_chain): Do not depdent on BB indexes.
	(make_reorder_chain_1): Do not use BB indexes.
	(label_for_bb): Likewise; set BB for new insn.
	(emit_jump_to_block_after): Likewise.
	(fixup_reorder_chain): Sanity check that all basic blocks
	are chained; verify newly created insn chain; remove
	undocnitional jump simplifying; Do not use BB indexes;
	properly initialize count and frequency information;
	dump reordered sequence.
	(insert_intra_bb_scope_notes): update call of insert_intra_1.
	(insert_inter_bb_scope_notes): Set block for new insn.
	(reorder_basic_blocks): Dump flow info before reoredering.

Mon Sep 10 06:47:35 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (clear_reg_alias_info): Use K&R format definition.
	Avoid unsigned warning.
	* builtins.c: Use "unsigned int", not "unsigned".
	(target_char_cast): Use host_integerp and tree_low_cst.
	(expand_builtin_args_info, expand_builtin_frame_address): Likewise.
	(c_strlen): Likewise; OFFSET now HOST_WIDE_INT.
	(c_getstr): Likewise.
	(std_expand_builtin_va_arg): Use int_size_in_bytes.
	(builtin_memcpy_read_str): Avoid unsigned warning.
	(expand_builtin_memcpy): Alignments are unsigned.
	(expand_builtin_strncpy, expand_builtin_memset): Likewise.
	(expand_builtin_expect_jump): Use integer_zerop and integer_onep.
	* predict.c (expensive_function_p): LIMIT now unsigned.
	* resource.c (mark_target_live_regs): Make some vars unsigned.
	* sdbout.c: Use "unsigned int", not "unsigned".
	(MAKE_LINE_SAFE): Add cast to avoid unsigned warning.
	(sdbout_source_line): Likewise.
	(sdbout_record_type_name): Remove "const" for NAME declaration.
	* config/alpha/alpha.c (alpha_expand_block_move): Whitespace fixes.

2001-09-10  Richard Sandiford  <rsandifo@redhat.com>

	* calls.c (store_one_arg): Expand comment.

2001-09-10  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* calls.c (store_one_arg): Make sure that the entire argument is
	pushed if STACK_PARMS_IN_REG_PARM_AREA is defined.

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

	* emit-rtl.c (adjust_address): Fix mode for LO_SUM.

Sun Sep  9 10:43:17 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c (combine_givs): Fix computing of benefit once giv is combined.

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

	* config/alpha/alpha.c (alpha_next_sequence_number): New.
	(alpha_this_literal_sequence_number): New.
	(alpha_this_gpdisp_sequence_number): New.
	(some_operand, input_operand): Add HIGH.
	(local_symbolic_operand): New.
	(alpha_encode_section_info): New.
	(alpha_legitimate_address_p): Allow LO_SUM.
	(alpha_legitimize_address): Generate HIGH+LO_SUM.
	(alpha_expand_mov): Likewise.
	(secondary_reload_class): Check memory_operand not general_operand
	for FP_REGS test.
	(alpha_expand_unaligned_load): Force LO_SUM addresses into a register.
	(alpha_expand_unaligned_store): Likewise.
	(alpha_expand_unaligned_load_words): Likewise.
	(alpha_expand_unaligned_store_words): Likewise.
	(alpha_expand_block_clear): Likewise.
	(print_operand): Handle %#, %*, %H.
	(print_operand_address): Handle LO_SUM.
	(find_lo_sum): New.
	(alpha_does_function_need_gp): Use it.
	(alpha_expand_block_move): Fix signed compare warnings.
	(alpha_sa_mask, alpha_align_insns): Likewise.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (TARGET_EXPLICIT_RELOCS): New.
	(MASK_EXPLICIT_RELOCS): New.
	(TARGET_SWITCHES): Add -mexplicit-relocs.
	(EXTRA_CONSTRAINT): Add 'T'.
	(PREFERRED_RELOAD_CLASS): HIGH goes in GENERAL_REGS.
	(ASM_APP_ON, ASM_APP_OFF): Turn on and off asm macro expansion.
	(ENCODE_SECTION_INFO): Out line.
	(REDO_SECTION_INFO_P): New.
	(STRIP_NAME_ENCODING): New.
	(ASM_OUTPUT_LABELREF): New.
	(PRINT_OPERAND_PUNCT_VALID_P): Add #, *.
	(PREDICATE_CODES): Update.
	* config/alpha/alpha.md (divmodsi_internal_er, divmoddi_internal_er,
	call_osf_1_er_noreturn, call_osf_1_er, movdi_er_low, movdi_er_nofix,
	movdi_er_fix, prologue_ldgp_1_er, builtin_setjmp_receiver_sub_label_er,
	builtin_setjmp_receiver_er, exception_receiver_1_er,
	call_value_osf_1_er): New patterns.
	(sibcall_osf_1, sibcall_value_osf_1): Remove register alternative.
	(movqi, movhi, movsi): Add explicit $31 base register to lda.
	* config/alpha/elf.h (ASM_FILE_START): Set nomacro if explicit relocs.
	(FINAL_PRESCAN_INSN): New.

Sat Sep  8 22:00:55 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (subst_stack_regs_pat): Fix fcmov reversal code.

2001-09-08  Andreas Jaeger  <aj@suse.de>

	* i386.h (TARGET_SWITCHES): Fix description.

2001-09-07  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (num_insns_constant): Compute number of instructions
	more accurately.

	* doc/install.texi: Explain AIX exception handling work-around.
	Update URL for AIX fixes.

2001-09-07  Jim Wilson  <wilson@redhat.com>

	* alias.c (clear_reg_alias_info): New.
	* flow.c (attempt_auto_inc): Call clear_reg_alias_info.
	* rtl.h (clear_reg_alias_info): Declare.

2001-09-07  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* real.c (EMUSHORT,EMUSHORT_SIZE): Use HImode if no 16-bit type is
	available.
	(UEMUSHORT): New. Use instead of unsigned EMUSHORT.
	(m16m,edivm,emulm): Change declaration to match definition.

2001-09-07  Roman Lechtchinsky <rl@cs.tu-berlin.de>

	* reload.c (push_reload): Check for subreg_lowpart_p instead of
	SUBREG_BYTE being 0 when determining if the inner part of a subreg
	can be reloaded.

2001-09-07  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* c-common.c (signed_or_unsigned_type): Handle machine mode types
	which have no corresponding C type.
	* fold_const.c (target_isinf,target_isnan,target_negative): Update
	the representation of 64-bit doubles to work with 64-bit ints.

2001-09-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/mips/mips.c (override_options): Do not override ISA when ABI
	specified if MIPS_CPU_STRING_DEFAULT was specified.

2001-09-07  Richard Henderson  <rth@redhat.com>

	* loop.c (record_giv): Avoid simplifying MULT to ASHIFT.
	(express_from_1): Wrap lines.
	* rtlanal.c (commutative_operand_precedence): Rename from
	operand_preference; export.
	* rtl.h: Declare it.
	* simplify-rtx.c (simplify_gen_binary): Tidy +/- const_int handling.
	(simplify_binary_operation): Invoke simplify_plus_minus on
	(CONST (PLUS ...)) as well.
	(struct simplify_plus_minus_op_data): New.
	(simplify_plus_minus_op_data_cmp): New.
	(simplify_plus_minus): Use them.  Avoid infinite recursion with
	simplify_binary_operation wrt CONST.

Fri Sep  7 11:52:30 2001   Kazu Hirata  <kazu@hxi.com>

	* h8300-protos.h (general_operand_dst_push): Remove.
	* h8300.c (general_operand_dst_push): Likewise.
	* h8300.h (OK_FOR_T): Likewise.
	(EXTRA_CONSTRAINTS): Do not use OK_FOR_T.
	* h8300.md (pushqi_h8300): New.
	(pushqi_h8300hs): Likewise.
	(pushqi): Likewise.
	(pushhi_h8300): Likewise.
	(pushhi_h8300hs): Likewise.
	(pushhi): Likewise.

Fri Sep  7 12:56:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* genattrtab.c (attr_printf): First arg is unsigned.
	Clean up formatting of callers.

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

	* config/mips/mips.c (override_options): Allow abi32 with 64 bit
	registers.

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

	* i386.h (TARGET_SWITCHES): Fix descriptions.

2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* stor-layout.c (compute_record_mode): Check DECL_SIZE is set.

2001-09-06  Ira Ruben  <ira@apple.com>

	Remove OP_IDENTIFIER.
	* tree.def (OP_IDENTIFIER): Remove.
	* tree.c (tree_node_kind enum): Remove op_id_kind.
	(tree_node_kind_names): Remove "op_identifiers".
	(make_node): Remove OP_IDENTIFIER test.
	(build_op_identifier): Removed because it isn't being used.
	* print-tree.c (print_node): Remove OP_IDENTIFIER case.
	* cp/pt.c (tsubst): Remove OP_IDENTIFIER case.

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

	* simplify-rtx.c (simplify_binary_operation): Revert last change.

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

	* simplify-rtx.c (simplify_binary_operation): Simplify contents
	of CONST.

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

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Fix DWARF2 register
	number used for CR register.

Thu Sep  6 11:16:35 2001  Jeffrey A Law  (law@cygnus.com)
			  Joern Rennecke (amylaar@cygnus.com)

	* h8300-protos.h (h8300_return_addr_rtx): New prototype.
	* h8300.c (initial_offset): Handle offset between RP and FP.
	(h8300_return_addr_rtx): New function.
	* h8300.h (FIRST_PSEUDO_REGISTER): Bump now that we have a
	return register.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Corresponding changes.
	(REG_ALLOC_ORDER, RETURN_ADDRESS_POINTER_REGNUM): Likewise.
	(REG_CLASS_CONTENTS, ELIMINABLE_REGS): Likewise.
	(CAN_ELIMINATE, REGISTER_NAMES):
	(RETURN_ADDR_RTX): Call h8300_return_addr_rtx.

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

	Remove TYPE_NONCOPIED_PARTS.
	* tree.h (TYPE_NONCOPIED_PARTS): Remove.
	(struct tree_type): Remove noncopied_parts.
	* c-tree.h (TYPE_ACTUAL_ARG_TYPES): Map onto TYPE_BINFO.
	* expr.c (save_noncopied_parts, init_noncopied_parts): Remove.
	(fixed_type_p): Remove.
	(expand_expr, INIT_EXPR): Don't deal with noncopied parts.
	(expand_expr, MODIFY_EXPR): Likewise.
	* ggc-common.c (ggc_mark_trees): Remove TYPE_NONCOPIED_PARTS.
	* doc/c-tree.texi: Remove TYPE_NONCOPIED_PARTS FIXME.

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

	* config/rs6000/rs6000.c (mask_operand): Use signed vars to avoid
	compiler warnings.
	(mask64_operand): Likewise.
	(includes_rldic_lshift_p): Likewise.
	(includes_rldicr_lshift_p): Likewise.

2001-09-05  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (build_message_expr): If a class method cannot
	be found, do not issue a warning if a corresponding instance
	method exists in the root class.

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

	* config/alpha/alpha.c (alpha_expand_mov): Initialize temp.

2001-09-05  Zack Weinberg  <zack@codesourcery.com>

	* function.c (ggc_mark_struct_function): Mark f->outer.
	* toplev.c (rest_of_compilation): Clear DECL_SAVED_INSNS here...
	* integrate.c (output_inline_function): ... not here.

Wed Sep  5 17:28:49 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* profile.c (branch_prob): Call add_noreturn_fake_exit_edges.

	* i386.c (size_cost): New static variable.
	(override_function): Use size_cost when -Os is specified.

	* i386.c (ix86_expand_prologue): Set use_fast_prologue_epilogue
	properly;  Use current_function_calls_eh_return.
	(ix86_expand_epilogue): Avoid dummy optimize_size tests;
	use leave to avoid dependency chain.

	* local-alloc.c (update_equiv_regs): Use CFG to iterate over INSN stream;
	get BB loop_depth instead of computing it from LOOP notes.

	* reg-stack.c (subst_stack_reg_pat): Handle reversal of conditional moves.

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

	* som.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
	* pa.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Define

2001-09-05  Jeffrey A Law  (law@cygnus.com)
	    Jason Merrill (jason@redhat.com)

	* stor-layout.c (layout_type): Complain if an array's size can
	not be represented in a size_t.

	* config/h8300/elf.h (ENDFILE_SPEC, STARTFILE_SPEC): Define.

2001-09-05  David Billinghurst <David.Billinghurst@riotinto.com>

	* gcc.c: (process_command) Add parentheses around assignment
	used as truth value.

2001-09-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (save_restore_insns): Don't mark any register
	save slots as unchanging if current_function_calls_eh_return.

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

	* config/alpha/alpha.c (alpha_legitimate_address_p): New.
	* config/alpha/alpha-protos.h: Declare it.
	* config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Move to c file.
	(NONSTRICT_REG_OK_FOR_BASE_P): Rename from non-strict macro.
	(NONSTRICT_REG_OK_FP_BASE_P): Likewise.
	(STRICT_REG_OK_FOR_BASE_P): Rename from strict macro.
	(REG_OK_FOR_BASE_P): Select one of the above.

2001-09-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/t-elf (EXTRA_PARTS): Use EXTRA_MULTILIB_PARTS instead.
	(crti.o): Prefix name of object file with $(T).
	(crtn.o): Likewise.

2001-09-05  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h: Set CPLUSPLUS_CPP_SPEC.
	* config/sparc/linux64.h: Likewise.

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

	* doc/invoke.texi (i386 Options): -mwide-multiply is not
	available anymore, remove the documentation.
	(i386 Options): Fix typo, cleanup index entries.

	* prefix.c (concat): Remove, we can use the version from liberty.

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

	* config/alpha/alpha.c (alpha_expand_mov, alpha_expand_mov_nobwx):
	New functions split out of md file expanders.
	* config/alpha/alpha-protos.h: Declare them.
	* config/alpha/alpha.md (movqi, movhi, movsi, movdi): Use them.

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

	* cppmacro.c (funlike_invocation_p): No need to restore context.

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

	* reload.c (push_reload): Export.
	* reload.h (push_reload): Declare it.

	* config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Move out o' line.
	(LEGITIMIZE_RELOAD_ADDRESS): Likewise.
	* config/alpha/alpha.c (alpha_legitimize_address): New.
	(alpha_legitimize_reload_address): Likewise.
	* config/alpha/alpha-protos.h: Declare them.

2001-09-04  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Define.
	* config/darwin.c (machopic_stub_name): Account for internally
	generated lib calls such as memcpy.

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

	* unwind.h (_UA_END_OF_STACK): New flag.
	* unwind.inc (_Unwind_ForcedUnwind_Phase2): Set it.

Tue Sep  4 11:16:35 2001  Jeffrey A Law  (law@cygnus.com)

	* h8300/elf.h (LINK_SPEC): Redefine appropriately for the H8.

2001-09-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (save_restore_insns): Change base_offset to
	fp_offset in second call to mips_emit_frame_related_store.

2001-09-04  Hans-Peter Nilsson  <hp@axis.com>

	* doc/rtl.texi: Mention that besides as a CODE_LABEL, a label can
	sometimes be represented as a NOTE of type
	NOTE_INSN_DELETED_LABEL.
	(Insns): Document NOTE_INSN_DELETED_LABEL.

2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (tree_dump_index): Add more comments.
	* c-dump.c (dump_files): Name flags `tree' rather than `ast'.
	(dump_option_value_info): New struct.
	(dump_options): New array.
	(dump_switch_p): Parse switch options symbolically.
	* doc/invoke.texi (-fdump-ast): Rename to ...
	(-fdump-tree): ... here. Document that options are symbolic, and
	not all are applicable.

2001-09-04  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (define_splits): Kill constraints.

	Cleanup redundant and unused insn attributes.
	* config/sparc/sparc.md (define_attr "insn"): Kill address, unary,
	binary, and move.  Mark ialu as default.
	(commented out define_function_unit "alu"): Kill.
	(define_attr "use_clobbered"): Kill.
	(whole file): Kill address insn type references.  Replace
	all unary/binary/move references with ialu.
	* config/sparc/sparc.c (whole file): Kill TYPE_ADDRESS
	references.  Replace TYPE_{UNARY,BINARY,MOVE} references with
	TYPE_IALU.

	Simplify length insn attribute and make more judicious use
	of insn attribute defaulting.
	* config/sparc/sparc.md (all insns with length > one): Mark as
	insn type multi if real instructions, else use default if
	it is a forced splitter.
	(all insns with length == one): Use default insn length.
	(all insns of type ialu): Use default insn type.

	Fix erroneous insn attribute settings.
	(addx): Set insn type to misc.
	(mulsidi3_sp64, const_mulsidi3_sp64, umulsidi3_sp64,
	const_umulsidi3_sp64): Set insn type to imul.

	Track SFmode vs DFmode insns according to UltraSPARC
	scheduling rules.
	* config/sparc/sparc.md ("fptype"): New attribute, default
	to "single".
	(all DFmode single insns): Mark as fptype "double".

2001-09-03  Jakub Jelinek  <jakub@redhat.com>

	* loop.c (express_from_1): Fix CONSTANT_P(a) case.

2001-09-03  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Add arg_pointer_save_area_init.
	* function.c (expand_function_end): Init arg_pointer_save_area.
	(get_arg_pointer_save_area): Do not init arg_pointer_save_area
	when called from a nested function.

2001-09-02  Angela Marie Thomas <angela@cygnus.com>

	* fixinc/Makefile.in: Regenerate fixincl.x only if maintainer-mode
	is enabled.

Sun Sep  2 18:37:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* reload1.c (fixup_abnormal_edges): Allow NOTEs in the sequence.

2001-09-01  Geoffrey Keating  <geoffk@redhat.com>

	* expr.c (push_block): Make sane use of STACK_GROWS_DOWNWARD.
	(emit_push_insn): Use specified padding direction when
	STACK_PUSH_CODE is POST_INC.

	* config/stormy16/stormy16.h (DWARF2_UNWIND_INFO): Define to 0.

2001-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.h (INITIAL_ELIMINATION_OFFSET): Add missing `else abort'.

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

	* cppinit.c (cpp_start_read): Free the imacros list as we
	traverse it.  Don't free the chains before returning.
	(_cpp_push_next_buffer): Only try pushing buffers if we've
	completed -imacros handling.

2001-08-31  Eric Christopher  <echristo@redhat.com>

	* gcc.c (handle_braces): Add explaination for abort.

2001-08-30  Roman Zippel  <zippel@linux-m68k.org>

	* expmed.c (store_bit_field): Update to patch from 2001-08-27:
	move adjustment of bitpos instead.

2001-08-31  Zack Weinberg  <zack@codesourcery.com>

	* function.c: Remove all_functions.  Make outer_function_chain
	static.
	(init_function_start): Don't add new function structure to
	all_functions.
	(find_function_data, push_function_context_to,
	pop_function_context_from, put_var_into_stack,
	trampoline_address): Update for changed structure element names.
	(push_function_context_to): Disentangle.
	(free_after_compilation): Also free F.
	(expand_dummy_function_end): Don't free cfun here.
	(put_var_into_stack): Comment why we can't use find_function_data here.
	(fix_lexical_addr, trampoline_address, ): Use find_function_data.
	(mark_function_chain): Split into maybe_mark_struct_function and
	ggc_mark_struct_function.  Export the latter.
	(init_function_once): Mark from cfun and outer_function_chain;
	not all_functions.

	* function.h (struct function): Kill next_global.  Rename next
	to outer.  All users updated to match.
	(all_functions, outer_function_chain): Don't declare.

	* ggc-common.c (ggc_mark_trees): Mark DECL_SAVED_INSNS.
	* integrate.c (output_inline_function): Clear DECL_SAVED_INSNS,
	don't touch f->inlinable, after calling rest_of_compilation.

	* tree.h: Forward-declare struct function.  Prototype
	ggc_mark_struct_function.

2001-08-31  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (*andorhi3): Fix typos.

2001-08-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calls.c (emit_library_call_value): Don't use a fixed
	argument after VA_CLOSE, i.e. out of scope in traditional C.

	* emit-rtl.c (gen_rtvec): Likewise.

2001-08-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (c-pragma.o): Depend on output.h.
	(reorg.o): Depend on except.h.

	* c-pragma.c: Include output.h.

	* reorg.c: Include except.h.

	* unwind-dw2.c: Call __builtin_alloca, not alloca.

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

	* sched-deps.c (add_dependence): Don't elide dependency if the
	conditional used by insn is modified in elem.

2001-08-31  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/v850/v850.h (OUTPUT_ADDR_CONST_EXTRA): Define.

2001-08-31  Diego Novillo  <dnovillo@redhat.com>

	* c-decl.c (c_decode_option): Skip '-f' prefix before calling
	dump_switch_p.

2001-08-31  Geoffrey Keating  <geoffk@redhat.com>

	* config/stormy16/stormy16.c (stormy16_asm_out_destructor): New
	function.
	(stormy16_asm_out_constructor): New function.
	(TARGET_ASM_CONSTRUCTOR): Define.
	(TARGET_ASM_DESTRUCTOR): Define.

2001-08-31  Andreas Jaeger  <aj@suse.de>

	* gcse.c (add_label_notes): REG_LABEL is an INSN_LIST.
	* loop.c (add_label_notes): Likewise.
	* reload.c (find_reloads): Likewise.
	* config/sh/sh.c (machine_dependent_reorg): Likewise.

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

	* unwind-pe.h (read_uleb128, read_sleb128): Move actual reading
	code here.  Take _Unwind_{W,Sw}ord*.
	(read_encoded_value_with_base): Use them.
	* unwind-dw2.c (_Unwind_FrameState): Make cfa_offset and cfa_reg
	words.
	(extract_cie_info): Simplify read_?leb128 handling.
	(execute_stack_op, execute_cfa_program): Likewise.
	* unwind-dw2-fde.c (get_cie_encoding): Likewise.

2001-08-31  Geoffrey Keating  <geoffk@redhat.com>

	* config/stormy16/stormy16.c (stormy16_expand_epilogue): Use
	the frame pointer to pop the stack if convenient.

	* config/stormy16/stormy16.c (stormy16_initialize_trampoline):
	Don't use post-increment before combine.
	* config/stormy16/stormy16.h (STATIC_CHAIN_REGNUM): Don't use
	a call-saved register.

2001-08-31  Andreas Jaeger  <aj@suse.de>

	* jump.c (mark_jump_label): Revert patch from 2001-08-28, the
	code was correct.

2001-08-30  Geoffrey Keating  <geoffk@redhat.com>

	* config/stormy16/stormy16.md (udivmodhi4): Express using UDIV/UMOD,
	not DIV/MOD, of course.

2001-08-30  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def: Undo my patch commited 2001-08-27.

	* genattrtab.c: Ditto.

	* rtl.h: Ditto.

	* sched-int.h: Ditto.

	* target-def.h: Ditto.

	* target.h: Ditto.

	* haifa-sched.c: Ditto.

	* sched-rgn.c: Ditto.

	* sched-vis.c: Ditto.

	* Makefile.in: Ditto.

	* doc/md.texi: Ditto.

	* doc/tm.texi: Ditto.

	* doc/contrib.texi: Ditto.

	* doc/gcc.texi: Ditto.

	* genattrtab.h: Remove it.

	* genautomata.c: Remove it.

	* genattr.c: Undo my patch and Richard Henderson's patch commited
	2001-08-27.

Thu Aug 30 19:22:15 2001  J"orn Rennecke <amylaar@redhat.com>

	* config.gcc (h8300-*-elf*): New case.
	* h8300.h (CPP_SPEC): Add subtarget_cpp_spec.
	(SUBTARGET_CPP_SPEC): Define.
	(EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_SPECS): Define.
	* config/h8300/crti.asm, config/h8300/crtn.asm: New files.
	* config/h8300/elf.h, config/h8300/t-elf: Likewise.

Thu Aug 30 18:50:37 2001  J"orn Rennecke <amylaar@redhat.com>

	* t-h8300 (LIB1ASMFUNCS): Add _fixunssfdi and _fixunssfsi_asm.
	(LIB2FUNCS_EXTRA): Define.
	config/h8300/lib1funcs.asm: New part: L_fixunssfsi_asm .
	config/h8300/fixunssfsi.c: New file.

2001-08-30  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (zero_extendqihi2): Changes to
	define_expand to accommodate target-specific attributes.
	(anonymous zero_extendqihi2 patterns): New.

Thu Aug 30 18:10:56 2001  J"orn Rennecke <amylaar@redhat.com>

	* h8300.md (*andorhi3): New pattern.

Thu Aug 30 16:00:31 2001  J"orn Rennecke <amylaar@redhat.com>

	* h8300.c (dosize): Fix test for "sub".

Thu Aug 30 10:21:43 2001  J"orn Rennecke <amylaar@redhat.com>

	* c-typeck.c (pointer_diff): Try to eliminate common term before
	doing conversions.

2001-08-30  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_compute_initial_elimination_offset):
	Account for the saves of the FP registers.

	* config/arm/unknown-elf.h (TEXT_SECTION): Delete.
	(TEXT_SECTION_ASM_OP): Define.
	(INIT_SECTION_ASM_OP): Define.
	(FINI_SECTION_ASM_OP): Define.
	(SUBTARGET_EXTRA_SECTIONS): Remove trailing comma.
	(RDATA_SECTION_FUNCTION): Provide prototype.

2001-08-29  Geoffrey Keating  <geoffk@redhat.com>

	* reload1.c (move2add_note_store): Correct typo checking for
	argument pushes.

2001-08-29  Andrew MacLeod  <amacleod@redhat.com>

	* gcse.c (compute_hash_table): The SRC part of an insn with a RETVAL
	note should not be considered outside the libcall block.

2001-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattrtab.c (attr_printf): Use VA_OPEN/VA_FIXEDARG/VA_CLOSE.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (movsi_h8300hs): Make it 64-bit safe.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Add a prototype for
	emit_logical_op.
	* config/h8300/h8300.c (emit_logical_op): New.
	* config/h8300/h8300.md (andhi3): Use emit_logical_op.
	(andsi3): Likewise.
	(iorhi3): Likewise.
	(iorsi3): Likewise.
	(xorhi3): Likewise.
	(xorsi3): Likewise.

2001-08-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (move_operand): Cast GET_MODE_SIZE results to HOST_WIDE_INT for
	comparison with rtx INTVAL.
	(pa_output_function_prologue): Don't mix signed and unsigned in `?'
	expression.
	* pa.h (FUNCTION_ARG_SIZE): Likewise.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/lib1funcs.asm: Update the copyright.  Fix
	comment typos.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (anonymous movhi pattern): Don't move
	(reg n) to (mem (pre_dec (reg n))
	(anonymous movsi pattern): Likewise.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (RETURN_ADDR_RTX): New.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (movsi_h8300hs): Optimize loading of
	several special constants.

2001-08-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/lib1funcs.asm: Fix comment typos.

2001-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* iris6.h (ASM_DECLARE_OBJECT_NAME, ASM_FINISH_DECLARE_OBJECT):
	Fix format specifier warnings.

	* irix6-libc-compat.c (inet_ntoa, inet_lnaof, inet_netof,
	inet_makeaddr, semctl): Prototype.

	* mips.c (compute_frame_size): Fix signed/unsigned warnings.
	(save_restore_insns): Use base_offset, not gp_offset.

	* mips.h (GP_REG_OR_PSEUDO_STRICT_P): Fix signed/unsigned warning.
	(ASM_OUTPUT_BYTE): Fix format specifier warning.

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

	* bb-reorder.c (function_tail_eff_head): New.
	(record_effective_endpoints): Set it.
	(fixup_reorder_chain): Use it.

2001-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2asm.c (dw2_asm_output_nstring): Fix typo in previous change.

2001-08-28  Dale Johannesen  <dalej@apple.com>

	* config/darwin.c (machopic_function_base_name): Add const
	qualifier to a string.
	(darwin_encode_section_info): Ditto.

2001-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tree.c (default_valid_attribute_p): Don't use PARAMS on a
	function definition.

2001-08-28  Daniel Berlin  <dan@cgsoftware.com>

	* df.h (struct df): Add rts_order variable.

	* df.c (df_visit_next_rts): New function.
	(df_visit_next): Renamed to df_visit_next_rc
	(df_analyse_1): Allocate/compute/free rts_order as well.
	(df_rd_global_compute): Use df_visit_next_rc instead of
	df_visit_next.
	(df_ru_global_compute): Use df_visit_next_rts instead of
	df_visit_next.

	* flow.c (flow_reverse_top_sort_order_compute): New function.

	* basic-block.h: Add prototype.

2001-08-28  Daniel Berlin  <dan@cgsoftware.com>

	* ssa-ccp.c (ssa_ccp_df_delete_unreachable_insns): For unreachable
	blocks, the BB_REACHABLE is now set, rather than aux being
	non-NULL. Update the test to reflect this.

2001-08-28  Eric Christopher  <echristo@redhat.com>

	* config/mips/crtn.asm: Add comment explaining 16 byte alignment.
	config/mips/crti.asm: Ditto.

2001-08-28  Eric Christopher <echristo@redhat.com>
	    Richard Henderson <rth@redhat.com>

	* c-pragma.h (add_weak): Move prototype from here...
	* output.h (add_weak): ... to here.
	* varasm.c (add_weak): Fix typo.
	* config/mips/crti.asm: New file.
	* config/mips/crtn.asm: Ditto.
	* config/mips/elf.h (SBSS_SECTION_ASM_OP) Add #undef.
	(CTOR_LISTS_DEFINED_EXTERNALLY): Remove.
	(INVOKE__main): Ditto.
	(INIT_SECTION_ASM_OP): New.
	(FINI_SECTION_ASM_OP): Ditto.
	(STARTFILE_SPEC): Add crti.
	(ENDFILE_SPEC): Add crtn.
	* config/mips/elf64.h: Same.
	* config/mips/rtems64.h (INVOKE__main, NAME__MAIN, SYMBOL__MAIN):
	Remove.
	* config/mips/vxworks.h: Ditto.
	* config/mips/t-elf: Support crti and crtn.

2001-08-28  Alexandre Oliva  <aoliva@redhat.com>

	* jump.c (mark_jump_label): Fix typo: REG_LABEL is EXPR_LIST, not
	INSN_LIST.

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

	* config/ia64/ia64.md (andcmbi3, iorcmbi3): Fix typos.
	(one_cmplbi2 splitter): Remove redundant test.

2001-08-28  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/darwin.h (DEFAULT_SIGNED_CHAR): Define.

2001-08-28  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygwin.h (BIGGEST_FIELD_ALIGNMENT): Set to 64.

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

	* config/darwin.h (ASM_OUTPUT_LABELREF): Handle '*' names.
	(UNALIGNED_SHORT_ASM_OP): Define.
	(UNALIGNED_INT_ASM_OP): Define.

2001-08-28  Will Cohen  <wcohen@redhat.com>

	* config/rs6000/rs6000.md (store_multiple): Correct RTL
	generation for first set.

2001-08-27  Roman Zippel  <zippel@linux-m68k.org>

	* flow.c (redirect_edge_succ_nodup): Return new edge.
	(try_simplify_condjump): Use new edge.
	* basic-block.h (redirect_edge_succ_nodup): Update prototype.

	* cse.c (cse_basic_block): Skip note instructions.

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

	* combine.c (combine_simplify_rtx): Don't reverse condition
	if there is no reverse for the condition.
	(simplify_comparison): Don't simplify subregs from INT to FP.

	* config/m68k/m68k.md (sordered, sordered_1, sunordered, sunordered_1,
	suneq, suneq_1, sunge, sunge_1, sungt, sungt_1, sunle, sunle_1,
	sunlt, sunlt_1, sltgt, sltgt_1, fsogt_1, fsoge_1, fsolt_1, fsole_1,
	bordered, bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt,
	bordered_rev, bunordered_rev, buneq_rev, bunge_rev, bungt_rev,
	bunle_rev, bunlt_rev, bltgt_rev): New patterns.

2001-08-27  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.md (subreghi1ashrdi_const32, bsetmemqi,
	bsetmemqi+1, strict_low_part peephole): Fix SUBREG_BYTE offset.
	(pushqi1): New.
	(adddi_dilshr32, adddi_dishl32): Only data register can be
	source for mem destination.

	* expmed.c (store_bit_field): Ignore adjustment to bitpos
	and use bitnum to decide about register move.

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

	* genattr.c (main): Emit state_t even when not doing scheduling.

2001-08-27  Roman Zippel <zippel@linux-m68k.org>
	    Richard Henderson  <rth@redhat.com>

	* gcse.c (reg_first_set, reg_last_set): Replace with ...
	(reg_avail_info, current_bb): ... these.
	(oprs_unchanged_p, record_last_reg_set_info): Use them.
	(compute_hash_table): Likewise.

2001-08-27  Roman Zippel <zippel@linux-m68k.org>

	* flow.c (verify_flow_info): Use checksums to verify edges.

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

	* genautomata.c (expand_automata): Always create a description.

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

	* optabs.c (expand_binop): Correctly handle the carry in multiword
	add/subtract operations.

2001-08-27  Fred Fish  <fnf@be.com>

	* ginclude/stddef.h: Fix typo, __SIZE__TYPE__ should be
	__SIZE_TYPE__.

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

	* reload.c (find_reloads_toplev): Back out this change:

	Wed Jul 26 19:44:05 2000   Hans-Peter Nilsson  <hp@axis.com>

	* reload.c (find_reloads_toplev): Reload a paradoxical subreg of a
	mem if the address is a mode_dependent_address_p.

2001-08-27  Vladimir Makarov  <vmakarov@touchme.toronto.redhat.com>

	* rtl.def (DEFINE_CPU_UNIT, DEFINE_QUERY_CPU_UNIT, EXCLUSION_SET,
	PRESENCE_SET, ABSENCE_SET, DEFINE_BYPASS, DEFINE_AUTOMATON,
	AUTOMATA_OPTION, DEFINE_RESERVATION, DEFINE_INSN_RESERVATION): New
	RTL constructions.

	* genattr.c (main): New variable num_insn_reservations.  Increase
	it if there is DEFINE_INSN_RESERVATION.  Output automaton based
	pipeline hazard recognizer interface.

	* genattrtab.h: New file.

	* genattrtab.c: Include genattrtab.h.
	(attr_printf, check_attr_test, make_internal_attr,
	make_numeric_value): Move protypes into genattrtab.h.  Define them
	as external.
	(num_dfa_decls): New global variable.
	(main): Process DEFINE_CPU_UNIT, DEFINE_QUERY_CPU_UNIT,
	DEFINE_BYPASS, EXCLUSION_SET, PRESENCE_SET, ABSENCE_SET,
	DEFINE_AUTOMATON, AUTOMATA_OPTION, DEFINE_RESERVATION,
	DEFINE_INSN_RESERVATION.  Call expand_automata and write_automata.

	* genautomata.c: New file.

	* rtl.h (LINK_COST_ZERO, LINK_COST_FREE): Remove them.

	* sched-int.h: (curr_state): Add the external definition for
	automaton pipeline interface.
	(haifa_insn_data): Add comments for members blockage and units.

	* target-def.h (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): New
	macros.
	(TARGET_SCHED): Use the new macros.

	* target.h (use_dfa_pipeline_interface, init_dfa_pre_cycle_insn,
	dfa_pre_cycle_insn, init_dfa_post_cycle_insn, dfa_post_cycle_insn,
	first_cycle_multipass_dfa_lookahead, init_dfa_bubbles,
	dfa_bubble): New members in gcc_target.sched.

	* haifa-sched.c (insert_schedule_bubbles_p): New variable.
	(MAX_INSN_QUEUE_INDEX): New macro for automaton interface.
	(insn_queue): Redefine it as pointer to array.
	(NEXT_Q, NEXT_Q_AFTER): Use MAX_INSN_QUEUE_INDEX instead of
	INSN_QUEUE_SIZE.
	(max_insn_queue_index_macro_value): New variable.
	(curr_state, dfa_state_size, ready_try): New varaibles for
	automaton interface.
	(ready_element, ready_remove, max_issue): New function prototypes
	for automaton interface.
	(choose_ready): New function prototype.
	(insn_unit, blockage_range): Add comments.
	(unit_last_insn, unit_tick, unit_n_insns): Define them for case
	FUNCTION_UNITS_SIZE == 0.
	(insn_issue_delay, actual_hazard_this_instance, schedule_unit,
	actual_hazard, potential_hazard): Add comments.
	(insn_cost): Use cost -1 as undefined value.  Remove
	LINK_COST_ZERO and LINK_COST_FREE.  Add new code for automaton
	pipeline interface.
	(ready_element, ready_remove): New functions for automaton
	interface.
	(schedule_insn): Add new code for automaton pipeline interface.
	(queue_to_ready): Add new code for automaton pipeline interface.
	Use MAX_INSN_QUEUE_INDEX instead of INSN_QUEUE_SIZE.
	(debug_ready_list): Print newline when the queue is empty.
	(max_issue): New function for automaton pipeline interface.
	(choose_ready): New function.
	(schedule_block): Add new code for automaton pipeline interface.
	Print ready list before scheduling each insn.
	(sched_init): Add new code for automaton pipeline interface.
	Initiate insn cost by -1.
	(sched_finish): Free the current automaton state and finalize
	automaton pipeline interface.

	* sched-rgn.c: Include target.h.
	(init_ready_list, new_ready, debug_dependencies): Add new code for
	automaton pipeline interface.

	* sched-vis.c: Include target.h.
	(get_visual_tbl_length): Add code for automaton interface.
	(target_units, print_block_visualization):  Add comments.

	* Makefile.in (GETRUNTIME, HASHTAB, HOST_GETRUNTIME, HOST_HASHTAB,
	USE_HOST_GETRUNTIME, USE_HOST_HASHTAB, HOST_VARRAY): New variables.
	(sched-rgn.o, sched-vis.o): Add new dependency file target.h.
	(getruntime.o, genautomata.o): New entries.
	(genattrtab.o): Add new dependency file genattrtab.h.
	(genattrtab): Add new dependencies.  Link it with `libm.a'.
	(getruntime.o, hashtab.o): New entries for canadian cross.

	* doc/md.texi: Description of automaton based model.

	* doc/tm.texi (TARGET_SCHED_ISSUE_RATE, TARGET_SCHED_ADJUST_COST):
	Add comments.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): The new
	hook descriptions.
	(TRADITIONAL_PIPELINE_INTERFACE, DFA_PIPELINE_INTERFACE,
	MAX_DFA_ISSUE_RATE): New macro descriptions.

	* doc/contrib.texi: Add dfa based scheduler contribution.

	* doc/gcc.texi: Add more information about genattrtab.

2001-08-27  Diego Novillo  <dnovillo@redhat.com>

	* flow.c (flow_loop_dump): Do not display insn UIDs if this is not
	an RTL basic block.

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

	* function.c (expand_function_end): Don't init arg_pointer_save_area.
	(get_arg_pointer_save_area): New.  Create an init it here.
	(fix_lexical_addr): Use it.
	* function.h: Declare it.
	* builtins.c (expand_builtin_setjmp_receiver): Use it.
	* stmt.c (expand_nl_goto_receiver): Use it.

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

	* final.c (final_scan_insn): Don't enter APP_ON mode for
	empty asm strings.

	* dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Use proper
	alignment for assemble_integer for DW_EH_PE_aligned.
	* except.c (output_function_exception_table): Likewise.

2001-08-26  Andreas Jaeger  <aj@suse.de>

	* c-tree.h: Add prototyp for c_sizeof_nowarn.

2001-08-25 Dan Nicolaescu  <dann@ics.uci.edu>

	* ssa-ccp.c (ssa_const_prop): Free ssa_edges.

2001-08-27  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (mask_operand): Rewrite without
	bit-shifting loop.
	(mask64_operand): Likewise.
	(rldic_operand): Delete.
	(includes_lshift64_p): Delete.
	(includes_rldic_lshift_p): New function.
	(includes_rldicr_lshift_p): New function.
	(print_operand): Don't call rldic_operand in case 'W'.
	* config/rs6000/rs6000-protos.h (rldic_operand): Remove.
	(includes_lshift64_p): Remove.
	(includes_rldic_lshift_p): Declare.
	(includes_rldicr_lshift_p): Declare.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Remove rldic_operand.
	* config/rs6000/rs6000.md <ashldi3_internal 64 bit patterns>:
	Replace match_operand rldic_operand predicate with
	const_int_operand.  Replace includes_lshift64_p condition with
	includes_rldic_lshift_p.
	<ashldi3_internal 64 bit rldicr patterns>: New.

2001-08-27  Andreas Jaeger  <aj@suse.de>

	* emit-rtl.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
	* errors.c: Likewise.
	* final.c: Likewise.
	* dwarf2asm.c: Likewise.
	* doprint.c (checkit): Likewise.
	* diagnostic.c: Likewise.
	* collect2.c: Likewise.
	* calls.c: Likewise.
	* c-semantics.c (build_stmt): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	* builtins.c (validate_arglist): Likewise.
	* config/pj/pj.c (pj_printf): Likewise.
	* fix-header.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c (fnotice): Likewise.
	* gensupport.c (message_with_line): Likewise.
	* mips-tfile.c: Likewise.
	* protoize.c (notice): Likewise.
	* read-rtl.c (fatal_with_file_and_line): Likewise.
	* rtl-error.c: Likewise.
	* tradcpp.c: Likewise.
	* tree.c: Likewise.
	* cp/tree.c (build_min_nt): Likewise.
	(build_min): Likewise.
	* cp/lex.c: Likewise.
	* cp/errfn.c: Likewise.
	* cp/rtti.c (create_pseudo_type_info): Likewise.

Sun Aug 26 20:25:44 2001  Denis Chertykov  <denisc@overta.ru>

	* df.c (df_uses_record): Return after recording all uses
	in ASM_OPERANDS.

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

	* df.c (df_insn_modify): Realloc the INSN table here, if
	necessary, here, too.

2001-08-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/mips/mips.c (mips_function_value): Handle complex return
	values.

2001-08-25  Hans-Peter Nilsson  <hp@bitrange.com>

	* reload1.c (reload): Make all entries in reg_equiv_memory_loc
	unshared.
	* reload.c (make_memloc): Copy result if it is still
	reg_equiv_memory_loc[regno] on return.
	(subst_reloads) [ENABLE_CHECKING]: Check that none of
	reg_equiv_constant, reg_equiv_memory_loc, reg_equiv_address and
	reg_equiv_mem are modified by the substitutions.

Sat Aug 25 23:07:35 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (expensive_function_p): New.
	* rtl.h (expensive_function_p): Declare.
	* i386.c (FAST_PROLOGUE_INSN_COUNT): New constant.
	(use_fast_prologue_epilogue): New static variable.
	(expand_prologue): Set it; emit short prologues if unset.
	(expand_epilogue): Likewise.

2001-08-22  Geoffrey Keating  <geoffk@redhat.com>

	* config.gcc: Add stormy16-*-elf case.
	* config/stormy16/stormy-abi: New file.
	* config/stormy16/stormy16-lib2.c: New file.
	* config/stormy16/stormy16-protos.h: New file.
	* config/stormy16/stormy16.c: New file.
	* config/stormy16/stormy16.h: New file.
	* config/stormy16/stormy16.md: New file.
	* config/stormy16/t-stormy16: New file.

Sat Aug 25 15:46:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (no-accumulate-outgoing-args): Use proper mask.

2001-08-24  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_initialize_trampoline): Function
	descriptor members are pointer size, not constant 4.
	* config/rs6000/rs6000.md (define_splits): Remove more unused
	constraints.

2001-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.h (ASM_OUTPUT_BYTE): Fix format specifier warning.

2001-08-24  Andreas Jaeger  <aj@suse.de>, rkl@connect.org.uk

	* cp/rtti.c (VPARAMS): Fix parameter.

2001-08-24  Zack Weinberg  <zackw@panix.com>

	* expmed.c: Default-#define HAVE_insv, HAVE_extv, and HAVE_extzv
	to zero.
	(mode_for_extraction): No need for #ifdefs.  Add default-case abort
	to switch.
	(store_bit_field): Eliminate insv_bitsize variable.  Put HAVE_insv
	in if controlling use of insv.
	(extract_bit_field): Likewise, for extv and extzv.

Fri Aug 24 17:27:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movcc peep2): Fix load of 0.

2001-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Handle *_DIV_EXPR,
	*_MOD_EXPR, SAVE_EXPR and NON_LVALUE_EXPR.

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

	* c-pragma.h: Move weak_syms and weak_decls...
	* varasm.c: ...here.  Now static.
	(declare_weak, weak_finish, remove_from_pending_weak_list): Don't
	depend on HANDLE_PRAGMA_WEAK.

	* c-common.c (c_alignof, c_alignof_expr): Move here...
	* c-typeck.c: ...from here.
	* c-tree.h, c-common.h: Adjust.

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

	* config/ia64/ia64.c (rws_update): If !pred, set write_count
	instead of incrementing it.

	* config/ia64/ia64.c (ia64_sched_reorder): When there's more than one
	asm ready, don't try to move them all into the same array element.

Thu Aug 23 17:21:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (thread_prologue_and_epilogue_insns): Avoid
	fallthru flag on edge to exit.

	* i386.md (trunc?fsi splitter): Conditionionize for non-sse.

	* flow.c (delete_noop_moves, propagate_block_delete_insn): Purge
	dead edges.

2001-08-23  Lars Brinkhoff  <lars@nocrew.org>

	* config/mcore/mcore.h (MACHINE_DEPENDENT_SIMPLIFY): Remove.
	* config/mcore/mcore.c (mcore_dependent_simplify_rtx): Likewise.
	* config/mcore/mcore-protos.h (mcore_dependent_simplify_rtx):
	Remove prototype.

2001-08-23  Lars Brinkhoff  <lars@nocrew.org>

	* genconstants.c, genpreds.c, libfuncs.h, optabs.h, rtl-error.h:
	replace "GNU CC" with "GCC".

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

	* config/ia64/ia64.c (ia64_register_move_cost): Add mode arguemnt.
	Reorganize.  Handle ADDL like GR, add GR_AND_BR.  Handle TFmode.
	(ia64_secondary_reload_class): Need GR between AR/BR and anything.
	Need GR between FR and not GR_AND_FR.
	* config/ia64/ia64-protos.h (ia64_register_move_cost): Update.
	* config/ia64/ia64.h (reg_class): Add GR_AND_BR_REGS, move
	AR regs before GR regs.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update.
	(PREFERRED_RELOAD_CLASS): Tweak for reordered classes.
	(REGISTER_MOVE_COST): Update.
	(MEMORY_MOVE_COST): Add GR_AND_FR_REGS.

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

	* regclass.c (init_reg_sets_1): Don't assume cost 2 within
	a register class.

2001-08-22  Geoffrey Keating  <geoffk@redhat.com>

	* reload1.c (emit_reload_insns): Don't look for notes
	on a NULL store_insn.

2001-08-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.c (uns_small_int): Don't reference a constant >32-bit.
	(addrs_ok_for_ldd_peep): Fix signed/unsigned warning.
	(sparc_flat_function_prologue, sparc_flat_function_epilogue): Fix
	format specifier warnings.
	(sparc_sched_reorder): Mark parameter with ATTRIBUTE_UNUSED.

2001-08-22  David Billinghurst <David.Billinghurst@riotinto.com>

	* config/i386/i386-protos.h: Correct declaration of
	i386_pe_asm_named_section.

2001-08-22  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa32-regs.h (CONDITIONAL_REGISTER_USAGE): Add declaration for
	variable i.
	* pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Likewise.

2001-08-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c (print_location): Don't show _Pragma.
	* cppfiles.c (_cpp_pop_file_buffer): Handle -include file pushing
	and file change callback generation here.
	(stack_include_file): Update use of cpp_push_buffer.
	* cpphash.h (_cpp_pop_file_buffer): Update prototype.
	(struct cpp_buffer): Remove type, pfile members.
	* cppinit.c (cpp_handle_option): Use free_chain.
	* cpplex.c (_cpp_lex_token): Don't do -include file pushing here.
	(skip_escaped_newlines, get_effective_char, lex_percent): Take
	a cpp_reader rather than a cpp_buffer.
	(skip_escaped_newlines, get_effective_char, skip_block_comment,
	skip_line_comment, parse_string, lex_percent, lex_dot,
	_cpp_lex_token): Update accordingly.
	* cpplib.c (_cpp_pop_buffer): Don't do file change callback
	generation here.
	(cpp_push_buffer): Update prototype.
	(run_directive): Update use of cpp_push_buffer.
	(_cpp_do__Pragma, cpp_define, cpp_define_builtin, cpp_undef,
	handle_assertion): Update use of run_directive.
	* cpplib.h (enum cpp_buffer_type): Remove.
	(cpp_push_buffer): Update prototype.
	* fix-header.c (read_scan_file): Update.

2001-08-22  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* gcc.c (struct prefix_list): Change prefix to const char *.

2001-08-22  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* final.c (final_scan_insn): Call ADDR_VEC_ALIGN on next insn.

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

	* explow.c (set_mem_attributes): Avoid returning a bogus alias set
	from a new MEM.

	* jump.c (squeeze_notes): Take parms by reference.  Handle END being
	a squeezable note.
	* rtl.h: Adjust.
	* ifcvt.c (dead_or_predicable): Adjust.
	* loop.c (find_and_verify_loops): Adjust.
	* stmt.c (expand_end_case): Adjust.
	* flow.c (merge_blocks_move_successor_nojumps): Adjust.  Modify the
	head and end insn pointers in the basic block, not just local copies.
	(merge_blocks_move_predecessor_nojumps): Likewise.

2001-08-22  Lars Brinkhoff  <lars@nocrew.org>

	* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
	bitmap.h, builtin-types.def, builtins.c, builtins.def,
	c-aux-info.c, c-common.c, c-common.def, c-common.h,
	c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
	c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
	c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
	caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
	conditions.h, config.gcc, configure.frag, configure.in,
	conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
	cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
	dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
	doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
	dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
	emit-rtl.c, errors.c, errors.h, except.c, except.h,
	exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
	fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
	function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
	gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
	gencheck.c, gencodes.c, genconfig.c, genemit.c,
	genextract.c, genflags.c, gengenrtl.c, genmultilib,
	genopinit.c, genoutput.c, genpeep.c, genrecog.c,
	gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
	ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
	graph.c, graph.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, haifa-sched.c, halfpic.c, halfpic.h,
	hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
	integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
	libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
	machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
	mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
	mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
	params.h, predict.c, predict.def, predict.h, prefix.c,
	prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
	read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
	regclass.c, regmove.c, regrename.c, regs.h, reload.c,
	reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
	rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
	sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
	sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
	ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
	stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
	tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
	tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
	unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
	unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
	xcoffout.h: replace "GNU CC" with "GCC".

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

	* final.c (LABEL_ALIGN_AFTER_BARRIER): Default to no alignment.
	(final_scan_insn): Consider jump tables data even if we have no
	independent text section if !JUMP_TABLES_IN_TEXT_SECTION.  Use
	ADDR_VEC_ALIGN.
	* config/ia64/ia64.h (JUMP_TABLES_IN_TEXT_SECTION): Remove.
	(ASM_OUTPUT_CASE_END): Remove.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Emit pc-relative references.
	* config/ia64/ia64.md (tablejump): Decode pc-relative references.
	* config/ia64/sysv4.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.

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

	* config/ia64/ia64.c (emit_all_insn_group_barriers): Flush state
	at barrier insns.  Emit stop bits before barriers.

	* flow.c (flow_find_cross_jump): Don't consider unconditional
	return insns for commoning.

	* final.c (compute_alignments): Fix typo.

	* expmed.c (CODE_FOR_insv, gen_insv): Provide defaults.
	(CODE_FOR_extv, gen_extv, CODE_FOR_extzv, gen_extzv): Likewise.
	(store_bit_field): Use mode_for_extraction more places.
	(extract_bit_field): Likewise.

2001-08-21  Zack Weinberg  <zackw@panix.com>

	* caller-save.c: Don't include insn-codes.h.
	(reg_save_code, reg_restore_code): Make arrays of int.
	All uses updated to match.
	(insert_save, insert_restore): No need to initialize "code"
	variable upon declaration.
	* Makefile.in: update dependencies; fix typo in clean rule.

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

	* ifcvt.c (find_if_block): Allow join_bb as EXIT.
	(merge_if_block): Handle fallout from same.

2001-08-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (type_to_class): Fix typo in last change.

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

	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Don't emit '#' if
	ia64_asm_output_label.

	* config/ia64/crtbegin.asm (__do_global_dtors_aux): Use saved
	copy of gp while the real gp register contains garbage.

2001-08-21  Zack Weinberg  <zackw@panix.com>

	* expmed.c (mode_for_extraction): New function.
	(store_bit_field, extract_bit_field): Use it.
	* expr.h: Prototype it and provide an enum for its first argument.

	* combine.c, function.c, recog.c: Don't include insn-codes.h.
	Use mode_for_extraction rather than testing HAVE_insv/extv/extzv
	and digging through the insn_data tables.
	* Makefile.in: Update dependencies.

2001-08-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (stack_include_file): line-map.c now handles include
	depth.
	(handle_missing_handler): Similarly.
	(_cpp_execute_include): Similarly.
	(_cpp_pop_file_buffer): Similarly.
	* cpphash.h (struct cpp_reader): Remove system_include_depth,
	buffer_stack_depth and include_depth.
	* cpplib.c (do_include_common): line-map.c now handles include depth.
	(cpp_push_buffer): Similarly.
	(_cpp_pop_buffer): Similarly.
	* cppmacro.c (builtin_macro): Update.
	* line-map.c (init_line_maps): Set depth.
	(add_line_map): Increment "used" earlier.  Update and use the
	include depth.
	(trace_include): Use the include depth.
	* line-map.h (struct line_maps): New member depth.

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

	* cppfiles.c (stack_include_file): Don't handle -H here.
	* cppinit.c (cpp_start_read): Set include tracing after
	cpp_post_options and after stacking the main file.
	* line-map.c (trace_include): New.
	(init_line_maps, add_line_map): Update.
	* line-map.h (struct line_maps): New member trace_includes.

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

	* cppfiles.c (stack_include_file): Harmonize system headerness tests.
	* cppfiles.c (stack_include_file): Only stack a file if there
	is something to do.  Return a boolean indicating whether a
	buffer was stacked or not.
	(_cpp_execute_include): Similarly.
	(_cpp_read_file): Similarly.
	* cpphash.h (_cpp_read_file, _cpp_execute_include): Update prototypes.

2001-08-21  Sam Steingold  <sds@gnu.org>

	* tradcpp.c (rescan): define obufp_before_macroname before RECACHE
	(RECACHE): keep obufp_before_macroname up to date

2001-08-21  Zack Weinberg  <zackw@panix.com>

	* stmt.c: Don't include insn-codes.h.
	(expand_end_case): Machine specific logic moved to expr.c.
	No need to worry about __builtin_classify_type.
	(check_for_full_enumeration_handling, emit_case_nodes):
	Kill #if 0 blocks.

	* builtins.o (expand_builtin_classify_type): Split up so code
	can be shared with fold_builtin_classify_type.
	(type_to_class, fold_builtin_classify_type): New functions.
	(fold_builtins): Handle __builtin_classify_type.

	* expr.c (do_tablejump): Now static.
	(case_values_threshold, try_casesi, try_tablejump): New;
	code mostly from stmt.c (expand_end_case).
	(expr.h): Update prototypes.

	* Makefile.in (stmt.o): Update dependencies.

2001-08-21  Will Cohen  <wcohen@redhat.com>

	* configure/alpha/alpha.h (CONDITIONAL_REGISTER_USAGE): Added local
	declaration of variable i.
	* configure/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Added local
	declaration of variable i.

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

	* crtstuff.c: Fix thinko last change.  Move list tails to start
	of CRT_END section.  Tidy ifdefs.
	(__EH_FRAME_BEGIN__): Always static for ELF.
	(__do_global_ctors_1): Rename from __frame_dummy.
	* config/mips/iris6.h (LINK_SPEC): Update for __do_global_ctors_1
	name change; don't hide __EH_FRAME_BEGIN__.

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

	* gdbinit.in: Move break on exit after break on fancy_abort.

	* config/ia64/ia64.c (ia64_return_in_memory): True for variable
	sized types.

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

	* cpphash.h (_cpp_push_next_buffer): New.
	* cppinit.c (do_includes): Remove.
	(push_include, free_chain, _cpp_push_next_buffer): New.
	(cpp_start_read): Use them to rework command line option handling.
	(cpp_handle_option): Combine handling of -include and -imacros.
	* cpplex.c (_cpp_lex_token): Push a new -include buffer if
	appropriate.  Always insert missing \n at EOF.
	* cpplib.c (start_directive): Get the directive position right.
	* cppmain.c (cb_file_change): Always print the first line, unless
	preprocessed.

2001-08-20  Andreas Jaeger  <aj@suse.de>

	* profile.c (compute_branch_probabilities): Remove extra new-line
	in error message.
	* flow.c (verify_flow_info): Likewise.

2001-08-20  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (basic_block): Add new field 'flags'.
	(BB_REACHABLE): Define.
	(expunge_block): Declare.
	* flow.c (ENTRY_BLOCK_PTR): Initialize field 'flags'.
	(EXIT_BLOCK_PTR): Ditto.
	(expunge_block): Remove static declaration.
	(cleanup_cfg): Clear bb->aux on every basic block.
	(find_unreachable_blocks): Set BB_REACHABLE bit in bb->flags when
	computing reachability.
	(delete_unreachable_blocks): Delete block b if b->flags has
	BB_REACHABLE unset.

2001-08-20  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Replace references to -fdump-tree with -fdump-ast.

2001-08-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.c (sparc_variable_issue): Fix typo in last change.

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

	* varasm.c (assemble_integer): Document ppc-eabi -mrelocatable losage.

2001-08-20  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (RETURN_IN_MEMORY): Improve comment.

2001-08-20  Janis Johnson  <janis187@us.ibm.com>

	* doc/invoke.texi (Profiling options): Clarify the interactions
	between -fprofile-arcs and -ftest-coverage, -fprofile-arcs.

2001-08-20  Jeffrey Oldham  <oldham@codesourcery.com>

	* crtstuff.c (__do_global_ctors): Fix typo in preprocessing
	command.

2001-08-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* gcc.c (make_relative_prefix): Allocate a sufficiently large
	buffer.

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

	* final.c (end_final): Fix typo last change.

2001-08-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (init_standard_includes): The returned buffer
	is already malloc-ed.
	* gcc.c (add_prefix): Similarly.
	* prefix.c (translate_name): Update to support clear buffer
	ownership rules.
	(update_path): Similarly.  Be sure to free any newly allocated
	key.  UPDATE_PATH_HOST_CANONICALIZE takes only one argument.
	(tr): New function.
	* prefix.h (update_path): Update prototype and document.
	* config/i386/xm-djgpp.h (UPDATE_PATH_HOST_CANONICALIZE): Clean
	up and update to new buffer ownership rules.
	* doc/gcc.texi (UPDATE_PATH_HOST_CANONICALIZE): Update.

Mon Aug 20 01:44:50 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* final.c (compute_alignments): New function.
	(init_insn_lengths): Do not care label_align.
	(LABEL_ALIGN_AFTER_BARRIER): Default to 1.
	(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Default to 0.
	(JUMP_ALIGN, JUMP_ALIGN_MAX_SKIP): New.
	(shorted_branches): Realloc label_align array; do
	not call init_insn_lengths; Do not care about loop alignments.
	* output.h (compute_alignments): Declare.
	* toplev.c (rest_of_compilation): Call compute_alignments.
	* tm.texi (JUMP_ALIGN, JUMP_ALIGN_MAX_SKIP): Document.

	* predict.c (block_info_def): Add npredecesors, remove nvisited;
	change visited to tovisit.
	(propagate_freq): Use faster traversing algorithm.
	(estimate_loops_at_level, estimate_bb_frequencies): Change visited
	to tovisit; reverse meaning.

	* predict.c (struct block_info_def): Remove nvisited.
	(propagate_freq): Use EDGE_DFS_BACK to detect irreducible regions.
	(estimate_bb_frequencies): Call mark_dfs_back_edges.

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

	* doc/invoke.texi (MIPS Options): Document -mfused-madd.
	* config/mips/mips.h (MASK_NO_FUSED_MADD): New.
	(TARGET_FUSED_MADD): New.
	(TARGET_SWITCHES): Add -mfused-madd, -mno-fused-madd.
	* config/mips/mips.md: Add TARGET_FUSED_MADD as condition to
	the multiply-add instructions.

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

	* dwarf2asm.c (dw2_output_indirect_constant_1): The symbol ref
	is aligned to pointer size.

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

	* config/ia64/ia64.c (ia64_cycle_display): Only emit cycle
	display markers during final schedule.

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

	* function.c (gen_mem_addressof): Don't call get_alias_set if no decl.

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

	* config/ia64/ia64.h (STRIP_NAME_ENCODING): Handle @ and *
	in the same string.
	(ASM_NAME_TO_STRING): Remove.
	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Handle @ and *
	in the same string.  Remove support for expressions.

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

	* config/i386/i386.md (tablejump): Make an expander; handle
	pic relative addressing here.
	(tablejump_1): Rename from tablejump_pic.
	(casesi): Remove.

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

	* regclass.c (fix_register): Fix typo.

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

	* config/ia64/unwind-ia64.c (UNW_REG_B0): New.
	(struct _Unwind_Context): Expand br_loc to hold it.
	(uw_frame_state_for): Handle leaf functions better.
	(uw_update_reg_address): Update for br_loc change.

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

	* crtstuff.c: Move list heads before code that uses them.
	(__JCR_LIST__): Remove initial null.
	(frame_dummy, __frame_dummy): Do java registration here ...
	(__do_global_ctors_aux): ... not here.

	* config/ia64/crtbegin.asm (dtor_ptr): Make gp-relative.
	(__do_global_dtors_aux): Update to match.
	(__JCR_LIST__, __do_jv_register_classes): New.
	(.init): Call it.
	* config/ia64/crtend.asm (__JCR_END__): New.
	(__do_global_ctors_aux): Use a GPREL64I reloc to __CTOR_END__
	instead of an indirect LTOFF22 reloc.

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

	* flow.c (mark_regs_live_at_end): Use regs_invalidated_by_call.
	* regclass.c (init_reg_sets_1): Fix typo.
	* config/ia64/ia64.c (ar_pfs_reg_operand): New.
	(ia64_expand_call): Pass ar.pfs to sibcall expanders.
	(ia64_compute_frame_size): Make ar.unat live when in use.
	(ia64_epilogue_uses): Reformat; do not check current_function_is_leaf
	for ar.pfs; remove ar.unat handling.
	* config/ia64/ia64.h (CALL_REALLY_USED_REGISTERS): ar.unat is
	call-saved.
	(PREDICATE_CODES): Add ar_pfs_reg_operand.
	* config/ia64/ia64-protos.h: Update decls.
	* config/ia64/ia64.md (sibcall_nopic): Use ar.pfs.
	(sibcall_pic): Likewise.

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

	* config/ia64/ia64.c (ia64_sched_reorder2): Also skip past
	pred_rel_mutex when searching for insn_group_barrier.
	* config/ia64/ia64.md (cycle_display): Combine the expander
	and insn patterns.

	* config/ia64/ia64.c (ia64_internal_sched_reorder): Emit stop
	bit before asm as needed.

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

	* timevar.def (TV_MACH_DEP): New.
	* toplev.c (rest_of_compilation): Use it.
	* config/ia64/ia64.c (ia64_reorg): Push to TV_SCHED2.

2001-08-18  Zack Weinberg  <zackw@panix.com>

	* unwind-dw2.c (execute_stack_op): Add default aborts to
	the inner switches to prevent warnings.

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

	* timevar.h (struct timevar_time_def): Change element type to float.
	(ticks_to_msec, clocks_to_msec): Likewise.
	(TICKS_TO_MSEC, CLOCKS_TO_MSEC): Rescale to seconds; use type float.
	(get_time): Likewise.
	(timevar_print): Adjust zero check and printing to match.

2001-08-18  Zack Weinberg  <zackw@panix.com>

	* doc/extend.texi, doc/gcc.texi, doc/install-old.texi,
	doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/include/gpl.texi:
	Eliminate overfull or underfull hboxes.

2001-08-18  Zack Weinberg  <zackw@panix.com>

	* cpperror.c: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.

2001-08-18  Zack Weinberg  <zackw@panix.com>

	* haifa-sched.c: Convert to target hooks.  Macros replaced
	are ISSUE_RATE, ADJUST_COST, ADJUST_PRIORITY, MD_SCHED_INIT,
	MD_SCHED_REORDER, MD_SCHED_REORDER2, MD_SCHED_VARIABLE_ISSUE,
	MD_SCHED_FINISH, and HAVE_cycle_display.
	* target-def.h (TARGET_SCHED_ADJUST_COST,
	TARGET_SCHED_ADJUST_PRIORITY, TARGET_SCHED_ISSUE_RATE,
	TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_INIT,
	TARGET_SCHED_FINISH, TARGET_SCHED_REORDER,
	TARGET_SCHED_REORDER2, TARGET_SCHED_CYCLE_DISPLAY):
	New hook #defines to be overridden.
	(TARGET_SCHED): Bring them all together.
	(TARGET_INITIALIZER): Update.
	* target.h: Don't forward declare struct rtx_def.  Use 'rtx'
	instead of 'struct rtx_def *' throughout.
	(struct sched): New set of hooks for the scheduler.
	* Makefile.in (haifa-sched.o): Depend on target.h.
	* doc/tm.texi: Document the new scheduler hooks, together in
	their own section, instead of scattered around.
	Fix a bunch of underfull/overfull hboxes.

	* a29k.h, alpha.h, arm.h, c4x.h, convex.h, d30v.h, i386.h,
	ia64.h, m32r.h, m88k.h, mips.h, pa.h, rs6000.h, s390.h, sh.h,
	sparc.h: Don't define any of the old scheduler macros.

	* a29k.c, alpha.c, arm.c, c4x.c, convex.c, d30v.c, i386.c,
	ia64.c, m32r.c, m88k.c, mips.c, pa.c, rs6000.c, s390.c, sh.c,
	sparc.c: Create hook functions from code extracted from
	corresponding target header, or make existing hooks static, as
	appropriate.  Set the appropriate entries in targetm.

	* alpha-protos.h, arm-protos.h, c4x-protos.h, d30v-protos.h,
	i386-protos.h, ia64-protos.h, m32r-protos.h, pa-protos.h,
	rs6000-protos.h, s390-protos.h, sparc-protos.h:
	Remove prototypes for functions which are now static.

	* d30v.h, d30v.c, m32r.h, m32r.c: Remove #ifdef HAIFA and
	related gunk; the Haifa scheduler is now the only choice.

2001-08-18  Zack Weinberg  <zackw@panix.com>

	* optabs.h (OTI_flodiv, flodiv_optab): Kill.
	* genopinit.c: Put floating point divide insns in sdiv_optab.
	* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
	* config/gofast.h, config/c4x/c4x.h,
	config/ia64/hpux_longdouble.h, config/mips/mips.h,
	config/pa/long_double.h, config/rs6000/sysv4.h,
	config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
	* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
	(init_optabs): Use init_optabv for overflow-trapping optabs.
	Don't init flodiv_optab.  Give mov_optab, movstrict_optab, and
	cmp_optab RTX codes so have_insn_for can find them.

	* optabs.c (expand_simple_binop, expand_simple_unop,
	have_insn_for, gen_sub3_insn): New interfaces.
	* expr.h: Prototype new functions.
	(enum optab_methods): Move here from optabs.h.

	* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
	loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
	Use new	functions instead of working directly with optabs.
	* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
	unroll.c: Don't include optabs.h.
	* caller-save.c, combine.c, function.c, stmt.c: Just include
	insn-codes.h, not optabs.h.
	* Makefile.in: Update dependencies.

	* combine.c (make_compound_operation, simplify_comparison):
	Fix typos testing for this or that instruction.

2001-08-18  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* mklibgcc.in: Prefer LIB1ASMFUNCS over LIB2_DIVMOD_FUNCS when
	generating libgcc.a.

2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* except.c (TYPE_HASH): Delete.

	* objc/objc-act.c (HASHFUNCTION): Cast to size_t, not
	HOST_WIDE_INT.

	* tree.c (TYPE_HASH): Delete.

	* tree.h (TYPE_HASH): Define.

2001-08-18  Graham Stott  <grahams@redhat.com>

	* config/mips/mips.md (adddi3_internal_2+1): Remove constraints from
	define_split.
	(adddi3_internal_2+2): Likewise.
	(eh_set_lr_di+1): Likewise.

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

	* defaults.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Move from ...
	* dwarf2asm.c: ... here.
	* dwarfout.c: Remove them.

	* varasm.c (assemble_integer): Add align parameter.
	(assemble_real, output_constant, output_constructor): Likewise.
	* output.h: Update decls.
	* dwarf2asm.c, final.c, varasm.c, config/darwin.c, config/nextstep.c,
	config/alpha/alpha.c, config/arm/arm.md, config/clipper/clipper.c,
	config/m88k/m88k.c, config/mcore/mcore.md, config/mips/mips.h,
	config/mips/mips.md, config/pa/pa.c, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/s390/s390.h, config/sh/sh.md:
	Update all callers.

	* final.c (end_final): Abort profile block generation if we
	haven't layed it out properly.
	* output.h (assemble_eh_integer): Remove stale decl.
	* varasm.c (assemble_zeros): Tidy; use assemble_integer.
	(min_align): New.
	(assemble_integer): Handle unaligned data.
	(assemble_real): Abort on unaligned data.
	(output_constructor): Don't assume ASM_OUTPUT_ALIGN 0 does
	anything useful.
	(default_dtor_section_asm_out_destructor): Use assemble_align.
	(default_named_section_asm_out_constructor): Likewise.
	(default_ctor_section_asm_out_constructor): Likewise.
	* config/darwin.c (machopic_asm_out_constructor): Likewise.
	(machopic_asm_out_destructor): Likewise.
	* config/nextstep.c (nextstep_asm_out_constructor): Likewise.
	(nextstep_asm_out_destructor): Likewise.
	* config/alpha/alpha.c (vms_asm_out_constructor): Likewise.
	(vms_asm_out_destructor): Likewise.

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

	* config/mips/iris6.h (TARGET_IRIX6): New.
	(current_section_name, current_section_flags): New.
	(ASM_OUTPUT_ALIGN, ASM_FILE_START, ASM_FILE_END): New.
	(MAX_OFILE_ALIGNMENT): New.
	(ASM_OUTPUT_ALIGNED_LOCAL): Use bss_section.
	* config/mips/mips.c (mips_make_temp_file, temp_filename): Remove.
	(copy_file_data): Split out from
	(mips_asm_file_end): ... here.
	(mips_asm_file_start): Remove extra .section directive.  Use
	tmpfile instead of mips_make_temp_file.
	(mips_unique_section): Use const char * as needed for warnings.
	(iris6_asm_named_section_1): Renamed from iris6_asm_named_section;
	re-add align parameter.
	(iris6_asm_named_section): New.
	(iris_section_align_entry_eq, iris_section_align_entry_hash): New.
	(iris6_asm_output_align, iris6_section_align_1): New.
	(iris6_asm_file_start, iris6_asm_file_end): New.
	* config/mips/mips-protos.h: Update decls.

2001-08-17  Janis Johnson  <janis187@us.ibm.com>

	* doc/install.texi (Install GCC): Add links to build status pages.
	(Specific): Ditto.
	(Final install): Ditto; request updates for specific info

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

	* cpperror.c (print_location):  Don't take a file name; use the
	line map instead.
	(_cpp_begin_message): Similarly.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line): Update.
	(cpp_pedwarn_with_file_and_line): Remove.
	* cppfiles.c (stack_include_file): Update; set filename to stdin
	here when appropriate.
	* cpphash.h (struct cpp_buffer): Remove nominal_fname.
	(_cpp_begin_message): Don't take a file name.
	* cppinit.c: Add comment.
	* cpplex.c: Fix end-of-directive indicator.
	* cpplib.c: Don't include intl.h.
	(run_directive, do_diagnostic): Update.
	(do_line): Update to not use nominal_fname.
	(cpp_push_buffer): Don't take a filename.
	* cpplib.h (struct ht): Remove.
	(cpp_push_buffer): Don't take a filename.
	(cpp_pedwarn_with_file_and_line): Remove.
	* cppmacro.c (struct cpp_macro): Remove file.
	(builtin_macro): Update.
	(_cpp_create_definition): Update.
	* cppmain.c: Correct comment.
	* fix-header.c (read_scan_file): Update.

2001-08-17  Kazu Hirata  <kazu@hxi.com>

	* sbitmap.c: Fix comment formatting.
	* sched-deps.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* ssa.c: Likewise.
	* ssa-ccp.c: Likewise.
	* stor-layout.c: Likewise.
	* timevar.c: Likewise.
	* toplev.c: Likewise.
	* unwind-dw2.c: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* varasm.c: Likewise.

2001-08-17  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (RETURN_IN_MEMORY): Return types with a size that is varable
	or larger than an integer in memory.

2001-08-17  Zack Weinberg  <zackw@panix.com>

	* system.h: Forward-declare struct rtx_def, struct rtvec_def,
	and union tree_node.  Typedef rtx, rtvec, and tree.  Fix comment.
	* rtl.h: Don't forward-declare union tree_node here.  Don't
	typedef rtx or rtvec here.  Change all uses of struct rtx_def *,
	struct rtvec_def *, or union tree_node * to use rtx, rtvec,
	and tree respectively.
	* tree.h: Don't forward-declare struct rtx_def here.  Don't
	typedef tree here.  Change all uses of struct rtx_def *,
	struct rtvec_def *, or union tree_node * to use rtx, rtvec,
	and tree respectively.

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

	* config/mips/elf.h, config/mips/elf64.h, config/mips/netbsd.h,
	config/mips/openbsd.h: Fix typos last change.

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

	* doc/invoke.texi (Optimize Options): The default for
	-finline-limit is 600.

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

	* varasm.c (text_section): Allow TEXT_SECTION to override the
	printing of TEXT_SECTION_ASM_OP.
	* dwarf2out.c (TEXT_SECTION_NAME): Rename from TEXT_SECTION.
	(DATA_SECTION, BSS_SECTION): Remove.
	* dwarfout.c (TEXT_SECTION_NAME, DATA_SECTION_NAME, DATA1_SECTION_NAME,
	RODATA_SECTION_NAME, RODATA1_SECTION_NAME, BSS_SECTION_NAME):
	Rename from s/_NAME//.
	* config/mips/mips.h (TARGET_FILE_SWITCHING): Add !TARGET_MIPS16.
	(ASM_DECLARE_FUNCTION_NAME): Move file switching ...
	(TEXT_SECTION): ... here.  New.
	* config/mips/elf.h (TEXT_SECTION): New; no file switching.
	* config/mips/elf64.h, config/mips/netbsd.h: Likewise.
	* config/mips/openbsd.h: Likewise.
	* config/mips/mips.c (mips_asm_file_start): Tidy file switching test.
	(mips_asm_file_end): Likewise test.
	(mips_output_function_epilogue): Likewise.  Switch back to data
	section after emitting the function.

	* doc/tm.texi (Sections): Document TEXT_SECTION.

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

	* dwarf2out.c (dwarf2out_init): Don't emit .debug_loc label here.
	(dwarf2out_finish): Do it here.  Emit .debug_loc before .debug_info.

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

	* varasm.c (assemble_variable): Don't overalign if DECL_USER_ALIGN.
	* crtstuff.c (__CTOR_LIST__, __DTOR_LIST__, __EH_FRAME_BEGIN__,
	__JCR_LIST__, __CTOR_END__, __DTOR_END__, __FRAME_END__,__JCR_END__):
	Add aligned attribute.

2001-08-17  Andrew Haley  <aph@cambridge.redhat.com>

	* config/sh/sh.md: Add modes to unspecs in first insn to match
	those in the second.

	* Makefile.in: Fix collect2 copy for Cygwin.

Fri Aug 17 15:48:57 CEST 2001  Jan Hubicka  <jh@suse.cz>

	Install the proper patch.
	* function.c (put_var_into_stack): Temporarily clear DECL_RTL.
	(assign_params): Avoid setting DECL_RTL to unfinished RTX.
	(expand_function_start): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtx): Likewise.

Fri Aug 17 15:41:35 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* final.c: Undo my previous accidental checkin.
	* output.h: Likewise.
	* tm.texi: Likewise.

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

	* varasm.c (named_section_flags): Remove align parameter.
	* varasm.c, dwarf2out.c: Update all callers.
	* output.h: Update prototypes.

	* target.h (target.asm_out.named_section): Remove align parameter.
	* varasm.c, config/a29k/a29k.c, config/alpha/alpha.c,
	config/arm/arm.c, config/c4x/c4x.c, config/h8300/h8300.c,
	config/i386/i386.c, config/i386/winnt.c, config/m68k/m68k.c,
	config/mcore/mcore.c, config/mips/mips.c, config/rs6000/rs6000.c,
	config/sh/sh.c, config/sparc/sparc.c: Update implementations to match.

	* varasm.c (in_named_entry_eq, in_named_entry_hash): New.
	(get_named_section_flags, set_named_section_flags): New.
	(named_section_flags): Use them.
	(named_section): Do decl vs section flags check here...
	(default_section_type_flags): ... not here.
	(init_varasm_once): Create in_named_htab.
	(resolve_unique_section): Mark reloc unused.

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

	* varasm.c (force_const_mem): Keep pool alignment in bits.
	(output_constant_pool): Use assemble_align.

2001-08-16  Zack Weinberg  <zackw@panix.com>

	* doc/tm.texi: Remove extra @table command.

2001-08-16  Zack Weinberg  <zackw@panix.com>

	* final.c (shorten_branches): Clear the end of the label_align
	array only if we made it larger.  Break up messy expressions
	for clarity.

	* diagnostic.c (internal_error): Check for error recursion
	before doing ICE suppression.

	* timevar.c: Timing variables now count in milliseconds.
	(init_timevar): Set up ticks_to_msec and clocks_to_msec here.
	(get_time): Not here.
	(timevar_print): Don't print any timer whose user, cpu, and
	wall times are all zero as displayed.
	* timevar.h: Update comment aboout units.  Make timevar
	counters unsigned.

Thu Aug 16 17:39:45 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (put_var_into_stack): Temporarily clear DECL_RTL.
	(assign_params): Avoid setting DECL_RTL to unfinished RTX.
	(expand_function_start): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtx): Likewise.

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

	* stor-layout.c (layout_decl): Don't set DECL_USER_ALIGN.
	(finalize_record_size): Don't set TYPE_USER_ALIGN.

2001-08-16  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove unused
	variables.

2001-08-16  Andreas Jaeger  <aj@suse.de>

	* config/s390/s390.c: Include "debug.h" for dwarf2out_do_frame
	prototype.

Wed Aug 15 15:22:52 EDT 2001  John Wehle  (john@feith.com)

	* rtl.h (only_sets_cc0_p): New prototype.
	* jump.c (sets_cc0_p): Handle INSN.
	(only_sets_cc0_p): New function.
	* flow.c (merge_blocks_nomove): Use only_sets_cc0_p.
	(tidy_fallthru_edge): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* unroll.c (unroll_loop): Likewise.
	(copy_loop_body): Likewise.

2001-08-15  Jason Eckhardt  <jle@redhat.com>

	* config/i960/i960.md (trap): Change "faulteq.t" to "faulte.t".

Wed Aug 15 14:24:22 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (struct block_info_def): Remove nvisited.
	(propagate_freq): Use EDGE_DFS_BACK to detect irreducible regions.
	(estimate_bb_frequencies): Call mark_dfs_back_edges.

	* i386.c (ix86_agi_dependant): Lea causes AGI only on the Pentium
	(ix86_adjust_cost): Teach scheduler that latency to load operand can
	be masked.

Wed Aug 15 12:41:32 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def: Update hitrates.

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

	* except.c (TYPE_HASH): Cast to size_t, not HOST_WIDE_INT.

Tue Aug 14 17:30:59 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (commit_one_edge_insertion): Don't separate a LOOP_BEG
	note from its associated jump.

2001-08-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux64.h (CPP_PREDEFINES): Define __s390__
	also on 64-bit s390x targets.

2001-08-14  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_compute_initial_elimination_offset): New
	function.
	(arm_expand_prologue): Handled nested functions which take a
	variable argument list.
	* config/arm/arm.h (ARM_INITIAL_ELIMINATION_OFFSET): Replace
	macro with an invocation of
	arm_compute_initial_elimination_offset.
	* config/arm/arm-protos.h: Prototype
	arm_compute_initial_elimination_offset.

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

	* doc/install.texi (Specific, avr): Fix markup.
	(Specific, c4x): Ditto.

2001-08-14  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* predict.c (dump_prediction): Change `bool' parameter to `int'.

2001-08-14  Gabriel Dos Reis  <gdr@codesourcery.com>

	* Makefile.in (OBJS): Add rtl-error.o
	(rtl-error.o): New rule.
	(diagnostic.o): Adjust dependency.
	diagnostic.c (file_and_line_for_asm, diagnostic_for_asm,
	error_for_asm, _fatal_insn, _fatal_insn_not_found,
	warning_for_asm): Move to...
	rtl-error.c: ...here.  New file.

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

	* dwarf2out.c (dwarf2out_frame_finish): Never emit .eh_frame
	if USING_SJLJ_EXCEPTIONS.

2001-08-14  Steve Ellcey <sje@cup.hp.com>

	* tlink.c (scan_linker_output): Check string for unsatisfied in
	addition to undefined and unresolved.

2001-08-14  Graham Stott  <grahams@redhat.com>

	* libgcc2.c (*): Replace EH_FRAME_SECTION with
	EH_FRAME_SECTION_NAME.

Tue Aug 14 14:57:07 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* genattrtab.c (simplify_test_exp_in_temp): New function.
	(simplify_test_exp): Avoid explicit use of temporary obstack.
	(simplify_cond, insert_right_side, evaluate_eq_attr,
	simplify_and_tree, simplify_or_tree, eliminate_known_true):
	Use simplify_test_exp_in_temp.
	(optimize_attrs): Iterate until expression stabilizes.

2001-08-13  Ulrich Weigand  <uweigand@de.ibm.com>:

	* glimits.h: Remove the __LONG_MAX__ special case for s390x.
	* config/s390/linux64.h: Define __LONG_MAX__ in CPP_PREDEFINES.

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

	* config/arm/unknown-elf.h (CTOR_LIST_BEGIN, CTOR_LIST_END): Remove.
	(DTOR_LIST_BEGIN, DTOR_LIST_END): Remove.
	* config/arm/conix-elf.h: Likewise.

2001-08-13  Geoffrey Keating  <geoffk@redhat.com>

	* config/svr4.h (LINK_SPEC): Don't do -Wl, here, it is done
	in gcc.c.
	* config/rs6000/sysv4.h (LINK_SPEC): Likewise.

	* gcse.c (hash_scan_set): Expressions that are set as part of
	jump instructions are not available.

2001-08-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (print_operand, s390_function_prologue,
	s390_va_start): Fixed HOST_WIDE_INT type mismatch.

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

	* config/rs6000/xcoff.h (EH_FRAME_IN_DATA_SECTION): New.
	* defaults.h (EH_FRAME_SECTION_NAME): Respect it.
	* doc/tm.texi (Exception Region Output): Document it.

2001-08-13  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/sysv4.h (PREFERRED_DEBUGGING_TYPE): Use
	DWARF2 instead of stabs by default.

2001-08-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c: Include optabs.h.

2001-08-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/eabi.asm: Define 64-bit versions of FPR
	save/restore routines.
	* ginclude/ppc-asm.h: Define 64-bit FUNC_* macros.

2001-08-13  Andreas Jaeger  <aj@suse.de>

	* gcc.c (init_spec): Revert last patch by Theodore Papadopoulo,
	the english is correct.

2001-08-13  Zack Weinberg  <zackw@panix.com>

	* expr.h: Split out optab- and libfunc-related code to...
	* optabs.h, libfuncs.h: ... these new headers.

	* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
	(OPTABS_H): New.
	(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
	dependencies.
	* mkconfig.sh: Don't include insn-codes.h from config.h.

	* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
	enum insn_code is available.  Move reload_in_optab and
	reload_out_optab array declarations to optabs.h.
	* regmove.c (gen_add3_insn): Move to optabs.c, export from
	there, prototype in expr.h.
	* gencodes.c: Cleanup: zap global variables, don't use
	printf where puts will do, don't bother defining MAX_INSN_CODE
	which nothing uses, let CODE_FOR_nothing get its value implicitly.

	* genemit.c, genopinit.c: Include optabs.h in generated file.
	* genoutput.c: Include insn-codes.h in generated file.
	* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
	expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
	reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
	config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
	config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
	config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
	Include optabs.h.
	* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
	optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
	config/m88k/m88k.c, config/sparc/sparc.c:
	Include libfuncs.h.
	* reload.c: Include expr.h and optabs.h before reload.h.
	* config/alpha/alpha.c: Include tree.h before reload.h.
	* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
	and reload.h in that order.
	* config/sparc/sparc.c: Include debug.h.
	* recog.c: Include insn-codes.h.

2001-08-13  Andreas Jaeger  <aj@suse.de>

	* config.gcc: Use t-slibgcc-elf to build shared libgcc_s on
	s390*linux.

2001-08-13 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>

	* dwarf2out.c (output_cfa_loc): Fix typo in comment.
	* gcc.c (init_spec): Fix typo in comment.
	* varasm.c (data_section): Fix typo in comment.

Mon Aug 13 02:27:39 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (dump_prediction): New argument "USED".
	(combine_predictions_for_insn): Determine the used heuristics,
	output the case no heuristic applied.
	* predict.def (PRED_DS_THEORY, PRED_NO_HEURISTIC): New.

2001-08-13  Andreas Jaeger  <aj@suse.de>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Don't capitalize
	register %rip.

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

	* jump.c: Fix formatting.

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

	* config/h8300/h8300.md (zero_extendqihi2): Correct the insn
	length.

2001-08-12  Geoffrey Keating  <geoffk@redhat.com>

	* loop.c (check_dbra_loop): Use condjump_label to compute
	jump_label.

	* rtl.h: Move prototypes of rtx_alloc and rtvec_alloc around
	to better document the files they're in.

2001-08-12  Zack Weinberg  <zackw@panix.com>

	* recog.h (struct insn_operand_data): Shrink 'mode' field
	to 16 bits.

2001-08-12  Kazu Hirata  <kazu@hxi.com>

	* gcc.c: Fix comment formatting.
	* gccspec.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genemit.c: Likewise.
	* gengenrtl.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-page.c: Likewise.
	* global.c: Likewise.
	* graph.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* lcm.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* mbchar.c: Likewise.
	* optabs.c: Likewise.
	* predict.c: Likewise.
	* prefix.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* resource.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.c: Likewise.

2001-08-12  Kazu Hirata  <kazu@hxi.com>

	* doc/tm.texi (ENCODE_SECTION_INFO): Add documentation on how
	a tree representing a constant is passed to the macro.

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

	* config/rs6000/rs6000.c (rs6000_elf_asm_out_constructor): New.
	(rs6000_elf_asm_out_destructor): New.
	* config/rs6000/sysv4.h (CTORS_SECTION_ASM_OP): Remove.
	(DTORS_SECTION_ASM_OP): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	(ASM_OUTPUT_INT): Don't hack TARGET_RELOCATABLE for constructors.

2001-08-12  David Edelsohn  <edelsohn@gnu.org>

	Revert:
	2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	* gcc.c (set_collect_gcc_options): New function, split out from
	main.
	Ignore elided switches.
	(do_spec_1): Invoke before executing command.
	(set_input): Export.
	Move declaration ...
	* gcc.h (set_input): ... here.
	* config/alpha/osf.h (ASM_FINAL_SPEC): Use %U.s to refer to input
	file.

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

	* config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Fix
	thinko wrt TARGET_RELOCATABLE.

2001-08-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* fix-header.c (cb_file_change): Update prototype.

2001-08-11  Zack Weinberg  <zackw@panix.com>

	* toplev.c (set_float_handler): Make static.
	* toplev.h: Don't prototype set_float_handler.

	* simplify-rtx.c: Don't include setjmp.h.
	(simplify_unary_real, simplify_binary_real, simplify_binary_is2orm1):
	New functions.
	(simplify_unary_operation, simplify_binary_operation): Use them,
	via do_float_handler.

	* fold-const.c: Don't include setjmp.h.
	(exact_real_inverse_1): New function.
	(exact_real_inverse): Use it, via do_float_handler.

	* varasm.c: Don't include setjmp.h.
	(assemble_real_1): New function.
	(assemble_real): Use it, via do_float_handler.
	Call internal_error if we get a trap here.

	* c-parse.in, cse.c, cselib.c, config/i386/i386.c,
	config/pj/pj.c, config/s390/s390.c: Don't include setjmp.h.

2001-08-11  Zack Weinberg  <zackw@panix.com>

	* defaults.h: Define PREFERRED_STACK_BOUNDARY to
	STACK_BOUNDARY if not already defined.

	* calls.c, function.c, reload1.c, explow.c: Don't default
	PREFERRED_STACK_BOUNDARY.  Remove all #if/#ifdef on
	PREFERRRED_STACK_BOUNDARY and/or STACK_BOUNDARY.

	* explow.c (allocate_dynamic_stack_space): Change unsafe #if
	to run-time test.

	* doc/tm.texi: Document that STACK_BOUNDARY is required;
	clarify difference between it and PREFERRED_STACK_BOUNDARY.

2001-08-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (enter_macro_context): Push macro expansions even
	if empty.

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

	* config/rs6000/rs6000.c: Include integrate.h to silence warning.
	(rs6000_elf_section_type_flags): Actually return a value.

2001-08-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390.c, s390.h, s390.md, s390-protos.h, linux.h, t-linux:
	Clean up code: add missing comments and prototypes, fix warnings,
	remove obsolete code, fix spacing to conform to coding style.

2001-08-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (targetm): Define TARGET_ASM_OPEN_PAREN
	and TARGET_ASM_CLOSE_PAREN.
	(regclass_map): CC register belongs to class NO_REGS.
	(legitimize_pic_address): Don't generate unnecessary moves
	(to avoid confusing loop optimization).
	(check_and_change_labels): Replace jump_long by indirect_jump.
	(s390_final_chunkify): Don't start a new literal pool on section
	switch in 64-bit code.
	(s390_va_start, s390_va_arg): Fixed incorrect sizes for 64-bit.

	* config/s390/s390.h (TARGET_SWITCHES): Renamed debug_arg to debug.
	(MAX_BITS_PER_WORD, MAX_LONG_TYPE_SIZE): Set to 64 (for 64-bit).
	(HARD_REGNO_MODE_OK, RETURN_IN_MEMORY): Support complex integer
	modes correctly.
	(reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Remove CC_REGS.
	(EH_RETURN_HANDLER_RTX): Fixed incorrect offset for 64-bit.
	(CONST_COSTS): Fixed incorrect costs.

	* config/s390/s390.md (fixuns_trunc[sd]f[sd]i2, udivsi3, umodsi3):
	Use emit_jump instead of emit_jump_insn (gen_jump).
	(divsi3, modsi3): Clobber low word of divmoddisi3 before shifting
	(to avoid confusing flow analysis).
	(tablejump, tablejump1, tablejump2): Removed.  Replaced by casesi.
	(casesi, casesi_jump): New.
	(jump_long): Removed.  Functionality merged into indirect_jump.
	(indirect_jump): Accept address_operand, not just register_operand.
	(cjump_long, icjump_long): Use same logic as indirect_jump.
	(builtin_setjmp_setup, builtin_setjmp_receiver, builtin_longjmp):
	Fixed broken setjmp/longjmp handling.
	(do_builtin_setjmp_setup): Removed.

	* config/s390/linux.h (ASM_OUTPUT_DOUBLE_INT): Work around
	broken GNU as versions that don't accept .quad with large
	negative values.  Use hexadecimal output instead.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Adapt to new casesi insn.
	(ASM_OPEN_PAREN, ASM_CLOSE_PAREN, FUNCTION_PROLOGUE,
	FUNCTION_EPILOGUE): Removed.  Now in targetm.

	* config/s390/linux64.h (CALL_USED_REGISTERS): Add CC register.

	* config/s390/fixdfdi.h: Add missing copyright statement.
	Fix type conflicts on 64-bit.  Add missing SFmode routines.

	* s390.c, s390.h, s390.md, linux.h, linux64.h: Fixed incorrect
	email address.

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

	* rtl.h (REG_EH_RETHROW): Remove.
	* rtl.c (reg_note_name): Update.
	* combine.c (distribute_notes): Don't check for it.

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

	* combine.c (distribute_notes): Place REG_SETJMP.

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

	* doc/extend.texi (Arrays and pointers implementation): Discourage
	relying on sign-extension of pointers.

2001-08-11  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h (EXTRA_SECTIONS): Remove in_ctors and
	in_dtors.
	(EXTRA_SECTION_FUNCTIONS): Remove DTORS_SECTION_ASM_OP and
	RDATA_SECTION_ASM_OP.

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

	* doc/install.texi (Specific, c4x): Fix cross-reference to the
	main manual to work both for info and HTML versions.

2001-08-11  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Matt Kraai <kraai@alumni.carnegiemellon.edu>

	* cpphash.c (_cpp_destroy_hashtable): Use ht_destroy.
	* cpphash.h (CPP_IN_SYSTEM_HEADER): Fix.
	(struct cpp_pool): New member first.
	* cppinit.c (append_include_chain): Plug memory leaks.
	* cpplib.c (cpp_register_pragma, cpp_register_pragma_space):
	Allocate pragma structures from the (aligned) macro pool to
	avoid leaking memory.
	* cpplex.c (_cpp_init_pool, _cpp_free_pool): Use pool->first
	so we don't leak memory.
	* hashtable.c (ht_destroy): New.
	* hashtable.h (ht_destroy): New.

2001-08-11  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* c-lex.c (map): Make const.
	(cb_file_change): Update for callback passing a line map.
	Don't assume we have a previous map.  Remove sanity check
	about popping too many files.
	* cpperror.c (print_location): Make map const.
	* cppfiles.c (stack_include_file): Update; line maps now hold sysp.
	(cpp_make_system_header): Similarly.
	(search_from): Similarly.
	(_cpp_execute_include): Don't remember where we came from.
	* cpphash.h (struct cpp_buffer): Remove return_to_line, sysp.
	(struct cpp_reader): Make map const.
	(CPP_IN_SYSTEM_HEADER, _cpp_do_file_change): Update.
	* cpplib.c (do_line): Update; line maps now hold sysp.
	(cpp_push_buffer): Similarly.
	(_cpp_do_file_change): Similarly; callback with map instead.
	(cpp_get_line_maps): Constify return value.
	(_cpp_pop_buffer): Update.
	* cpplib.h (struct cpp_file_change): Remove.
	(struct cpp_callbacks): Update.
	(cpp_get_line_maps): Constify return value.
	* cppmacro.c (_cpp_create_definition): Update.
	* cppmain.c (struct printer): Constify map.
	(maybe_print_line): Similarly.
	(print_line): Similarly.  Deduce flags 1 and 2 here.
	(cb_file_change): Update.
	* line-map.c (free_line_maps): Warn regardless.
	(add_line_map): Return pointer to const.  When passed NULL to_file
	with LC_LEAVE, use the obvious values for the return point so the
	caller doesn't have to figure them out.
	(lookup_line): Return pointer to const.
	(print_containing_files): Take pointer to const.
	* line-map.h (struct line_map): New members reason, sysp.
	(add_line_map): Return pointer to const.
	(lookup_line): Similarly.
	(print_containing_files): Take pointer to const.

2001-08-10  Roman Zippel  <zippel@linux-m68k.org>
	    Richard Henderson  <rth@redhat.com>

	* regmove.c (regmove_optimize): Avoid setting a register twice in
	a parallel set.

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

	* doc/extend.texi (Arrays and pointers implementation): Document
	behavior of pointer/integer conversion.

2001-08-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* glimits.h (__LONG_MAX__): Add s390x as 64-bit architecture.

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

	* doc/extend.texi (C Implementation): New chapter.
	* doc/gcc.texi (Top): Link it in.

2001-08-10  Andrew Cagney  <ac131313@redhat.com>

	* doc/install.texi (Specific): Fix CVS merge botch.

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

	* config/m68k/m68k.c (m68k_svr3_asm_out_constructor): Protect with
	ifdef CTOR_LIST_BEGIN instead of INIT_SECTION_ASM_OP.

2001-08-10  Zack Weinberg  <zackw@stanford.edu>

	* calls.c, function.c: Always define PREFERRED_STACK_BOUNDARY
	if not already defined.  Remove all #ifdefs on STACK_BOUNDARY;
	this macro is now required.

	* cselib.c (cselib_process_insn), flow.c (propagate_block),
	loop.c (find_and_verify_loops), reload.c (reload): Check
	for rtx code of CALL_INSN, not CALL, when deciding if we
	need to check for REG_SETJMP note.

	* gcse.c (compute_hash_table, compute_store_table): Update
	the #ifdef NON_SAVING_SETJMP code to the new REG_SETJMP
	logic.

	* config/avr/avr.c: Fix typo.
	* config/convex/convex.c (expand_movstr): Use adjust_address.
	* config/dsp16xx/dsp16xx.c: Define dsp16xx_compare_gen
	variable.
	* config/dsp16xx/dsp16xx.md: Correct calls to replace_equiv_address.
	* config/elxsi/elxsi.c: Include tree.h, expr.h, regs.h, and flags.h.
	Fix typo.
	* config/elxsi/elxsi.h: Don't define Rmode (typo for Pmode?)
	Do define STACK_BOUNDARY.
	* config/i370/i370.c: Include expr.h.
	* config/i860/sysv3.h, config/i860/sysv4.h, config/m32r/m32r.h,
	config/pa/som.h, config/v850/v850.h: Take in_ctors and
	in_dtors out of EXTRA_SECTIONS; take CTORS_SECTION_FUNCTION
	and DTORS_SECTION_FUNCTION out of EXTRA_SECTION_FUNCTIONS.
	* config/m88k/m88k.c: Include c-tree.h after expr.h.
	* config/pdp11/pdp11.c: Include expr.h and toplev.h.
	* config/romp/romp.c: Include expr.h after tree.h.
	Include toplev.h.
	(output_fpop): Use xmalloc, not oballoc.
	* config/we32k/we32k.c: Include expr.h.

2001-08-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix formatting.

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

	* c-common.h (RETURN_NULLIFIED_P): Lose.
	* c-semantics.c (genrtl_return_stmt): Don't check it.

2001-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_add_large_offset_to_sp): New function.
	(mips_annotate_frame_insn): New function.
	(mips_emit_frame_related_store): New function.
	(save_restore_insns): Don't mark instructions that set up the base
	registers as frame-related.  Add REG_FRAME_RELATED_EXPR notes to
	the store instructions instead.
	(mips_expand_prologue): If the stack size is moved into a temporary
	register, do not mark that move as frame-related.  Add a
	REG_FRAME_RELATED_EXPR note to the stack adjustment instruction.

2001-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (save_restore_insns): Don't mark the RA's
	stack slot as unchanging if current_function_calls_eh_return.

2001-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (reload_incc): Use HARD_REGNO_NREGS to
	access the second half of the TFmode scratch operand.

2001-08-10  Anthony Green  <green@redhat.com>

	* java/class.c (emit_register_classes): Conditionalize code on
	JCR_SECTION_NAME.

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

	* doc/install.texi (Specific, avr): Fix cross-reference to the
	main manual to work both for info and HTML versions.

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

	* stmt.c (expand_null_return_1): Remove code to generate simple returns
	and "use_goto" argument.
	(expand_null_return, expand_value_return): Update all callers.
	* function.c (expand_function_end): Remove code to generate simple
	return.
	* config/vax/vax.md (epilogue): New expander for function return.
	* doc/md.texi (epilogue): Remove "if defined".

2001-08-09  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in: Partially revert my previous change:
	put -DGENERATOR_FILE back in HOST_CFLAGS, take it out
	of the hashtab.o and safe-ctype.o rules.

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

	* Makefile.in (MAYBE_USE_COLLECT2): Remove; purge all uses.
	(USE_COLLECT2): Remove duplicate definition.
	* config.gcc (a29k-udi, a29k-wrs-vxworks) [tm_file]: Remove a29k/udi.h.
	(use_collect2): Remove dead code.
	* configure.in (use_collect2): Remove will_use_collect2 and
	maybe_use_collect2; add USE_COLLECT2 to host_xm_defines and xm_defines.
	* configure: Rebuild.

	* target.h (targetm.asm_out.constructor): New.
	(targetm.asm_out.destructor, targetm.have_ctors_dtors): New.
	* target-def.h (TARGET_ASM_CONSTRUCTOR): New.
	(TARGET_ASM_DESTRUCTOR, TARGET_HAVE_CTORS_DTORS): New.
	* varasm.c (in_ctors, in_dtors): New.
	(assemble_constructor, assemble_destructor): Remove.
	(default_stabs_asm_out_destructor): New.
	(default_named_section_asm_out_destructor): New.
	(dtors_section, default_dtor_section_asm_out_destructor): New.
	(default_stabs_asm_out_constructor): New.
	(default_named_section_asm_out_constructor): New.
	(ctors_section, default_ctor_section_asm_out_constructor): New.
	* output.h: Update declarations.
	* c-decl.c (c_expand_body): Use target hooks instead of
	assemble_constructor and assemble_destructor.
	* profile.c (output_func_start_profiler): Likewise.
	* objc/objc-act.c (finish_objc): Likewise.
	(build_module_descriptor): Tidy.  Set TREE_PUBLIC properly
	for the constructor.
	* objc/Make-lang.in (objc-act.o): Depend on TARGET_H.

	* crtstuff.c (CTORS_SECTION_ASM_OP): Don't define.
	(DTORS_SECTION_ASM_OP): Likewise.
	(__CTOR_LIST__): Use attribute section when possible.
	(__DTOR_LIST__, __CTOR_END__, __DTOR_END__): Likewise.

	* defaults.h (EH_FRAME_SECTION_NAME): Don't depend on
	ASM_OUTPUT_CONSTRUCTOR.

	* config/darwin.c (machopic_asm_out_constructor): New.
	(machopic_asm_out_destructor): New.
	* config/darwin-protos.h: Update declarations.
	* config/darwin.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	* config/nextstep.c (nextstep_asm_out_constructor): New.
	(nextstep_asm_out_destructor): New.
	* config/nextstep.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	* config/nextstep21.h: Undef TARGET_ASM_*STRUCTOR instead of
	ASM_OUTPUT_*STRUCTOR.
	* config/i386/aix386ng.h: Likewise.

	* config/elfos.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Remove.
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): No ctors/dtors.
	(CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Remove.
	(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
	* config/lynx.h: Likewise.
	* config/netware.h: Likewise.
	* config/psos.h: Likewise.
	* config/alpha/alpha-interix.h: Likewise.
	* config/alpha/elf.h: Likewise.
	* config/arc/arc.h: Likewise.
	* config/arm/aof.h: Likewise.
	* config/arm/coff.h: Likewise.
	* config/arm/elf.h: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/i386/cygwin.h: Likewise.
	* config/i386/djgpp.h: Likewise.
	* config/i386/i386-coff.h: Likewise.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/sco5.h: Likewise.
	* config/i386/vsta.h: Likewise.
	* config/i386/win32.h: Likewise.
	* config/i960/i960-coff.h: Likewise.
	* config/ia64/sysv4.h: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/m68k/coff.h: Likewise.
	* config/m68k/mot3300.h: Likewise.
	* config/m88k/m88k.h: Likewise.
	* config/mcore/mcore-pe.h: Likewise.
	* config/mcore/mcore.h: Likewise.
	* config/mips/elf.h: Likewise.
	* config/mips/elf64.h: Likewise.
	* config/mips/iris6.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sparc/litecoff.h: Likewise.

	* config/svr3.h (CTORS_SECTION_ASM_OP): Remove.
	(CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Remove.
	(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
	* config/1750a/1750a.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	* config/a29k/a29k.c: Move include of tree.h.
	* config/a29k/udi.h: Delete file.
	* config/alpha/alpha.c (vms_asm_out_constructor): New.
	(vms_asm_out_destructor): New.
	* config/alpha/vms.h (EXTRA_SECTIONS): No ctors/dtors.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	* config/c4x/c4x.c: Move include of tree.h.
	* config/clipper/clipper.c (clix_asm_out_constructor): New.
	(clix_asm_out_destructor): New.
	* config/clipper/clix.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	* config/i386/aix386.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR): New.
	* config/i386/i386.c (ix86_svr3_asm_out_constructor): New.
	(sco_asm_out_constructor): New.
	* config/i386/sco5.h (TARGET_ASM_CONSTRUCTOR): New.
	* config/i386/svr3gas.h: Remove stack grows up code.
	Remove code duplicated from i386/sysv3.h.
	(TARGET_ASM_CONSTRUCTOR): New.
	(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Remove.
	(DTORS_SECTION_FUNCTION, CTORS_SECTION_FUNCTION): Remove.
	* config/i386/sysv3.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR): New.
	* config/m68hc11/m68hc11.c (m68hc11_asm_out_constructor): New.
	(m68hc11_asm_out_destructor): New.
	* config/m68hc11/m68hc11.h (TARGET_ASM_CONSTRUCTOR): New.
	(TARGET_ASM_DESTRUCTOR): New.
	* config/m68k/auxgas.h: Don't undef ASM_OUTPUT_*STRUCTOR.
	* config/m68k/dpx2.h: Properly undef all the bits inherited from
	config/svr3.h pertaining to section manipulation.
	* config/m68k/dpx2g.h: Remove #if 0 code.
	* config/m68k/m68k.c (m68k_svr3_asm_out_constructor): New.
	* config/m68k/tower-as.h (ASM_OUTPUT_SOURCE_LINE): Fix typo.
	(ASM_OUTPUT_CONSTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR): New.
	* config/m88k/m88k.c (m88k_layout_frame): Don't use assign_stack_local.
	(m88k_svr3_asm_out_constructor): New.
	(m88k_svr3_asm_out_destructor): New.
	* config/m88k/sysv3.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	* config/mips/mips.h: Remove #if 0 ASM_OUTPUT_*STRUCTOR code.
	* config/rs6000/aix.h: Likewise.
	* config/mips/rtems64.h: Don't undef removed constructor related bits.
	* config/mips/vxworks.h: Likewise.
	* config/rs6000/lynx.h: Likewise.
	* config/sh/elf.h: Likewise.
	* config/rs6000/sysv4.h (CTORS_SECTION_ASM_OP): New.
	(DTORS_SECTION_ASM_OP): New.
	* config/sparc/linux64.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	* config/sparc/sol2-sld-64.h: Likewise.
	* config/vax/vax.c (vms_asm_out_constructor): New.
	(vms_asm_out_destructor): New.
	* config/vax/vms.h (ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.

	* doc/tm.texi (@node Initialization): Update.

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

	* config/alpha/crtbegin.asm (__JCR_LIST__): New.
	(__do_global_dtors_aux): Use gp-relative static data to avoid
	one dynamic relocation.
	(__do_frame_setup): Register Java classes.
	* config/alpha/crtend.asm (__JCR_END__): New.

2001-08-09  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (HOST_CFLAGS): Take out -DGENERATOR_FILE.
	(CONFIG_H, TCONFIG_H, TM_P_H): Update.
	(GEN, STAGESTUFF): Add new files.
	(insn-constants.h, s-constants, tm-preds.h, s-preds,
	genconstants, genpreds, genconstants.o, genpreds.o): New rules.
	(hashtab.o, safe-ctype.o): Add -DGENERATOR_FILE.
	* mkconfig.sh: Include tm-preds.h in tm_p.h; insn-constants.h
	as well as insn-codes.h and insn-flags.h in config.h; and no
	extra headers in tconfig.h and hconfig.h.

	* gencodes.c: Eliminate code to generate predicate declarations
	or #defines for md-file constants.
	* genconstants.c, genpreds.c: New files.

	* i386.md: Re-order guard expressions such that TARGET_64BIT
	comes first, when this permits better optimization.  Add
	TARGET_64BIT to more x86-64 patterns.  Add comment explaining
	why this is desirable.

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

	* config/ia64/fde-glibc.c: Require glibc 2.2.4+ headers.
	(find_fde_for_dso): Remove.
	(_Unwind_IteratePhdrCallback): New.
	(_Unwind_FindTableEntry): Use dl_iterate_phdr.
	* config/ia64/crtbegin.asm (__ia64_app_header): Remove.

Thu Aug  9 11:30:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (emit_single_push_insn): Only exists ifdef PUSH_ROUNDING.
	(move_by_pieces_1): If would call it, abort if no PUSH_ROUNDING.

2001-08-09  Graham Stott  <grahams@redhat.com>

	* sched-vis.c (MAX_VISUAL_NO_UNIT): Define.
	(vis_no_unit): Use it.
	(visualize_no_unit): Add the insn only if room exists.

2001-08-09  Graham Stott  <grahams@redhat.com>

	* predict.c (estimate_probability): Replace magic numbers with
	appropriate enumeration.

2001-08-09  Graham Stott  <grahams@redhat.com>

	* cppexp.c (EXTRACT_PRIO): Uppercase and parenthsize macro
	parameter.
	(EXTRACT_FLAGS): Likewise.

2001-08-09  Aldy Hernandez  <aldyh@redhat.com>

	* config/mips/mips.c	(mips_legitimate_address_p): Check for
	CONST_INT in last patch.

2001-08-08  Anthony Green  <green@redhat.com>

	* java/class.c (emit_register_classes): Use assemble_jcr if
	possible.  Keep the original mechanism as a fallback.
	* defaults.h (JCR_SECTION_NAME): Define if we have named section
	and weak symbol support.
	* crtstuff.c (__JCR_LIST__): Define.
	(__JCR_END__): Define.
	(_Jv_RegiserClasses): Define weak symbol if possible.
	(__do_global_ctors_aux): Register classes for ELF targets with
	weak symbol support.

2001-08-08  Kazu Hirata  <kazu@hxi.com>

	* dbxout.c: Fix comment formatting.
	* dependence.c: Likewise.
	* df.c: Likewise.
	* diagnostic.c: Likewise.
	* dominance.c: Likewise.
	* doprint.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.

2001-08-08  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* global.c (retry_global_alloc): Avoid shadowing allocno.

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

	* except.c (remove_fixup_regions): Fix typo.

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

	* emit-rtl.c (adjust_address, adjust_address_nv): Cast offset to
	unsigned HOST_WIDE_INT to avoid warning.
	* final.c (final): Cast INSN_UID to unsigned to avoid warning.
	* flow.c (set_block_for_new_insns): Likewise.

Wed Aug  8 21:08:14 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* sibcall.c (return_value_pseudo): New static variable.
	(skip_copy_to_return_value): Handle return_value_pseudo.
	(call_ends_block_p): Ensure that return_value_pseudo is set.
	(optimize_sibling_and_tail_recursive_call): Discover the
	load of pseudo return value in alternate exit block.

Wed Aug  8 21:06:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* calls.c (ECF_ALWAYS_RETURN): New constant.
	(emit_call_1): Add REG_ALWAYS_RETURN note if needed.
	(expand_call): Use LCF_ALWAYS_RETURN for __bb_fork_func.
	(emit_library_call_value_1): Handle LCT_ALWAYS_RETRUN.
	* flow.c (need_fake_edge_p): Handle REG_ALWAYS_RETURN.
	* rtl.c (reg_note_name): New name.
	* rtl.h (enum reg_note): Add REG_ALWAYS_RETURN.

2001-08-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/mips/mips.c (mips_legitimate_address_p): Limit "la" addresses.

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

	* alias.c (get_alias_set): Return a previously calculated
	alias set for a VAR_DECL.
	* function.c (gen_mem_addressof): Calculate the alias set before
	touching the RTL.

Wed Aug  8 18:44:37 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def: Set hitrates according our experimental run.

Wed Aug  8 18:01:58 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (HARD_REGNO_RENAME_OK): New macro.

2001-08-08  H.J. Lu <hjl@gnu.org>

	* config/mips/mips.c (mips_unique_section): New. Copied from
	config/mips/elf.h.

	* config/mips/mips-protos.h (mips_unique_section): New
	prototype.

	* config/mips/elf.h (UNIQUE_SECTION): Use mips_unique_section.

	* config/mips/little.h: New. Generic little endian mips
	targets. Only mips*-*-linux* is converted to use it so far.

	* config/mips/linux.h: Include "gofast.h" and "mips/mips.h".
	(WCHAR_TYPE): Defined
	(WCHAR_TYPE_SIZE): Likewise.
	(INIT_SUBTARGET_OPTABS): Likewise.
	(BSS_SECTION_ASM_OP): Likewise.
	(SBSS_SECTION_ASM_OP): Likewise.
	(ASM_OUTPUT_ALIGNED_BSS): Likewise.
	(ASM_DECLARE_OBJECT_NAME): Likewise.
	(UNIQUE_SECTION): Likewise.
	(EXTRA_SECTIONS): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR): Likewise.
	(ASM_OUTPUT_DESTRUCTOR): Likewise.
	(ASM_OUTPUT_DEF): Likewise.
	(HANDLE_SYSV_PRAGMA): Removed.
	(NO_IMPLICIT_EXTERN_C): Likewise.
	(TARGET_MEM_FUNCTIONS): Likewise.
	(STARTFILE_SPEC): Likewise.
	(ENDFILE_SPEC): Likewise.
	(LIB_SPEC): Likewise.
	(INVOKE__main): Likewise.
	(CTOR_LIST_BEGIN): Likewise.
	(CTOR_LIST_END): Likewise.
	(DTOR_LIST_BEGIN): Likewise.
	(DTOR_LIST_END): Likewise.
	(SET_ASM_OP): Likewise.
	(ASM_OUTPUT_SOURCE_LINE): Likewise.
	(ASM_OUTPUT_DEF): Likewise.
	(ASM_OUTPUT_IDENT): Likewise.

	* config/mips/mips.h (ASM_SPEC): Undefine before define.
	(CPLUSPLUS_CPP_SPEC): Likewise.
	(ASM_APP_ON) Redefine only if not defined.
	(ASM_APP_OFF): Likewise.
	(ASM_OUTPUT_SOURCE_LINE): Likewise.
	(ASM_OUTPUT_IDENT): Likewise.

	* config.gcc: Update tm_file for Linux/mips.

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

	* cselib.c (cselib_record_sets): If insn is predicated, turn
	sources into IF_THEN_ELSEs.

	* config/ia64/ia64.md (cond_opsi2_internal, cond_opsi2_internal_b):
	Turn into define_insn_and_split.

	* sched-deps.c: Include "cselib.h".
	(add_insn_mem_dependence, sched_analyze_1, sched_analyze_2):
	Use cselib to turn memory addresses into VALUEs.
	(sched_analyze): Call cselib_init/cselib_finish if necessary.
	* sched-int.h (struct sched_info): New member USE_CSELIB.
	* sched-ebb.c (ebb_sched_info): Initialize it.
	* sched-rgn.c (rgn_sched_info): Likewise.
	* Makefile.in (sched-deps.o): Update dependencies.

	* cselib.h (cselib_subst_to_values): Declare.
	* cselib.c (cselib_subst_to_values): No longer static.  Allow MEMs
	that have no value and autoincs to be handled by generating a new
	dummy value.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* final.c (shorten_branches): Update the INSN_ADDRESSES of insns
	within fixed length SEQUENCE.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* diagnostic.h (diagnostic_format_decoder): Parenthesize macro parameter.
	(diagnostic_prefixing_rule): Likewise.
	(diagnostic_line_cutoff): Likewise.
	(diagnostic_kind_count): Likewise.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* alias.c (find_base_decl): Delete redundent assignment.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* dependence.c (INDEX_LIMIT_CHECK): Uppercase macro parameter.
	(abs): Uppercase and paranthesize macro parameter.
	(MEM_DEPENDENCY): Add whitespace.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* config/mips/mips.c (mips_legitimate_address_p): Fix enable checking
	failure check for CONST_INT

2001-08-08  Graham Stott  <grahams@redhat.com>

	* flow.c (back_edge_of_syntactic_loop_p): Add whitespace.
	(libcall_dead_p): Likewise.

	(mark_used_regs): Constify fmt.
	(find_use_as_address): Likewise.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* c-typeck.c (RESTORE_SPELLING_DEPTH): Uppercase and parenthesize macro
	 parameter.

2001-08-08  Graham Stott  <grahams@redhat.com>

	* combine.c (combine_simplify_rtx): Update comment and
	remove erroneous test.

2001-08-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (cpp_finish): Pop the final buffer without comment.
	* cpplex.c (_cpp_lex_token): Don't pop the final buffer; and
	take care to avoid multiple no-newline at EOF warnings in that
	case.

Tue Aug  7 22:18:06 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Do not emit INSN_SETJMP note.
	(emit_library_call_value_1): Likewise.
	(emit_call_1): Emit REG_SETJMP note.
	* cse.c (cse_end_of_basic_block): Use REG_SETJMP instead
	of INSN_SETJMP
	* cselib.c (cselib_process_insn): Likewise.
	* flow.c (propagate_block): Likewise.
	* loop.c (find_and_verify_loops): Likewise.
	* reload.c (find_equiv_regs): Likewise.
	* reload1.c (reload): Likewise.
	* resource.c (mark_referenced_resources,
	mark_set_resources): Likewise.
	* sched-deps (sched_analyze_insn, sched_analyze): Likewise.
	* final.c (final_scan_insn): Remove NOTE_INSN_SETJMP.
	* haifa-sched.c (unlink_other_notes): Likewise.
	(reemit_notes): Likewise.
	* sched-ebb.c (sched_ebb): Likewise.
	* sched-rgc.c (sched_region): Likewise.
	* rtl.c (note_insn_name): Likewise.
	(reg_note_name): Add REG_SETJMP
	* rtl.h (reg_note): Add REG_SETJMP.
	(insn_note): Remove NOTE_INSN_SETJMP.

	* profile.c (branch_prob): Add fake edges for setjmp.

2001-08-07  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Quote target_cpu_default2 correctly for
	powerpc*-*-* targets.

2001-08-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.h, line-map.h: Update comments.
	* cppmain.c (printer_init): Move inline.
	(maybe_print_line, print_line): Take a map pointer.
	(cb_ident, cb_define, cb_undef, cb_include, cb_def_pragma): Update.
	(cb_file_change): Don't use prior value of print.map.

2001-08-07  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi: Document fine-grained multilib configuration.

Tue Aug  7 16:52:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (find_first_parameter_load): Call note_stores
	only on the instructions.

Tue Aug  7 14:56:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* alias.c (nonlocal_mentioned_p):
	Rename CONST_CALL_P to CONST_OR_PURE_CALL_P
	* calls.c (emit_call_1): Likewise.
	* cse.c (cse_insn, invalidate_skipped_block): Likewise.
	* cselib.c (cselib_process_insn): Likewise.
	* df.c (df_insns_modify): Likewise.
	* flow.c (need_fake_edge_p): Likewise.
	(propagate_one_insn): Likewise.
	* haifa-sched.c (reemit_notes): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* jump.c (delete_prior_computation): Likewise.
	* local-alloc.c (validate_equiv_mem): Likewise.
	* loop.c (scan_loop): Likewise.
	* predict.c (estimate_probability): Likewise.
	* reload.c (reload): Likewise.
	* sched-deps (sched_analyze): Likewise.
	* rtl.h (CONST_CALL_P): rename to CONST_OR_PURE_CALL_P.
	* gcse.c (compute_hash_table): Likewise.
	(mark_call): Likewise.
	(store_killed_in_insn): Likewise.

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

	* c-semantics.c (make_rtl_for_local_static): Use DECL_RTL_SET_P.

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

	* varasm.c (assemble_gc_entry): Remove.
	* output.h: Likewise.

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

	* varasm.c (assemble_constructor): Take a symbol_ref and a
	priority instead of a bare string.  Move priority handling
	here from cp/decl2.c.
	* output.h: Update decls.

	* c-decl.c (c_expand_body): Update calls to assemble_constructor
	and assemble_destructor.
	* profile.c (output_func_start_profiler): Likewise.
	* objc/objc-act.c (finish_objc): Likewise.
	(build_module_descriptor): Return the symbol not the symbol name.

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

	* config/rs6000/darwin.h (DOUBLE_INT_ASM_OP): Add whitespace.
	* config/rs6000/linux64.h (RS6000_MCOUNT): Define.
	({SAVE,RESTORE}_FP_{PREFFIX,SUFFIX}): Define.
	* config/rs6000/rs6000.h (ASM_OUTPUT_DOUBLE_INT): Remove whitespace.
	* config/rs6000/sysv4.h (DOUBLE_INT_ASM_OP): Add whitespace.
	* config/rs6000/xcoff.h (DOUBLE_INT_ASM_OP): Add whitespace.

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

	* cpperror.c (print_containing_files): Moved to line-map.c.
	(print_location): line-map.c handles re-listing or otherwise.
	* cpphash.h (struct lexer_state): Remove next_bol.
	(struct cpp_buffer): Remove include_stack_listed.
	* cpplib.c (do_line, cpp_push_buffer, _cpp_pop_buffer):
	Remove faked buffer handling.
	(_cpp_do_file_change): Tweak.
	* cpplib.h (enum cpp_buffer_type): Remove BUF_FAKE.
	* cppmain.c (struct printer): Remove filename.
	(print_line, cb_file_change): Update accordingly.
	* line-map.c: Include intl.h.
	(init_line_maps): Initialize last_listed.
	(free_line_maps): Sanity check, warn if ENABLED_CHECKING.
	(add_line_map): Sanity check inputs, warn if ENABLED_CHECKING.
	(print_containing_files): New.
	* line-map.h (struct line_maps): New member last_listed.
	(print_containing_files, INCLUDED_FROM): New.
	* Makefile.in: Update.
	* po/POTFILES.in: Add line-map.c.

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

	* except.c (convert_from_eh_region_ranges_1): Never mark
	USE or CLOBBER insns as throwing.

	* expr.c (store_constructor): Don't clobber memory targets.

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

	* profile.c (branch_prob): Remove unused variable insn.

	* Makefile.in (local-alloc.o): Add dependency on except.h.

	* local-alloc.c: Include except.h for can_throw_internal prototype.

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

	* config/i386/i386.h (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
	* function.c (expand_main_function): Implement it.
	* doc/tm.texi: Document it.

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

	* doc/install.texi: Document powerpc-*-darwin* details.

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

	* config/rs6000/aix.h (CPP_CPU_SPEC): Move back to rs6000.h
	(ASM_CPU_SPEC): Move back to rs6000.h
	#undef CPP_DEFAULT_SPEC and ASM_DEFAULT_SPEC before redefining them.

	* config/rs6000/darwin.h (DOUBLE_INT_ASM_OP): New macro.

	* config/rs6000/linux.h: Remove vtable thunks stuff we accidently
	readded.

	* config/rs6000/linux64.h: Ditto.

	* config/rs6000/rs6000.h: Move CPP_CPU_SPEC and ASM_CPU_SPEC back
	to here. Define default ASM_DEFAULT_SPEC and CPP_DEFAULT SPEC to
	nothing.

	Remove accidently readded definitions of FUNCTION_PROLOGUE,
	FUNCTION_EPILOGUE,  ASM_OPEN_PAREN, ASM_CLOSE_PAREN

	* config/rs6000/sysv4.h: Move CPP_CPU_SPEC and ASM_CPU_SPEC back
	to rs6000.h

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

	* local-alloc.c (update_equiv_regs): Do not move insns that
	can throw.

2001-08-05  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (reload1.o): Add dependency on except.h
	* basic-block.h (purge_all_dead_edges, purge_dead_edges): Update
	prototypes.
	* flow.c (purge_dead_edges, purge_all_dead_edges): Return bool
	indicating whether edges has been cleaned up.
	* reload1.c: Include except.h.
	(fixup_abnormal_edges): Accept deleted insns.
	* toplev.c (rest_of_compilation): Purge dead edges unconditionally
	after combine.

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

	* cpplib.c (do_line): Correct line number after pop_buffer.

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

	PR preprocessor/3824
	* line-map.c: Update comments.
	* line-map.h: Update comments.
	* tradcif.y: Don't consider large numbers unsigned.

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

	PR preprocessor/3081
	* c-lex.c (map): New.
	(cb_file_change): Update map and use it.
	(cb_def_pragma, cb_define, cb_undef): Use map and line.
	(c_lex): Update to use map.
	* cpperror.c (print_location): Move to using logical line numbers.
	* cppfiles.c (stack_include_file): Update for new _cpp_do_file_change.
	(cpp_make_system_header): Similarly.
	(_cpp_execute_include): Stop line numbering hacks.  Store the
	line we will return to.
	* cpphash.h (CPP_BUF_LINE): Remove.
	(struct cpp_buffer): Remove lineno and pseudo_newlines.
	Add map and return_to_line.
	(_cpp_do_file_change): Update.
	* cppinit.c (cpp_start_read): Update line kludge.
	* cpplex.c (handle_newline): Don't update lineno and pseudo_newlines.
	(trigraph_ok): Use logical line numbers for diagnostics.
	(skip_block_comment): Likewise.
	(skip_whitespace): Likewise.
	(skip_line_comment): Use pfile->line instead.
	(_cpp_lex_token): Update to use logical line numbering exclusively.
	Handle BOL locally.  Accept new lines in directives, but keep
	pfile->line decremented.  Diagnostics use logical lines.  Update
	directive handling.
	* cpplib.c (SEEN_EOL): New.
	(skip_rest_of_line, check_eol): Use it.
	(end_directive): Increase line number when accepting the newline
	at the end of a directive.
	(run_directive): Simplify.
	(do_line): Bad LC_LEAVEs become LC_RENAMEs.  Update.
	(_cpp_do_file_change): Update to take buffer line number as an
	argument, and store the current map in the cpp_reader.  Remove
	line number kludges.
	(_cpp_do__Pragma): Restore output position after a _Pragma.
	(cpp_push_buffer): Don't set output line or lineno.
	(_cpp_pop_buffer): Transfer more info from a faked buffer.
	Remove line kludge.  Set output_line.
	* cppmacro.c (builtin_macro): Update handling of __LINE__.
	(parse_arg): Use logical lines.
	(save_lookahead_token): Save EOFs too now.
	* cppmain.c (struct printer): Fix comments.
	(printer_init): Simplify, let caller do errors.
	(scan_translation_unit, check_multiline_token, dump_macro): Update.
	(maybe_print_line): Simplify.
	(print_line): Don't print a linemarker if -P.
	(cb_define, cb_undef, cb_def_pragma, cb_ident, cb_include): Update.
	(cb_file_change): Simplify.
	* line-map.h (LAST_SOURCE_LINE): Fix.
	(CURRENT_LINE_MAP): New.

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

	* doloop.c (doloop_modify_runtime): Properly compute number of
	iterations if loop was unrolled.

	* alias.c (rtx_equal_for_memref_p): VALUEs are only identical
	if their CSELIB_VAL_PTRs are.

	* config/ia64/ia64.c (struct spill_fill_data): New member prev_insn.
	(setup_spill_pointers): Initialize it.
	(spill_restore_mem): Set it.
	(do_spill, do_restore): Use it to add REG_INC note.
	* config/ia64/ia64.md (movti_internal): Add REG_INC notes as needed.

	* config/ia64/ia64.c (ia64_sched_reorder): Defer scheduling of
	asms if other insns are available.

	* config/ia64/ia64.c (condop_operator): New predicate.
	* config/ia64/ia64.h (PREDICATE_CODES): Add it.
	* config/ia64/ia64.md (cond_opsi2_internal and splitters): New
	patterns.

	* expr.c (expand_expr, case COND_EXPR): Prefer working with a
	temporary register than directly using a MEM.

2001-08-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/sh/sh.c (sh_asm_named_section): Fix typo in align
	parameter in last change.

2001-08-04  Zack Weinberg  <zackw@panix.com>

	* sparc.md: Don't use #if inside C test expression.

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

	* i386.c: Revert 07-30 ix86_output_main_function_alignment_hack.

2001-08-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_reader): New member directive_line.
	* cpplib.h (struct cpp_callbacks): Update prototypes of callbacks.
	* cpplib.c (do_define, do_undef, do_ident, do_include_common,
	do_pragma): Pass line to callbacks.
	(start_directive): Record line of directive.
	* cppmain.c (cb_ident, cb_define, cb_undef, cb_def_pragma,
	cb_include): Similarly.
	* c-lex.c (cb_ident, cb_define, cb_undef, cb_def_pragma):
	Similarly.

2001-08-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/d30v/d30v.h: Fix typo in start of UNIQUE_SECTION
	comment.

Sat Aug  4 13:51:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c (try_copy_prop); Kill invalidated REG_EQUAL notes.

	* reload1.c (fixup_abnormal_edges): New static function.
	(reload): Use it.

	* flow.c (need_fake_edge_p): New function.
	(flow_call_edges_add): Fix handling of noreturn and sibling calls;
	avoid call insn to be very last insn in the insn stream.

	* profile.c (branch_prob): Call flow_call_edges_add instead of
	doing that by hand; cleanup cfg to re-merge basic blocks once
	we are done.

2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* Makefile.in (CPPLIB_H): New, so that dependencies on cpplib.h
	are also on line-map.h.
	* cppfiles.c (stack_include_file): Update.
	* cpphash.h (struct cpp_buffer): New member return_at_eof.
	(_cpp_pop_buffer): New.
	* cppinit.c (cpp_destroy, cpp_finish): Update.
	(do_includes): Mark each buffer to return at EOF.
	* cpplex.c (_cpp_lex_token): Pop buffers at EOF.  Continue or
	return as requested.
	* cpplib.c (run_directive, do_line, cpp_push_buffer): Update.
	(cpp_pop_buffer): Rename _cpp_pop_buffer.  Stop skipping.
	* cpplib.h (cpp_pop_buffer): Remove.
	(cpp_scan_buffer_nooutput): Rename cpp_scan_nooutput.
	* cppmacro.c (cpp_scan_buffer_nooutput): Similarly.  No need to pop
	buffers.
	* cppmain.c (scan_buffer): Rename scan_translation_unit.  No need
	to pop buffers.
	(do_preprocessing): Update.
	* fix-header.c (read_scan_file): Update.  No need to pop buffers.
	* c-parse.in (_yylex): Similarly.
	* scan-decls.c (scan_decls): Similarly.
	* line-map.h: Update comments.

	* objc/Make-lang.in (objc-act.o): Update dependencies.

2001-08-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory
	and soft register for operand 0.
	("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0.

2001-08-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("bitcmpqi"): Allow memory and soft
	register for operand 0.
	("bitcmpqi_z_used"): Allow memory for operand 0.
	(split "bitcmpqi"): New split to handle address reg as operand 1.

2001-08-04  Andreas Jaeger  <aj@suse.de>

	* gcse.c: Revert Daniel's last patch.

2001-08-03  Zack Weinberg  <zackw@stanford.edu>

	* sparc-protos.h: Add prototypes for fp_zero_operand and
	reg_or_0_operand.
	* sh-protos.h: Add prototype for fpul_operand.

2001-08-04  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/extend.texi (Other Builtins): Fix typo in last change.

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

	* target.h (gcc_target): Add asm_out.named_section,
	section_type_flags, have_named_sections.
	* target-def.h (TARGET_ASM_NAMED_SECTION): New.
	(TARGET_HAVE_NAMED_SECTIONS): New.
	(TARGET_SECTION_TYPE_FLAGS): New.

	* Makefile.in (toplev.o): Depend on TARGET_H.
	(varasm.o, dbxout.o): Likewise.
	* c-common.c (decl_attributes): Check targetm.have_named_sections
	instead of ifdef ASM_OUTPUT_SECTION_NAME.
	* dbxout.c (dbxout_function_decl): Likewise.
	(dbxout_function_end): Likewise.
	* toplev.c (compile_file): Likewise.
	* varasm.c (exception_section): Likewise.
	* cp/decl2.c (finish_objects): Likewise.

	* defaults.h (EH_FRAME_SECTION): Remove.
	(EH_FRAME_SECTION_ASM_OP): Remove.
	(EH_FRAME_SECTION_NAME): New.
	(UNIQUE_SECTION): Don't depend on ASM_OUTPUT_SECTION_NAME.
	(UNIQUE_SECTION_P): Remove.
	* dwarf2out.c (SECTION_FORMAT): Remove.
	(ASM_OUTPUT_SECTION): Remove.
	(output_call_frame_info): Use named_section_flags.
	(output_comp_unit, dwarf2out_start_source_file): Likewise.
	(dwarf2out_end_source_file, dwarf2out_define): Likewise.
	(dwarf2out_undef, dwarf2out_init, dwarf2out_finish): Likewise.
	* varasm.c (in_eh_frame, eh_frame_section): Remove.
	(named_section_flags): New.
	(named_section): Use it and targetm.section_type_flags.
	(resolve_unique_section): New.
	(assemble_start_function): Use it.
	(asm_emit_uninitialised, assemble_variable): Likewise.
	(default_section_type_flags): New.
	(default_no_named_section, default_elf_asm_named_section): New.
	(default_coff_asm_named_section, default_pe_asm_named_section): New.
	* output.h: Update varasm.c decls.
	(SECTION_*): New flags.

	* crtstuff.c: Check EH_FRAME_SECTION_NAME not EH_FRAME_SECTION_ASM_OP.
	(__EH_FRAME_BEGIN__, __FRAME_END__): Use attribute section.

	* config/elfos.h (UNIQUE_SECTION_P): Remove.
	* config/alpha/elf.h, config/arm/linux-elf.h: Likewise.
	* config/arm/pe.h, config/arm/unknown-elf.h: Likewise.
	* config/i386/cygwin.h, config/i386/djgpp.h: Likewise.
	* config/i386/i386-interix.h, config/i386/win32.h: Likewise.
	* config/ia64/sysv4.h, config/mcore/mcore-pe.h: Likewise.
	* config/mips/elf.h, config/mips/elf64.h: Likewise.
	* config/mips/iris6gld.h, config/mips/mips.h: Likewise.
	* config/pa/pa64-hpux.h,

	* config/elfos.h (ASM_OUTPUT_SECTION_NAME): Remove.
	(TARGET_ASM_NAMED_SECTION): New.
	* config/psos.h, config/a29k/a29k.h, config/alpha/elf.h: Likewise.
	* config/alpha/vms.h, config/arm/coff.h: Likewise.
	* config/arm/conix-elf.h, config/arm/elf.h: Likewise.
	* config/arm/linux-elf.h, config/arm/pe.h: Likewise.
	* config/arm/unknown-elf.h, config/avr/avr.h: Likewise.
	* config/c4x/c4x.h, config/h8300/h8300.h: Likewise.
	* config/i386/cygwin.h, config/i386/djgpp.h: Likewise.
	* config/i386/i386-interix.h, config/i386/i386elf.h : Likewise.
	* config/i386/sco5.h, config/i386/win32.h: Likewise.
	* config/m68k/coff.h, config/mcore/mcore-pe.h: Likewise.
	* config/mcore/mcore.h, config/mips/elf.h: Likewise.
	* config/mips/elf64.h, config/mips/iris6.h: Likewise.
	* config/mips/netbsd.h, config/mips/openbsd.h: Likewise.
	* config/pa/pa64-hpux.h, config/rs6000/sysv4.h: Likewise.
	* config/rs6000/xcoff.h, config/sh/sh.h: Likewise.
	* config/sparc/sysv4.h: Likewise.

	* config/nextstep.h: Error until named sections implemented.

	* config/a29k/a29k.c (a29k_asm_named_section): New.
	* config/alpha/alpha.c (SECTION_VMS_OVERLAY): New.
	(vms_section_type_flags, vms_asm_named_section): New.
	* config/arm/arm.c (arm_elf_asm_named_section): New.
	* config/avr/avr.c (asm_output_section_name): Remove.
	* config/avr/avr-protos.h: Update.
	* config/c4x/c4x.c (c4x_asm_named_section): New.
	* config/h8300/h8300.c (h8300_asm_named_section): New.
	* config/i386/i386.c (sco_asm_named_section): New.
	* config/i386/winnt.c (SECTION_PE_SHARED): New.
	(i386_pe_section_type_flags): New.
	(i386_pe_asm_named_section): New.
	* config/i386/i386-protos.h: Update.
	* config/m68k/m68k.c (m68k_coff_asm_named_section): New.
	* config/mcore/mcore.c (mcore_asm_named_section): New.
	* config/mips/mips.c (iris6_asm_named_section): New.
	* config/mips/mips.h (ENCODE_SECTION_INFO): Use DECL_ONE_ONLY
	instead of UNIQUE_SECTION_P.
	* config/rs6000/rs6000.c (rs6000_elf_section_type_flags): New.
	(xcoff_asm_named_section): New.
	* config/sh/sh.c (sh_asm_named_section): New.
	* config/sparc/sparc.c (sparc_elf_asm_named_section): New.

	* config/i386/djgpp.h (EH_FRAME_SECTION_ASM_OP): Remove.
	* config/i386/sco5.h (EH_FRAME_SECTION_ASM_OP*): Remove.
	(EH_FRAME_SECTION_NAME): New.
	(EXCEPTION_SECTION): New.
	* config/ia64/ia64.h (EH_FRAME_SECTION_ASM_OP): Remove.
	(DEBUG_*_SECTION): Remove.
	* config/m68k/rtemself.h (EH_FRAME_SECTION_ASM_OP): Remove.
	* config/mips/iris6.h (DEBUG_*_SECTION): Remove.
	(EH_FRAME_SECTION_ASM_OP): Remove.

	* doc/tm.texi (UNIQUE_SECTION_P): Remove.
	(ASM_OUTPUT_SECTION_NAME): Remove.
	(TARGET_ASM_NAMED_SECTION): New.
	(TARGET_HAVE_NAMED_SECTIONS): New.
	(TARGET_SECTION_TYPE_FLAGS): New.
	(EH_FRAME_SECTION_ASM_OP): Remove.
	(EH_FRAME_SECTION_NAME): New.

2001-08-03  Zack Weinberg  <zackw@stanford.edu>

	* builtins.c (fold_builtin_constant_p): Return integer_zero_node
	for complex expressions when cfun == 0.
	* doc/extend.texi: Document that __builtin_constant_p can be
	used in data initializers as well as functions.

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

	* config/mn10300/mn10300.h (CONDITIONAL_REGISTER_USAGE): Declare
	variable I locally, instead of expecting a declaration in the
	calling context.

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

	* except.c (collect_one_action_chain): Add an explicit cleanup
	action if regions surrounding a catch were encoded entirely
	within the call-site entry.

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

	* dbxout.c (dbxout_symbol_location): Flatten subregs first;
	don't take REGNO of a non-register.

2001-08-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gthr-dce.h (__GTHREAD_MUTEX_INIT_FUNCTION and
	__GTHREAD_MUTEX_INIT_DEFAULT): New macros for mutex initialization.
	(__gthread_key_delete): Remove code for __PTHREAD_LIBRARY_VERSION_1 >= 1
	(__gthread_mutex_init_function): New function for mutex initialization.

2001-08-03  Daniel Berlin  <dan@cgsoftware.com>

	* Makefile.in: Revert screwed up commit.

2001-08-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/t-m68hc11-gas (T_CPPFLAGS): Add _ctor and _dtor.
	* config/m68hc11/larith.asm (_exit): Split in several sub-sections
	merged by linker script to get a final _exit().
	(__do_global_dtors): New for destructor handling in specific exit
	section.
	(__do_global_ctors): New for constructors in specific install section.
	(__map_data_section): Map data sections before running constructors.
	* config/m68hc11/m68hc11.h (INT_ASM_OP): Define to use .word.
	(CTORS_SECTION_ASM_OP): Define to put in readonly section.
	(DTORS_SECTION_ASM_OP): Likewise.
	(CTORS_SECTION_FUNCTION): Define to force a reference to
	__do_global_ctors.
	(DTORS_SECTION_FUNCTION): Likewise for __do_global_dtors.

2001-08-03  Daniel Berlin  <dan@cgsoftware.com>

	* ChangeLog: Fix date on previous ChangeLog entry for GCSE.

	* Makefile.in: Add df.h to gcse.c dependencies.

2001-08-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* varasm.c (output_constant_def_contents): Use for the length of a
	string constant either its TREE_STRING_LENGTH or its int_size_in_bytes
	depending on which is larger.

2001-08-03  Daniel Berlin  <dan@cgsoftware.com>

	* gcse.c: Include df.h for use as a dataflow analyzer.
	Remove regvec.
	Declaration of reg_set_info: gone.
	New df_analyzer variable used by store motion.
	(reg_set_info): Deleted.
	(mark_mem_regs): New function, analyze regs used by a mem.
	(store_ops_ok): Use dataflow analyzer results to determine if
	necessary regs are changed in the block.
	(find_moveable_store): Remove check for symbol ref, we can handle
	much more complex expressions now.
	(compute_store_table): Remove most of the code, it's unnecessary
	now that the dataflow analyzer records the info for us.
	(store_killed_after): Add parameter to say whether to do the
	store_ops_okay test, used to speed up testing when we already know
	the answer, and just want to know if the store itself was killed.
	(build_store_vector): Largely rewritten to calculate the various
	vectors properly, and somewhat optimized.
	(store_motion): Init the df_analyzer, get REG_DEF chains.
	Also handle trapping expressions (since mems almost always trap)
	(simple_mem): Redefine what a simple mem is.

2001-08-03  DJ Delorie  <dj@redhat.com>

	* ifcvt.c (noce_get_alt_condition): Don't make an auxiliary
	set from a constant part of the condition.

2001-08-01  Andrew Cagney  <ac131313@redhat.com>

	* mkdeps.c (deps_add_default_target): Make local variable
	``start'' a const char pointer.
	* dwarf2out.c (compute_section_prefix): Localize use of ``p''.

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

	* doc/install.texi (Configuration): Fix markup.
	(Specific, i?86-*-udk): Likewise.
	(Specific, alpha*-dec-osf*): Warn against --with-gnu-as,
	--with-gnu-ld.
	Document --enable-threads and --enable-libgcj status.
	(Specific, mips-sgi-irix*): Canonicalize triples.
	(Specific, mips-sgi-irix5): Warn about problems with this config.
	Mention required GNU as patch.
	Native assembler problems are fixed.
	(Specific, mips-sgi-irix6): Update O32 ABI support status.
	Document --enable-threads and --enable-libgcj status.

2001-08-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* Makefile.in, mklibgcc.in: Restore changes with fixed invocation
	of mkinstalldirs.

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

	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Don't write to
	constant data.

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

	* rtlanal.c (find_first_parameter_load): Stop if we
	reach a CODE_LABEL at BOUNDARY.

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

	* config/alpha/alpha.md (force_movdi): New insn.
	* config/alpha/alpha.c (alpha_expand_prologue): Use it.
	Tweek FRP marking of VMS prologue insns.
	* config/alpha/vms.h (EPILOGUE_USES): New.

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

	* Makefile.in, mklibgcc.in: Revert mkinstalldirs change.

2001-08-02  Lars Brinkhoff  <lars@nocrew.org>

	* combine.c, config.gcc, cse.c, defaults.h, real.c, reload.c,
	simplify-rtx.c, config/alpha/alpha.h, config/avr/avr.h,
	config/convex/convex.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/elxsi/elxsi.h, config/fr30/fr30.h, config/m88k/m88k.c,
	config/mips/mips.h, config/mn10200/mn10200.h,
	config/mn10300/mn10300.h, config/pdp11/pdp11.md,
	config/v850/v850.h, config/vax/openbsd.h,
	config/vax/openbsd1.h, config/vax/ultrix.h,
	config/vax/vax-protos.h, config/vax/vax.c, config/vax/vax.h,
	config/vax/vax.md, config/vax/vaxv.h, config/vax/xm-vms.h,
	cp/decl2.c, doc/contrib.texi, doc/cpp.texi, doc/gcc.texi,
	doc/install.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi,
	doc/tm.texi: consistently use "VAX", "VAXen", and "MicroVAX"
	in comments and documentation.

2001-08-03  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* line-map.c: New.
	* line-map.h: New.
	* Makefile.in (line-map.o): New.
	(LIBCPP_OBJS, LIBCPP_DEPS): Update.
	* c-lex.c (cb_file_change): Update for new cpp_file_change structure.
	* cpperror.c (print_containing_files): Similarly.
	(print_location): Update.  Don't output a space before _Pragma.
	* cppfiles.c (stack_include_file): Set to line 1 immediately.
	(stack_include_filee, cpp_make_system_header): Update.
	(_cpp_execute_include): Get logical line number right for calling
	as-yet-unterminated #include.
	* cpphash.h (struct cpp_reader): Add line_maps.
	(_cpp_do_file_change): Update.
	* cppinit.c (cpp_create_reader): Initialize line maps.
	(cpp_destroy): Destroy line maps.
	(cpp_start_read): Get logical line number right.
	* cpplex.c (parse_string): Only warn once for multi-line strings.
	Use boolean variable for null warning.
	* cpplib.c (_cpp_handle_directive): End the directive if it isn't
	already.
	(do_include_common): End the directive early.
	(do_line): Don't warn about out-of-range lines in preprocessed
	source.  Update.  Remove unused variables.
	(_cpp_do_file_change): Update for new line mapping.
	(pragma_cb): New typedef.
	(cpp_register_pragma): Stop looking ahead before calling the
	handler.  Clean up.
	(do_pragma_system_header): End directive early.
	(cpp_get_line_maps): New.
	(cpp_pop_buffer): Fudge logical line.  Update.
	* cpplib.h: Include line-map.h
	(enum cpp_fc_reason): Remove.
	(struct cpp_file_change): Update.
	(cpp_get_line_maps): New.
	* cppmain.c (struct_printer): New member map.
	(cb_file_change): Update for new mappings.
	* fix-header.c (cb_file_change): Similarly.

2001-08-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* Makefile.in (libgcc.mk): Define mkinstalldirs.
	* mklibgcc.in: Use mkinstalldirs instead of mkdir.

2001-08-02  Lars Brinkhoff  <lars@nocrew.org>

	* config/vax/vax.c: include expr.h.

2001-08-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* Makefile.in ($(srcdir)/configure): Only rebuild in
	maintainer mode.
	($(srcdir)/config.in): Only define in maintainer mode.
	($(srcdir)/cstamp-h.in): Only define in maintainer mode.

2001-08-02  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (Install GCC: Binaries): Update Bull info.

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

	* gcc.c (set_collect_gcc_options): New function, split out from
	main.
	Ignore elided switches.
	(do_spec_1): Invoke before executing command.
	(set_input): Export.
	Move declaration ...
	* gcc.h (set_input): ... here.
	* config/alpha/osf.h (ASM_FINAL_SPEC): Use %U.s to refer to input
	file.

2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>

	Kill -fhonor-std.
	* doc/c-tree.texi (Namespaces): Remove std & -fhonor-std
	interaction.
	* doc/invoke.texi (C++ Dialect Options): Remove -fno-honor-std.

2001-08-02  Richard Sandiford  <rsandifo@redhat.com>

	* mips.md (movdicc): Make conditional on TARGET_64BIT.  Likewise
	for the unnamed instructions it expands to.

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

	* regclass.c (call_really_used_regs): Conditionally define.
	(init_reg_sets_1): Don't use it if not defined.
	(fix_register): Similarly, don't set it.

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

	* params.def (PARAM_MAX_INLINE_INSNS): Change default to 600.
	Correct comment that had been missed in the previous change.

2001-08-01  Stan Shebs  <shebs@apple.com>

	* config/darwin.c (machopic_stub_name): Try matching by name.
	(update_stubs): New function.
	(darwin_encode_section_info):  Call it and update_non_lazy_ptrs
	unconditionally.

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

	* except.c (output_function_exception_table): Use assemble_align.
	* varasm.c (assemble_eh_label): Remove.
	(assemble_eh_align, assemble_eh_integer): Remove.

2001-08-01  Robert Lipe  <robertl@caldera.com>

	* dwarfout.c: Remove reference to README.DWARF.

2001-08-01  Andrew MacLeod  <amacleod@redhat.com>

	* regclass.c (call_really_used_regs): New array for registers which
	are actually used by a call.
	(init_reg_sets_1): Initialize regs_invalidated_by_call with the
	new array.
	(fix_register): Set call_really_used too.
	* config/ia64/ia64.h (CALL_REALLY_USED_REGISTERS): Initialize.
	* doc/tm.texi (CALL_REALLY_USED_REGISTERS): Document.

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

	* read-rtl.c (read_name): Consider \r whitespace.

2001-07-11  Andrew Cagney  <ac131313@redhat.com>

	* config.gcc: Recognize powerpc-*-netbsd*.

	* doc/install.texi (Host/target specific installation notes for
	GCC): Mention powerpc-*-netbsd*.

	* config/rs6000/netbsd.h: New file.
	(STANDARD_STARTFILE_PREFIX, LINK_SHLIB_SPEC): Redefine.
	(LIB_DEFAULT_SPEC, STARTFILE_DEFAULT_SPEC): Redefine.
	(ENDFILE_DEFAULT_SPEC, LINK_START_DEFAULT_SPEC): Redefine.
	(LINK_OS_DEFAULT_SPEC, CPP_OS_DEFAULT_SPEC): Redefine.
	(TARGET_VERSION): Redefine.

	* config/rs6000/t-ppccomm (MULTILIB_MATCHES_SYSV): Recognize
	mcall-netbsd as a match for mcall-sysv.
	(EXTRA_MULTILIB_PARTS): Add ncrti$(objext) and ncrtn$(objext).
	(ncrti.S, ncrtn.S): New targets.
	($(T)ncrti$(objext), $(T)ncrtn$(objext)): New targets.

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Recognize
	"netbsd' as a V4 ABI.
	(ASM_SPEC): Check for -mcall-netbsd.
	(CC1_SPEC, CC1_SPEC, LINK_START_SPEC, LINK_OS_SPEC): Ditto.
	(CPP_ENDIAN_SPEC, CPP_SPEC, STARTFILE_SPEC): Ditto.
	(LIB_SPEC, ENDFILE_SPEC): Ditto.
	(LIB_NETBSD_SPEC, STARTFILE_NETBSD_SPEC): Define.
	(ENDFILE_NETBSD_SPEC, LINK_START_NETBSD_SPEC): Define.
	(LINK_OS_NETBSD_SPEC, CPP_OS_NETBSD_SPEC): Define.
	(SUBTARGET_EXTRA_SPECS): Add NetBSD specs.

	* doc/invoke.texi (Option Summary): Add -mcall-netbsd.
	(RS/6000 and PowerPC Options): Mention -mcall-netbsd.

2001-08-01  Mark Kettenis  <kettenis@gnu.org>

	* unwind-pe.h (base_of_encoded_value, read_encoded_value): Define
	only if NO_BASE_OF_ENCODED_VALUE isn't defined.
	* unwind-dw2-fde.c (NO_BASE_OF_ENCODED_VALUE): Define before
	including "unwind-pe.h".

Wed Aug  1 20:01:42 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rs6000.md (define_splits): Kill unused constraints.

Wed Aug  1 20:02:12 CEST 2001 Graham Stott  <grahams@redhat.com>
			      Jan Hubicka  <jh@suse.cz>

	* function.c (thread_prologue_and_epilogue_insns): Kill code
	dealing with non-existent CFG.

2001-08-01  Kazu Hirata  <kazu@hxi.com>

	* alias.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* builtins.c: Likewise.
	* calls.c: Likewise.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-dump.c: Likewise.
	* c-lex.c: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* conflict.c: Likewise.
	* cppfiles.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* cppspec.c: Likewise.
	* c-pragma.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* cselib.c: Likewise.
	* c-semantics.c: Likewise.
	* c-typeck.c: Likewise.

2001-08-01  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h (ASM_OUTPUT_IDENT): Defined.

2001-08-01  H.J. Lu <hjl@gnu.org>

	* gcc/config/mips/linux.h (ASM_OUTPUT_SOURCE_LINE): Defined.

2001-08-01  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (OBJC_NEED_RAW_IDENTIFIER): Define macro and flag for
	contextualizing Objective-C class name lookup by the lexer.
	(typespec_reserved_nonattr): Disable ObjC class name lookup after
	seeing a TYPESPEC.
	(protocoldef): Add support for forward @protocol declarations.
	(yylexname): Suppress ObjC class name lookup in certain contexts;
	re-enable after lookup is complete.
	(_yylex): Re-enable ObjC class name lookup when certain
	punctuation marks are seen.

	* objc/objc-act.c (check_protocol_recursively): New function used
	for finding circular dependencies in protocols.
	(objc_declare_protocols): New function for handling forward
	@protocol declarations.
	(receiver_is_class_object): Detect the case when 'self' is used
	inside of a class method.
	(build_message_expr): Issue a warning if class method is desired
	but instance method is found instead.
	(conforms_to_protocol): Streamline.
	(objc_comptypes): Detect the fact that 'Bar<Foo> foo' conforms to
	protocol Foo, even if 'Bar foo' does not.
	(check_protocols): Streamline.
	(start_protocol): Add checks for circular and duplicate protocol
	definitions.
	(encode_aggregate_within): For typedefs of structs, encode the
	underlying struct.
	* objc/objc-act.h (PROTOCOL_DEFINED): New tree accessor.
	(objc_declare_protocols): New prototype.

2001-08-01  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_reader): New members line, pseudo_newlines.
	* cpplex.c (handle_newline): Update prototype.  Maintain logical
	line number.
	(skip_escaped_newlines, skip_block_comment, parse_string):
	Update accordingly.
	(_cpp_lex_token): Update, and store token position within the token.
	* cpplib.h (struct cpp_token): Add line and column entries.
	* cppmacro.c (replace_args): Position stringified tokens correctly.

2001-08-01  Andreas Jaeger  <aj@suse.de>

	* basic-block.h: Add prototype for last_loop_beg_note.

2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* expr.c (safe_from_p): Use WITH_CLEANUP_EXPR_RTL instead of
	RTL_EXPR_RTL while handling WITH_CLEANUP_EXPR nodes. Fixed typo in
	comment.
	(expand_expr): Use WITH_CLEANUP_EXPR_RTL instead of RTL_EXPR_RTL
	while handling WITH_CLEANUP_EXPR node. Use second operand calling
	expand_decl_cleanup.
	* tree.c (firt_rtl_op): The third operand of WITH_CLEANUP_EXPR is
	the first RTX.
	(simple_cst_equal): WITH_CLEANUP_EXPR node to use its second
	operand while calling simple_cst_equal.
	* tree.def (WITH_CLEANUP_EXPR): Switched operands: the second
	operand is the cleanup expression, the third is the RTL_EXPR.
	* tree.h (WITH_CLEANUP_EXPR_RTL): New macro.

2001-07-31  Jeff Sturm  <jsturm@one-point.com>

	* except.c (duplicate_eh_regions): Test n_array[i] for NULL.

2001-07-31  matthew green  <mrg@eterna.com.au>

	* config.gcc (i386-*-netbsdelf): New description.
	* config/i386/netbsd-elf.h: New file.

2001-07-30  Geoffrey Keating  <geoffk@redhat.com>

	* loop.c (check_dbra_loop): Use single_set to compute
	jump_label.

2001-07-31  Daniel Berlin  <dan@cgsoftware.com>

	PowerPC reorg and support for powerpc64-*-linux*.

	Also fixes emitting of constants on 32 bit and 64 bit
	platforms.

	* config.gcc: powerpc64-*-linux* is a new target.
	Things that needed aix.h now also include xcoff.h

	* config/rs6000/rs6000.h: Split XCOFF specific stuff into
	xcoff.h.
	Move AIX specific stuff into aix.h.
	(TARGET_AIX): Renamed to TARGET_XCOFF, since the AIX ABI is used
	with more than just XCOFF now.
	(SET_ASM_OP): Remove, now defined where needed.
	(FUNCTION_PROLOGUE): New macro definition.
	(FUNCTION_EPILOGUE): New macro definition.
	(ASM_OPEN_PAREN, ASM_CLOSE_PAREN): New macro definition.

	* config/rs6000/xcoff.h: New file.

	* config/rs6000/linux64.h: New file.

	* config/rs6000/darwin.h: Copy needed AIX alignment definitions.

2001-07-31  Alan Modra  <amodra@bigpond.net.au>

	* rs6000.c (print_operand_address): Handle ELF syntax.
	(output_toc): Simplify.  Use DOUBLE_INT_ASM_OP.
	* rs6000.md (load_toc_aix_di): Handle ELF syntax.
	* rs6000.h (ASM_OUTPUT_DOUBLE_INT, ASM_LONG): Use DOUBLE_INT_ASM_OP.

2001-07-31  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (rs6000_override_options): Only disable
	flag_function_sections for XCOFF.
	(exact_log2_cint_operand): New predicate.
	(reg_or_{add,sub}_cint64_operand): New predicates.
	(add_operand): Compare CONST_INT with fewer function calls.
	(rs6000_emit_set_const, rs6000_emit_set_long_const): New functions.
	(print_operand, case 'p'): Ensure positive operand.
	(rs6000_emit_load_toc_table): No load_toc_v4_pic_di.
	* rs6000.h (CONST_OK_FOR_LETTER_P, case 'N'): Ensure positive value.
	(PREDICATE_CODES): Add new predicates.
	* rs6000.md (addsi3): Split 32-bit constants more correctly.
	(divsi3, modsi3): Ensure positive power-of-2.
	(adddi3): Use new predicate.  Split 32-bit constants more
	correctly.  Re-arrange splitter to handle any constant.
	(subdi3): Use new predicate.
	(divdi3, moddi3): Ensure positive power-of-2.
	(movdi): Use rs6000_emit_set_const.
	(load_toc_v4_pic_di): Delete.

2001-07-31  Graham Stott <grahams@redhat.com>

	* function.c (pad_below): Revert 2001-07-26 patch.

Tue Jul 31 15:37:35 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack (convert_regs_1): Fix best edge condition.

Tue Jul 31 15:33:27 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (duplicate_loop_exit_test): Better test for jumps
	entering the loop; create loop pre_header.

2001-07-31 Hartmut Penner <hpenner@de.ibm.com>

	* doc/install.texi: Add s390 and s390x as new targets.
	* doc/invoke.texi: Add documentation of S/390 and zSeries
	target options.
	* doc/md.texi: Add documentation of S/390 and zSeries constraints.

2001-07-30  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.md: Replace all general_operand with
	nonimmediate_operand for all destinations.
	* config/m68k/m68k.c (not_sp_operand): Likewise.

Mon Jul 30 23:20:34 EDT 2001  John Wehle  (john@feith.com)

	* flow.c (merge_blocks): Return 1 if an extra jump is inserted.

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

	* config/ia64/ia64.h (DEBUG_RANGES_SECTION): New.
	* config/mips/iris6.h (DEBUG_RANGES_SECTION): New.

2001-07-30  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.h (TARGET_SWITCHES/TARGET_OPTIONS):
	Add missing doc strings
	* config/m68k/linux-aout.h (SUBTARGET_SWITCHES): Likewise
	* config/m68k/linux.h (SUBTARGET_SWITCHES): Likewise

Mon Jul 30 22:16:08 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_output_main_function_alignment_hack): New function.
	(TARGET_ASM_FUNCTION_PROLOGUE): Default to it.

	* flow.c (mark_dfs_back_edges): Move from loop_p ; mark back
	edges by EDGE_DFS_BACK flag.
	(dump_edge_info): Add dfs_back flag.
	* basic-block.h (EDGE_DFS_BACK): New constant.
	(mark_dfs_back_edges): Declare.
	* alias.c (loop_p): Remove.
	(mark_constant_function): Use mark_dfs_back_edges.

	* reg-stack.c (block_info_def): Add predecessors counter and stack_out.
	(reg_to_stack): Call mark_dfs_back_edges; count the predecessors.
	(compensate_edge): Break out from ...
	(convert_regs_1): ... here; do smart choosing of stack_out to copy.
	(convert_regs_2): Set block_done once block is really done;
	Do updating of the predecessors counts.

	* toplev.c (rest_of_compilation): Recompute block_for_insn
	before post-reload cfg_cleanup.
	* function.c (thread_prologue_epilogue_insns):
	Call set_block_for_new_insns when emitting prologue directly.

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

	* jump.c: Add prototype for mark_modified_reg.

	* cse.c (set_live_p): Add unused attribute.

	* gcov.c (calculate_branch_probs): Use gcov_type to avoid
	overflow.
	(scan_for_source_files): Use long for count to avoid overflow.
	(output_data): Likewise.
	(output_data): Don't use string concatatenation to silence gcc
	-traditional.

	* predict.c: Fix typos and grammar.

	* gcse.c (insert_insn_end_bb): Remove unused variables.

Mon Jul 30 21:54:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (mark_set_1): Use REG_FREQ_FROM_BB.
	(attempt_auto_inc): LIkewise.
	(mark_used_reg): Likewise.
	(try_pre_increment_1): Likewise.
	* regclass.c (regclass): Likewise.
	* global.c (allocno_compare): Update comment; change scaling factor.
	* local-alloc.c (QTY_CMP_PRI): Likewise.
	* regs.h (REG_FREQ_FROM_BB): New.
	(REG_FREQ_MAX): Likewise.

2001-07-30  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h (CPLUSPLUS_CPP_SPEC): Add
	-D_GNU_SOURCE.

2001-07-30  H.J. Lu  (hjl@gnu.org)

	* config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Defined.
	(ASM_DECLARE_FUNCTION_SIZE): Likewise.
	(FUNCTION_NAME_ALREADY_DECLARED): Likewise.

2001-07-30  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/t-arm-elf (MULTILIB_EXCEPTIONS): Skip -mthumb as well
	as -mthumb-interwork when -mcpu=arm7 is specified.

Mon Jul 30 17:44:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (noreturn, loop branch, loop exit): Mark as first
	match heuristics.

Mon Jul 30 12:52:11 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (try_combine): Avoid barrier after noop jumps.

2001-07-29  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_reader): Remove import_warning.
	* cpplib.c (skip_rest_of_line): Don't bother turning off
	macro expansion.
	(parse_include): Move include handling to...
	(do_include_common): ... here.  Move import warning from...
	(do_import): ... here.
	(do_pragma_poison): Don't do a callback for poison identifiers.
	* cpplib.h (struct cpp_callbacks): Don't do poison callbacks.
	* cppmain.c (setup_callbacks): Similarly.

Sun Jul 29 23:26:50 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (parms_set, find_first_parameter_load): Break out from...;
	handle multiple sets.
	* except.c (sjlj_mark_call_sites): .... here.
	* gcse.c (insert_insn_end_bb): Use find_first_parameter_load.

Sun Jul 29 21:38:45 CEST 2001  Jan Hubicka  <jh@suse.cz>

	Suggested by Richard Henderson and Richard Kenner:
	* combine.c (recog_for_combine): Use the fake recog
	only if instruction does not match.
	* rtl.h (NOOP_MOVE_INSN_CODE): New.
	* rtlanal.c (noop_move_p): Always return 1 for NOOP_MOVE_INSN_CODE.

	* combine.c (try_combine): Discover noop jump as direct jump.

2001-07-29  Daniel Berlin  <dan@cgsoftware.com>

	* df.c (df_rd_global_compute): Add successors to worklist, not
	current item.
	(df_ru_global_compute): Ditto.

2001-07-27  Daniel Berlin  <dan@cgsoftware.com>

	* regclass.c (reg_scan_mark_refs): Increment REG_N_REFS when we
	increment REG_N_SETS.

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

	* sbitmap.h: New prototype for sbitmap_a_xor_b.

	* sbitmap.c (sbitmap_a_xor_b): New function.
	ifdef the basic block stuff on IN_GCC.

2001-07-29  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* cppexp.c (parse_defined): Always record the macro name.
	(lex): Don't worry about identifiers, or special-case
	CPP_NOT here.
	(_cpp_parse_expr): Figure out at the end of the routine
	whether we saw a valid !defined() expression.
	* cppfiles.c (stack_include_file): Update for mi_valid.
	(_cpp_pop_file_buffer): Similarly.
	* cpplex.c (_cpp_lex_token): Similarly.
	* cpphash.h (enum mi_state, enum mi_ind, mi_state,
	mi_if_not_defined, mi_lexed): Remove.
	(mi_valid): New.
	* cpplib.c (do_if): Simplify.
	(do_endif, push_conditional, _cpp_handle_directive): Update
	for renaming of mi_state to mi_valid.
doc:
	* cpp.texi: Add index entries for digraphs, and add comment
	that C++ refers to them as alternative tokens.

Sun Jul 29 18:59:13 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (CLEANUP_PRE_LOOP): New.
	* except.c (finish_eh_generation): Update call of cleanup_cfg.
	* sibcall.c (optimize_sibling_calls): Likewise.
	* toplev.c (rest_of_compilation): Likewise.
	* flow.c (try_forward_edges): Take argument MODE;
	do not forward over loop pre-headers if CLEANUP_PRE_LOOP.
	(try_optimize_cfg): Update call of try_forward_edges.

Sun Jul 29 18:59:56 CEST 2001  Roman Zippel  <zippel@linux-m68k.org>
				Jan Hubicka  <jh@suse.cz>

	* (validate_replace_rtx_1): Fix simplification of MINUS.

2001-07-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/3669
	* cppinit.c (init_dependency_output): Turn off dump requests
	if sending dependencies to stdout.

2001-07-28  Richard Henderson  <rth@redhat.com>

	* flow.c (life_analysis): Elide PROP_ALLOW_CFG_CHANGES if
	not optimizing.

2001-07-28  Golubev I. N.  <gin@mo.msk.ru>

	* config/i386/sco5.h (DWARF2_DEBUGGING_INFO): Define.

2001-07-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (ENCODE_SECTION_INFO): Check to see if DECL
	is VAR_DECL first to prevent an ICE.

2001-07-28  Richard Henderson  <rth@redhat.com>

	* varasm.c (immed_real_const_1): Don't elide special cases for
	nested functions.
	(clear_const_double_mem): Clear const_tiny_rtx too.

2001-07-28  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (dw_val_class_offset): New.
	(struct dw_ranges_struct, dw_ranges_ref): New.
	(ranges_table, ranges_table_allocated): New.
	(ranges_table_in_use, RANGES_TABLE_INCREMENT): New.
	(add_AT_offset, add_ranges, output_ranges): New.
	(print_die, output_die): Handle dw_val_class_offset.
	(attr_checksum, size_of_die, value_format): Likewise.
	(gen_lexical_block_die): Handle non-contiguous blocks.
	(gen_block_die): Likewise.
	(dwarf2out_finish): Add a DW_AT_entry_pc to the compilation unit
	if needed.  Dump the ranges table.
	* final.c (final_start_function): Remove unnecessary notes and
	rebuild the block tree before numbering the blocks.
	* function.c (reorder_blocks_0): Walk the existing block tree
	to unmark all blocks.
	(reorder_blocks_1): Create block fragments when duplicate block
	notes are seen.
	(reorder_fix_fragments): New.
	(reorder_blocks): Call it.
	* tree.h (BLOCK_FRAGMENT_ORIGIN, BLOCK_FRAGMENT_CHAIN): New.

2001-07-28  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (adjust_address): Make a copy of the memory address.

2001-07-28  Richard Henderson  <rth@redhat.com>

	* flow.c (add_to_mem_set_list): New function.
	(init_propagate_block_info): Use it.
	(mark_set_1): Likewise.
	(insn_dead_p): Canonicalize memory address for dead store
	comparison.  Allow wider mode stores to kill narrower mode stores.
	(invalidate_mems_from_autoinc): Use invalidate_mems_from_set.
	(invalidate_mems_from_set): Don't handle MEMs.

2001-07-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix formatting.

Sat Jul 28 23:35:22 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (EDGE_FREQUENCY): New macro.
	* bb-reorder (fixup_reorder_chain): Set counts and frequencies
	for new BB/edges.
	* flow.c (find_sub_basic_blocks): Likewise.
	(try_crossjump_to_edge): Likewise; use EDGE_FREQUENCY
	(redirect_edge_and_branch): Use EDGE_FREQUENCY.

	* predict.c (DEF_PREDICTOR): New argument FLAGS.
	(HITRATE): New macro.
	(PRED_FLAG_FIRST_MATCH): New constant.
	(predictor_info): New field flgags.
	(combine_predictions_for_insn): Use DS theory to combine
	probabilities; set the edge probabilities when finished.
	(estimate_probability): Avoid duplicated matches
	of LOOP_BRANCH heuristics for nested loops; update comment.
	* predict.def: Add flags for each prediction, set probabilities
	according to B&L paper.
	* predict.h (DEF_PREDICTOR): New argument FLAGS.

	* profile.c (compute_branch_probabilities):  Cleanup way the edge
	probabilities are computed and REG_BR_PROB notes are dropped; if
	values does not match, emit error.
	(init_branch_prob): Do error instead of warning when profile driven
	feedback is missing or corrupt.

2001-07-27  DJ Delorie  <dj@redhat.com>

	* ifcvt.c (noce_get_alt_condition): If the condition is a compare
	against a constant, try to adjust the compare to have the desired
	constant in it so that min/max optimizations happen more often.

Fri Jul 27 17:53:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (last_loop_beg_note): New function.
	(redirect_edge_and_branch): Use it.
	(split_edge): Likewise.

	* alias.c (loop_p): Avoid uninitialized memory access.

	* flow.c (try_forward_edges): Avoid accessing freed memory.

	* flow.c (backward_edge_of_syntactic_loop_p): Avoid uninitialized
	variable access.

2001-07-26  Andrew Haley  <aph@redhat.com>
	Joern Rennecke <amylaar@redhat.com>

	* config/sh/linux.h (CPP_DEFAULT_CPU_SPEC): New.
	(SUBTARGET_CPP_ENDIAN_SPEC): New.
	(SUBTARGET_CPP_SPEC): New.
	(CPP_SPEC): Remove.
	* config/sh/sh.h (SUBTARGET_CPP_ENDIAN_SPEC): New.
	(SUBTARGET_CPP_PTR_SPEC): New.
	(CPP_DEFAULT_CPU_SPEC): New.
	(EXTRA_SPECS): Add SUBTARGET_CPP_ENDIAN_SPEC,
	SUBTARGET_CPP_PTR_SPEC, and CPP_DEFAULT_CPU_SPEC.
	(CPP_SPEC): Break out parts into SUBTARGET_CPP_ENDIAN_SPEC,
	SUBTARGET_CPP_PTR_SPEC, and CPP_DEFAULT_CPU_SPEC.
	(SUBTARGET_CPP_SPEC): Define as an empty string.

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

	* doc/install.texi (Configuration): Properly link the host
	specific instructions also when generating HTML.

Fri Jul 27 00:33:35 EDT 2001  John Wehle  (john@feith.com)

	* flow.c (redirect_edge_and_branch_force): Test
	target->global_live_at_start.

2001-07-26  Richard Henderson  <rth@redhat.com>

	* simplify-rtx.c (avoid_constant_pool_reference): Export.
	* rtl.h (avoid_constant_pool_reference): Declare it.
	* dwarf2out.c (add_location_or_const_value_attribute): Use it.
	(add_const_value_attribute): Use add_AT_unsigned for unsigned values.

Thu Jul 26 22:30:22 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtl.h (cleanup_barriers): Declare.
	* jump.c (cleanup_barriers): New function.
	* toplev.c (rest_of_compilation): Call cleanup_barriers
	before loop optimizer and after bb_reorder.

	* flow.c (back_edge_of_syntactic_loop_p): New.
	(split_edge): Use it.

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

	* glimits.h (_MACH_MACHLIMITS_H_): Delete.

Thu Jul 26 22:22:21 2001  Denis Chertykov  <denisc@overta.ru>

	* cse.c (cse_process_notes): Replace any registers if the address
	remains valid.

Thu Jul 26 14:04:03 EDT 2001  John Wehle  (john@feith.com)

	* basic-block.h (PROP_ALLOW_CFG_CHANGES): Define.
	(PROP_FINAL): Include PROP_ALLOW_CFG_CHANGES.
	(propagate_block): Update prototype.
	* flow.c (update_life_info): Simplify the CFG and
	recalculate the global regs which are alive when
	removing dead code during a global update.
	(propagate_block): Return nonzero if an INSN is
	deleted.

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

	* Makefile.in (LIBICONV): Define.

2001-07-26  Catherine Moore  <clm@redhat.com>

	* config/v850/v850.h (ENCODE_SECTION_INFO):  Change order
	of conditional to avoid tree checking errors.

2001-07-26  Kazu Hirata  <kazu@hxi.com>

	* regmove.c (regmove_optimize): Don't replace a reg with
	another reg of a different mode.

2001-07-26  Andrew MacLeod  <amacleod@redhat.com>

	* params.def (PARAM_MAX_PENDING_LIST_LENGTH): Add parameter to
	limit length of dependency flush list.
	* params.h (MAX_PENDING_LIST_LENGTH): Define.
	* sched-int.h  (struct deps): Add pending_flush_length field.
	* sched-deps.c (flush_pending_lists): Last_pending_memory_flush now
	has 1 element in it.
	(sched_analyze_1): Use MAX_PENDING_LIST_LENGTH.
	(sched_analyze): After a jump, if the pending memory flush list is too
	large, flush the pending lists.
	(init_deps): Initialize pending_flush_length to 0.
	* doc/invoke.texi (max_pending_list_length): Document parameter.

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

	* toplev.c, varasm.c, final.c: Include xcoffout.h if appropriate.
	* dbxout.c (dbxout_global_decl): Move outside #ifdef.
	* Makefile.in (varasm.o, final.o, toplev.o): Update dependencies.

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

	* cpphash.h (struct_lexer_state): Delete was_skipping.
	Move skipping here from struct cpp_reader.
	* cpplex.c (parse_identifier): Update.
	(_cpp_lex_token): Don't skip tokens in a directive.
	* cpplib.c (struct if_stack): Update.
	(start_directive, end_directive): Don't change skipping state.
	(_cpp_handle_directive): Update.
	(do_ifdef, do_ifndef, do_if, do_elif): Similarly.
	(do_else, do_endif): Update; only check for excess tokens if not
	in a skipped conditional block.
	(push_conditional): Update for new struct if_stack.

2001-07-26  Graham Stott  <grahams@redhat.com>

	* function.c (locate_and_pad_parm): Also pad initial offset
	so that the total argument size also includes the padding.

2001-07-26  Graham Stott <grahams@redhat.com>

	* gensupport.c (alter_output_for_insn): Correct enable checking failure
	change XSTR to XTMPL.

	(process_one_cond_exec): Likewise

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

	* varasm.c (assemble_variable): Create DECL_RTL before setting
	TREE_ASM_WRITTEN.

Thu Jul 26 00:19:30 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Avoid duplicated predictions.

	* loop.c (find_and_verify_loops): Grok multiple barriers.

Wed Jul 25 18:00:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (print_operand, case '/'): Don't write '/'.

	* dbxout.c: Consistently use putc instead of fputc.
	(print_wide_int): New function; call instead of direct fprintf.
	(dbxout_type_index): Adjust calls of CHARS to be more accurate.
	(dbxout_type_fields, dbxout_type_method_1): Likewise.
	(dbxout_type_methods, dbxout_range_type, dbxout_type): Likewise.
	(print_int_cst_octal): Likewise.
	(print_octal): Show we wrote characters.
	(dbxout_type): Set have_used_extensions in more places.

2001-07-25  Catherine Moore  <clm@redhat.com>

	* config/v850/v850.c (v850_va_arg):  Use addr
	instead of valist to build incr.

Wed Jul 25 22:48:59 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (delete_dead_jumptables): New function.
	(life_analyzis): Call it.
	* bb-reorder.c (skip_insns_after_block): Handle contradictory
	sequences.

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

	* except.c (reachable_handlers): Handle a region being removed
	out from under a RESX.

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

	* config/alpha/alpha.c (alpha_emit_conditional_move): Always
	swap GE/GT if it is an fp comparison.

2001-07-25  Andrew Haley  <aph@cambridge.redhat.com>

	* alias.c (rtx_equal_for_memref_p): Allow strings as types in
	operands.

Wed Jul 25 08:25:01 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa.c (rename_insn_1): Do not wrap an assignment to a
	paradoxical SUBREG inside a SEQUENCE.  Fix minor formatting
	glitch.

	* ssa-ccp.c (visit_expression): Handle CALL_INSNs that can
	throw an exception.
	(visit_expression): When attempting to simplify an expression,
	retrieve any modes for arguments before they are simplified
	to constants.

2001-07-25  Andrew MacLeod  <amacleod@redhat.com>
	    Janis Johnson  <janis@us.ibm.com>

	* stmt.c (expand_goto): A nonlocal goto can be a call too.
	* builtins.c (expand_builtin_longjmp): Reverse label and static chain
	pointer parameters to match documented usage of nonlocal_goto.
	* config/ia64/ia64.md (nonlocal_goto): Revert label and static chain
	parameters to their correct order.
	* config/sparc/sparc.md (nonlocal_goto): Revert label and static chain
	parameters to their correct order.

2001-07-25  Andrew MacLeod  <amacleod@redhat.com>

	* config/ia64/ia64.h (STRIP_NAME_ENCODING): Strip out '*' as well.

2001-07-25  Jan Hubicka  <jh@suse.cz>
	    Richard Henderson  <rth@redhat.com>

	* flow.c (find_sub_basic_blocks): Fix handling of the last BB in
	the sequence.
	(make_edges): New argument update_p; populate the edge cache if set.
	(find_basic_blocks): Update make_edges invocation.

2001-07-24  Joel Sherrill <joel@OARcorp.com>

	* config/i960/i960.h (CPP_SPEC): Define _SOFT_FLOAT for -msoft-float.

2001-07-24  Joel Sherrill <joel@OARcorp.com>

	* config/sparc/rtems.h (CPP_PREDEFINES): Remove redundant
	-Acpu and -Amachine.h.
	* config/sparc/rtemself.h (CPP_PREDEFINES): Likewise.
	Corrected header to say ELF not a.out.
	* config/sparc/sparc.h (CPP_CPU_SPEC): Define _SOFT_FLOAT
	when given -msoft-float.

2001-07-24  Joel Sherrill <joel@OARcorp.com>

	* config.gcc (arm*-*-rtems*): Include crtinit.o and crtfini.o as
	extra multilib parts like arm-elf.
	(i960-*-coff*, i960-*-rtems): Should not use collect2.
	(m68020-*-elf*, m68k-*-elf*, m68k-*-rtems*): Include crtinit.o and
	crtfini.o as extra multilib parts.

2001-07-24  Joel Sherrill <joel@OARcorp.com>

	* configure.in: Add rtems as a supported thread model.
	* gthr-rtems.h: Add missing entry point __gthread_active_p.
	* configure: Rebuilt.

2001-07-24  Lars Brinkhoff  <lars@nocrew.org>

	* stor-layout.c (get_mode_alignment): make it work when
	BITS_PER_UNIT is not a power of two.
	* builtins.c (get_pointer_alignment): Likewise.

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

	* simplify-rtx.c (avoid_constant_pool_reference): Coerce
	the retrieved constant into the expected mode.

Wed Jul 25 01:41:27 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_simplify_condjump): Avoid duplicated edges.
	(verify_flow_info): Check for duplicated edges; clarify
	error reporting.

	* flow.c (block_label): Update basic_block_for_insn.
	(commit_edge_insertions): Call compute_bb_for_insn.

	* flow.c (purge_dead_edges): Handle conditional jumps and conditional
	returns too.

	* flow.c (redirect_edge_and_branch,
	try_optimize_cfg): Use redirect_edge_succ_nodup
	(redirect_edge_succ_nodup): New.
	* basic_block.h (redirect_edge_succ_nodup): Declare.

	* toplev.c (rest_of_compilation): Rebuild CFG before cfg_cleanup
	after gcse.

Wed Jul 25 00:32:49 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_forward_edges): Accept fallthru edge; Update comment.
	(try_crossjump_to_edge): Update commetns.
	(try_crossjump_bb): Likewise.

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

	* combine.c (distribute_notes): Move set of need_refresh
	for noop_move_p down to catch all cases.

Tue Jul 24 20:32:44 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (split_all_insns_noflow): New.
	* rtl.h (split_all_insns_noflow): Declare.
	* ia64.c (ia64_reorg): Use split_all_insns_noflow.
	* m68hc11.c (m68hc11_reorg): Likewise.
	* sh.c (machine_dependent_reorg): Likewise.
	* toplev.c (rest_of_compilation): Likewise for last split_all_insns
	call.

2001-07-18  Andrew Haley  <aph@cambridge.redhat.com>

	* config/sh/sh.md (ashlsi3_std splitter): Split only after reload.
	(ashlsi3_n splitter): Likewise.
	(lshrsi3_n splitter): Likewise.

	(GOTaddr2picreg): Make const SImode.
	(sym_label2reg): Likewise.
	(symGOT2reg): Likewise.
	(symGOTOFF2reg) Likewise.

	(casesi_worker_0): Make unspec SImode.

2001-07-18  Andrew Haley  <aph@cambridge.redhat.com>

	* config/sh/sh.c (barrier_align): Check that an operand really is
	an insn before extracting its INSN_CODE.

2001-07-24  Andrew Haley  <aph@cambridge.redhat.com>

	* config/sh/sh.h (OVERRIDE_OPTIONS): Add braces to get rid of
	dangling else.

	* config/sh/sh.h (INITIALIZE_TRAMPOLINE): Truncate operands
	for SImode to prevent overflow.

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

	* config/mips/irix6-libc-compat.c: New file.
	* config/mips/t-iris6 (LIB2FUNCS_STATIC_EXTRA): Use it.
	* doc/install.texi (Specific, mips*-sgi-irix6): Mention structure
	passing workaround.

2001-07-24  lars brinkhoff  <lars@nocrew.org>

	* rtl.texi (REG_POINTER): Document.
	(Machine Modes): Document BImode, OImode, PQImode, PHImode,
	QFmode, HFmode, TQFmode, QCmode, and HCmode.

Tue Jul 24 10:49:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (delete_noop_moves): Do not confuse libcall regions.

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

	* flow.c (try_simplify_condjump): Use tidy_fallthru_edge.

2001-07-23  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Add a prototype for
	general_operand_dst_push.
	* config/h8300/h8300.c (general_operand_dst_push): New.
	* config/h8300/h8300.h (OK_FOR_T): New.
	(EXTRA_CONSTRAINT): Use it.
	* config/h8300/h8300.md (movqi_push): Remove and integrate into
	the existing movqi pattern.
	(movhi_push): Likewise.

	* reload.c: Fix comment typos.

Mon Jul 23 23:34:07 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (cprop_insn): Update call of cprop_cc0_jump.

2001-07-23  H.J. Lu  (hjl@gnu.org)

	* doc/extend.texi: Update __builtin_return_address and
	__builtin_frame_address.

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

	* config/i386/i386.c (ix86_expand_setcc): Don't use method 0
	before CSE.
	* config/i386/i386.md: New setcc+movzbl peephole2.

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

	* objc/Make-lang.in (objc-act.o): Depend on debug.h.
	* objc/objc-act.c: Include debug.h.
	(synth_module_prologue): Save and restore debug hooks too.

2001-07-23  lars brinkhoff  <lars@nocrew.org>

	* tm.texi (TARGET_FLOAT_FORMAT): Document IBM_FLOAT_FORMAT
	and C4X_FLOAT_FORMAT.
	(BOOL_TYPE_SIZE): Document.

Mon Jul 23 11:54:23 2001  Clinton Popetz  <cpopetz@cpopetz.com>

	* unroll.c (loop_iterations): Fix miscalculation of initial
	giv offset.

2001-07-13  Andrew Haley  <aph@redhat.com>

	* doc/tm.texi (MD_CAN_REDIRECT_BRANCH): New macro.
	* config/sh/sh.h (MD_CAN_REDIRECT_BRANCH): New macro.
	* config/sh/sh.c (sh_can_redirect_branch): New function.
	* config/sh/sh-protos.h (sh_can_redirect_branch): Declare.
	* reorg.c (steal_delay_list_from_target): Use
	MD_CAN_REDIRECT_BRANCH to see if redirection is possible.

Mon Jul 23 17:20:18 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_simplify_condjump): Unlink insn chain on
	fallthru edge; use can_fallthru.

Mon Jul 23 16:03:19 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (find_sub_basic_block): Declare.
	* flow.c (make_edges): New arguments MIN and MAX;
	(find_sub_basic_blocks): Revamp to use make_edges
	and purge_dead_edges.
	(find_basic_blocks): Update call of find_sub_basic_block.

	* recog.c (split_all_insns): Always expect CFG to be consistent;
	call find_sub_basic_blocks in case something has changed.
	* toplev.c (rest_of_compilation): Always call split_all_insns once CFG
	has been built.

	* basic-block.h (delete_noop_moves): Declare.
	* combine.c (combine_instructions): Call it.
	(recog_for_combine): Tolerate noop moves
	(distribute_notes): Force refresh when register dies at noop move.
	* flow.c (delete_noop_moves): Use BB structure; delete JUMP insns
	too.
	(life_analysis): Update delete_noop_moves call.
	(set_noop_p): Move too ...
	* rtlanal.c (noop_move_p): ... here.
	* rtl.h (noop_move_p): Declare.

	* basic-block.h (purge_all_dead_edges, purge_dead_edges): New functions.
	* toplev.c (rest_of_compilation): Conditionally call purge_all_dead_edges
	after combine.
	* gcse.c (cprop_cc0_jump, cprop_insn): New argument "basic_block".
	(cprop_jump): Likewise; call purge_dead_edges if substitution succeeded.

2001-07-23  Hans-Peter Nilsson  <hp@bitrange.com>

	* reload.c (push_reload): Fix typo in comment.
	(find_reloads_address): Ditto.
	(reg_overlap_mentioned_for_reload_p): Ditto in head comment.

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

	* flow.c: Grammar check and clarify a lot of comments.
	(try_simplify_condjump): Rename variables to be clearer.
	(try_forward_edges): Skip complex and fallthru edges.
	Rearrange tests to avoid duplicate checks.
	(flow_find_cross_jump): Likewise.
	(outgoing_edges_match): Allow match if neither branch has
	probability data.  Loosen probability match to 5%.
	(try_crossjump_to_edge): Hoist repeated indirection into
	local variables.
	(try_crossjump_bb): Don't check complex edges.  Eliminate
	redundant crossjump tests.
	(try_optimize_cfg): Fix use of bool.  Reorganize cheaper
	checks before more expensive checks.

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

	* fold-const.c (fold): Test vs FLOAT_TYPE_P instead of
	INTEGRAL_TYPE_P when folding comparisons with operand_equal_p
	arguments.

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

	* m68k.c (const_uint32_operand): Abort if mode is <= 32 bits.
	(const_sint32_operand): Likewise.
	* m68k.md (anon mulsi pattern): Use const_int_operand not
	const_sint32_operand.
	(umulsi3_highpart): Zero extend a constant input.
	(smulsi3_highpart): Don't bother checking SImode constant.
	(const_umulsi3_highpart): Give op3 DImode.
	(const_smulsi3_highpart): Likewise.

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

	* flow.c (split_block): Make sure bb_note is included in the
	new block when splitting before a label.

Sun Jul 22 23:28:56 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (redirect_edge_and_branch_force,
	redirect_edge_and_branch, block_label, forwarder_block_p): Declare.
	* flow.c (redirect_edge_and_branch_force,
	redirect_edge_and_branch, block_label, forwarder_block_p): Make global.
	(redirect_edge_and_branch_force): Fix copying of lifeness information.
	(block_label): Handle EXIT_BLOCK_PTR by returning NULL.
	* ifcvt.c (dead_or_predictable): Take BB as an new destination
	instead of label; update CFG after transformation.
	(find_if_case_1): Update call, use redirect_edge_and_branch_force
	for finishing the transformation; handle even case where ELSE
	does not follow THEN.
	(find_if_case_2): Update call of dead_or_predictable; simplify
	CFG update.

	* emit-rtl.c (split_branch_probability): New global variable.
	(try_split): Take care to set split_branch_probability and
	create REG_BR_PROB note for new jump insns.
	* md.texi (define_split): Document new feature.

	* i386.c (ix86_split_fp_branch): Redistribute branch probability notes.

2001-07-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* varasm.c: Don't inlcude dbxout.h, sdbout.h or xcoffout.h.
	(asm_out_file): Remove redundant declaration.
	(assemble_asm): Remove old #if 0 block.
	(assemble_variable): Remove end of function; debug output is
	now handled with global_decl.  Remove old #if 0 block.  Update.
	Remove saved_in_section and associated no-op code.
	* Makefile.in (varasm.o): Correct dependencies.

Sun Jul 22 17:55:11 2001  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/freebsd-aout.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
	the definition in defaults.h.

Sun Jul 22 21:31:04 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c: Update comments.
	(delete_barrier_successors, delete_unreferenced_labels,
	delete_noop_moves, tension_vector_labels, delete_from_jump_chain,
	delete_labelref_insn, redirect_tablejump, jump_optimize_1,
	jump_optimize, jump_optimize_minimal): Kill.
	(rebuild_jump_labels): Move code from jump_optimize_1.
	(purge_line_number_notes): Likewise.
	(copy_loop_headers): Likewise.
	* reg-stack.c: Update comment.
	* stmt.c: Likewise.
	* rtl.h (jump_optimize, jump_optimize_1, JUMP_NOOP_MOVES,
	JUMP_AFTER_REGSCAN): Kill.
	* toplev.c (rest_of_compilation): Use cleanup_cfg, call
	purge_line_number_notes and copy_loop_headers.

2001-07-22 Neil Booth  <neil@daikokuya.demon.co.uk>
	   Richard Henderson  <rth@redhat.com>

	* dbxout.c (dbxout_global_decl): New.
	(xcoff_debug_hooks, dbx_debug_hooks): Use it.
	* sdbout.c (sdbout_finish): New.
	(sdbout_debug_hooks): Use it, add comments.
	(sdbout_global_decl): Defer initialized public vars to
	sdbout_finish.
	* varasm.c (assemble_variable): Don't output debug information
	for file-scope variables.

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

	* config/alpha/alpha.c (get_trap_mode_suffix): New.
	(get_round_mode_suffix): New.
	(print_operand): Use them for [/].  Remove support for [&'`()+].
	* config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Update.
	* config/alpha/alpha.md (attr round_suffix): New.
	(attr trap_suffix): New.
	(all insns): Set them appropriately.  Use %/ instead of the
	myriad punctuators.

2001-07-22  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* dbxout.c, sdbout.c, varasm.c: Revert most recent debug patch.

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

	* regrename.c (regrename_optimize): Compute nregs for each
	potential target register.

2001-07-21 Neil Booth  <neil@daikokuya.demon.co.uk>
	   Richard Henderson  <rth@redhat.com>

	* dbxout.c (dbxout_global_decl): New.
	(xcoff_debug_hooks, dbx_debug_hooks): Use it.
	* sdbout.c (sdbout_finish): New.
	(sdbout_debug_hooks): Use it, add comments.
	(sdbout_global_decl): Defer initialized public vars to
	sdbout_finish.
	* varasm.c (assemble_variable): Don't output debug information
	for file-scope variables.

2001-07-21  H.J. Lu  (hjl@gnu.org)

	* config/mips/mips.c (mips_cpu): Moved into ...
	(override_options): Here.

	* config/mips/mips.h (mips_cpu_attr): Replace mips_cpu with
	mips_tune.
	(mips_cpu): Removed.

2001-07-21  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("andqi3"): Accept d as second operand.
	("iorqi3"): Likewise.
	("xorqi3"): Likewise.
	("*addhi3"): Fix constraint to avoid reloading in a soft register.
	("*subhi3_sp): Likewise.
	("*subhi3"): Likewise.
	("extendhisi2"): Accept D, X and Y as source operand to avoid
	reload problems.

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

	* doc/tm.texi: Remove DEFAULT_VTABLE_THUNKS.
	* config/freebsd.h: Likewise.
	* config/linux.h: Likewise.
	* config/openbsd.h: Likewise.
	* config/alpha/linux-elf.h: Likewise.
	* config/arm/linux-elf.h: Likewise.
	* config/d30v/d30v.h: Likewise.
	* config/fr30/fr30.h: Likewise.
	* config/ia64/aix.h: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/mips/linux.h: Likewise.
	* config/pj/pj.h: Likewise.
	* config/rs6000/linux.h: Likewise.
	* config/sparc/linux.h: Likewise.
	* config/sparc/linux64.h: Likewise.

2001-07-20  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixincl.c(test_for_changes): force unsigned char comparisons
	because getc() and char* may disagree on signedness.

2001-07-20  Richard Henderson  <rth@redhat.com>

	* doc/rtl.texi (REG_DEAD): Update for current semantics.

	* flow.c (try_redirect_by_replacing_jump): Correctly compute which
	insns to delete in the presence of cc0 in a jump insn.

Fri Jul 20 22:14:49 CEST 2001  Roman Zippel  <zippel@linux-m68k.org>
				Jan Hubicka  <jh@suse.cz>

	* m68k.md (zero_extend?i?i2 expander): Use gen_lowpart instead
	of doing the change by hand.

Fri Jul 20 21:59:42 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (set_noop_p): Return true for noop jumps.

	* expr.c (emit_single_push_insn): Add call to push expander.
	* expr.h (optab_index): Add OTI_push
	(push_optab): New constant.
	* genopinit.c (optabs): Add push_optab.
	* optabs.c (init_optab): Init push optab.
	* md.texi (push??1): Document

2001-07-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("movdi", "movdi_internal"): Use an
	expand to emit the pattern; put a REG_INC note for push/pop
	instructions.
	("movdf", "movdf_internal"): Likewise.
	("movsi", "movsi_internal"): Likewise.
	("movsf", "movsf_internal"): Likewise.
	("movhi", "movqi"): Emit a REG_INC note for push/pop instructions.

2001-07-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Don't use
	gen_highpart.

2001-07-20  Daniel Berlin  <dan@cgsoftware.com>

	* params.def: Change default max inline insns to 100.

2001-07-20  Diego Novillo  <dnovillo@redhat.com>

	* combine.c (combine_simplify_rtx): Generate a new shift operation
	when simplifying the first operand of a (neg (ashift)) expression.

2001-07-20  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* regclass.c (N_REG_INTS): Use only 32 bits per element.

2001-07-20  Kelley Cook  <kelley.cook@home.com>

	* doc/install.texi (sparc-sun-solaris*): Add in 4.x assembler bug
	information.   Move rest into ...
	(*-*-solaris): ... here.  Eliminate redundant information and
	reword necessary packages section.  Delete 4.x assembler bug info.
	(sparc-sun-*): Merge into ...
	(sparc-sun-sunos*): here.

2001-07-20  Catherine Moore  <clm@redhat.com>

	* config/v850/v850.md (casesi): Generate LABEL_REF
	with Pmode.

Fri Jul 20 14:12:57 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_zero_extend_to_Pmode): Declare.
	* i386.c (ix86_zero_extend_to_Pmode): Make global.
	* i386.md (strclrsi expander): Use it.

Fri Jul 20 13:24:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_insn_list): handle
	NOTE_INSN_DELETED_LABEL, as if it were CODE_LABEL.
	(copy_rtx_and_substitute): Likewise; behave to NOTE_INSN_DELETED_LABEL
	identically as to CODE_LABEL.

	* fold-const (fold): Convert A/B/C to A/(B*C) and
	A/(B/C) to (A/B)*C

	* except.c (connect_post_landing_pads): Delete the RESX insns.

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

	* config/mips/mips.h (ISA_HAS_NMADD_NMSUB): New macro.

	* config/mips/mips.md (nmadd/nmsub): Use macro.

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

	* cppinit.c (remove_dup_dir): Make static.
	(remove_dup_dirs): Make static. Only warn about preempting a
	system directory with a non-system directory.

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

	* ifcvt.c (noce_try_store_flag_constants): Correct order
	of parameters to trunc_int_for_mode.

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

	* reorg.c (fill_simple_delay_slots): If an instruction might throw
	an exception that will be caught within this function, do not fill
	its delay slot with any subsequent instruction.

2001-07-19  Steve Ellcey <sje@cup.hp.com>

	* tm.texi (POINTERS_EXTEND_UNSIGNED) Modify definition.
	* optabs.c (can_extend_p) Check HAVE_ptr_extend for a specialized
	pointer extension instruction.
	* combine.c (nonzero_bits,num_sign_bit_copies) Likewise.
	* simplify-rtx.c (simplify_unary_operation) Likewise.
	* explow.c (convert_memory_address) Check value of
	POINTERS_EXTEND_UNSIGNED to avoid some conversions when
	less than zero.
	* config/ia64/t-hpux (LIBGCC, INSTALL_LIBGCC, MULTILIB_OPTIONS,
	MULTILIB_DIRNAMES, MULTILIB_MATCHES) Add multilib support.
	* config/ia64/hpux.h (CPP_SPEC, ASM_SPEC, SUBTARGET_SWITCHES)
	Add Multilib Support.
	(POINTERS_EXTEND_UNSIGNED)  Define for ILP32 support.
	* config/ia64/ia64.h (MASK_ILP32, TARGET_ILP32, SUBTARGET_SWITCHES)
	Add Multilib Support.
	(POINTER_SIZE, LONG_TYPE_SIZE, MAX_LONG_TYPE_SIZE) Modify for ILP32
	support.
	* config/ia64/ia64.c (rtx_needs_barrier) Add support for addp4.
	* config/ia64/ia64.md (ptr_extend) New instruction to "swizzle"
	a 32 bit HP-UX pointer into a 64 bit HP-UX pointer.

2001-07-19  Alexandre Oliva  <aoliva@redhat.com>

	* simplify-rtx.c (simplify_replace_rtx): Try to obtain mode from
	old and new operands in `<', `3' and `b'.

2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (emit-rtl.o, c-decl.o): Depend on debug.h.
	(final.o): Don't depend on xcoffout.h, dbxout.h or sdbout.h.
	(toplev.o): Don't depend on xcoffout.h.
	* c-decl.c: Include debug.h
	(duplicate_decls): Use debug hook.
	* dbxout.c (dbxout_source_file, dbxout_args): Make static.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	(dbxout_types): Remove.
	* dbxout.h (dbxout_source_file, dbxout_types, dbxout_args): Remove.
	* debug.c (do_nothing_debug_hooks): Update.
	(debug_true_tree, debug_nothing_rtx): New.
	* debug.h (struct rtx_def): New.
	(struct gcc_debug_hooks): New hooks ignore_block,
	outlining_inline_function and label.
	(debug_true_tree, debug_nothing_rtx, dwarf2out_frame_init,
	dwarf2out_frame_finish): New.
	* dwarf2out.c (dwarf2out_ignore_block, dwarf2out_abstract_function):
	Make static, update prototype.
	(dwarf2_debug_hooks): Update.
	* dwarf2out.h (dwarf2out_ignore_block, dwarf2out_abstract_function,
	dwarf2out_frame_init, dwarf2out_frame_finish): Remove.
	* dwarfout.c (dwarf_debug_hooks): Update.
	* emit-rtl.c: Include debug.h.
	(remove_unnecessary_notes): Use debug hook.
	* final.c: Don't include dbxout.h, xcoffout.h or sdbout.h.
	(final_scan_insn): Use debug hook.
	* integrate.c (output_inline_function): Use debug hook.
	* sdbout.c (sdbout_toplevel_data, sdbout_label): Make static.
	(sdb_debug_hooks): Update.
	* sdbout.h (sdbout_label, sdbout_toplevel_data): Remove.
	* toplev.c: Don't include xcoffout.h.
	(note_outlining_of_inline_function, debug_ignore_block): Remove.
	* toplev.h (note_outlining_of_inline_function, debug_ignore_block):
	Remove.
	* tree.h (dwarf2out_do_frame): Remove.

2001-07-19  Catherine Moore  <clm@cygnus.com>

	* config/v850/v850.h (ASM_OUTPUT_LABELREF): Restore.

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

	* reload1.c (eliminate_regs_in_insn): When updating a set
	to the frame pointer to the hardware frame pointer, perform
	the update always not just when REPLACE is set.

	* reload1.c (choose_reload_regs): Don't inherit a reload
	that crosses multiple registers if registers past the first
	don't fit in the desired class.

	* ifcvt.c (noce_try_store_flag_constants): Use trunc_int_for_mode
	when negating constants.

2001-07-19  Toon Moene  <toon@moene.indiv.nluug.nl>

	* tree.def: Document restriction on {L|R}SHIFT_EXPR's second argument.
	* doc/tree.texi: Ditto.

2001-07-19  Mark Kettenis  <kettenis@wins.uva.nl>
	    Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2.c (_Unwind_FrameState): Add eh_ptr.
	(extract_cie_info): Handle "eh" augmentation properly,
	remember eh_ptr.
	(struct frame_state, __frame_state_for): New.

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

	* config/alpha/osf.h (ASM_OUTPUT_WEAK_ALIAS, ASM_WEAKEN_LABEL,
	HANDLE_SYSV_PRAGMA): Define.
	* mips-tfile.c (add_ext_symbol): Pass complete symbol ptr, inline
	previous args.
	(copy_object): Caller changed.

2001-07-19  Andreas Schwab  <schwab@suse.de>

	* configure.in (assembler dwarf2 debug_line support): Define nop
	insn for m68k.
	* configure: Regenerated.

2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (toplev.o, dwarfout.o, final.o): Don't depend on
	dwarfout.h.
	* dbxout.c (dbxout_function): Rename dbxout_function_decl, move
	to conditionally compiled block.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	* dbxout.h (dbxout_function): Remove.
	* debug.c (do_nothing_debug_hooks): Update.
	* debug.h (struct gcc_debug_hooks): New hooks function_decl,
	global_decl, deferred_inline_function.
	* dwarf2out.c (dwarf2_debug_hooks): Update.
	(dwarf2out_global_decl): New.
	* dwarfout.c: Don't include dwarfout.h.
	(dwarfout_global_decl, dwarfout_function_decl,
	dwarfout_deferred_inline_function): New.
	(dwarf_debug_hooks): Update.
	* dwarfout.h: Remove.
	* final.c: Don't include dwarfout.h.
	* sdbout.c (sdbout_global_decl): New.
	(sdbout_debug_hooks): Update.
	* toplev.c: Don't include dwarfout.h.
	(check_global_declarations, rest_of_compilation): Use new debug hooks.
	(note_deferral_of_defined_inline_function): Remove.
	* toplev.h (note_deferral_of_defined_inline_function): Remove.
	* ch/Makefile.in (lex.o): No dependence on dwarfout.h.
	* ch/lex.c: Don't include dwarfout.h.
	* cp/Make-lang.in (decl2.o): No dependence on dwarfout.h, dwarf2out.h.
	(semantics.o, optimize.o): Depend on debug.h not dwarfout.h.
	* cp/decl2.c: Don't include dwarfout.h and dwarf2out.h.
	* cp/optimize.c: Include debug.h.
	(maybe_clone_body): Use debug hook.
	* cp/semantics.c: Include debug.h.
	(expand_body): Use debug hook.
	* po/POTFILES.in: Remove dwarfout.h.

2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (c_lex): Remove CPP_INT, CPP_FLOAT cases.
	* c-parse.in (yyerror, _yylex): Similarly.
	* cppexp.c (parse_number, parse_defined, lex, _cpp_parse_expr):
	Don't use CPP_INT, CPP_FLOAT; CPP_NUMBER is enough.
	Update comments.
	* cpplib.h (CPP_INT, CPP_FLOAT): Remove.
	* cp/spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.

2001-07-18  Jeff Sturm  <jsturm@one-point.com>

	* dwarf2out.c (dwarf2out_abstract_function): Don't emit
	in-class declaration at -g1.  Fixes c++/2814.

2001-07-18  Richard Henderson  <rth@redhat.com>

	* doc/md.texi (reload_in/out): Document restrictions in predicates
	and constraints for these patterns.  Document empty string matching
	ALL_REGS.

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

	* defaults.h (ASM_OUTPUT_WEAK_ALIAS): Check for ASM_WEAKEN_LABEL.

Wed Jul 18 20:47:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c: Undo my previous patch.

2001-07-18  Tom Tromey  <tromey@redhat.com>

	For PR java/2812:
	* configure: Rebuilt.
	* configure.in: Don't check for iconv.h or iconv(); use AM_ICONV
	instead.
	* aclocal.m4 (AM_ICONV): New macro from Bruno Haible.

Wed Jul 18 18:46:30 CEST 2001  Richard Henderson <rth@cygnus.com>
				Jan Hubicka  <jh@suse.cz>

	* flow.c (redirect_edge_and_branch): Bail out on complex edges.
	(try_optimize_cfg): Do not remove tail recursive labels before sibcall.
	* jump.c (mark_jump_label): Do not forward branches.

Wed Jul 18 18:35:01 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (delete_trivially_dead_insns): Delete the libcall block
	when return value is unused.

Wed Jul 18 18:28:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (pre_insert_copy_insn): Call update_ld_motion_stores.

Wed Jul 18 12:05:29 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* gthr-posix.h (__gthread_objc_mutex_trylock): Fixed return value
	on error.  We can't blindly return the result of
	pthread_mutex_trylock because it returns a positive number on
	error, while we must return -1 on error.
	(__gthread_objc_mutex_lock, __gthread_objc_mutex_unlock): Similar
	fixes.
	Reported by Stephen Brandon <stephen@brandonitconsulting.co.uk>.

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

	* integrate.c (output_inline_function): Correct type of debug_hooks.

2001-07-18  Toon Moene  <toon@moene.indiv.nluug.nl>

	* combine.c (combine_simplify_rtx): DIV can be treated
	associatively for floats if unsafe math optimisations are enabled.

2001-07-17  Richard Henderson  <rth@redhat.com>

	* reload.c (push_secondary_reload): Accept empty-string for ALL_REGS.

2001-07-17  Richard Henderson  <rth@redhat.com>

	* calls.c (prepare_call_address): New parameter SIBCALLP.  If true,
	don't force the function address into a register.
	(expand_call, emit_library_call_value_1): Update callers.
	* builtins.c (expand_builtin_apply): Likewise.
	* expr.h (prepare_call_address): Update decl.

2001-07-17  Chandrakala Chavva  <cchavva@redhat.com>

	* config.gcc: For *-*-chorusos triplet, get chorus.h file from
	config directory.
	* config/i386/chorus.h: Move up.
	* config/sparc/chorus.h: Likewise.
	* config/rs6000/chorus.h: Likewise.
	* config/chorus.h: Moved here.

2001-07-17  Andreas Schwab  <schwab@suse.de>

	* configure.in  (assembler eh_frame optimization): Handle big
	endian.
	* configure: Regenerated.

Tue Jul 17 23:43:31 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (epxand_expr): Convert divisions into multiplications by
	reciprocals if -ffast-math.

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

	* dbxout.c (dbxout_really_begin_function): Rename to
	dbxout_begin_function.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	(dbxout_begin_function): Remove.
	(dbxout_function): Update.
	(dbxout_source_line): Update prototype.
	* dbxout.h (dbxout_begin_function): Remove.
	* debug.c (do_nothing_debug_hooks): Update.
	(debug_nothing_tree): Update.
	(debug_nothing_charstar_rtx): Remove.
	* debug.h (union tree_node): Declare.
	(struct rtx_def): Remove.
	(gcc_debug_hooks): New hooks begin_prologue, end_prologue,
	begin_function.  Change source_line prototype.
	(debug_nothing_tree): New.
	(debug_nothing_charstar_rtx): Delete.
	(dwarf2out_begin_prologue): Moved from ...
	* tree.h: ... here.
	* dwarf2out.c (dwarf2_debug_hooks): Update.
	(dwarf2out_begin_prologue): Update prototype.  If genuine dwarf2
	debug info, call dwarf2out_source_line.
	(dwarf2out_souce_line): Update prototype.
	* dwarfout.c (dwarfout_begin_function): Rename dwarfout_end_prologue.
	Change prototype, make static.
	(dwarfout_source_line): Update prototype.
	(dwarf_debug_hooks): Update.
	* dwarfout.h (dwarfout_begin_function): Remove.
	* final.c (final_start_function, final_scan_insn): Use appropriate
	debug hooks, update to use notice_source_line.
	(output_source_line): Rename notice_source_line.  Don't call the
	source_line debug hook.
	* sdbout.c (sdbout_begin_function): Rename sdbout_begin_prologue,
	make static, update prototype.
	(sdbout_mark_begin_function): Rename sdbout_begin_function, update
	prototype.
	(sdbout_end_prologue): New.
	(sdbout_source_line): Update prototype.
	(sdbout_debug_hooks): Update.
	(sdbout_symbol): Remove unused var.
	* sdbout.h (sdbout_begin_function, sdbout_mark_begin_function):
	Delete.
	* varasm.c: Include debug.h.
	(assemble_start_function): Use begin_function debug_hook.
	* xcoffout.c (xcoffout_begin_prologue): Rename xcoffout_begin_function,
	update with prototype.
	(xcoffout_source_line): Update prototype.
	* xcoffout.h (xcoffout_begin_prologue): Rename xcoffout_begin_function,
	update prototype.
	(xcoffout_source_line): Update prototype.

2001-07-17  Richard Henderson  <rth@redhat.com>

	* c-typeck.c (build_binary_op): Do not shorten unsigned
	right shift after sign extension.

Tue Jul 17 16:56:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Attempt to simplify
	a*(b/c) as (a*b)/c for floats in unsafe_math mode.

	* simplify-rtx.c (avoid_constatn_pool_reference): New static function.
	(simplify_binary_operation, simplify_unary_operation,
	 simplify_relational_operation): Use it.

	* combine.c (combine_simplify_rtx): Don't do associative law
	on divisions; allow associative law on floats.

2001-07-17  H.J. Lu <hjl@gnu.org>
	    Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>

	* c-pragma.h (HANDLE_PRAGMA_WEAK): Define iff ASM_WEAKEN_LABEL and
	ASM_OUTPUT_WEAK_ALIAS are defined.
	* defaults.h (ASM_OUTPUT_WEAK_ALIAS): Define if possible.
	* config/mips/iris6.h (ASM_OUTPUT_WEAK_ALIAS, ASM_WEAKEN_LABEL):
	Moved ...
	* config/mips/iris5.h: ... here.
	(HANDLE_SYSV_PRAGMA): Defined as 1.
	* varasm.c (weak_finish): Use ASM_OUTPUT_WEAK_ALIAS.
	* doc/tm.texi (ASM_OUTPUT_WEAK_ALIAS): Support the undefined weak
	symbol.

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

	* c-parse.in (all_prefix_attributes): New variable.
	(PUSH_DECLSPEC_STACK, POP_DECLSPEC_STACK): New macros.
	(maybe_resetattrs): New production.
	(c_parse_init, datadef, fndef, datadecl, setspecs, setattrs, decl,
	maybe_type_quals_setattrs, initdecls, notype_initdecls, initdcl,
	notype_initdcl, nested_function, notype_nested_function,
	component_decl, components, components_notype,
	component_declarator, component_notype_declarator,
	absdcl_maybe_attribute, parm, firstparm, setspecs_fp, ivar_decl,
	ivars, mydecl, myparm): Update.  Avoid prefix attributes just
	after a comma being applied to more than one declarator.
	* doc/extend.texi (Attribute Syntax): Update.  Remove
	documentation of bugs that are no longer present.

2001-07-13  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h: Change TUNE_MIPS* options to use
	mips_tune.
	(EXTRA_SPECS): Add cc1_cpu_spec.
	* config/mips/mips.md (muldf3): Fix typo.

2001-07-16  Richard Henderson  <rth@redhat.com>

	* config/m68k/m68k.c: Include expr.h and reload.h.
	(print_operand_address) [16 bit int]: Cast INTVAL to int for %d.
	[general int]: Use HOST_WIDE_INT_PRINT_DEC.

2001-07-16  Daniel Berlin  <dan@cgsoftware.com>
	    Richard Henderson  <rth@redhat.com>

	* cse.c (set_live_p): Take INSN argument for cc0; update callers.
	(insn_live_p): Fix fall off end of function.
	(dead_libcall_p): Remove COUNTS argument; update callers.
	(delete_trivially_dead_insns): Remove unused variables.

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

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix output format for
	x86-64 pic support.

	* lcm.c (optimize_mode_switching): Avoid warning for unused
	variable if !NORMAL_MODE.

	* flow.c (try_crossjump_to_edge): Remove unused variable.

2001-07-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* inclhack.def (ultrix_atexit_param): New hack to fix ultrix 4.3
	atexit declaration in stdlib.h.

2001-07-16  Richard Begg  <Richard.Begg@colesmyer.com.au>

	* fixinc/inclhack.def(hpux_vsnprintf): brokenness in stdio.h

Mon Jul 16 22:48:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (CLEANUP_PRE_SIBCALL): New constant.
	* except.c (finish_eh_generation): Update call of cleanup_cfg;
	do rebuild_jump_labels instead of jump_optimize
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise.
	* toplev.c (rest_of_compulation): Likewise for -Wreturn_type.
	* flow.c (try_optimize_cfg): Remove unneeded code_labels.

	* flow.c: Include timevar.h
	(find_basic_block): Push/pop timevar;
	(cleanup_cfg): Likewise.
	* timevar.def (TV_CFG, TV_CLEANUP_CFG): New.
	* Makefile: Add dependencies on timevar.h

	* integrate.c (save_for_inline): Kill all BASIC_BLOCK notes.
	(copy_insn_list): Avoid killing of BASIC_BLOCK notes.

	* rtl.h (delete_trivially_dead_insns): Add new parameter.
	* toplev.c (rest_of_compilation): Update calls.
	* cse.c (set_live_p, insn_live_p, dead_libcall_p): Break out from ...
	(delete_trivially_dead_insns): ... here; accept new argument
	preserve_basic_blocks; preserve basic blocks if set.

	* reg-stack.c (stack_regs_mentioned): Return 0 if
	stack_regs_mentioned_data is not initialized.
	(reg_to_stack): Make stack_regs_mentioned survive after the
	reg-stack is completted; do not call cleanup_cfg.
	* toplev.c (rest_of_compilation): Do cleanup_cfg before bb-reorder;
	make cleanup_cfg after bb-reorder to output to debug file.

2001-07-16  Richard Henderson  <rth@redhat.com>

	* regclass.c (init_reg_sets): Use only 32 bits per initializer
	from int_reg_class_contents.

2001-07-16  Richard Henderson  <rth@redhat.com>

	* hard-reg-set.h (regs_invalidated_by_call): Declare.
	* regclass.c (regs_invalidated_by_call): Move from cse.c.
	(init_reg_sets_1): Move initialization from cse_main.
	* cse.c (regs_invalidated_by_call): Move to regclass.c.
	(cse_main): Move its initialization also.
	* df.c (df_insn_refs_record): Use regs_invalidated_by_call.
	* flow.c (propagate_one_insn): Likewise.
	* gcse.c (compute_hash_table): Likewise.
	(compute_kill_rd, compute_store_table): Likewise.
	* sched-deps.c (sched_analyze_1): Likewise.

Mon Jul 16 18:07:07 2001  J"orn Rennecke <amylaar@redhat.com>

	* gcse.c (pre_insert_copy_insn): Use gen_move_insn instead of
	gen_rtx_SET.

2001-07-16  Steve Ellcey <sje@cup.hp.com>

	* dominance.c (calc_dfs_tree_nonrec): Reverse order of tests
	in if statement so we don't access undefined memory.

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

	* gcse.c: Update comment at top.
	Update comment on mem handling.
	mem_last_set, mem_first_set, mem_set_in_block: gone.
	Declaration of reg_set_info: gone.
	(oprs_unchanged_p): Don't use mem_*set_* anymore. They are
	pointless with load_killed_in_block_p (they are *more*
	conservative then it, not less, and less accurate).
	(oprs_not_set_p): Ditto.
	(alloc_gcse_mem): Don't allocate mem_set_in_block
	(free_gcse_mem): Don't free it, either.
	(record_last_mem_set_info): Update comment in front, remove
	mem_*set_* stuff. Note the reason we don't handle stores directly
	here.
	(compute_hash_table): Update comments to reflect reality. Remove
	mem_*set_* references.
	(reset_opr_set_tables): Remove mem_*set_* references.
	(mark_call): Ditto.
	(mark_set): Ditto.  Also remove double sets of bitmaps for REG's.
	(mark_clobber): Ditto (on both parts, we double set here too).
	(expr_killed_p): Remove mem_set_in_block test.
	(compute_transp): Remove mem_set_in_block test.

	* ssa-ccp.c: (optimize_unexecutable_edges): Add note about removal
	of edge, and removal of phi alternative to dump file.
	(ssa_ccp_substitute_constants): Add note about register now being
	constant, and which uses were replaced in what insns to dump file.

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

	* gcov.c (output_data): Use HOST_WIDEST_INT_PRINT_DEC to output
	variables of type HOST_WIDEST_INT.

	* libgcc2.c (__bb_exit_func): Handle gcov_type as long long.
	(__bb_exit_func): Correct type of count_max to avoid overflow.
	(num_digits): Handle long long argument.

	* combine.c (gen_lowpart_for_combine): Remove unused variable.

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

	* output.h (sdb_begin_function_line): Restore as an extern
	variable.
	* sdbout.c (sdb_begin_function_line): Make extern.

2001-07-15  Richard Henderson  <rth@redhat.com>

	* machmode.def (Pmode): Redefine if GENERATOR_FILE.
	* genrecog.c (maybe_both_true_mode): New.
	(maybe_both_true_2): Use it.
	(write_switch): Don't put Pmode in a switch.
	* rtl.c (mode arrays): Don't explicitly size them.

Sun Jul 15 14:07:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Fix register_life_up_to_date
	handling; move unconditional splitting before mode switching.

	* i386.md (type): Add fistp type.
	(i387, length_attr, scheduling definitions): Handle this type.
	(fix_trunc?f?i2): Revamp to use mode switching.
	(fix_trunct?f?i_nonmemory, fix_trunc?f?i_memory): New patterns.
	* i386.h (fp_cw_mode): New enum
	(OPTIMIZE_MODE_SWITCHING, NUM_MODES_FOR_MODE_SWITCHING, MODE_NEEDED,
	MODE_PRIORITY_TO_MODE, ENUM_MODE_SET): New macros.

Sun Jul 15 12:53:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (integrate.o): Add debug.h.
	* integrate.c (debug.h): Add.
	(output_inline_function): Save, reset, and restore debug_hooks.

2001-07-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_emit_xfloating_compare): Use CCmode
	instead of COMPARE for the EQUIV expression.

2001-07-15  Richard Henderson  <rth@redhat.com>

	* flow.c (redirect_edge_and_branch_force): Initialize
	global_live_at_start and global_live_at_end.
	(allocate_bb_life_data): Export.
	* basic-block.h (allocate_bb_life_data): Declare.
	* toplev.c (rest_of_compilation): Call it.

2001-07-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_tablejump_addr_vec): New.
	(alpha_tablejump_best_label): New.
	* config/alpha/alpha-protos.h: Declare them.
	* config/alpha/alpha.md: Use braced strings for code blocks.
	(tablejump_osf): Break out add with r29.
	(tablejump_osf_internal): Remove.
	(tablejump_osf_nt_internal): Rename from tablejump_nt_internal,
	use alpha_tablejump_addr_vec and alpha_tablejump_best_label.

Sun Jul 15 00:53:35 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c (scan_loop): Add USEs inside PARALLELs into dependencies
	of the movable.

	* toplev.c (rest_of_compilation): Allow new pseudoes for mode switching.

	* i386-protos.h (ix86_split_fp_branch): Update prototype.
	(ix86_fp_jump_nontrivial_p): New.
	* i386.md (fp_jcc_?): Update call of split_fp_branch;
	use ix86_fp_jump_nontrivial_p.
	* i386.c (ix86_fp_jump_nontrivial_p): New.
	(ix86_split_fp_branch): Accept code instead of rtx.
	(ix86_expand_compare): Expand comparison early in case
	doing so is resonably cheap.

2001-07-15  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/rs6000/sysv4.h (CPP_ENDIAN_BIG_SPEC): Assert 'endian'
	not 'machine'.
	(CPP_ENDIAN_LITTLE_SPEC): Assert 'endian' not 'machine'.
	(CPP_ENDIAN_SOLARIS_SPEC): Assert 'endian' not 'machine'.

2001-07-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* dbxout.c (dbxout_source_line): Make static, update prototype.
	(dbx_debug_hooks, xcoff_debug_hooks): Add new hooks.
	(dbxout_init, dbxout_finish, dbxout_source_line,
	dbxout_begin_block, dbxout_end_block): Update for new prototypes.
	* dbxout.h (dbxout_source_line): Delete.
	* debug.c (debug_nothing_file, debug_nothing_file_int,
	debug_nothing_file_charstar_rtx): New.
	(do_nothing_debug_hooks): Update.
	(debug_nothing_void, debug_nothing_charstar_rtx,
	dwarf2out_end_epilogue): New.
	(debug_nothing_file_charstar, debug_nothing_file_int_int): Rename.
	* debug.h (struct rtx_def): Declare.
	(gcc_debug_hooks): New hooks source_line, end_epilogue
	and end_function.
	(debug_nothing_void, debug_nothing_charstar_rtx,
	dwarf2out_end_epilogue): New.
	(debug_nothing_file_charstar, debug_nothing_file_int_int): Rename.
	* dwarf2out.c (dwarf2out_source_line): Make static, update prototype.
	(dwarf2_debug_hooks): Update.
	(dwarf2out_init, dwarf2out_finish, dwarf2out_source_line,
	dwarf2out_begin_block, dwarf2out_end_block): Update for new prototypes.
	* dwarf2out.h (dwarf2out_source_line): Remove.
	* dwarfout.c (dwarfout_end_epilogue, dwarfout_end_function):
	Make static, update prototype.
	(dwarfout_init, dwarfout_finish, dwarfout_source_line,
	dwarfout_begin_block, dwarfout_end_block): Update for new prototypes.
	(dwarf_debug_hooks): Update.
	* dwarfout.h (dwarfout_end_epilogue, dwarfout_source_line,
	dwarfout_end_function): Remove.
	* final.c (profile_function): Use debug hooks for ending functions
	and epilogues.
	(output_source_line, final_end_function): Update prototype,
	use debug hooks.
	(final_start_function, final_scan_insn): Update.
	* output.h (sdb_begin_function_line): Remove.
	(final_end_function): Update prototype.
	* sdbout.c (sdb_begin_function_line): Make static.
	(PUT_SDB_EPILOGUE_END): Move to sdbout_end_epilogue.
	(sdbout_source_line): New.
	(sdbout_end_epilogue, sdbout_end_function): Make static, update
	prototypes.
	(sdb_debug_hooks): Update.
	(sdbout_init, sdbout_source_line,
	sdbout_begin_block, sdbout_end_block): Update for new prototypes.
	* sdbout.h (sdbout_end_epilogue, sdbout_end_function): Remove.
	* toplev.c (compile_file, rest_of_compilation): Update.
	* tree.h (dwarf2out_end_epilogue): Move to debug.h.
	* xcoffout.c (xcoffout_source_line, xcoffout_begin_block,
	xcoffout_end_block, xcoffout_end_epilogue, xcoffout_end_function):
	Update for prototype changes.
	* xcoffout.h (xcoffout_source_line, xcoffout_begin_block,
	xcoffout_end_block, xcoffout_end_epilogue): Update prototypes.

2001-07-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (TARGET_ABI_OSF): New.
	(TARGET_ABI_WINDOWS_NT, TARGET_ABI_OPEN_VMS): Rename; update users.
	* config/alpha/alpha-protos.h: Update TARGET_ABI_* users.
	* config/alpha/alpha.c: Likewise.
	* config/alpha/alpha.md: Likewise.
	* config/alpha/alpha32.h: Likewise.
	* config/alpha/vms.h: Likewise.
	(OPEN_VMS): Remove.

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

	* config/alpha/alpha.md: Use define_constants for unspec values.
	Substitute throughout.

2001-07-14  Tim Josling  <tej@melbpc.org.au>

	* tree.def (EXPON_EXPR) remove. Never supported anyway.

2001-07-14  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md: Remove unused constraints from define_split's.

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

	* ifcvt.c (find_cond_trap): Test for exit block.

Sun Jul 15 00:50:20 CEST 2001  Jan Hubicka  <jh@suse.cz>

	Re-install recently reverted patch.
	* emit-rtl.c (try_split): Update mark_jump_label call.
	* flow.c (find_sub_basic_blocks): Likewise.
	* jump.c (cross_jump_death_matters, find_cross_jump, do_cross_jump,
	jump_back_p): Kill.
	(mark_all_labels): Kill second parameter.
	(jump_optimize, jump_optimize_1): Kill cross_jump parameter.
	(rebuild_jump_labels, jump_optimize_minimal): Update call
	of jump_optimize_1.
	(jump_optimize_1): Kill crossjumping code.
	(mark_jump_label): Kill cross_jump parameter.
	* rtl.h (mark_jump_label, jump_optimize): Update prototypes.
	(JUMP_CROSS_JUMP, JUMP_CROSS_JUMP_DEATH_MATTERS): Kill.
	* reg-stack.c (reg_to_stack): Do not rebuild if not needed; do
	 splitting.
	* toplev.c (enum dump_file_index): Kill DFI_jump2; put DFI_stack before
	DFI_bpro.
	(dump_file_info): Likewise.
	(rest_of_compilation): Update calls to jump_optimize; kill jump2 pass;
	reorganize passes to do reg-stack first, bb-reorder second.
	* invoke.texi (-d letters doc): Remove the jump2 pass.

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

	* ifcvt.c (find_cond_trap): New.
	(find_if_header): Call it.
	(merge_if_block): Relax existing jump sanity check.
	* jump.c (jump_optimize_1): Remove conditional trap handling.

2001-07-14  Alan Modra  <amodra@bigpond.net.au>

	* config/pa/pa.c (emit_hpdiv_const): Return reg is r2 for 64-bit
	millicode.
	(insn_refs_are_delayed): Correct comment.
	* config/pa/pa.h (INSN_REFERENCES_ARE_DELAYED): Likewise.
	* config/pa/pa.md (mulsi3): If TARGET_64BIT, clobber r2
	instead of r31.  Make associated insn !TARGET_64BIT, and
	provide an additional 64-bit insn that clobbers r2.
	(divsi3): Likewise.
	(udivsi3): Likewise.
	(modsi3): Likewise.
	(umodsi3): Likewise.

Sat Jul 14 02:58:38 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* bb-reorder.c (skip_insn_after_block): Get past the line number notes.

	* flow.c (redirect_edge_and_branch_force, split_edge,
	try_crossjump_to_edge): Use set_block_for_new_insns.
	* bb-reorder.c (emit_jump_to_block_after): Call set_block_for_new_insns.

2001-07-13  H.J. Lu  (hjl@gnu.org)

	* config/elfos.h (UNIQUE_SECTION): Enable .bss section with
	the correct patch.

2001-07-13  Geoffrey Keating  <geoffk@redhat.com>

	Revert H.J. Lu's UNIQUE_SECTION patch of 2001-07-13.

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

	* c-common.c (decl_attributes): Take a pointer to the node to
	which attributes are to be attached, and a flags argument.
	* c-common.h (enum attribute_flags): New.
	(decl_attributes): Update prototype.
	* c-decl.c (start_decl, push_parm_decl, finish_struct,
	finish_enum, start_function): Update calls to decl_attributes.
	* c-parse.in (component_declarator, component_notype_declarator,
	label): Update calls to decl_attributes.

Fri Jul 13 23:04:00 2001  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md (strlenhi): PARALLEL keyword removed.
	* config/avr/avr.c (legitimate_address_p): Return value changed
	from letter to register classes. For better debugging.

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

	* jump.c (reversed_comparison_code_parts): Fix comment typos.

2001-07-13  H.J. Lu  (hjl@gnu.org)

	* config/elfos.h (UNIQUE_SECTION): Enable .bss section.

2001-07-13  Marc Espie  <espie@cvs.openbsd.org>

	* config.gcc (*-*-openbsd*):  Add fragment to compile libgcc
	correctly for shared configurations.
	* config/t-libgcc-pic:  New.
	* config/{i386,m68k,sparc}/t-openbsd:  New.
	* config/openbsd.h:  Include cpu_spec in cpp_spec where needed.
	Support -shared.  Support debugging libraries with -g.
	* config/i386/openbsd.h:  Correct ASM_COMMENT_START.  Ensure dwarf2
	frame information does not emit pointer diffs.
	* config/sparc/openbsd.h:  Ensure dwarf2 frame information does not
	emit pointer diffs.

2001-07-13  Geoffrey Keating  <geoffk@redhat.com>

	Revert Jan Hubicka's patch of Fri Jul 13 14:46:21 CEST 2001.

2001-07-13  David Edelsohn  <edelsohn@gnu.org>

	* combine.c (try_combine): Ensure const_int pow2 is positive.

2001-07-13  Hartmut Penner  <hpenner@de.ibm.com>

	* config.gcc: Add configuration for s/390.
	* config/s390/s390.c: New. Subroutines for code generation.
	* config/s390/s390.h: New. Definitions for s/390.
	* config/s390/s390-protos.h: New. Prototypes.
	* config/s390/linux.h: New. Definitions for linux for s/390.
	* config/s390/linux64.h: New. Definitions for linux for zSeries.
	* config/s390/t-linux: New. Makefile fragment.
	* config/s390/s390.md: New. Machine description for s/390 and zSeries.
	* config/s390/fixdfdi.h: New. Fix L_fix*di.

Fri Jul 13 14:46:21 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (try_split): Update mark_jump_label call.
	* flow.c (find_sub_basic_blocks): Likewise.
	* jump.c (cross_jump_death_matters, find_cross_jump, do_cross_jump,
	jump_back_p): Kill.
	(mark_all_labels): Kill second parameter.
	(jump_optimize, jump_optimize_1): Kill cross_jump parameter.
	(rebuild_jump_labels, jump_optimize_minimal): Update call
	of jump_optimize_1.
	(jump_optimize_1): Kill crossjumping code.
	(mark_jump_label): Kill cross_jump parameter.
	* rtl.h (mark_jump_label, jump_optimize): Update prototypes.
	(JUMP_CROSS_JUMP, JUMP_CROSS_JUMP_DEATH_MATTERS): Kill.
	* reg-stack.c (reg_to_stack): Do not rebuild if not needed; do
	 splitting.
	* toplev.c (enum dump_file_index): Kill DFI_jump2; put DFI_stack before
	DFI_bpro.
	(rest_of_compilation): Update calls to jump_optimize; kill jump2 pass;
	reorganize passes to do reg-stack first, bb-reorder second.
	* invoke.texi (-d letters doc): Remove the jump2 pass.

2001-07-12  Steve Ellcey <sje@cup.hp.com>

	* toplev.c (compile_file): Put call of ASM_FILE_START inside ifdef.

Thu Jul 12 17:57:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_optimize_cfg): Delete whole chain of trivially dead
	basic blocks.
	(verify_flow_info): Make diagnostics prettier.

Thu Jul 12 16:48:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (find_basic_blocks_1): Do not emit NOP after call.

	* flow.c (outgoing_edges_match): Return early if condition reversal
	failed.

2001-07-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (print_operand): Extend '%D' to memory operands.
	(mips_move_2words): When splitting a move into two instructions,
	prefix the second address operand with '%D'.

2001-07-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (final.o): Depend on debug.h.
	* dbxout.c (dbxout_begin_block, dbxout_end_block): New.
	(dbx_debug_hooks): Add new hooks.
	(xcoff_debug_hooks): New.
	* debug.c (debug_nothing_file_int_int): New.
	(do_nothing_debug_hooks): Update.
	* debug.h (gcc_debug_hooks): New hooks begin_block and end_block.
	(debug_nothing_file_int_int): New.
	* dwarf2out.c (dwarf2out_begin_block, dwarf2out_end_block): Make
	static, update prototype.
	(dwarf2_debug_hooks): Update.
	* dwarf2out.h (dwarf2out_begin_block, dwarf2out_end_block): Remove.
	* dwarfout.c (dwarfout_begin_block, dwarfout_end_block): Make
	static, update prototype.
	(dwarf_debug_hooks): Update.
	* dwarfout.h (dwarfout_begin_block, dwarfout_end_block): Remove.
	* final.c: Include debug.h.
	(final_scan_insn): Use debug hooks when beginning and ending blocks.
	* sdbout.c (sdbout_begin_block, sdbout_end_block): Make
	static, update prototype.
	(sdb_debug_hooks): Update.
	* sdbout.h (sdbout_begin_block, sdbout_end_block): Remove.
	* toplev.c: Distinguish between xcoff and dbx.

	* f/lex.c (ffelex_file_pop_, ffelex_file_push_, ffelex_hash_):
	Call all debug hooks, not just dwarf ones.

2001-07-11  Timothy Wall  <twall@redhat.com>

	* config.gcc: Add configuration for AIX5/IA64.
	* config/ia64/aix.h: New.  AIX5/IA64-specific configuration.
	* config/ia64/crt[in].asm: New.  Generic static ctor/dtor
	support prefix/suffix code.
	* config/ia64/t-aix: New.  Makefile fragment.
	* config/ia64/unwind-aix.c: New.  Unwind table entry lookup.

2001-07-11  Kazu Hirata  <kazu@hxi.com>

	* recog.c (validate_change): Fix a comment typo.

2001-07-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (c-lex.o): Wrap long lines.  Depend on debug.h.
	* c-lex.c (cb_file_change, cb_define, cb_undef): Use debug
	hooks directly.
	* dbxout.c (dbx_debug_hooks): Add new hooks.
	(dbxout_start_new_source_file): Rename dbxout_start_source_file,
	make static.
	(dbxout_resume_previous_source_file): Rename dbxout_end_source_file,
	make static.
	* dbxout.h (dbxout_start_new_source_file,
	dbxout_resume_previous_source_file): Delete.
	* debug.c (do_nothing_debug_hooks): Add new hooks.
	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
	(debug_nothing_int_charstar, debug_nothing_int): New.
	* debug.h (gcc_debug_hooks): New hooks define, undef,
	start_source_file and end_source_file.
	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
	(debug_nothing_int_charstar, debug_nothing_int): New.
	* dwarf2out.c (dwarf2_debug_hooks): Add new hooks.  Move into
	the conditionally compiled section.
	(dwarf2out_start_source_file, dwarf2out_end_source_file,
	dwarf2out_define, dwarf2out_undef): Make static.
	* dwarf2out.h (dwarf2out_start_source_file, dwarf2out_end_source_file,
	dwarf2out_define, dwarf2out_undef): Remove.
	* dwarfout.c (dwarf_debug_hooks): Add new hooks.
	(dwarfout_start_source_file, dwarfout_end_source_file,
	dwarfout_define, dwarfout_undef): Make static.
	(dwarfout_start_source_file_check,
	dwarfout_end_source_file_check): New.
	(dwarfout_define, dwarfout_finish): Update.
	* dwarfout.h (dwarfout_start_new_source_file,
	dwarfout_resume_previous_source_file, dwarfout_define,
	dwarfout_undef): Remove.
	* sdbout.c (sdb_debug_hooks): Add new hooks.
	(sdbout_start_new_source_file): Rename sdbout_start_source_file,
	make static.
	(sdbout_resume_previous_source_file): Rename sdbout_end_source_file,
	make static, take an arg.
	* sdbout.h (sdbout_start_new_source_file,
	sdbout_resume_previous_source_file): Delete.
	* toplev.c (debug_start_source_file, debug_end_source_file,
	debug_define, debug_undef): Delete.
	* toplev.h (debug_start_source_file, debug_end_source_file,
	debug_define, debug_undef): Delete.

	* java/jcf-parse.c: Include debug.h.
	(parse_class_file): Update to use debug hooks directly.
	* java/Make-lang.in (jcf-parse.o): Depend on debug.h.

Wed Jul 11 10:07:18 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (set_mem_alias_set): New function.
	* rtl.h (set_mem_alias_set): Declare it.
	* builtins.c (expand_builtin_return_addr): Call it instead of
	using MEM_ALIAS_SET accessor.
	(expand_builtin_setjmp_setup, expand_builtin_longjmp): Likewise.
	(get_memory_rtx, expand_builtin_va_arg): Likewise.
	(expand_builtin_va_copy):Likewise.
	* caller-save.c (setup_save_areas): Likewise.
	* calls.c (compute_argument_addresses): Likewise.
	* explow.c (set_mem_attributes): Likewise.
	* expr.c (emit_single_push_insn, emit_push_insn): Likewise.
	(expand_assignment, store_constructor_field, store_field): Likewise.
	(expand_expr_unaligned): Likewise.
	* function.c (assign_stack_temp_for_type): Likewise.
	(put_reg_into_stack, gen_mem_addressof): Likewise.
	* ifcvt.c (noce_try_cmove_arith): Likewise.
	* reload1.c (reload, alter_reg): Likewise.
	* config/alpha/alpha.c (get_aligned_mem): Likewise.
	(alpha_set_memflags_1, alpha_expand_unaligned_load): Likewise.
	(alpha_expand_unaligned_store): Likewise
	(alpha_expand_unaligned_load_words): Likewise.
	(alpha_expand_unaligned_store_words): Likewise.
	(alpha_expand_block_clear, alpha_expand_prologue): Likewise.
	(alpha_expand_epilogue): Likewise.
	* config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
	* config/clipper/clipper.c (clipper_builtin_saveregs): Likewise.
	* config/i386/i386.c (legitimize_pic_address): Likewise.
	* config/i960/i960.c (setup_incoming_varargs): Likewise.
	* config/ia64/ia64.c (spill_restore_mem): Likewise.
	* config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
	* config/m8k/m88k.c (m88k_builtin_saveregs): Likewise.
	* config/mips/mips.c (mips_va_arg): Likewise.
	* config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
	(setup_incoming_varargs, rs6000_va_arg): Likewise.
	(rs6000_emit_eh_toc_restore, rs6000_emit_prologue): Likewise.
	(rs6000_emit_epilogue): Likewise.
	* config/sh/sh.c (sh_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_va_arg): Likewise.
	* config/v850/v850.c (v850_va_arg): Likewise.

Wed Jul 11 21:27:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (merge_blocks_move_successor_nojumps): Do not crash
	when fallthru edge is present.
	(mege_blocks): Handle case where creation of jump insn
	is required.

	* basic-block.h (CLEANUP_EXPENSIVE, CLEANUP_CROSSJUMP,
	CLEANUP_POST_REGSTACK): New constants.
	* except.c (finish_eh_generation): Update call of cleanup_cfg,
	* jump.c (rtx_renumbered_equal_p): Handle 't' fields.
	* output.h (cleanup_cfg): Update prototype.
	* reg-stack.c (reg_to_stack): Use cleanup_cfg instead of jump_optimize
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Update
	cleanup_cfg call; kill missleading comment.
	* toplev.c (rest_of_compilation): Update all cleanup_cfg calls.
	* flow.c (merge_blocks, try_optimize_cfg, cleanup_cfg): Accept mode
	parameter; control optimizations performed using it.
	(flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge,
	try_crossjump_bb): New functions.

2001-07-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (pa_output_function_prologue): Delete prototype.  Make function
	extern.
	* pa.h (ASM_OUTPUT_MI_THUNK): Rename output_function_prologue to
	pa_output_function_prologue.
	* pa-protos.h (pa_output_function_prologue): New prototype.

2001-07-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* stmt.c (emit_case_nodes): Widen high and low instead of new_bound
	and low to get correct sign extension in low+high test.

2001-07-11  Janis Johnson <janis@us.ibm.com>

	* gcov.c (arcdata): Use gcov_type to fix branch percentage
	for large hit count.

	* profile.c (branch_prob): Fix .bbg info for computed gotos
	and C++ EH code.

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

	* stmt.c (parse_output_constraint): New function, split out
	from ...
	(expand_asm_operands): ... here.  Use parse_output_constraint.
	* tree.h (parse_output_constraint): Declare it.

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

	* bitmap.c: Comment some functions; fiddle whitespace.
	(bitmap_free): Don't export.
	(bitmap_element_allocate): Use memset.
	* bitmap.h (bitmap_free): Don't declare.

2001-07-11  Daniel Berlin  <dan@cgsoftware.com>

	* gcse.c, lcm.c, sched-deps.c:
	s/free on sbitmap vectors/sbitmap_vector_free on sbitmap vectors/g

	* flow.c (flow_loops_find): Free dom if we found no loops, since
	we aren't going to save it.

	* lcm.c (pre_edge_rev_lcm): Free st_antin, st_antout when we are
	done.

Wed Jul 11 09:00:48 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa-ccp.c (ssa_fast_dce): Free worklist when completed.

Wed Jul 11 10:07:18 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (dwarf2out_init, dwarf2out_finish): Add dummy version
	#ifndef DWARF2_DEBUGGING_INFO.

2001-07-11  Richard Sandiford  <rsandifo@redhat.com>

	* simplify-rtx.c (simplify_gen_subreg): Return null for QUEUED rtxes.

2001-07-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (gen_int_relational): Tell the caller not to
	reverse a branch if a NE comparison is implemented with GTU.

2001-07-11  Richard Sandiford  <rsandifo@redhat.com>
	    H.J. Lu  <hjl@gnu.org>

	* mips.md (call_internal1): Use CONSTANT_ADDRESS_P to check for
	constant addresses.
	(call_internal2): Likewise.
	(call_value_internal1): Likewise.
	(call_value_internal2): Likewise.
	(call_value_multiple_internal1): Likewise.
	(call_value_multiple_internal2): Likewise.

2001-07-10  Kazu Hirata  <kazu@hxi.com>

	* calls.c (emit_library_call_value_1): Fix a comment typo.
	* dwarf2out.c (mem_loc_descriptor): Likewise.
	* config/i386/i386.c (ix86_expand_aligntest): Likewise.

2001-07-11  David Billinghurst <David.Billinghurst@riotinto.com>

	* simplify-rtx.c (simplify_subreg): Fix typo in comment

Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* recog.c (offsettable_address_p): Handle LO_SUM case.
	* config/mips/mips.c (double_memory_operand): Use adjust_address_nv
	instead of plus_constant.

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

	* reload1.c (merge_assigned_reloads): After a RELOAD_OTHER merge,
	fix setting of the reloads of that reload to RELOAD_FOR_OTHER_ADDRESS.

Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/rs6000/rs6000.c (print_operand, case 'L', 'Y', 'Z'): Use
	adjust_address_nv instead of plus_constant.

2001-07-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (toplev.o, sdbout.o, dbxout.o, dwarfout.o,
	dwarf2out.o): Depend on debug.h, wrap long lines.
	* dbxout.c: Include debug.h.
	(dbx_debug_hooks): New.
	(dbxout_init): Make static, take just 2 args.
	(dbxout_finish): Make static.
	* dbxout.h (dbxout_init, dbxout_finish): Delete.
	* debug.c: New file.
	* debug.h: New file.
	* dwarf2out.c: Include debug.h.
	(dwarf2_debug_hooks): New.
	(dwarf2out_init): Make static.
	(dwarf2out_finish): Make static, take 2 args.
	* dwarf2out.h (dwarf2out_init, dwarf2out_finish): Delete.
	* dwarfout.c: Include debug.h.
	(dwarf_debug_hooks): New.
	(dwarfout_init): Make static.
	(dwarfout_finish): Make static, take 2 args.
	* dwarfout.h (dwarfout_init, dwarfout_finish): Delete.
	* sdbout.c: Include debug.h.
	(sdb_debug_hooks): New.
	(sdbout_init): Make static, take 2 args.
	* sdbout.h (sdbout_init): Delete.
	* toplev.c: Include debug.h.
	(debug_hooks): New.
	(compile_file): Set deubg_hooks based on command line options.
	Use the hooks unconditionally rather than conditional compilation.

Tue Jul 10 09:04:45 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa-ccp.c (first_phi_node): Remove.  Replace uses with calls to
	first_insn_after_basic_block_note instead.

	* df.c (df_bb_refs_unlink): #if 0 out for now.

2001-07-10  David Billinghurst <David.Billinghurst@riotinto.com

	* ssa.h: Add prototype for ssa_const_prop
	* ssa-ccp.c: Add prototype for ssa_fast_dce and mark_references
	(ssa_ccp_substitute_constants): Fix signed vs unsigned comparison
	(ssa_fast_dce): Remove unused variable

2001-07-10  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (finish_diagnostic): Rename to
	diagnostic_finish. Make it take an 'output_buffer *'.  Adjust
	calls thourghout.

2001-07-10  Jason Merrill  <jason_merrill@redhat.com>

	* dwarf2out.c (dwarf2out_line): Emit -dA comment even when we have
	.loc support.

	* collect2.c (main): Set COLLECT_NO_DEMANGLE for subprocesses.
	(dump_file): Only pad the demangled name with spaces if the
	mangled name was padded with spaces.

2001-07-10  Bernd Schmidt  <bernds@redhat.com>

	* bb-reorder.c (make_reorder_chain_1): Correct branch/fallthru
	edge detection.

Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): Don't force using bitfield
	extraction if no direct load if either EXPAND_CONST_ADDRESS or
	EXPAND_INITIALIZER.

	* emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for
	whether can put offset inside LO_SUM to check mode alignment, not size.

2001-07-10  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* doc/tm.texi (Misc): Fix thinko.

2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* regmove.c (replace_in_call_usage): Fix warnings.
	* sched-deps.c (add_dependence): Fix warnings.
	* simplify-rtx.c (simplify_subreg): Likewise.
	Return NULL_RTX instead of NULL.

	* reg-stack.c (emit_swap_insn): Eliminate warnings.
	(subst_asm_stack_regs): Likewise.

	* combine.c (num_sign_bit_copies): Cast bitwidth to int to avoid
	warnings.

	* dwarf2out.c (output_call_frame_info): Declare i as int.
	(build_abbrev_table): Declare n_alloc as int.
	(dwarf2out_finish): Initialize die.
	* except.c: Declare sjlj_funcdef_number as unsigned.
	(connect_post_landing_pads): Declare j as unsigned.
	(convert_to_eh_region_ranges): Initialize call_site.
	(output_function_exception_table): Initialize tt_format_size.
	* expr.c (move_by_pieces_1): Initialize to1.
	(store_constructor): Initialize minelt and maxelt.
	* flow.c (mark_regs_live_at_end): Declare i as unsigned.
	* function.c (instantiate_decls): Avoid signed/unsigned warning.

	* c-decl.c (combine_parm_decls): Unused, remove.
	* c-tree.h: Remove prototype for combine_parm_decls.

	* reload.c (push_reload): Fix warning.
	(regno_clobbered_p): Likewise.
	* reload1.c (replace_pseudos_in_call_usage): Likewise.
	(reload_combine): Likewise.

	* bitmap.c: Rename bitmap_zero to bitmap_zero_bits to fix warnings.
	* bitmap.h: Rename bitmap_zero to bitmap_zero_bits to fix
	warnings.
	* bitmap.c (bitmap_operation): Change user.
	* bitmap.h (EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise.

2001-07-10  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (override_options): Fix typo.

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

	* target.h (struct gcc_target): New fields init_builtins and
	expand_builtin.
	* target-def.h (TARGET_INIT_BUILTINS): New macro.
	(TARGET_EXPAND_BUILTIN): New macro.
	(TARGET_INITIALIZER): Add them.
	* builtins.c: Include target.h.
	(expand_builtin): Use targetm.expand_builtin.
	(default_init_builtins): New function.
	(default_expand_builtin): New function.
	* expr.h (default_init_builtins): Declare.
	(default_expand_builtin): Declare.
	* c-common.c (c_common_nodes_and_builtins): Use
	targetm.init_builtins.
	* defaults.h (MD_INIT_BUILTINS): Remove.
	* Makefile.in (builtins.o): Depend on target.h.

	* config/arm/arm.c (TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	* config/arm/arm.h (MD_INIT_BUILTINS): Remove.
	(MD_EXPAND_BUILTIN): Remove.

	* config/c4x/c4x.c (TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	(c4x_init_builtins): Make endlink arg a local.
	(c4x_print_operand): Fix typos in adjust_address usages.
	* config/c4x/c4x-protos.h (c4x_init_builtins): Update decl.
	* config/c4x/c4x.h (MD_INIT_BUILTINS): Remove.
	(MD_EXPAND_BUILTIN): Remove.

	* config/i386/i386.c (TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	(ix86_init_mmx_sse_builtins): New function, was ix86_init_builtins.
	(ix86_init_builtins): Call new function only if TARGET_MMX.
	* config/i386/i386-protos.h (ix86_init_mmx_sse_builtins): Declare.
	* config/i386/i386.h (MD_INIT_BUILTINS): Remove.
	(MD_EXPAND_BUILTIN): Remove.

	* config/ia64/ia64.c (TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	* config/ia64/ia64.h (MD_INIT_BUILTINS): Remove.
	(MD_EXPAND_BUILTIN): Remove.

	* doc/tm.texi: Document these changes.

2001-07-09  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (tree_node): Forward declare if needed.
	(struct basic_block_def): Add fields 'head_tree' and 'end_tree'.
	(BLOCK_HEAD_TREE): Define.
	(BLOCK_END_TREE): Define.
	(struct loops): Rename field 'tree' to 'tree_root'.
	* flow.c (entry_exit_blocks): Add initializers for 'head_tree' and
	'end_tree'.
	(flow_loops_tree_build): Rename reference to field 'tree' to
	'tree_root'.
	(flow_loops_level_compute): Ditto.
	* predict.c (estimate_bb_frequencies): Ditto.
	* tree.h (struct tree_common): Add field 'aux'.

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

	* config/darwin.c (darwin_encode_section_info): Don't mark any
	DECL_EXTERNAL node as defined.

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

	* pa.c (pa_init_machine_status, pa_mark_machine_status,
	pa_free_machine_status, hppa_init_pic_save): Delete.
	(hppa_pic_save_rtx): New.  Use get_hard_reg_initial_val.
	(hppa_profile_hook): Use hppa_pic_save_rtx.
	* pa.h (struct machine_function, PIC_OFFSET_TABLE_SAVE_RTX,
	hppa_init_pic_save): Delete.
	(hppa_pic_save_rtx): Declare.
	* pa.md (call, call_value, sibcall, sibcall_value,
	builtin_setjmp_receiver): Use hppa_pic_save_rtx.

2001-07-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/t-h8300 (LIB1ASMFUNCS): Add _floatdisf and _fixsfdi.
	* config/mn10200/t-mn10200 (LIB1ASMFUNCS): Likewise.

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

	* output.h: Add declaration of final_forward_branch_p.

	* config/i386/i386.c (output_fix_trunc): Remove unused variable.

	* varray.c: Include errors.h for internal_error and trim_filename
	declarations.

	* Makefile.in (varray.o): Add errors.h.

2001-07-09  Toon Moene  <toon@moene.indiv.nluug.nl>

	* expr.h: Adjust prototypes for have_add2_insn, have_sub2_insn.
	* optabs.c (have_add2_insn): Check whether the add insn chosen
	really accepts the operands.  (have_sub2_insn): Ditto for sub insn.
	* reload1.c (reload_cse_move2add): Adjust calls of have_add2_insn.

Mon Jul  9 13:26:40 2001  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (OBJS): Add ssa-ccp.o
	(ssa-ccp.o): Add dependencies.
	* toplev.c (DFI_ssa_ccp): New dump file enum.
	(dump_file): Add entry for dumping after SSA CCP.
	(flag_ssa_ccp): New flag variable.
	(f_options): Add -fssa-ccp.
	(rest_of_compilation): Run SSA CCP if requested.
	* timevar.def (TV_SSA_CCP): New timevar.
	* ssa.c (mark_phi_and_copy_regs): Handle deleted PHI nodes.
	* doc/gcc.texi (Passes): Add documentation for SSA CCP pass.
	Fix minor typo in SSA DCE documentation.
	* doc/invoke.texi: Add documentation for new flag -fssa-ccp.
	Add documentation for new dump option.  Renumber dump files
	appropriately.

Mon Jul  9 21:36:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (gen_highpart_mode): New.
	* rtl.h (gen_highpart_mode): Declare.
	* sparc.md (insn splitters): Use gen_highpart_mode, whenever the
	operand can be VOIDmode constant.

Mon Jul  9 17:23:10 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (redirect_edge_and_branch_force): New.
	(can_fallthru): Ensure that basic blocks are succeeding.
	(try_optimize_cfg): Do not delete basic block if it is the last one.

	* flow.c (try_redirect_by_replacing_jump): Do not remove
	jumps with side effects, unlink chain on fallthru edge;
	set block for new jump instruction; avoid basic block to
	over by line number note.

	* flow.c (try_simplify_condjump): Verify that the condjump
	is not always falling through.

	Re-install patch:
	* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.

	* flow.c (forwarder_block_p): Fix for fallthru blocks.
	(try_redirect_by_replacing_jump): Update properly the count
	and frequency information.

Mon Jul  9 06:41:07 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address, adjust_address_nv): Handle an
	address that is a LO_SUM specially.
	* explow.c (plus_constant_wide, case LO_SUM): Deleted.

	* c-lang.c (start_cdtor): Remove extra parameter from start_function.

	* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
	(operand_subword): Use them.
	(change_address_1): Renamed from change_address; new arg VALIDATE.
	* expr.h: Reflect above changes; change_address now macro.
	* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
	making MEM.
	* cselib.c (add_mem_for_addr): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (eliminate_regs): Likewise.
	* simplify-rtx.c (simplify_replace_rtx): Likewise.
	* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
	adjust_addess.
	* combine.c (make_extraction, simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* expr.c (expand_expr, case COMPONENT_REF): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* reload1.c (alter_reg): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	(expr.h): Include.
	* Makefile.in (recog.o): Add $(EXPR_H).
	* explow.c (stabilize): Call replace_equiv_address.
	* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
	* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.

2001-07-03  Andrew Haley  <aph@redhat.com>

	* expmed.c (store_fixed_bit_field): Don't use a mode bigger than
	the mode of the memory location.

2001-07-09  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.

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

	* final.c (output_addr_const): Use target opening and
	closing parentheses.
	* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
	defaults, add to TARGET_ASM_OUT.
	* target.h (struct gcc_target): Add open_paren and close_paren.
	* doc/md.texi: Update.
	* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
	TARGET_ASM_CLOSE_PAREN.
	* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
	* config/a29k/a29k.h: Similarly.
	* config/alpha/alpha.h: Similarly.
	* config/arc/arc.h: Similarly.
	* config/arm/aof.h: Similarly.
	* config/arm/aout.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/i370/i370.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.

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

	* doc/c-tree.texi: Document representation of attributes.

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

	* doc/tm.texi: Update some places for the rename of target to
	targetm.  Fix typo.

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

	* target.h (struct gcc_target): Add insert_attributes.
	* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
	(TARGET_INITIALIZER): Update.
	* tree.c, tree.h (default_insert_attributes): New function.
	Update comments on other default functions to refer to targetm,
	not target.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
	TARGET_INSERT_ATTRIBUTES.
	(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
	* c-common.c (decl_attributes): Use targetm.insert_attributes.
	Don't use PRAGMA_INSERT_ATTRIBUTES.
	* Makefile.in (c-common.o): Depend on $(TARGET_H).
	* c-decl.c (start_decl, start_function): Don't call
	SET_DEFAULT_DECL_ATTRIBUTES.
	* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
	declare.
	* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
	(c4x_check_attribute): Avoid modifying attribute list itself.
	(c4x_set_default_attributes): Rename to c4x_insert_attributes.
	Make static.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
	* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
	declare.
	* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
	(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
	Make static.
	* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
	declare.
	* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
	(v850_set_default_decl_attr): Rename to v850_insert_attributes.
	Adjust parameters.  Make static.

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

	* c-common.c (decl_attributes): Only take a single attributes
	parameter.
	* c-common.h (decl_attributes): Update prototype.
	* c-decl.c (start_decl, start_function): Only take a single
	attributes parameter.  Update calls to decl_attributes.
	(finish_struct, finish_enum): Update calls to decl_attributes.
	(push_parm_decl): Expect unified list of attributes.  Update call
	to decl_attributes.
	* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
	notype_nested_function, component_declarator,
	component_notype_declarator, label): Update calls to
	decl_attributes.
	(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
	lists that are passed to push_parm_decl.
	* c-tree.h (start_function, start_decl): Update prototypes.
	* config/sh/sh-protos.h, config/sh/sh.c
	(sh_pragma_insert_attributes): Only take a single attributes
	parameter.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update.
	* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
	build_module_descriptor, generate_static_references,
	generate_strings, build_selector_translation_table,
	generate_descriptor_table, generate_protocols,
	generate_ivars_list, generate_dispatch_table,
	generate_protocol_list, generate_category,
	generate_shared_structures, really_start_method, add_objc_decls,
	generate_classref_translation_entry): Update calls to start_decl
	and start_function.
	(build_tmp_function_decl, start_method_def): Unify attribute lists
	that are passed to push_parm_decl.

2001-07-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* final.c (no_asm_to_stream): New.
	(final_scan_insn): Use target structures for prologue ends
	and epilogue starts.
	* output.h (no_asm_to_stream): New.
	* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
	(TARGET_ASM_OUT): Update.
	* target.h (struct gcc_target): New members function_end_prologue
	and function_begin_epilogue.
	* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
	* config/alpha/alpha-protos.h (output_end_prologue): Delete.
	* config/alpha/alpha.c (output_end_prologue): Rename to
	alpha_output_function_end_prologue.  Use in target struct
	and make static.
	* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
	* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
	* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
	ia64_output_function_end_prologue.  Use in target struct
	and make static.
	(ia64_function_prologue, ia64_function_epilogue): Rename
	mistyped prototypes.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
	* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
	Delete.
	* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
	an use in target struct, make static.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
	Delete.

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

	* stmt.c (emit_case_nodes): Convert modes properly in low+high test.

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

	* config/i386/i386.md: Remove constraints strings from define_split
	and define_peephole2 patterns.
	(eh_return_si, eh_return_di): Split eh_return_1 for modes.
	(eh_return): Use them.

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

	* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
	Document MD_FALLBACK_FRAME_STATE_FOR.

2001-07-07  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
	Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
	elimination.
	* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.

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

	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
	of the label inside NAME as opposed to just the end of NAME.

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

	* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
	* config/alpha/alpha.c (alpha_init_machine_status,
	alpha_mark_machine_status, alpha_free_machine_status): Delete.
	(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
	(vms_valid_decl_attribute_p): Make static, conditionally compile.
	* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.

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

	* target.h (targetm): Rename global from "target", so as not to
	conflict with local variables.
	* c-decl.c: Ditto.
	* c-typeck.c: Ditto.
	* final.c: Ditto.
	* tree.c: Ditto.
	* cp/decl.c: Ditto.
	* cp/decl2.c: Ditto.
	* cp/typeck.c: Ditto.
	* 1750a/1750a.c: Ditto.
	* a29k/a29k.c: Ditto.
	* arc/arc.c: Ditto.
	* arm/arm.c: Ditto.
	* avr/avr.c: Ditto.
	* clipper/clipper.c: Ditto.
	* convex/convex.c: Ditto.
	* d30v/d30v.c: Ditto.
	* dsp16xx/dsp16xx.c: Ditto.
	* elxsi/elxsi.c: Ditto.
	* fr30/fr30.c: Ditto.
	* h8300/h8300.c: Ditto.
	* i370/i370.c: Ditto.
	* i386/i386.c: Ditto.
	* i860/i860.c: Ditto.
	* i960/i960.c: Ditto.
	* ia64/ia64.c: Ditto.
	* m32r/m32r.c: Ditto.
	* m68hc11/m68hc11.c: Ditto.
	* m68k/m68k.c: Ditto.
	* m88k/m88k.c: Ditto.
	* mips/mips.c: Ditto.
	* ns32k/ns32k.c: Ditto.
	* pa/pa.c: Ditto.
	* pdp11/pdp11.c: Ditto.
	* romp/romp.c: Ditto.
	* rs6000/rs6000.c: Ditto.
	* sh/sh.c: Ditto.
	* sparc/sparc.c: Ditto.
	* vax/vax.c: Ditto.
	* we32k/we32k.c: Ditto.
	* doc/tm.texi: Update the manual to match.

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

	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
	DWARF2_UNWIND_INFO not just whether it is defined.

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

	* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
	call to simplify_binary_operation returns a new pattern.

2001-07-06  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* glimits.h (__SHRT_MAX__): New.
	(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
	(SHRT_MAX): Define in terms of __SHRT_MAX__.

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

	* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
	avoid warnings.

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

	* bitmap.c (bitmap_release_memory): Move adjacent to the
	allocation functions.
	(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
	the implementation.  Binary search for the set bit.
	(bitmap_union_of_diff): Allocate the temporary on the stack
	instead of using xmalloc.

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

	* genrecog.c (validate_pattern): Warn for constraints in
	define_{expand,split,peephole2}.  Remove strict_low_part
	before looking up match_dup.

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

	* doc/gcc.texi (Makefile): Rename to be a more general purpose
	chapter about various build hints and history.  Add section
	talking about the various types of native and cross builds.

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

	* Makefile.in (final.o): Depend on target.h.
	* final.c: Include target.h.
	(default_function_pro_epilogue): New.
	(final_start_function): Use target structure for function prologues.
	(final_end_function): Use target structure for function epilogues.
	* fold-const.c (real_hex_to_f): Constify s and p.
	* output.h (default_function_pro_epilogue): New.
	* real.h (real_hex_to_f): Update prototype.
	* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
	TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
	(TARGET_INITIALIZER): Update.
	* target.h (gcc_target): Add struct asm_out.
	* doc/tm.texi: Update.

config:
	Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
	TARGET_ASM_FUNCTION_EPILOGUE.  Move macro code to functions
	in cpu/cpu.c, or rename old functions consistently.  Take
	a HOST_WIDE INT not an int as the SIZE parameter.  Remove now
	redundant macros and prototypes.  Make new functions static.

	* 1750a/1750a.c: Similarly.
	* 1750a/1750a.h: Similarly.
	* a29k/a29k-protos.h: Similarly.
	* a29k/a29k.c: Similarly.
	* a29k/a29k.h: Similarly.
	* arc/arc-protos.h: Similarly.
	* arc/arc.c: Similarly.
	* arc/arc.h: Similarly.
	* arm/arm-protos.h: Similarly.
	* arm/arm.c: Similarly.
	* arm/arm.h: Similarly.
	* avr/avr-protos.h: Similarly.
	* avr/avr.c: Similarly.
	* avr/avr.h: Similarly.
	* clipper/clipper-protos.h: Similarly.
	* clipper/clipper.c: Similarly.
	* clipper/clipper.h: Similarly.
	* convex/convex.c: Similarly.
	* convex/convex.h: Similarly.
	* d30v/d30v-protos.h: Similarly.
	* d30v/d30v.c: Similarly.
	* d30v/d30v.h: Similarly.
	* d30v/d30v.md: Similarly.
	* dsp16xx/dsp16xx-protos.h: Similarly.
	* dsp16xx/dsp16xx.c: Similarly.
	* dsp16xx/dsp16xx.h: Similarly.
	* elxsi/elxsi.c: Similarly.
	* elxsi/elxsi.h: Similarly.
	* fr30/fr30.c: Similarly.
	* fr30/fr30.md: Similarly.
	* h8300/h8300-protos.h: Similarly.
	* h8300/h8300.c: Similarly.
	* h8300/h8300.h: Similarly.
	* i370/i370-protos.h: Similarly.
	* i370/i370.c: Similarly.
	* i370/i370.h: Similarly.
	* i386/i386.c: Similarly.
	* i386/osf1elf.h: Similarly.
	* i386/osfrose.h: Similarly.
	* i860/i860-protos.h: Similarly.
	* i860/i860.c: Similarly.
	* i860/i860.h: Similarly.
	* i960/i960-protos.h: Similarly.
	* i960/i960.c: Similarly.
	* i960/i960.h: Similarly.
	* ia64/ia64-protos.h: Similarly.
	* ia64/ia64.c: Similarly.
	* ia64/ia64.h: Similarly.
	* m32r/m32r-protos.h: Similarly.
	* m32r/m32r.c: Similarly.
	* m32r/m32r.h: Similarly.
	* m68hc11/m68hc11-protos.h: Similarly.
	* m68hc11/m68hc11.c: Similarly.
	* m68hc11/m68hc11.h: Similarly.
	* m68k/crds.h: Similarly.
	* m68k/dpx2.h: Similarly.
	* m68k/m68k-protos.h: Similarly.
	* m68k/m68k.c: Similarly.
	* m68k/m68k.h: Similarly.
	* m68k/news.h: Similarly.
	* m88k/m88k-protos.h: Similarly.
	* m88k/m88k.c: Similarly.
	* m88k/m88k.h: Similarly.
	* mips/mips-protos.h: Similarly.
	* mips/mips.c: Similarly.
	* mips/mips.h: Similarly.
	* ns32k/merlin.h: Similarly.
	* ns32k/ns32k.c: Similarly.
	* ns32k/ns32k.h: Similarly.
	* ns32k/tek6000.h: Similarly.
	* pa/pa-protos.h: Similarly.
	* pa/pa.c: Similarly.
	* pa/pa.h: Similarly.
	* pdp11/2bsd.h: Similarly.
	* pdp11/pdp11-protos.h: Similarly.
	* pdp11/pdp11.c: Similarly.
	* pdp11/pdp11.h: Similarly.
	* romp/romp-protos.h: Similarly.
	* romp/romp.c: Similarly.
	* romp/romp.h: Similarly.
	* rs6000/rs6000-protos.h: Similarly.
	* rs6000/rs6000.c: Similarly.
	* rs6000/rs6000.h: Similarly.
	* rs6000/sysv4.h: Similarly.
	* sh/sh-protos.h: Similarly.
	* sh/sh.c: Similarly.
	* sh/sh.h: Similarly.
	* sparc/sparc-protos.h: Similarly.
	* sparc/sparc.c: Similarly.
	* sparc/sparc.h: Similarly.
	* vax/vax.c: Similarly.
	* vax/vax.h: Similarly.
	* vax/vms.h: Similarly.
	* we32k/we32k.c: Similarly.
	* we32k/we32k.h: Similarly.

Fri Jul  6 11:47:59 2001  Jeffrey A Law  (law@cygnus.com)

	* basic-block.h (first_insn_after_basic_block_note): Declare.
	* flow.c (first_insn_after_basic_block_note): Define.  Moved
	from...
	* ssa.c (first_insn_after_basic_block_note): Remove.
	* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
	necessary.
	(ssa_eliminate_dead_code): Properly update the CFG and PHI
	nodes when we find a dead conditional branch.  Insert BARRIERs
	after any blocks with no successors, but which do not have
	any BARRIERs.

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

	* varray.c (varray_check_failed): Use internal_error.

2001-07-05  Andrew Haley  <aph@redhat.com>

	* Makefile.in (LIB2_DIVMOD_FUNCS): New.
	(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
	* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.

2001-07-02  Jason Merrill  <jason_merrill@redhat.com>

	* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
	reference if the target constant is also a SYMBOL_REF.

2001-07-05  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (MASK_MIPS3900): Remove.
	(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
	MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
	(TARGET_MIPS3900): Change to use mips_arch.
	(TARGET_MIPS4000): New.
	(TARGET_MIPS4100): New.
	(TARGET_MIPS4300): New.
	(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
	(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
	for -mipsX.
	(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
	(ISA_HAS_BRANCHLIKELY): To here.
	(CC1_CPU_SPEC):	 New.
	(CC1_SPEC): Use here.  Remove 4650 and 3900 options.
	(mips_arch_string): Declare.
	(mips_arch): Declare.
	(TARGET_OPTIONS): Add -march and -mtune.

	* config/mips/mips.c (mips_arch_string): New.
	(mips_arch): New.
	(override_options): Handle -march for codegen and -mtune
	for scheduling. Use mips_arch. Move tx39 target default here.
	(mips_parse_cpu): Move error message to override_options.

	* config/mips/r3900.h (TARGET_DEFAULT): Remove.

	* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.

	* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
	(MIPS Options): Ditto.	Change mcpu entry to historical text.

2001-07-05  H.J. Lu  (hjl@gnu.org)

	* config/mips/mips.c (mips_parse_cpu): New function to parse
	-march=*/-mcpu=*.

2001-07-05  Jim Wilson  <wilson@redhat.com>

	* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
	* config/ia64/t-ia64: Likewise.
	(LIB1ASMFUNCS): Update comment.

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

	* doc/install.texi (Install GCC: Binaries): Fix typo.

2001-07-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
	reference using the stack pointer, adjust it since we push Y
	temporarily.
	("*ashrsi3"): Likewise.
	("*lshrsi3"): Likewise.

2001-07-05  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
	when -fomit-frame-pointer is used.

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

	* flow.c: Reverse Jan Hubicka's patch of 02July2001.
	(try_redirect_by_replacing_jump): Reverse updating properly the
	count and frequency information.  Reverse removing cc0 setter.
	(forwarder_block_p): Reverse fixing for fallthru blocks.

2001-07-05  DJ Delorie  <dj@redhat.com>

	* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
	(translate_options): If the above is defined, use it to map
	given options to new options.
	* doc/tm.texi: Document it.

2001-07-05  Brad Lucier <lucier@math.purdue.edu>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi (Optimize Options): Document that -fgcse may
	cause programs using computed gotos to run more slowly.

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

	* doc/install.texi (Specific): Markup, spelling and typo fixes.
	Fixed sorting.
	Consistently require binutils 2.11.2, not prereleases.
	(Specific, decstation-*): Canonicalize as mips-dec-*.
	(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
	always necessary.
	(Specific, m68k-altos): Removed reference to README.altos, deleted.
	(Specific, mips-*): Reword MIPS C compiler requirements.
	(Specific, powerpc*-*-*): New, mention --with-cpu once.
	(Specific, sunv5): Removed, obsolete.

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

	* dwarf2out.c (output_loc_list): Use an all ones mask for
	.text asm output and don't rely on long long
	literals. Reformat some long lines.

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

	* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
	section.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (dwarf2out_define): Update comment.
	(dwarf2out_undef): Ditto.
	(dwarf2out_start_source_file): Ditto.
	(dwarf2out_end_source_file): Ditto.
	(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
	since we never call the start/end debug hook for the primary file.

2001-07-04  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
	from shll.

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

	* cppinit.c (remove_dup_dirs): Inform if a system include
	directory is being reordered.
	* doc/invoke.texi (Directory Options): GCC warns if you hide a
	system include.
	* doc/cpp.texi (Search Paths): Likewise.
	* doc/gcc.texi (Interoperation): Remove information about
	-I/usr/include.

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

	* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
	(VARRAY_TOP_CHAR_PTR): Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (process_command): Don't assign elements of a const char*.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (change_address): Don't abort if invalid address while
	reload is in progress.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* c-lex.c (cb_file_change): Pass line number to
	debug_start_source_file.
	(cb_undefine): Pass correct line number to debug_undef.

	* toplev.c (debug_start_source_file): Add line number to
	parameters. Pass it along to dwarf2out_start_source_file.
	(decode_g_option): Stop resetting debug level back to normal when
	we change debug formats, unless the current level is
	none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
	3).

	* toplev.h (debug_start_source_file): Add line number to
	parameters.

	* dwarf2out.h (dwarf2out_start_source_file): Add line number to
	parameters.

	* dwarf2out.c (dwarf2out_start_source_file): Add line number to
	parameters.
	Output debug_macinfo data for starting file if requested.
	(dwarf2out_end_source_file): Output debug_macinfo data for ending
	file if requested.
	(dwarf2out_define): Output debug_macinfo data for defining a macro
	if requested.
	(dwarf2out_undef): Output debug_macinfo data for undefining a
	macro if requested.
	(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
	(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
	(macinfo_section_label): New. DWARF2 macro info section label.
	(dwarf2out_init): If we want macro info, output the start label
	for the section.
	(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
	attribute to the compilation unit die pointing to the macro info.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (new_loc_list): Move to inside #ifdef
	DWARF2_DEBUGGING_INFO.
	(add_loc_descr_to_loc_list): Ditto.
	(output_loc_list): Ditto.
	Also, fix thinko in curr not being initialized.
	(gen_internal_sym): Ditto.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (replace_equiv_address): New function.
	* expr.h (replace_equiv_address): New declaration.
	* explow.c (validize_mem): Call it instead of change_address and
	also call if -fforce-addr and address is constant.
	* expr.c: Replace more calls to change_address with adjust_address
	and/or replace_equiv_address or to validize_mem.
	* function.c, regmove.c, config/alpha/alpha.c: Likewise.
	* config/arm/arm.md, config/clipper/clipper.md: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i370/i370.md, config/i860/i860.md: Likewise.
	* config/i960/i960.md, config/mips/mips.c: Likewise.
	* config/mips/mips.md, config/pa/pa.md: Likewise.
	* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.

	* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
	function.

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

	* doc/include: New directory.
	* doc/fdl.texi: Move to doc/include/fdl.texi.
	* doc/texinfo.tex: Move to doc/include/texinfo.tex.
	* doc/include/funding.texi, doc/include/gpl.texi: New files.
	* doc/gcc.texi: Use funding.texi and gpl.texi.
	* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
	$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
	Update dependencies and use -I $(docdir)/include.

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

	* config/v850/t-v850 (v850-c.o): Add missing dependencies.

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

	* doc/install.texi (sparc64-*-*): Remove garbage.

Wed Jul  4 09:07:44 2001  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
	Fix typo in last change to use adjust_address.

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

	* doc/install.texi (Specific): Update information for *-*-solaris*.

Tue Jul  3 22:33:15 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide): Reinitialize Y for restart.

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

	* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
	case for flag_no_mach_text_sections.
	(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
	* config/darwin.c (flag_no_mach_text_sections): Remove.
	* config/darwin-protos.h (darwin_init_pragma): Remove decl.

Tue Jul  3 15:35:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
	and avoid checking for constant as first operand.
	* recog.c (find_constant_term_loc): No longer static.
	(adj_offettable_operand): Delete.
	* rtl.h (adj_offsettable_operand): Delete declaration.
	(find_constant_term): Add declaration.
	* caller-save.c: Replace calls to adj_offsettable_operand with calls
	to adjust_address.
	* config/arm/arm.c, config/c4x/c4x.c: Likewise.
	* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/i860/i860.c, config/i960/i960.c: Likewise.
	* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
	* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
	* config/mips/mips.c, config/mips/mips.md: Likewise.
	* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
	* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
	* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
	* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
	* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
	* config/ns32k/ns32k.md: Likewise.

2001-07-03  Zack Weinberg  <zackw@stanford.edu>

	* rtl.c (copy_rtx): Handle 'T' format letter.
	* gensupport.c (collect_insn_data): Likewise.
	* print-rtl.c (print_rtx): Print 'T' slots like 's'.

2001-07-03  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/invoke.texi (Directory Options): Specifiy range for <N> in
	-B option.  Use 'dir' not 'foo' as example directory name.

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

	* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
	Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.

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

	* doc/cppinternals.texi: Improve formatting and logical markup.

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

	* Makefile.in (insn-recog.o): Add dependency on reload.h.

	* genrecog.c (write_header): Include reload.h for prototypes in
	insn-recog.c.

2001-07-03  Neil Booth  <neil@daikokuya.demon.co.uk>

config:
	* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Add.
	* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
	* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.

Mon Jul  2 21:52:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case LO_SUM): New case.
	(plus_constant_for_output_wide): Delete.
	* rtl.h (plus_constant_for_output): Delete.
	* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
	instead of plus_constant_for_output.
	* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
	* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
	* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.md: Likewise.
	Convert some change_address calls to adjust_address.

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

	* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
	doc/rtl.texi, doc/tm.texi: Improve formatting.  Improve
	documentation of -std and -Wwrite-strings.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* cse.c (canon_hash): Don't register registers in very small
	register classes, as extending their lifetime might cause
	reload to fail.

Mon Jul  2 23:14:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.

	* flow.c (forwarder_block_p): Fix for fallthru blocks.
	(try_redirect_by_replacing_jump): Update properly the count
	and frequency information.

Mon Jul  2 14:20:13 2001  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (dump_file_index): Move SSA dumps just after first
	jump dump.
	(dump_file): Corresponding changes.
	(rest_of_compilation): Move SSA path to just after the first
	jump pass.
	* doc/gcc.texi (Passes): Update due to movement of SSA path.
	* doc/invoke.texi: Update dump file #s as they were completely
	out of date with reality.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.

	* expr.c (emit_move_insn_1): Deal with non-default
	STACK_PUSH_CODE.

	* expr.c (emit_single_push_insn): Fix warning.

2001-07-02  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* expr.c (emit_move_insn_1): Avoid modifying
	cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.

Mon Jul  2 15:33:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address): New function.
	* expr.h (adjust_address): Add declaration.
	* builtins.c: Replace some calls to change_address with calls to it
	or to validize_mem.
	* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
	* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
	* config/arm/arm.c, config/convex/convex.c: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
	* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.c, config/mips/mips.md: Likewise.
	* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
	* config/sh/sh.c, config/sparc/sparc.md: Likewise.

2001-07-02  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.

2001-07-02  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
	* config/ia64/lib1funcs.asm: Change macro names to match t-ia64.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* cppinit.c (lang_defaults): New table.
	(set_lang): Just read from lang_defaults into the live options
	structure.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
	* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
	* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.

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

	* doc/install.texi: Various spelling and markup fixes.
	(Installing GCC): Component specific installation instructions are
	gone.
	Fix reference.
	Warn about removing old install dir in the presence of shared libs.
	(Configuration): Invoke with options target to match configure
	--help.
	Consistently refer to gas, gld pathnames.
	Invert --enable-multilib documentation.
	Remove references to old compiler versions.

Mon Jul  2 12:50:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.

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

	* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
	section.
	(Specific, mips*-sgi-irix5): Note IDO download.
	Reworded MIPS C hints.
	Use GNU as instead of GAS.
	Markup fixes.
	Removed SGI Freeware reference, IRIX 6 only.
	(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
	Note N64 library requirement/workaround.
	Update O32 hints.
	Complete list of structure passing bug victims.

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

	* doc/install.texi: Remove CVS Id.

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

	* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
	(find_inherently_necessary): Remove unused variable.

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

	* c-common.h (TDI_inlined): New ast dump phase.
	(dump_flag_name): New function.
	* c-dump.c (dump_files): Add inlined phase.
	(dump_flag_name): Define.
	* doc/invoke.texi (-fdump-ast-inlined): Document.

Mon Jul  2 06:29:36 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_decl): Revert change to handling of alignment
	in packed types.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
	for FIELD_DECL.

2001-07-01  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (FUNCTION_ARG): Document that the last call
	is special.

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

	* tlink.c (recompile_files): Remove COMPILER_PATH and
	LIBRARY_PATH from the environment.

2001-07-01  Zack Weinberg  <zackw@stanford.edu>

	* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
	RID_LAST_PQ.  Move RID_FIRST_PQ down with the other FIRST/LAST
	enumerators.
	(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.

	* c-parse.in (OBJC_STRING): Kill.
	(objc_string): Decompose to [objc_string] '@' STRING.
	(reswords): Take the leading '@' off all the Objective-C keywords.
	(objc_rid_sans_at): Kill.
	(init_reswords): Don't initialize it.
	(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
	(_yylex): Kill reconsider label.  Look ahead one token after
	an '@'; if we get an identifier, check whether it's an
	Objective-C @-keyword.  If so, return the keyword.  Otherwise,
	put back the token and return the '@' as a terminal.

	* cpplib.c (lex_macro_node): Remove unnecessary check for
	leading '@' on identifier.  Clarify control flow and commentary.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cse.c (new_label_ref): Variable deleted.
	(insert): Remove set of new_label_ref.
	(check_for_label_ref): New function.
	(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* (movsi_insv_1, movsi_insv_1_rex64): Allow immediate operand.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* flow.c (split_edge): Set frequency.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* cppmacro.c (make_string_token): Null terminate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* rtl.h (expand_builtin_expect_jump): Add prototype.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* tm.texi: Document STDC_0_IN_SYSTEM_HEADERS.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* inclhack.def (hpux10_cpp_pow_inline): New hack.

2001-06-13  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (dead_or_predicable): Fix return value last patch.

2001-06-13  Mark Mitchell  <mark@codesourcery.com>

	* NEWS: Remove.

2001-06-13  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (cond_exec_get_condition): Use reversed_comparison_code.
	(cond_exec_process_if_block, dead_or_predicable): Likewise.

2001-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* mips-tfile.c (copy_object): Always pass indexNil for symbol
	table index.

2001-06-13  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (OK_FOR_T): Remove.
	(EXTRA_CONSTRAINT): Do not use OK_FOR_T.
	* config/h8300/h8300.md: Remove alternatives involving inc and dec
	in the helper patterns for addhi3 and addsi3.

2001-06-13  Phil Edwards  <pme@sources.redhat.com>

	* doc/contrib.texi:  Link to libstdc++'s thanks.html for now.

2001-06-13  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in: Move _bb and __gcc_bcmp to LIB2FUNCS_ST.
	* libgcc-std.ver: Take out __bb* and __gcc_bcmp.

	* config/t-slibgcc-elf-ver, config/t-slibgcc-sld,
	config/alpha/t-osf4, config/mips/t-iris6: Extract all
	references to @shlib_map_file@, @shlib_objs@, or
	@shlib_base_name@ to Makefile variables.
	Bump soname version of libgcc to 1.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Use more logical markup.  Include @node
	commands in the source when generating any non-HTML.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* README: Remove.  Some of the contents moved to ../README.

2001-06-13  Alexandre Oliva  <aoliva@redhat.com>

	* doc/install.texi (--enable-shared): List package names
	recognized by GCC.

2001-06-13  Alexandre Oliva  <aoliva@redhat.com>

	* doc/install.texi (ix86-*-solaris*): Removed, outdated.
	(*-*-solaris*): Document problem in /bin/sh that affects
	configuring libraries.
	(sparc-*-solaris*): Recommend GNU binutils 2.11.1 or vendor tools.
	(*-sun-solaris2.8): Document linker problem that explains why
	libjava is disabled by default.

2001-06-09  Mark Mitchell  <mark@codesourcery.com>

	Revert this patch:
	* toplev.c (rest_of_compilation): Remove dead code before
	purge_addressof.

2001-06-12  Alexandre Oliva  <aoliva@redhat.com>

	Reverted:
	2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
	* configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support.
	* configure: Rebuilt.

2001-06-12  Jim Wilson  <wilson@redhat.com>

	* loop.c (strength_reduce): Move bl->all_reduced set before
	check_ext_dependant_givs call.
	(check_ext_dependant_givs): Clear bl->all_reduced when ignoring givs.

2001-06-12  Alexandre Oliva  <aoliva@redhat.com>

	* doc/extend.texi (Function Attributes): Document SH's sp_switch
	and trap_exit.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/invoke.texi: Use more logical markup.  Use TeX quotes,
	dashes and @dots{}.

2001-06-12  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_prologue): Always use
	gen_pro_epilogue_adjust_stack; update arguments.
	(ix86_expand_epilogue): Likewise.
	(ix86_emit_epilogue_esp_adjustment): Remove.
	(ix86_adjust_cost): Remove pro_epilogue_adjust_stack hack.
	* config/i386/i386.md (pro_epilogue_adjust_stack): Use a BLKmode
	clobber of scratch memory instead of a modification of EBP as the
	barrier.  Update all peepholes to match.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi: Change the font used for @def... commands to a
	fixed width font.
	* doc/extend.texi: Use more logical markup.  Use "built-in"
	instead of "builtin".  Use @deftypefn to mark up built-in
	functions; specify their types in the @deftypefn and not in the
	descriptive text.  Use TeX quotes and dashes.  Add more index
	entries.

2001-06-12  lars brinkhoff  <lars@nocrew.org>

	* gcc.texi (HOST_BITS_PER_LONGLONG): Document.
	(DIR_SEPARATOR_2): Likewise.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi (--exec-prefix, --bindir, --libdir,
	--with-slibdir, --infodir, --mandir, --with-cpp-install-dir):
	Document.
	(--enable-cpp): Change to document --disable-cpp instead; update
	to reflect current default.
	(--without-fast-fixincludes): Remove documentation.
	(Final install): Document installation directories in more
	detail.  Document use of make dvi.

Tue Jun 12 19:01:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Fix previous patch.

Tue Jun 12 17:25:39 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Do plus_constant call always.

Tue Jun 12 17:24:07 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Allow volatile memory
	to be subregged in case we don't have move instruction.

Tue Jun 12 12:20:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c: Include predict.h
	(strength_reduce): Drop branch prediction note in case
	number of iterations is known.
	* predict.def (PRED_LOOP_ITERATIONS): new.
	* Makefile.in (loop.o): Add dependency on predict.h

2001-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-decl.c (grokdeclarator): Use INTEGRAL_TYPE_P.

	* c-typeck.c (c_start_case): Likewise.

2001-06-12  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (store_field): Don't set MEM_ALIAS_SET for a field
	in a structure at a variable address.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcov.texi: Use more logical markup.

2001-06-11  Mark Mitchell  <mark@codesourcery.com>

	* unroll.c (initial_reg_note_copy): Use PUT_REG_NOTE_KIND and
	REG_NOTE_KIND, not PUT_MODE and GET_MODE.
	(final_reg_note_copy): Remove REG_WAS_0 notes that are no longer
	valid.

2001-06-11  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (ASM_FILE_END): Remove decl of language_string.

2001-06-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*lshrdi3_const32"): Mark the clobber
	as an early clobber to make sure it is not used by reload in
	one of the operands.

2001-06-11  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi: Update information about flag_honor_std.
	* doc/install.texi: Note that binutils is required on HPUX 11.
	* doc/invoke.texi (-fhonor-std): Note that -fno-honor-std is
	now the default.

	* config/mips/abi64.h (RETURN_IN_MEMORY): Fix handling of
	variable-sized types.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/md.texi: Use TeX dashes and quotes.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/rtl.texi: Reference manual chapter about trees.

2001-06-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris6.h (NO_BUILTIN_WINT_TYPE): Define.
	(WINT_TYPE): Override.
	(WINT_TYPE_SIZE): Likewise.
	(SUBTARGET_CPP_SIZE_SPEC): Define __WINT_TYPE__ as appropriate.

	* config/sparc/sol2.h (WINT_TYPE): Define.
	(WINT_TYPE_SIZE): Likewise.

	* config/sparc/sol2-sld-64.h (NO_BUILTIN_WINT_TYPE): Define.
	(WINT_TYPE): Override.
	(WINT_TYPE_SIZE): Likewise.
	(CPP_ARCH32_SPEC): Add __WINT_TYPE__ definition.
	(CPP_ARCH64_SPEC): Likewise.

2001-06-11  Richard Henderson  <rth@redhat.com>

	* unwind-dw2-fde.c (__deregister_frame_info): Don't play games
	with alias attribute.

	* config/linux.h (CPLUSPLUS_CPP_SPEC): Use %(cpp) not $(cpp_cpu).
	* config/alpha/linux.h (CPLUSPLUS_CPP_SPEC): Likewise.

2001-06-11  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/linux.h (CPLUSPLUS_CPP_SPEC): New.

2001-06-11  Stan Shebs  <shebs@apple.com>

	* config/darwin.c (darwin_encode_section_info):  Rewrite to simplify
	and fix coding mistakes.

2001-06-11  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/m32r/m32r.md (movstrsi_internal): Do not expect a
	return string from m32r_output_block_move.
	* config/m32r/m32r-protos.h: Make m32r_output_block_move a
	void function.
	* config/m32r/m32r.h (INT32_P): Rename to UNIT32_P and remove
	integer overflow.
	(ROUND_ADVANCE): Remove signed/unsigned conflict.
	* config/m32r/m32r.c: Declare prototypes for static functions.
	(move_src_operand): Replace INT32_P with UINT32_P.
	(function_arg_partial_nregs): Fixed signed/unsigned conflict
	in initialisation of 'size'.
	(m32r_sched_reord): Remove redundant declarations of 'code'.
	(m32r_output_block_move): Change to a void function.
	(m32r_encode_section_info): Cast return of
	TREE_STRING_POINTER to avoid compile time warning.

2001-06-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/osf5.h (TARGET_LD_BUGGY_LDGP): New.
	* config/alpha/alpha.h (TARGET_LD_BUGGY_LDGP): Default.
	(struct machine_function): Add gp_save_rtx.
	* config/alpha/alpha.c (alpha_mark_machine_status): Mark it.
	(alpha_gp_save_rtx): New.
	* config/alpha/alpha-protos.h: Declare it.
	* config/alpha/alpha.md (exception_receiver): Make an expander.
	Use alpha_gp_save_rtx if TARGET_LD_BUGGY_LDGP.

2001-06-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/osf.h (LINK_SPEC): Hide _GLOBAL_* symbols.

2001-06-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in: Align --help messages.
	Remove trailing full stops.
	Consistently use lower case.
	Fix DWARF 2 spelling.
	* configure: Rebuilt.

2001-06-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/alpha.h (CPP_SPEC): Don't define __LANGUAGE_C and
	variants for .cpp/.cp/.c++ files.
	Move definition of __LANGUAGE_C_PLUS_PLUS ...
	(CPLUSPLUS_CPP_SPEC): ... here.

Mon Jun 11 15:47:45 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (duplicate_loop_exit_test): Fix loop header heuristics.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (store_parm_decls): When comparing types in an
	old-style function declaration with those from a previous
	prototype, compare the unqualified versions of parameter types.
	Fixes PR c/3116.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/objc.texi: Use more logical markup.  Use TeX dashes.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi: Use more logical markup.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (xref_tag): Don't return previous tags of wrong type.

2001-06-11  Aldy Hernandez  <aldyh@redhat.com>

	* loop.c (scan_loop): Do not combine asm statements.

2001-06-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* simplify-rtx.c (simplify_subreg): Fix offset calculation
	for complex values within a CONCAT.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Update details of what components are included
	in the GCC distribution.  Update default directory for g++
	includes.  Update documentation relating to old libio.  Adjust
	documentation on DejaGnu environment variables.  Remove
	documentation of --enable-cpplib.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/contrib.texi: Fix alphabetical order.  Fix typos.  Improve
	markup.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (life_data_ok): New.
	(merge_if_block): Use it to determine whether to update
	global_live_at_end.
	(if_convert): Set it.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/osf5.h (ASM_OLDAS_SPEC): Add -c.

2001-06-10  Alexandre Oliva  <aoliva@redhat.com>

	* doc/invoke.texi (MN10300 Options): Document -mno-crt0.
	(SH Options): Document -mieee.
	* doc/install.texi (Final install): Remove obsolete information
	about installing cross compilers.
	* doc/gcc.1: Rebuilt.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (override_options): Set align_loops,
	align_jumps, and align_functions.
	* config/alpha/alpha.h (FUNCTION_BOUNDARY): Set to 32 bits.
	(LOOP_ALIGN, LABEL_ALIGN_AFTER_BARRIER): Remove.

2001-06-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* emit-rtl.c (gen_lowpart_common): Do not assume that SFmode and DFmode
	are one and two words in size.

2001-06-10  Richard Henderson  <rth@redhat.com>

	* doc/invoke.texi (Optimization Options): Document -fpeephole2.
	(Code Generation Options): Document -fnon-call-exceptions.

2001-06-10  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/gnu.h (MD_FALLBACK_FRAME_STATE_FOR): Undefine.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11.md (peepholes): Remove unused and wrong peepholes.

2001-06-10  Mark Mitchell <mark@codesourcery.com>
	    Gabriel Dos Reis  <gdr@codesourcery.com>

	* Makefile.in (c-parse.o): Depend on diagnostic.h
	(dwarf2out.o): Likewise.

	* dwarf2out.c: #include diagnostic.h

	* toplev.h (warningcount, errorcount, sorrycount): Remove
	declarations.

	* toplev.c (warningcount, errorcount, sorrycount): Remove
	definitions.

	* diagnostic.h (struct output_buffer): Reorder fields.
	(diagnostic_kind_count): New macro.
	(errorcount, warningcount, sorrycount): Define as macros.
	(diagnostic_report_warnings_p): New macro.
	(output_state): Add diagnostic_count field.

	* diagnostic.c (warningcount, errorcount, inhibit_warnings):
	Remove tentative declaration.
	(count_error): Use diagnostic_report_warnings_p.

	* c-parse.in: #include diagnostic.h

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("extendhisi2"): Fix constraints to
	prefer a memory for operand 1.
	("*addsi3"): Fix constraints, the '!' was too strong.
	("*addsi3_split"): Accept soft register and split accordingly.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline):
	Move definition in the RTX_CODE section.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Define the return
	address as relative to the argument pointer.

Sun Jun 10 10:58:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (PRED_OPCODE): Place before call and error_return.

Sun Jun 10 10:00:17 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (PRED_CALL, PRED_ERROR_RETURN): New.
	* predict.c (estimate_probability): Calculate dominance
	information; improve detection of NORETURN heuristics;
	add call/error_return heuiristics; tweak comparison heuristics
	to recognize -1.

2001-06-09  Alexandre Oliva  <aoliva@redhat.com>

	* doc/invoke.texi (C Dialect Options): Document -aux-info.
	(Debugging Options): Document -print-multi-directory and
	-print-multi-lib.
	* doc/gcc.1: Rebuilt.

	* toplev.c (independent_decode_option): Require `=' between
	`-aux-info' and filename in the same argument.
	* gcc.c: Don't pass -aux-info=filename twice.

2001-06-09  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (expand_expr, case ARRAY_REF): Do not replace
	an array element with the known initializing value if it has
	side-effects.

	* toplev.c (rest_of_compilation): Remove dead code before
	purge_addressof.

2001-06-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (print_help): Document -fpreprocessed.
	* invoke.texi: Similarly.

Sun Jun 10 00:35:37 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def: New file.
	* predict.h: New file.
	* predict.c: Include predict.h.
	(predictor_info): New structure and array.
	(predict_edge, predict_insn): Rewrite; make global.
	(predict_edge_def, predict_insn_def): New global functions.
	(dump_prediction, combine_predictions_for_insns): New
	static functions.
	(estimate_probability): Change calls to predict_edge
	to predict_edge_def and calls to predict_insn to predict_insn_def;
	combine probabilities.
	(expected_value_to_br_prob): Behave as predictor.
	* rtl.h (REG_BR_PRED): Update coment.
	(invert_br_probabilities): New.
	* jump.c: Include predict.h
	(duplicate_loop_exit_test): Drop branch prediction notes.
	(invert_jump): Use invert_br_probabilities.
	* Makefile.in: Add dependency on predict.h for jump and predict pass.
	* ifcvt.c (dead_or_predicable): Use invert_br_probabilities.
	* combine.c (distribute_notes): Handle BR_PRED.

Sat Jun  9 23:29:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (predict_insn, predict_edge): New static functions.
	(estimate_probability): Revamp to use new functions;
	fix loop header heruistics; add loop exist heruistics

2001-06-09  Alexandre Oliva  <aoliva@redhat.com>

	* config.gcc: Re-enable bi-arch sparc on Solaris 7 and above.

2001-06-09  Peter Jakubek <pjak@snafu.de>

	* config/m68k/m68k.md (ashrdi_const): Fix right shift by 16.

2001-06-09  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (NOTICE_UPDATE_CC): Set CC_NO_OVERFLOW in cc_status.flags
	for integer operations that don't update C bit.

2001-06-09  Nicola Pero <nicola@brainstorm.co.uk>

	* gthr-posix.h (__gthread_objc_init_thread_system): If
	pthread_key_create fails, it's not clear what the return value is.
	This obvious fix makes sure it always returns -1 if a problem
	occurs.

2001-06-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi: Use @defcodeindex for the index of options.  Add
	more index entries.  Use more logical markup where appropriate.
	Use TeX quotes and dashes.

2001-06-09  Benjamin Kosnik  <bkoz@redhat.com>

	* unwind-pe.h: Conditionally qualify references to abort with
	std::.

2001-06-09  Julian Foad <julian_foad@hotmail.com>

	* doc/invoke.texi: Remove superfluous text.

2001-06-08  Richard Henderson  <rth@redhat.com>

	* config/alpha/linux.h (CPLUSPLUS_CPP_SPEC): New.
	(LIB_SPEC): Mirror config/linux.h version.

2001-06-08  Richard Henderson  <rth@redhat.com>

	* except.c (get_exception_pointer, get_exception_filter): Take a
	struct function.  Update all callers.
	* except.h (get_exception_pointer): Update declaration.
	* expr.c (expand_expr): Update get_exception_pointer call.
	* integrate.c (expand_inline_function): Remap the exception pointer
	from callee to caller.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (grokdeclarator): Make the TREE_TYPE for declarations
	accurately reflect its cv-qualification.
	* c-typeck.c (type_lists_compatible_p): Ignore the top-levl
	cv-qualifiers on function types.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* basic-block.h: Improve comments.
	* except.c (expand_eh_region_end_allowed): Remove redundant call
	to do_pending_stack_adjust.
	* flow.c (life_analysis): Fix typo in comment.
	(calculate_global_regs_live): Add documentation.
	(mark_set_1): Likewise.
	(debug_regset): Likewise.
	* doc/rtl.texi (cond_exec): Document it.

Fri Jun  8 21:52:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (CONST_COSTS): set cost of constants representable in
	immediate fields to 0.

Fri Jun  8 21:34:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (diddle_return_value): Kill code to determine
	return value before expand_function_end.
	(expand_function_end): Delay call to clobber_return_register
	after fucntion return value is computed.

	Re-install temporary reverted patch:
	* toplev.c (rest_of_compilation): Call split_all_insns
	before reg-stack and shorten-branches. Do shorten-branches
	after reg-stack.
	* final.c (shorten_branches): Remove insn splitting code.

2001-06-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi, doc/invoke.texi: Add index of command line
	options.  Use @opindex to index them rather than other indexing
	commands.  Use @var{...} instead of <...>.  Avoid spaces in names
	inside @var.  Don't use @kindex to index escape sequences in
	source code.

2001-06-08  Jason Merrill  <jason_merrill@redhat.com>

	* stmt.c (current_nesting_level): New fn.
	* tree.h: Declare it.
	* c-semantics.c (genrtl_compound_stmt): Use it.

	* dbxout.c (dbxout_symbol): Use DECL_RTL_SET_P.

2001-06-08  Jakub Jelinek  <jakub@redhat.com>

	* jump.c (mark_modified_reg): Allow jump threading if condition
	codes are represented by a hard register.

2001-06-08  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (ia64_function_arg): Use [SDT]Fmode as gr_mode
	for complex floats passed to unprototyped functions.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* except.c (expand_eh_region_end_allowed): Call
	do_pending_stack_adjust as necessary.

Fri Jun  8 14:16:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (clobber_return_register): Clobber the pseudo return
	register too.

	* sibcall.c (skip_unreturned_value): New function.
	(call_ends_block_p): Use it.

	* recog.c (split_insn): Break out from ...
	(split_all_insns): ... here; do not use basic block information
	when it is broken.

Thu Jun  7 18:27:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg):  Fix verification of
	combined subreg.

2001-06-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/mips.h (CPP_SPEC): Simplify .s/.S handling.
	Don't define _LANGUAGE_C and variants for .cpp/.cp/.c++ files.
	Move definition of _LANGUAGE_C_PLUS_PLUS ...
	(CPLUSPLUS_CPP_SPEC): ... here.
	Fixes PRs c++/3047, target/441.

2001-06-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi2html (MAKEINFO): Keep value if set already.

2001-06-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi: Add trailing slash to URL.

2001-06-07  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (ENCODE_SECTION_INFO): Define.
	(REDO_SECTION_INFO_P): Ditto.
	(STRIP_NAME_ENCODING): Ditto.
	(ASM_DECLARE_OBJECT_NAME): Use ENCODE_SECTION_INFO.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Ditto.
	(ASM_OUTPUT_LABELREF): Use STRIP_NAME_ENCODING.
	(GEN_LAZY_PTR_NAME_FOR_SYMBOL): Ditto.
	* config/darwin.c: No longer include c-tree.h.
	(machopic_classify_ident): Rewrite to use symbol encoding.
	(lookup_name_darwin): Remove.
	(machopic_non_lazy_ptr_name): Handle encoded symbols.
	(machopic_stub_name): Use STRIP_NAME_ENCODING.
	(machopic_validate_stub_or_non_lazy_ptr): Ditto.
	(machopic_finish): Ditto, remove test of decl.
	(update_non_lazy_ptrs): New function.
	(darwin_encode_section_info): New function.
	* config/darwin-protos.h: Declare it.
	* config/rs6000/rs6000.c (machopic_output_stub): Use
	STRIP_NAME_ENCODING.

2001-06-07  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (DECL_SOURCE_FILE): Improve documentation.
	(DECL_SOURCE_LINE): Likewise.

2001-06-07  Loren J. Rittle  <ljrittle@acm.org>

	* config/alpha/elf.h (MAKE_DECL_ONE_ONLY): Copy definition
	from config/elfos.h.

2001-06-07  Phil Edwards  <pme@sources.redhat.com>

	* linux.h (CPLUSPLUS_CPP_SPEC):  Move -D_GNU_SOURCE to here.
	* pa/pa-linux.h:  Allow CPLUSPLUS_CPP_SPEC to remain.

2001-06-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/contrib.texi: Add copyright notice.

2001-06-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/md.texi: Use four digit years in copyright notice.

2001-06-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config.gcc: For $target_alias of athlon-*, set
	target_cpu_default2=5.

Thu Jun  7 16:17:40 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* global.c (build_insn_chain): Allow ADDR_VEC or ADDR_DIF_VEC after
	end of last block if last real insn is a JUMP_INSN.

2001-06-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* NEWS: Regenerate.

2001-06-07  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* gthr-posix.h (__gthread_objc_thread_detach): Simply cast
	pthread_t to objc_thread_t.
	(__gthread_objc_thread_id): Likewise.

2001-06-07  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* alpha/osf5.h (CPP_XFLOAT_SPEC): Override default definition.
	(ASM_OLDAS_SPEC): Likewise.

	* alpha/osf.h (CPP_XFLOAT_SPEC): Define.
	(CPP_SUBTARGET_SPEC): Use it.
	(ASM_OLDAS_SPEC): Define.
	(ASM_SPEC): Use it.
	(SUBTARGET_EXTRA_SPECS): Define, declare the new specs above.

2001-06-07  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/alpha.c (alpha_va_arg): Handle TFmode, TCmode args,
	passed by reference.

2001-06-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/tm.texi (TARGET_SWITCHES, TARGET_OPTIONS): Adjust markup.
	Document use of N_(...), and show it in examples.  Note that
	documentation should be added to invoke.texi.  Avoid an overfull
	hbox.

Thu Jun  7 17:09:50 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Revert previous patch.
	* final.c (shorten_branches): Likewise.

2001-06-07  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* pself.c, pself1.c, pself2.c, pself3.c, pself4.c, pself5.c:
	Remove.

2001-06-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install-old.texi: Remove more obsolete documentation.

Thu Jun  7 13:20:14 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (copy_blkmode_from_reg): Fix operand_subword_force call.

Thu Jun  7 12:12:58 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Call split_all_insns
	before reg-stack and shorten-branches. Do shorten-branches
	after reg-stack.
	* final.c (shorten_branches): Remove insn splitting code.

2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support.
	* configure: Rebuilt.

2001-06-07  Andreas Jaeger  <aj@suse.de>

	* emit-rtl.c (operand_subword): Remove unused variable.

Wed Jun  6 14:51:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (floatdi?f): Avoid usinf of SSE instructions
	if TARGET_64BIT is false.
	(floatdi?f_i386_only): New insn.
	(floatdi?f_i386): Disable for !TARGET_64BIT.

	* (min?f, max?f splitters): Handle case where
	operands are cross-matched.

	* i386.h (HI_REGISTER_NAMES): Remove redundant definition
	(MMX_REGISTER_NAMES): Kill.
	(PRINT_OPERAND): Fix comment.
	(PRINT_REG): Likewise.
	* i386.c (print_reg): Kill support for 'm' CODE; simplify.
	(print_operand): Update comment; kill 'm'.

	* i386.c (x86_branch_hints): New global variable
	(print_operand): Support outputting of branch prediction hints.
	* i386.md (conditional jump patterns): Add branch prediction hints
	to the template.
	* i386.h (x86_branch_hints): Declare
	(TARGET_BRANCH_PREDICTION_HINTS): New macro.
	(PRINT_OPERAND_FUNCT_VALID_P): New.
	* final.c (final_forward_branch_p): New function.

2001-06-06  Richard Henderson  <rth@redhat.com>

	* flow.c (mark_used_reg): Clean up looping over multiple hard
	registers.  Do conditional life bits across multiple hard regs.

2001-06-05  Jeffrey D. Oldham  <oldham@codesourcery.com>

	* reload1.c (reload): Revert Schmidt's change so all USEs are not
	deleted during reload.

2001-06-05  Mark Mitchell  <mark@codesourcery.com>

	* c-semantics.c (genrtl_scope_stmt): Write out nested inline
	functions here, instead of ...
	* c-decl.c (c_expand_body): ... here.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/sparc/bsd.h:  Do not directly include
	sparc/sparc.h.  Instead do it via tm_file.

2001-06-05  Richard Henderson  <rth@redhat.com>

	* dwarf2.h (DW_EH_PE_aligned): New.
	* dwarf2asm.c (eh_data_format_name): Name it.
	(dw2_asm_output_encoded_addr_rtx): Align for it.
	* dwarf2out.c (output_call_frame_info): Handle it for personality
	routine and LSDA pointers.

	* unwind-pe.h (DW_EH_PE_aligned): New.
	(base_of_encoded_value): Handle it.
	(read_encoded_value_with_base): Likewise.
	* unwind-dw2-fde.c (base_from_object): Likewise.
	(get_cie_encoding): Likewise.

	* config/alpha/elf.h: Remove ecoff commentary.
	* config/alpha/osf.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/i386/bsd386.h:  Do not directly include
	i386/386bsd.h.  Instead do it via tm_file.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* elfos.h (USING_ELFOS_H):  Identify the use of elfos.h in the same
	way svr4.h does.

2001-06-05  Pascal Obry  <obry@act-europe.fr>

	* configure.in: Quote $enable_win32_registry in case the value has
	spaces in it.
	* configure: Ditto.

2001-06-05  Mark Mitchell  <mark@codesourcery.com>

	* print-rtl.c (xspaces): Remove.
	(print_rtx): Use printf field-width, rather than xpsaces, to
	indent.
	* toplev.c (main): Disable sibling-call optimization if we are
	handling exceptions.

2001-06-05  Bernd Schmidt  <bernds@redhat.com>

	* reload1.c (reload): Delete all USEs generated during reload.

2001-06-05  scott snyder  <snyder@fnal.gov>

	* gccbug.in:  Fix typo.

2001-06-05  Andreas Jaeger  <aj@suse.de>

	* builtins.def: Fix definition of __builtin_cosf, it uses float as
	parameter and return value.

2001-06-04  Anthony Green  <green@redhat.com>

	* config/sparc/elf.h (CPP_PREDEFINES): Don't assert cpu or
	machine.  This is now done in sparc.h.

2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>

	Correct CVS resurrection of invoke.texi.
	* doc/invoke.texi: Document new tree dump flags.

2001-06-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (build_c_cast): Use TYPE_MAIN_VARIANT when checking
	for casting an aggregate to its own type.  Fixes PR c/2735.

2001-06-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/texinfo.tex: Update to version 2001-05-24.08.

2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (flag_dump_translation_unit): Remove.
	(enum tree_dump_index): Define.
	(TDF_ADDRESS, TDF_SLIM): New #defines.
	(dump_node_to_file): Remove.
	(dump_node): Make extern. Add flags.
	(dump_flag, dump_enabled_p, dump_begin, dump_end,
	dump_switch_p): Prototype.
	* c-common.c (flag_dump_translation_unit): Remove.
	* c-decl.c (c_decode_option): Remove -fdump-translation-unit
	logic. Use dump_switch_p.
	* c-dump.h (struct dump_info): Add node and user fields.
	(dump_pointer): Declare.
	* c-dump.c (dump_node): Make extern. Add flags.
	(SOL_COLUMN, EOL_COLUMN, COLUMN_ALIGNMENT): New #defines.
	(dump_new_line, dump_maybe_newline): Use them.
	(dump_pointer): New function.
	(dequeue_and_dump): Check TDF_SLIM before dumping a _DECL's
	chain or function's body. Dump address, if TDF_ADDRESS set.
	(dump_flag): Define.
	(dump_node_to_file): Remove.
	(struct dump_file_info): New struct.
	(dump_files): New array.
	(dump_begin, dump_end, dump_enabled_p, dump_switch_p): Define.
	* c-lang.c (finish_file): Adjust dumping.
	* toplev.h (dump_base_name): Make extern.
	* invoke.texi: Document new flags.

2001-06-04  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.h (lang_decl): Add pending_sizes fields.
	* c-decl.c (store_parm_decls): Save pending_sizes away for nested
	functions.
	(c_expand_body): Expand them.
	(lang_mark_tree): Mark lang_decl:pending_sizes.
	* function.c (expand_pending_sizes): New function, broken out
	from ...
	(expand_function_start): ... here.
	* tree.h (expand_pending_sizes): Declare it.

2001-06-04  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi: Update FreeBSD information.  Generalize
	and update information for alpha-based platforms using ELF.

2001-06-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* c-decl.c (get_parm_info): Use INTEGRAL_TYPE_P.
	(store_parm_decls): Likewise.
	* c-typeck.c (convert_arguments): Likewise.

2001-06-04  Richard Henderson  <rth@redhat.com>

	* sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress
	optimization if current_function_calls_setjmp.

2001-06-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi: Fix documentation of TREE_STRING_LENGTH for
	wide strings.

Mon Jun  4 20:44:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Fix combining of
	paradoxical subregs.

Mon Jun  4 20:15:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (rtx_unsable_p): ADDRESSOF is stable.
	(no_labels_between_p): Short circuit case beg==end.

Mon Jun  4 20:03:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (operand_preference): Fix preference for objects.

Mon Jun  4 20:00:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (handle_avail_expr): Be prepared to handle single_set
	parallels.

Mon Jun  4 19:59:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (if_then_else_cond): Use simplify_subreg instead
	of operand_subword.
	* integreate.c (sub_constants): Likewise.

Mon Jun  4 19:59:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (constant_subword): Deprecate; remove most of code
	and use simplify_gen_subreg.

Mon Jun  4 19:55:23 CEST 2001  Lars Brinkhoff  <lars@nocrew.org>

	* sibcall.c (skip_copy_to_return_value): recognize the situation
	when the called function's return value is copied into an
	intermediate pseudo, and then into the calling functions return
	value register.

Mon Jun  4 16:50:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify_rtx.c (simplify_subreg): Keep subregs on return values,
	check CLASS_CANNOT_CHANGE_MODE before avoiding subreg on hard reg,
	in case register wasn't OK previously, accept it now; allow
	subregs of frame pointer if reload completed and frame pointer
	is not needed.

	* combine.c (sombine_simplify_rtx): Fix comment;
	use subreg_lowpart_offset instead of subreg_lowpart_p
	(gen_lowpart_for_combine): Use subreg_lowpart_offset.
	* rtl.h (subreg_lowpart_parts_p): Kill.
	(subreg_lowpart_offset, subreg_highpart_offset): Declare.
	* simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset.
	* emit-rtl.c (gen_lowpart_SUBREG): Use subreg_lowpart_offset;
	(gen_lowpart_common): Likewise.
	(subreg_lowpart_p): Likewise.
	(subreg_lowpart_parts_p): Kill.
	(subreg_lowpart_offset, subreg_highpart_offset): New function.

	* emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg
	to simplify SUBREG and REG.
	(gen_highpart): Use simplify_gen_subreg for all simplifications.

	* emit-rtl.c (gen_realpart, gen_imagpart): Do not handle
	CONCAT specially.

	* rtlanal.c (replace_regs):  Use simplify_gen_subreg

Mon Jun  4 09:21:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* doc/c-tree.texi (ARRAY_REF): Say what type of expression must be.
	(ARRAY_RANGE_REF): Added description.

	* tree.def (ARRAY_RANGE_REF): New code.
	* alias.c (handled_component_p, can_address_p): Handle it.
	* dwarf2out.c (loc_descriptor_from_tree): Likewise.
	* explow.c (set_mem_attributes): Likewise.
	* expr.c (expand_assignment, get_inner_reference): Likewise.
	(expand_expr, expand_expr_unaligned, do_jump): Likewise.
	* fold-const.c (operand_equal_p): Likewise.
	* tree.c (staticp, stabilize_reference): Likewise.
	* varasm.c (decode_addr_const): Likewise.

Sun Jun  3 21:59:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (reload_inner_reg_of_subreg): Return 1 for PLUS.
	(push_reload): Handle non-REG in reload_inner_reg_of_subreg case.

2001-06-03  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* gcc/config/sh/sh.c (print_operand_address, print_operand): Call
	mark_constant_pool_use before output_addr_const.
	(struct pool_node): New field wend.
	(add_constant): Note a sequence of constants that are referenced
	by a given label.
	(pool_window_label, pool_window_last): New variables.
	(dump_table): Emit a unspec_volatile representing the end of a
	sequence of constants.
	(mark_constant_pool_use): New function.
	* gcc/config/sh/sh.md (UNSPECV_WINDOW_END): New constant.
	(consttable_2): Add the second operand which flags whether
	this consttable entry was used or not.
	(consttable_4, consttable_8, consttable_sf, consttable_df):
	Likewise.
	(consttable_window_end): New insn.

2001-06-03  Alexandre Oliva  <aoliva@redhat.com>

	* insn-addr.h (INSN_ADDRESSES_NEW): Make insn_uid__ unsigned.
	Reformat according to coding standards.

	Warning removal.
	* config/sh/sh.c (print_operand_address): Cast INTVAL to int.
	(shl_and_kind): Cast wide constant.
	(gen_far_branch): Define as static, as in declaration.
	(barrier_align): Compute cache-line length as unsigned.  Add
	parentheses in initial credit computation.
	(rounded_frame_size): Add parentheses.
	(permanent_obstack): Remove declaration.  Include ggc.h for
	declaration of ggc_add_root_rtx().
	(get_free_reg): Removed declaration of unused variable reg.
	(legitimize_pic_address): Mark mode argument as unused.

2001-06-03  Igor Shevlyakov  <igor@windriver.com>

	* config/sh/sh.c (output_branch): Support for insn with lenght
	attr 12 & 16 which represents cond branches outside +-4096 range.

2001-06-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/lib1funcs.asm (ic_invalidate): Align the
	cache-mirroring sequence.  Add nops.

2001-06-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install-old.texi: Remove more old installation
	documentation.
	* doc/install.texi: Add relevant parts here.

2001-06-03  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi2html: New script.

2001-06-03  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi: Update AIX information again.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi, doc/install-old.texi: Remove old system-specific
	installation documentation.
	* doc/install.texi: Move it to here.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Clean up Texinfo markup.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/cpp.texi, doc/cppinternals.texi, doc/gcc.texi: Move contents
	to just after title page.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install-old.texi: Remove documentation of some configuration
	options.
	* doc/install.texi: Add relevant parts of this documentation here.

2001-06-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* contrib.texi: Updated entries for Mark Mitchell, Joseph S. Myers,
	Gerald Pfeifer, Bernd Schmidt, and Dean Wakerley.

Sat Jun  2 12:23:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (all uses of ext_register_operand): Make sure they are
	VOIDmode; replace all uses outside zero_extend.
	(and?i splitters): Use ext_register_operands.
	(test?i peep2): Remove ignored constraints.
	* i386.c (ext_register_operand): Check that operand is
	either pseudo or hard or 'Q' register.

Sat Jun  2 06:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (struct record_layout_info_s): New field unpadded_align.
	(set_lang_adjust_rli): New declaration.
	* stor-layout.c (layout_decl): If DECL is packed, but at alignment
	it would have if not packed, do not downgrade DECL_ALIGN.
	(lang_adjust_rli, set_lang_adjust_rli): New.
	(start_record_layout): Initialize new field unpadded_align.
	(debug_rli): Display it.
	(place_union_field, place_field): Set it.
	(layout_type, case RECORD_TYPE): Call via lang_adjust_rli if set.

	* print-tree.c (print_node): Don't print "regdecl" when bit doesn't
	mean that; use proper names instead.
	Print DECL_NO_STATIC_CHAIN.

	* except.c (expand_builtin_frob_return_addr): Add missing call
	to convert_memory_address #ifdef POINTERS_EXTEND_UNSIGNED.
	(expand_builtin_eh_return): Likewise.
	(expand_eh_return): Clean up ptr_mode != Pmode cases.

2001-06-01  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* doc/invoke.texi: Remove references to papers about sequence points
	to readings.html, refer to that page.

2001-06-01  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README: Update references to installation instructions.

2001-06-01  Laurent Guerby  <guerby@acm.org>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi: Define srcdir when sources come from CVS.
	Significantly improve markup.  Wrap overly long lines

2001-06-01  DJ Delorie  <dj@redhat.com>

	* c-tree.texi, contrib.texi, cpp.texi, cppinternals.texi,
	extend.texi, fdl.texi, gcov.texi, invoke.texi, md.texi,
	objc.texi, rtl.texi, tm.texi, texinfo.tex, gcc.1, cpp.1,
	gcov.1: Move to doc subdirectory.
	* install.texi: Move to doc/install-old.texi.
	* gcc.texi: Move to doc, refer to install-old.texi.
	* Makefile.in: Reflect move of docs to doc/.
	* f/Make-lang.in: Ditto.
	* java/Make-lang.in: Ditto.
	* doc/.cvsignore: New.

2001-05-31  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* invoke.texi: use two spaces between command options, eliminate
	some 'overfull hboxes'

2001-06-01  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (s-mlib): Make backtick-commands always succeed.
	(DRIVER_DEFINES): Ditto.

2001-05-31  Richard Henderson  <rth@redhat.com>

	* gcc.c (init_gcc_specs): When linking against libgcc_s.so,
	also link against libgcc.a.

2001-05-31  Geoff Keating  <geoffk@cygnus.com>

	* config/mips/mips.h (ASM_OUTPUT_ASCII): Convert to function.
	* config/mips/mips.c (mips_output_ascii): New function.
	* config/mips/mips-protos.h (mips_output_ascii): Prototype.

	* config/mips/mips.h (DWARF_CIE_DATA_ALIGNMENT): Force to 4.

Thu May 31 19:09:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (set_block_for_new_insns): Remove bogus shortcut.
	* i386.c (ix86_expand_int_movcc): Force one of operands to be register.

2001-05-31  Rodney Brown  <rbrown64@csc.com.au>

	* install.texi (Configuration): Add html links for --with-gnu-as &
	--with-gnu-ld and refer to them from hppa & SCO triplets.
	(Specific): Link back to with-gnu-ld for all ELF platfoms.
	(Specific): Reword AVR binutils recommendation.

2001-05-30  Zack Weinberg  <zackw@stanford.edu>

	* ggc-page.c (size_lookup): Increase minimum allocation size
	to eight bytes.
	(ggc_print_statistics): Report size of each bin in bytes, not
	as its order; there is no longer a direct relationship.

2001-05-31  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* extend.texi: Fix formating of examples, eliminate some
	'overfull hboxes'.
	* gcc.texi: Eliminate some 'overfull hboxes'.
	* invoke.texi: Use two spaces between command options, eliminate
	some 'overfull hboxes'.

2001-05-30  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't emit DW_AT_stmt_list at -g1.

2001-05-30  Tom Tromey  <tromey@redhat.com>

	* gcc.c (do_spec_1): In `%O' case, if we computed saved_suffix,
	use it in the new association.

2001-05-30  Loren J. Rittle  <ljrittle@acm.org>
	    John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gthr-posix.h (__gthread_active_ptr): Cast function pointer
	to target type to allow ISO C++ compiler to accept it.
	* gthr-dce.h (__gthread_active_ptr): Likewise.
	* gthr-solaris.h (__gthread_active_ptr): Likewise.

2001-05-30  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (_cpp_lex_token): Revert patch of 16 May 2001
	so that we do accept comments in preprocessed input.

2001-05-30  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.c (alloc_node): Cast allocated pointer.

2001-05-30  Gordon Sadler <gbsadler1@lcisp.com>

	* invoke.texi (Option Summary): Remove -isystem-c++ from options.

2001-05-29  Stan Shebs  <shebs@apple.com>

	* gcc.texi: Add links for information about Objective-C.

2001-05-29  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.in (gcc_version): Remove unrequired \ on ". (Solaris
	/bin/sed fails on [^\"]).
	(configargs.h): Likewise.

2001-05-29  Hartmut Schirmer <SchirmerH@Innovative-Systems.de>

	* config/sh/sh.h (IDENT_ASM_OP): End with TAB, not LF.

2001-05-28  Stan Shebs  <shebs@apple.com>

	* objc/objc.gperf: Remove, no longer used.

2001-05-28  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-tree.texi, contrib.texi, cpp.texi, extend.texi, gcc.texi,
	gcov.texi, install.texi, md.texi, objc.texi, rtl.texi, tm.texi:
	Remove trailing whitespace.

2001-05-28  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): http://reality.sgi.com/ariel/freeware/
	became http://freeware.sgi.com/.

2001-05-27  Geoffrey Keating  <geoffk@redhat.com>

	* local-alloc.c (update_equiv_regs): Don't eliminate constant
	expressions at -O0.

2001-05-27  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c: Add/fix various comments.
	(init_selector): Remove, no longer used.
	(build_msg_pool_reference): Ditto.
	(objc_debug): Ditto.

2001-05-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (init_decl_processing):
	 Don't call start_identifier_warnings.
	* flags.h (warn_id_clash, id_clash_len): Remove.
	* stringpool.c: Don't include flags.h.
	(scan_for_clashes, do_identifier_warnings,
	start_identifier_warnings): Remove.
	* toplev.c (warn_id_clash, id_clash_len): Remove.
	(display_help): Don't document -Wid-clash.
	(decode_W_option): Print warning on -Wid-clash.
	* tree.h (start_identifier_warnings): Remove.
	* invoke.texi: Remove documentation of -Wid-clash.

2001-05-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/fixtests.c: Declare entries in ENV_TABLE.

2001-05-27  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl(HACK) add and use a Scheme variable
	(has no test text): error out if no "test_text" is defined
	* fixinc/fixincl.tpl: likewise
	(FIXIDX): make it an enumeration so we minimize diffs
	* fixinc/inclhack.def: re-alphabetize and add sort instructions
	* fixinc/fixincl.x: regenerate
	* fixinc/tests/base/stdio.h: test output got moved due to
	the alphabetizing
	* README-fixinc: rewrite (mostly)

2001-05-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (run_directive): Set pfile->directive.

2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>

	* c-tree.texi: Reformat the manual as a single chapter now
	included by gcc.texi.
	* gcc.texi: Include c-tree.texi. Merge all indexes.
	* Makefile.in (dvi): Add generation for the cppinternals
	documentation. Added dependencies on fdl.texi and c-tree.texi
	where appropriate.  Use TEXI2DVI instead of custom tex calls.
	(info): Added dependencies on fdl.texi and c-tree.texi where
	appropriate.  Remove the target c-tree.info.

2001-05-27  Lars Brinkhoff  <lars@nocrew.org>

	* combine.c (try_combine): Fix typo in comment.
	* expr.c (expand_expr): Likewise.
	* config/i370/i370.md (untyped_call): Likewise.

2001-05-26  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixtests.c(stdc_0_in_system_headers_test): Must return "FIX"
	when fixincl is operating in test mode
	* fixinc/inclhack.def(AAB_dgux_int_varargs) : aesthetics
	(AAB_ultrix_limits): remove redundant text
	(AAB_ultrix_memory): ditto
	(AAB_ultrix_string): ditto
	(djgpp_wchar_h): fix the test text
	(irix_stdio_va_list): add test text
	(irix_limits_const): add a testing output file (limits.h is overwritten)
	(strict_ansi_not_ctd): put limits.h second in list for same reason
	(solaris27_mutex_init): test text needed selection text, too

	* fixinc/fixtests.c(stdc_0_in_system_headers_test): Must return "FIX"
	when fixincl is operating in test mode

2001-05-26  Philip Blundell  <philb@gnu.org>

	* config/c4x/c4x-protos.h: Use GCC_C_PRAGMA_H in place of _C_PRAGMA_H.
	* config/i960/i960-protos.h: Likewise.
	* config/i370/i370-protos.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise,
	* config/sh/sh-protos.h: Likewise.
	* config/v850/v850-protos.h: Likewise.

2001-05-26  Philip Blundell  <philb@gnu.org>

	* config/arm/arm-protos.h: Use GCC_C_PRAGMA_H in place of _C_PRAGMA_H.

2001-05-25  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c (debug_args, f_options, W_options): Mark
	descriptions for translation.
	(display_help): Translate descriptions on output.

	* cp/lang-options.h, f/lang-options.h, java/lang-options.h,
	objc/lang-options.h: Mark descriptions for translation.

	* aclocal.m4: Quote final argument of patsubst.  Use
	3-argument form of AC_DEFINE.  Restore quotes to [] while
	using AC_FD_CC.
	* configure.in: Remove unnecessary changequote calls.
	* configure, config.in: Regenerate.

2001-05-25  Sam TH  <sam@uchicago.edu>

	* basic-block.h: Fix header include guards.
	* bitmap.h c-dump.h c-lex.h c-pragma.h c-tree.h collect2.h
	cppdefault.h cpphash.h cpplib.h defaults.h diagnostic.h errors.h
	except.h flags.h gcc.h gcov-io.h graph.h gstab.h gthr-aix.h
	gthr-dce.h gthr-posix.h gthr-rtems.h gthr-single.h gthr-solaris.h
	gthr-vxworks.h gthr-win32.h gthr.h hard-reg-set.h hwint.h
	insn-addr.h libgcc2.h mbchar.h mkdeps.h params.h prefix.h real.h
	rtl.h sbitmap.h system.h timevar.h toplev.h tradcpp.h tsystem.h
	varray.h version.h: Likewise.
	* config/dbxelf.h config/fp-bit.h config/arm/arm-protos.h
	config/arm/arm.h config/c4x/c4x-protos.h
	config/h8300/h8300-protos.h config/h8300/h8300.h
	config/i370/i370-protos.h config/i370/i370.h
	config/i960/i960-protos.h config/mcore/mcore.h
	config/mips/mips-protos.h config/sh/sh-protos.h config/sh/sh.h
	config/v850/v850-protos.h config/v850/v850.h: Likewise.
	* fixinc/fixlib.h fixinc/server.h: Likewise.

2001-05-25  Stacey Sheldon  <ssheldon@Catena.com>

	* config/arc/initfini.c (.init): Fix typo.

2001-05-25  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (fseldfsf4): Correct mode of operand 4.

2001-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* i386/i386.h (CC1_CPU_SPEC): Clarify -m486 etc deprecation messages.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* libgcc-std.ver: Export XFmode and TFmode versions of symbols.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* config.gcc (all gnu and linux): Use t-slibgcc-elf-ver with t-linux.
	(i386-*-solaris2): Use t-slibgcc-elf-ver or t-slibgcc-sld.
	(sparc*-*-solaris2): Likewise.
	* config/t-linux: Remove shared libgcc macros.
	* config/t-slibgcc-elf-ver: Move from sparc/t-slibgcc.
	* config/t-slibgcc-sld: Move from sparc/t-slibgcc-sld.

2001-05-25  Loren J. Rittle  <ljrittle@acm.org>

	* config.gcc (*-*-freebsd*): Report bad configuration.

2001-05-25  David Edelsohn  <edelsohn@gnu.org>

	* xcoffout.h (DBX_OUTPUT_GCC_MARKER): Do not emit any marker.

	* config/rs6000/aix.h (USER_LABEL_PREFIX): AIX symbols do not have
	any prefix.
	(ASM_OUTPUT_LABELREF): Delete.

2001-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (strict_ansi_not, strict_ansi_not_ctd,
	strict_ansi_only): Don't run if stdc_0_in_system_headers.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/fixtests.c (stdc_0_in_system_headers_test): New function.
	(FIX_TEST_TABLE): Declare it.
	* fixinc/fixlib.h: Include config.h.

2001-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (alpha___assert): Change char * args to
	const char * on Tru64 UNIX to avoid excessive warnings from
	assert.h.
	* fixinc/fixincl.x: Regenerate.

2001-05-25  Geoff Keating  <geoffk@redhat.com>

	* dbxout.c (dbxout_symbol): Invert previous patch, which was
	outputting a tag only for variable-size records.

2001-05-25  Jeff Knaggs  <jknaggs@redhat.com>

	* config/alpha/alpha.md (movtf_internal): Use reg_overlap_mentioned_p
	instead of rtx_equal_p for early clobber test.

2001-05-26  Mark Mitchell <mark@codesourcery.com>

	* builtins.def: Encode additional information, such as names and
	types, here.
	* builtin-types.def: New file.
	* builtins.c (built_in_names): Adjust use of DEF_BUILTIN.
	(built_in_decls): Likewise.  Don't explicitly initialize global
	data to NULL.
	(expand_builtin_mathfn): Handle float and long double variants of
	math builtins.
	(expand_builtin): Likewise.
	* c-common.c (c_common_nodes_and_builtins): Make it table-driven.
	(expand_tree_builtin): Handle long, long long, float, and long
	double variants of math functions.
	* c-common.h (c_tree_index): Remove some unused nodes.
	(void_ftype): Remove.
	(void_type_ptr): Likewise.
	(int_ftype_int): Likewise.
	(ptr_ftype_sizetype): Likewise.
	* c-decl.c (init_decl_processing): Remove creation of DWARF
	builtins.
	* defaults.h (MD_INIT_BUILTINS): Provide default definition.
	* tree.h (built_in_function): Adjust definition of DEF_BUILTIN.
	* Makefile.in (c-common.o): Depend on builtin-types.def.

2001-05-25  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/t-darwin: Fix dependencies for darwin.o.

2001-05-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-parse.in (notype_initdcl): Remove redundant line.

2001-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* aclocal.m4: Fixed typo.
	(gcc_AC_HEADER_STDBOOL): Define.
	(gcc_AC_C__BOOL): Define.
	* configure.in: Use them.
	(AC_CHECK_HEADERS): Remove stdbool.h
	* configure, config.in: Regenerate.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Don't abort on PARALLEL
	returns from hard_function_value.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Revert previous change.  Do not apply
	the peephole if the components do not die after the sequence.

2001-05-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (array_declarator): New.  Handle C99 constructs.
	Don't restrict [*] declarators to C only.
	(after_type_declarator, parm_declarator_starttypename,
	parm_declarator_nostarttypename, notype_declarator,
	direct_absdcl1): Use it.
	* c-decl.c (build_array_declarator, set_array_declarator_type):
	New functions.  Warn that [*] isn't properly implemented; pedwarn
	for [*] outside C99 mode if pedantic rather than giving a hard
	error.
	(grokdeclarator): Handle static and type qualifiers in parameter
	array declarators.
	* c-tree.h (build_array_declarator, set_array_declarator_type):
	Declare.
	* extend.texi (Attribute Syntax): Document attributes in parameter
	array declarators.

2001-05-25  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/i386.md: Make sure cmpstr peepholes do not
	affect liveness information.

2001-05-24  Mark Mitchell  <mark@codesourcery.com>

	* c-typeck.c (digest_init): Issue error messages about
	invalid constants, not warnings.

2001-05-24  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-fno-builtin): Document that this is always on
	in C++.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* doc/install.texi (arm*-*-linux-gnu): Say that binutils 2.10 is
	required.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (output_return_instruction): Correctly handle
	interworking and interrupt functions.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (TARGET_SWITCHES): Correct misleading help for
	-m{no-}sched-prolog.  Fix typos and improve formatting.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* invoke.texi (ARM Options): Improve wording slightly.  Add
	documentation for more options, including those for Thumb mode.
	Don't mention options that don't exist or are unimplemented.
	(Thumb Options): Delete; merged into above section.

2001-05-24  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/linux.h (SIGNAL_FRAMESIZE): Define.
	(MD_FALLBACK_FRAME_STATE_FOR): Use it.

Thu May 24 19:47:19 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Fix CONCAT simplification;
	fix hard register simplification.

Thu May 24 00:15:17 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sparc/sol2.h (CPLUSPLUS_CPP_SPEC): Add all of CPP_SPEC instead
	of just copying CPP_CPU_SPEC.

Thu May 24 15:56:48 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (incdec_operand): Accept only 1 and -1.

2001-05-23  Kelley Cook  <kelley.cook@home.com>

	* Makefile.in: Move many of the *_H definitions eariler in the
	file, so that rules in t-* files that use them for
	dependencies will work in a parallel build.
	* config/i386/t-cygwin (winnt.o): Depend on $(CONFIG_H).

2001-05-23  Richard Henderson <rth@redhat.com>

	* integrate.c (expand_inline_function): Handle CONCAT DECL_RESULT.

2001-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update for handling of charconsts.
	* cpplex.c (maybe_read_ucs): Don't accept D800-DFFF.  Update
	diagnostics.  Skip to the end if the UCS is too short.
	(cpp_interpret_charconst): Long charconsts issue a warning
	not an error.

2001-05-23  Richard Henderson  <rth@redhat.com>

	* doc/install.texi (alpha-linux): Require binutils 2.11.

2001-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (read_escape, read_ucs): Delete.
	(lex_string): Use cpp_parse_escape.
	* cpplex.c (read_ucs): Rename maybe_read_ucs.  Do nothing
	if not C++ or not C99.  Warn if traditional.
	(parse_escape): Rename cpp_parse_escape.  Make the bitmask
	unsigned.  Warn for out-of-range escape sequences here.
	Update to use maybe_read_ucs.
	(cpp_interpret_charconst):  Don't warn here.
	* cpplib.h (cpp_parse_escape): New exported function.

2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi (Attribute Syntax): Clarify application of
	attributes to parameters declared as functions or arrays.

2001-05-23  Jason Merrill  <jason_merrill@redhat.com>

	* dbxout.c (dbxout_type_methods): Do still group methods by name.

2001-05-23  Zack Weinberg  <zackw@stanford.edu>

	* diagnostic.c (vnotice): Kill.
	(fnotice): Call vfprintf directly.
	(diagnostic_for_decl, output_do_verbatim, output_verbatim,
	verbatim, set_diagnostic_context): Rename string argument to
	indicate that it is run through gettext.
	(vbuild_message_string, build_message_string, output_do_printf):
	Rename string argument to indicate that it is NOT run through
	gettext.
	(output_printf, diagnostic_for_decl, fatal_io_error, sorry,
	output_do_verbatim, set_diagnostic_context, fnotice, _fatal_insn):
	Run msgid argument through gettext.
	(default_print_error_function): Run constant strings through
	gettext when nothing else will.
	(fatal_error, internal_error, error_recursion): Use fnotice.
	Present complete sentences to gettext.

2001-05-23  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (mark_jump_label): Fix thinko in 2001-05-19 change.

2001-05-23  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Always use a pseudo
	for the function result value.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* config/mips/iris6.h (EH_FRAME_SECTION_ASM_OP): Give the
	section pointer alignment.

	* doc/install.texi (alpha-linux): Require binutils >= 2.10.

	* unwind-dw2-fde.c (__deregister_frame_info): Stringize use
	of __USER_LABEL_PREFIX__.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* unwind-dw2-fde.c (__deregister_frame_info): Stubbify in favor of...
	(__deregister_frame_info_bases): New.
	* unwind-dw2-fde.h: Declare it.
	* libgcc-std.ver: Export it.
	* crtstuff.c (__do_global_dtors_aux): Call it if we would have
	called __register_frame_info_bases.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>

	* config/freebsd.h (FBSD_CPP_PREDEFINES): Use #endif/#if pair
	instead of #elif (which is OK for this case but not in general).

2001-05-22  Andrew MacLeod  <amacleod@redhat.com>

	* builtins.c (expand_builtin_longjmp): A longjmp can be a call too.
	* config/ia64/ia64.md (nonlocal_goto): Reverse label and frame pointer
	parameters to __ia64_nonlocal_goto. Flag as NO_RETURN.
	* config/ia64/ia64.c (ia64_expand_epilogue): Make sure we are issuing
	"r2" to the assembly file. Only issue allocs with nonzero parameters.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config/freebsd.h (LIB_SPEC): Key the exact setting to
	configure-time options and target version of FreeBSD.  Set-up
	to match architectural change in threading support.  Correctly
	report when -pthread option is not supported by configure-time
	options.
	(FBSD_CPP_PREDEFINES): Move from architecture-specific files
	and extend to encode target version number in run-time setting
	of __FreeBSD__ macro to match the system compiler.
	(CPP_PREDEFINES): Likewise.
	(PREFERRED_DEBUGGING_TYPE): Change to DWARF2_DEBUG.

	* config/alpha/freebsd.h (CPP_PREDEFINES): Moved to common freebsd.h.
	* config/i386/freebsd.h (CPP_PREDEFINES): Likewise.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config.gcc (the unlabeled system switch statement): Add
	generic configuration section to handle *-*-freebsd*.  Also,
	to match the system compiler, default to threading support (it
	may be disabled with the standard --disable-threads
	configuration-time switch).
	(i[34567]86-*-freebsd* in machine-specific section): Use it.
	(alpha*-*-freebsd* in machine-specific section): Likewise.

	* config/freebsd3.h: New file to expose FBSD_MAJOR macro (3).
	* config/freebsd4.h: New file to expose FBSD_MAJOR macro (4).
	* config/freebsd5.h: New file to expose FBSD_MAJOR macro (5).
	* config/freebsd6.h: New file to expose FBSD_MAJOR macro (6).
	* config/freebsd-nthr.h: New file to expose FBSD_NO_THREADS macro.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config/t-freebsd (TARGET_LIBGCC2_CFLAGS): Add -fPIC.
	* config/t-freebsd-thread (TARGET_LIBGCC2_CFLAGS): Add
	-pthread instead setting macro.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* crtstuff.c (__register_frame_info_bases): Declare.
	(frame_dummy): Use it, if CRT_GET_RFIB_TEXT or CRT_GET_RFIB_DATA.
	(__do_global_dtors_aux, __do_global_dtors): Streamline.

	* config/i386/linux.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
	(CRT_GET_RFIB_DATA): New.
	* config/i386/sysv4.h: Likewise.
	* config/i386/sco5.h: Likewise.
	(ASM_PREFERRED_EH_DATA_FORMAT): New.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* rtl.c (read_string): Break out from ...
	(read_rtx): ... here.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Remove a bogus and duplicate part
	copied from the end of the document.

2001-05-22  Bernd Schmidt  <bernds@redhat.com>

	* Makefile.in (LIBGCC_DEPS): Correct LIB1ASMSRC dependency.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* install.texi: Remove obsolete information on SunOS as well as
	i386-sun-sunos4, i860-intel-osf1, and powerpcle-*-solaris2*.
	(Installing GNU CC on the Sun): Remove section.

2001-05-22  Alexandre Oliva  <aoliva@redhat.com>

	* cppfiles.c (remove_component_p): Don't assume lstat/stat will
	keep errno unchanged on success.

2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-lex.c (lex_number): If pedantic and not C99, pedwarn exactly
	once for hexadecimal floats, whether or not they contain a decimal
	point.  Don't let the setting of pedantic otherwise affect the
	parsing of hexadecimal floats.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.ACORN: Remove obsolete file.

2001-05-22  Jan Hubicka  <jh@suse.cz>

	* combine.c (gen_binary): Use swap_commutative_operands_p
	(simplify_comparison): Likewise.
	* expmed.c (emit_store_flag): Likewise.
	* expr.c (compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump): Likewise.
	* optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
	if not emitting a branch and operands want swapping.

2001-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (c_lex): Just cast cpp's hashnode to gcc's one.
	* stringpool.c:	(IS_FE_IDENT, make_identifier): Delete.
	(maybe_get_identifier): Update.
	* tree.h (make_identifier): Delete.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* combine.c (subst): Do not substitute for a register as
	a destination subreg/strict_low_part/zero_extract.

	* combine.c (simplify_comparison): Update op1 after constant
	extension.
	* recog.c (const_int_operand): Accept only constants valid
	for the given mode.
	* genrecog.c: Update comments wrt const_int_operand.

	* emit-rtl.c (init_emit_once): Zero unused memory in a
	CONST_DOUBLE.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (type_num_arguments): Declare it.
	* tree.c (type_num_arguments): New function.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (current_funcdef_number): Move outside dwarf2
	conditional ifdef.

2001-05-21  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (maxsf3): Use rs6000_emit_minmax.
	(maxsf3+1): Delete.
	(minsf3): Use rs6000_emit_minmax.
	(minsf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movsfcc): Use rs6000_emit_cmove.
	(fselsfsf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fseldfsf4): Likewise.
	(maxdf3): Use rs6000_emit_minmax.
	(maxdf3+1): Delete.
	(mindf3): Use rs6000_emit_minmax.
	(mindf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movdfcc): Use rs6000_emit_cmove.
	(fseldfdf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fselsfdf4): Likewise.
	* config/rs6000/rs6000.c (zero_fp_constant): New predicate.
	(min_max_operator): New predicate.
	(rs6000_emit_cmove): New function.
	(rs6000_emit_minmax): New function.
	* config/rs6000/rs6000-protos.h: Prototype new functions.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add zero_fp_constant
	and min_max_operator.

	* config/rs6000/rs6000.c (output_cbranch): Handle all
	conditional types in the switch statement.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (finish_decl): Don't set DECL_C_HARD_REGISTER for
	non-register variables.
	* extend.texi: Document that asm-specifications do not make sense
	for non-static local variables.

2001-05-21  Jason Merrill  <jason_merrill@redhat.com>

	* dbxout.c (MINIMAL_DEBUG, flag_minimal_debug): Lose.
	(dbxout_type_fields): Lose minimal_debug support.
	(dbxout_type_methods, dbxout_type): Likewise.

2001-05-17  Andrew Haley  <aph@redhat.com>

	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (DEBUG_FRAME_SECTION): Rename from FRAME_SECTION.
	Update all users.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION,
	DEBUG_STR_SECTION): Rename from s/DEBUG_//.  Update all users.
	* dwarfout.c (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION):
	Likewise.
	* config/mips/iris6.h (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_FRAME_SECTION, DEBUG_ABBREV_SECTION): Rename as above.
	(DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.
	* config/ia64/ia64.h (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_PUBNAMES_SECTION): Rename as above.
	(DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
	operands unless the operation is commutative.

2001-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Detect more non-negative
	cases.

2001-05-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Clarify documentation of extensions included in ISO
	C99.  Prefer C99 terminology and syntax to old GNU terminology and
	syntax.  Add more index entries.  Document mixed declarations and
	code as an extension in C89 mode.  Warn about future changes to
	semantics of inline functions.  Fixes PR other/930.

Sun May 20 16:39:24 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ARRAY_REF): Don't fold constant
	access if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.
	(expand_expr, case COMPONENT_REF): Do copy if misaligned even
	if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.

	* stmt.c (expand_decl): Set mode, alignment, and sizes for CONST_DECL.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* sched-deps.c (sched_analyze_insn): Force volatile memory reads
	to be output before a branch.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* Makefile.in (dwarf2asm.o): Depend on $(TREE_H).

2001-05-20  Richard Henderson  <rth@redhat.com>

	* config/i386/att.h (ASM_SHORT, ASM_LONG): Add trailing \t.
	(ASM_DOUBLE): Remove.
	* config/i386/bsd.h, config/i386/sco5.h: Likewise.
	* config/i386/sun386.h: Likewise.

	* config/i386/i386.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, INT_ASM_OP): New.

	* config/i386/cygwin.h (INT_ASM_OP): Remove.
	* config/i386/freebsd-aout.h, config/i386/i386-aout.h: Likewise.
	* config/i386/i386-coff.h, config/i386/i386-interix.h: Likewise.
	* config/i386/netbsd.h, config/i386/openbsd.h: Likewise.

	* config/i386/cygwin.h: Adjust uses of ASM_LONG for trailing \t.
	* config/i386/djgpp.h, config/i386/i386.h: Likewise.
	* config/i386/i386elf.h, config/i386/ptx4-i.h: Likewise.
	* config/i386/sco5.h, config/i386/svr3gas.h: Likewise.
	* config/i386/sysv4.h, config/i386/vsta.h: Likewise.
	* config/i386/win32.h: Likewise.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Add more options to summary list.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document meaning of -pedantic when -std=gnu* is
	used.  Fixes PR c/2291.
	* gcc.1: Regenerate.

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Ignore
	the -fpic and -fPIC options, clear flag_pic.

2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* hashtable.c (calc_hash): Fix HASHSTEP definition.
	* stringpool.c (make_identifier): No statistics here anymore.
	* objc-act.c (steup_string_decl): Remove redundant check.

2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (OBJS, LIBCPP_OBJS, LIBCPP_DEPS,
	cpplib.o, cpphash.o, fix-header): Update.
	(hashtable.o): New target.
	* c-common.h: Include cpplib.h.  Define C_RID_CODE and
	struct c_common_identifier here.
	* c-lang.c (c_init_options): Update.  Call set_identifier_size.
	* c-lex.c (c_lex): Update.
	* c-pragma.h: Update.
	* c-tree.h (struct lang_identifier): Contain c_common_identifier.
	Delete rid_code.
	(C_RID_CODE): Delete.
	* cpphash.c: Rewrite to use hashtable.c.
	* cpphash.h: Update include guards.
	(struct cpp_reader): Remove hashtab.
	hash_ob and buffer_ob are no longer pointers.  Add hash_table
	and our_hashtable.
	(HASHSTEP, _cpp_init_hashtable,	_cpp_lookup_with_hash): Delete.
	(_cpp_cleanup_hashtable): Rename _cpp_destroy_hashtable.
	(_cpp_cleanup_stacks): Rename _cpp_init_directives.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_output_token): Update.
	(cpp_interpret_charconst): Eliminate warning.
	* cpplib.c (do_pragma, do_endif, push_conditional,
	cpp_push_buffer, cpp_pop_buffer): Update.
	(_cpp_init_stacks): Rename cpp_init_directives.
	(_cpp_cleanup_stacks): Remove.
	* cpplib.h: Update include guards.  Include tree-core.h and c-rid.h.
	(cpp_hashnode, cpp_token, NODE_LEN, NODE_NAME,
	 cpp_forall_identifiers, cpp_create_reader): Update.
	(C_RID_CODE, cpp_make_node): New.
	(c_common_identifier): New identifier node for C front ends.
	* cppmain.c (main): Update.
	* fix-header.c (read_scan_file): Update.
	* flags.h (id_clash_len): Make unsigned.
	* ggc.h (ggc_mark_nonnull_tree): New.
	* hashtable.c: New.
	* hashtable.h: New.
	* stringpool.c: Update comments and copyright.  Update to use
	hashtable.c.
	* toplev.c (approx_sqrt): Move to hashtable.c.
	(id_clash_len): Make unsigned.
	* toplev.h (ident_hash): New.
	* tree.c (gcc_obstack_init): Move to hashtable.c.
	* tree.h: Include hashtable.h.
	(IDENTIFIER_POINTER, IDENTIFIER_LENGTH): Update.
	(GCC_IDENT_TO_HT_IDENT, HT_IDENT_TO_GCC_IDENT): New.
	(struct tree_identifier): Update.
	(make_identifier): New.
cp:
	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
	(C_RID_CODE): Remove.
	* lex.c (cxx_init_options): Call set_identifier_size.  Update.
	(init_parse): Don't do it here.
objc:
	* objc-act.c (objc_init_options): Call set_identifier_size. Update.

Sat May 19 18:23:04 2001  Richard Henderson <rth@redhat.com>

	* except.c (dw2_build_landing_pads): Use word_mode, not Pmode,
	as ncessary.
	(expand_eh_return): Convert between word_mode and Pmode.
	* unwind-dw2.c (extract_cie_info): Do not assume words and pointers
	are the same size.
	(execute_stack_op): Likewise.
	(execute_cfa_program): Likewise.
	(uw_frame_state_for): Likewise.
	(uw_update_context_1): Likewise.
	* unwind.inc (_Unwind_Reason_Code): Likewise.
	* config/mips/mips.h (EH_RETURN_DATA_REGNO): Define.
	(EH_RETURN_STACKADJ_RTX): Likewise.
	* config/mips/mips.c (compute_frame_size): Make space for saving
	EH return registers.
	(mips_expand_epilogue): Handle EH stack adjustments.
	* config/mips/mips.md (eh_return): New pattern.
	(eh_set_lr_si): Likewise.
	(eh_set_lr_di): Likewise.
	Add splitter to perform EH return after reload.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (mark_jump_label): Tidy previous change.

2001-05-19  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes: no need for two warnings
	* fixinc/Makefile.in: open stdin for those building with a closed one.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (jump_optimize_1): Tidy.
	(mark_jump_label): When changing the label in a LABEL_REF, change
	update any REG_EQUAL notes as well.

2001-05-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (parm_declarator): Split into
	parm_declarator_starttypename and parm_declarator_nostarttypename.
	(parm_declarator_starttypename, parm_declarator_nostarttypename):
	New.  Allow parenthesized sub-declarators which don't begin with a
	TYPENAME.  Fixes PR c/166.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): New
	macro.
	* tm.texi (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER):
	Document it.
	* toplev.c (main): If the target does not allow profiling without
	a frame pointer, issue an error message.
	* config/i386/linux.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER):
	Define it to false.

Sat May 19 07:53:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* recog.c (general_operand): Modify last change to allow it if reload
	has completed.

Sat May 19 10:23:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (general_operand): Prohibit nonzero subreg bytes on
	subregs containing mem.

Sat May 19 09:40:45 2001  Denis Chertykov  <denisc@overta.ru>

	* regrename.c (regrename_optimize): frame pointer register can
	use a few hardregs.

2001-05-18  Jason Merrill  <jason_merrill@redhat.com>

	* README.DWARF: Move into dwarfout.c.

2001-05-18  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (secondary_reload_class): Fix Darwin
	specific misuse of r0 as a reload address.

Fri May 18 22:42:04 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Clear op0_mode if simplification
	succeeded.

Fri May 18 07:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* genrecog.c (enum decision_type): Add DT_elt_zero-wide_safe.
	(add_to_sequence): Make that decision type.
	(maybe_both_true_2, nodes_identical_1, factor_tests): Use it.
	(write_switch, write_cond, debug_decision_2): Likewise.

	* dbxout.c (dbxout_type): Use host_integerp and fix typo in testing
	for INTEGER_TYPE.
	(dbxout_symbol, case TYPE_DECL): Don't generate tag for records of
	variable size.

2001-05-18  Stan Shebs  <shebs@apple.com>

	* configure.in (gcc_cv_as_eh_frame): Cope with old assemblers.
	* configure: Regenerate.

2001-05-18  Per Bothner  <per@bothner.com>

	Changes needed for java/jvspec.c
	* gcc.h (n_infiles, outfiles):  Add declarations.
	* gcc.c (n_infiles, outfiles):  Mske no longer static.

Fri May 18 10:14:42 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (EXCEPTION_SECTION): Define.

2001-05-18  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c: Add dw_loc_list_ref, a reference to a location
	list.
	Add have_location_lists, a variable to determine whether we need a
	.debug_loc section or not.
	(enum dw_val_class): Add dw_val_class_loc_list.
	(dw_val_struct): Add val_loc_list.
	(dw_loc_list_struct): New structure, represents location lists.
	(new_loc_list): New function, return a new location list, given
	the range and location expression.
	(add_loc_descr_to_loc_list): New function, add a location
	expression to a location list, given the expression and range.
	(output_loc_list): New function, output a location list.
	(gen_internal_sym): Modified to take symbol prefix, so we can
	reuse it for location list symbols.
	(add_AT_loc_list): New function, add a location list to a DIE at
	the named attribute.
	(AT_loc_list): New function, return the location list reference
	for a given attribute, if it's a location list.
	(print_die): Handle dw_val_class_loc_list.
	(size_of_die): Ditto.
	(value_format): Ditto.
	(output_die): Ditto.
	(output_location_lists): New function, output all of the location
	lists for a DIE and it's children.
	(dwarf2out_finish): Call output_location_lists if we have location
	lists.


Fri May 18 15:39:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (try_replace_reg): First try global replace, later try to
	simplify the expression.

	* gcse.c (find_used_regs): Change calling convention; work via
	note_uses.
	(cprop_insn): Update call of find_used_regs; work for CALL_INSNs too.

2001-05-18  Bernd Schmidt  <bernds@redhat.com>

	Revert
	2001-02-09  Nick Clifton  <nickc@redhat.com>
	* config/arm/arm.md: Change output constraint on post inc
	load/store multiple patterns to be a read/write constraint.

2001-05-18  Mark Mitchell  <mark@codesourcery.com>

	* basic-block.h (struct basic_block_def): Add documentation about
	what a basic block is, and what the various fields are used for.
	* flow.c (calculate_globlal_regs_live): Add documentation about
	how the algorithm works, and how we know that it will terminate.
	Check that the inductive assumption that guarantees termination
	actually holds.
	(mark_used_regs): Treat conditionally set registers as used.
	(debug_regset): Add comment.
	* rtl.texi (cond_exec): Add documentation.

	* function.c (expand_function_start): Avoid creating BLKmode
	pseudos.

2001-05-17  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (output_comp_unit): Always output a compilation-unit
	DIE, even if it has no children.
	(dwarf2out_finish): Always output the line-number table, even if
	it has no content.

2001-05-18  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (movsfcc,movdfcc): Remove NE case.

2001-05-17  Bruce Korb <bkorb@gnu.org>

	* fixinc/fixincl.tpl: rewritten as an AutoGen version 5 template
	* fixinc/genfixes: emit a warning if AutoGen is out of date

2001-05-17  Brendan Conoboy <blc@cygnus.com>
	    Bruce Korb <bkorb@gnu.org>

	* fixinc/fixincl.sh(FIXINC): accept local directory if fixincl not
	found in fixinc directory.  Facilitates binary distributions.

2001-05-17  Jeffrey Oldham  <oldham@codesourcery.com>

	* dbxout.c (dbxout_symbol_location): For CONCAT, skip types not
	COMPLEX_TYPE.

Thu May 17 19:42:39 2001  Mark Kettenis  <kettenis@wins.uva.nl>

	* dwarf2out.c (modified_type_die): Equate qualified type to die.

Thu May 17 23:19:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_rtx_and_substitute): Use simplify_gen_subreg.
	(simplify_subreg): Handle complex types represented as CONCAT.

	* recog.c (validate_replace_rtx_1): Properly canonicalize expression
	* rtl.h (swap_commutative_operands_p): Declare.
	* rtlanal.c (swap_commutative_operands_p): New.
	(operand_preference): New static function.

	* combine.c (combine_simplify_rtx): Use swap_commutative_operands_p.
	(gen_binary): Likewise.
	* optabs.c (emit_cmp_and_jump_insns, emit_conditional_move): Likewise.
	* simplify-rtx.c (simplify_gen_binary,
	simplify_gen_relational): Likewise.

Thu May 17 20:43:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (fold_rtx): Use simplify_subreg.

	* simplify-rtx.c (simplify_replace_rtx): Use simplify_gen_subreg.
	(simplify_gen_subreg): New.
	(simplify_rtx): Use simplify_subreg.
	* rtl.h (simplify_gen_subreg): Declare.

2001-05-17  Mark Mitchell  <mark@codesourcery.com>

	* doc/install.texi: Update Solaris information.

	* except.h (protect_cleanup_actions): Remove it.
	(lang_protect_cleanup_actions): Declare it.
	* except.c (protect_cleanup_actions): Remove it.
	(lang_protect_cleanup_actions): New variable.
	(init_eh): Don't make protect_cleanup_actions a GC root.
	(expand_eh_region_and_cleanup): Call
	lang_protect_cleanup_actions.
	(output_function_exception_table): Remove unused `align'
	variable.
	* varasm.c (assemble_external): Abort if we have not yet
	opened the assembly output file.

Thu May 17 11:54:50 2001  Jeffrey A Law  (law@cygnus.com)

	* except.c (sjlj_emit_function_enter): Call assemble_external_libcall
	for eh_personality_libfunc.

Thu May 17 19:48:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Use "TO" mode if not VOIDmode
	when calling simplify_subreg.  This is needed to allow replacing
	of expression of one mode by expression of different mode.

Thu May 17 19:40:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c  (simplify_subreg): Avoid creating of incorrect subregs.

2001-05-17  Bernd Schmidt  <bernds@redhat.com>

	* expr.c (protect_from_queue): Protect against subsequent calls to
	emit_queue.
	(expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being
	too clever.

Thu May 17 18:17:34 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify_rtx.c (simplify_subreg): Fix simplification of nested subregs.

2001-05-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gccbug.in (CATEGORIES): Add "bootstrap".

Thu May 17 16:59:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Break out from ...
	* combine.c (combine_splify_rtx) ... here and ...
	* recog.c (validate_replace_rtx_1): ... here;
	* rtl.h (subreg_lowpart_parts_p, simplify_subreg): Declare.
	* emit-rtl.c (subreg_lowpart_parts_p): Break out from ...
	(subreg_lowpart_p): ... here.

2001-05-17  Bernd Schmidt  <bernds@redhat.com>

	* stmt.c (expand_asm_operands): For inout operands, make sure
	the substitution of '=' for '+' makes it into the rtl.

	* reload1.c (delete_output_reload): Call eliminate_regs on substed.
	(reload_as_needed): Call update_eliminable_offsets a bit later.

2001-05-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gcc.texi (gccbug): Refer to the web pages for detailed information
	on GNATS.

2001-05-16  Zack Weinberg  <zackw@stanford.edu>

	* libgcc1-test.c, libgcc1.c, config/i386/perform.h: Delete file.

	* Makefile.in: Delete variables: OLDCC, CCLIBFLAGS, OLDAR,
	OLDAR_FLAGS, LIBGCC1, LIBGCC1_TEST, CROSS_LIBGCC1,
	LIB1FUNCS, and LIB1FUNCS_EXTRA.  Delete rules: libgcc1-test,
	libgcc1-test.o.  Clarify commentary now that libgcc1 no longer exists.
	* cross-make: Don't set LIBGCC1.
	* mklibgcc.in: Delete all code for building from libgcc1.c.
	Always honor LIB1ASMFUNCS if set.

	* crtstuff.c, floatlib.c, longlong.h, config/fp-bit.c,
	config/arc/lib1funcs.asm, config/arm/lib1funcs.asm,
	config/d30v/libgcc1.asm, config/fr30/lib1funcs.asm,
	config/h8300/lib1funcs.asm, config/i386/cygwin.asm,
	config/i386/uwin.asm, config/m68hc11/larith.asm,
	config/m68k/lb1sf68.asm, config/mcore/lib1.asm,
	config/mn10200/lib1funcs.asm, config/sh/lib1funcs.asm,
	config/sparc/lb1spc.asm, config/sparc/lb1spl.asm,
	config/v850/lib1funcs.asm, config/c4x/libgcc.S:
	Delete or update references to libgcc1 in commentary.

	* config/t-libc-ok, config/t-linux, config/t-linux-aout,
	config/t-netbsd, config/a29k/t-a29kbare, config/a29k/t-vx29k,
	config/alpha/t-interix, config/alpha/t-osf, config/alpha/t-vms,
	config/arc/t-arc, config/arm/t-arm-aout, config/arm/t-arm-coff,
	config/arm/t-arm-elf, config/arm/t-linux, config/arm/t-pe,
	config/arm/t-semi, config/arm/t-strongarm-coff,
	config/arm/t-strongarm-elf, config/arm/t-strongarm-pe,
	config/arm/t-xscale-coff, config/arm/t-xscale-elf, config/avr/t-avr,
	config/c4x/t-c4x, config/d30v/t-d30v, config/fr30/t-fr30,
	config/h8300/t-h8300, config/i386/t-beos, config/i386/t-cygwin,
	config/i386/t-i386elf, config/i386/t-interix, config/i386/t-netware,
	config/i386/t-next, config/i386/t-rtems-i386, config/i386/t-sol2,
	config/i960/t-960bare, config/i960/t-vxworks960, config/ia64/t-ia64,
	config/m32r/t-m32r, config/m68hc11/t-m68hc11-gas, config/m68k/t-lynx,
	config/m68k/t-m68kbare, config/m68k/t-m68kelf,
	config/m68k/t-mot3300-gald, config/m68k/t-mot3300-gas,
	config/m68k/t-next, config/m68k/t-vxworks68, config/m88k/t-bug,
	config/m88k/t-dgux, config/m88k/t-dgux-gas, config/m88k/t-dguxbcs,
	config/m88k/t-luna, config/m88k/t-luna-gas, config/m88k/t-m88k,
	config/m88k/t-m88k-gas, config/m88k/t-sysv4, config/mcore/t-mcore,
	config/mcore/t-mcore-pe, config/mips/t-bsd, config/mips/t-bsd-gas,
	config/mips/t-cross64, config/mips/t-ecoff, config/mips/t-elf,
	config/mips/t-iris6, config/mips/t-r3900, config/mips/t-svr3,
	config/mips/t-svr3-gas, config/mips/t-svr4, config/mips/t-svr4-gas,
	config/mips/t-ultrix, config/mn10200/t-mn10200,
	config/mn10300/t-mn10300, config/pa/t-linux, config/pa/t-linux64,
	config/pa/t-pa, config/pa/t-pa64, config/pa/t-pro,
	config/pdp11/t-pdp11, config/pj/t-pj, config/rs6000/t-aix43,
	config/rs6000/t-beos, config/rs6000/t-darwin, config/rs6000/t-newas,
	config/rs6000/t-ppccomm, config/rs6000/t-rs6000, config/sh/t-linux,
	config/sh/t-sh, config/sparc/t-chorus-elf, config/sparc/t-elf,
	config/sparc/t-sol2, config/sparc/t-sp86x, config/sparc/t-sparcbare,
	config/sparc/t-sparclite, config/sparc/t-splet,
	config/sparc/t-sunos41, config/sparc/t-vxsparc,
	config/sparc/t-vxsparc64, config/v850/t-v850:
	Don't set any of LIBGCC1, CROSS_LIBGCC1, or LIBGCC1_TEST.

	* config/alpha/alpha.h, config/i386/i386.h, config/i860/i860.h:
	Don't set FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, INTIFY, or FLOATIFY.
	* config/d30v/d30v.h: Don't mention LIBGCC_NEEDS_DOUBLE,
	FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, FLOATIFY, INTIFY,
	nongcc_SI_type, nongcc_word_type, or perform_*
	* config/i860/fx2800: Don't define perform_umodsi3 or perform_modsi3.

	* config/i386/386bsd.h, config/i386/beos-elf.h,
	config/i386/linux-aout.h, config/i386/linux-oldld.h,
	config/i386/linux.h, config/i386/mach.h, config/i386/netbsd.h,
	config/i386/openbsd.h, config/i386/osfrose.h, config/i386/rtemself.h:
	Don't include i386/perform.h.

	* config/a29k/t-a29k, config/arm/t-semiaof, config/i370/t-i370,
	config/i370/t-linux, config/i370/t-mvs, config/i370/t-oe,
	config/i386/t-djgpp, config/i386/t-i386bare, config/i386/t-vsta,
	config/ia64/t-hpux, config/mips/t-mips, config/mips/t-mips-gas,
	config/mips/t-osfrose, config/sparc/t-sp64, config/sparc/t-sunos40,
	config/vax/t-openbsd, config/vax/t-vax: Delete.

	* config.gcc: Remove references to deleted files.
	(arm-semi-aof): Use arm/t-semi for tmake_file.

	* gcc.texi, install.texi, invoke.texi, tm.texi:
	Delete or rewrite text which is no longer relevant now that
	libgcc1 no longer exists.

	* config/t-openbsd, config/alpha/t-interix, config/i386/t-interix:
	No need to set INSTALL_ASSERT_H.  (Missed in previous sweep.)

2001-05-16  Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de>
	Bruce Korb <bkorb@gnu.org>

	* fixinc/inclhack.def(solaris27_mutex_init):  Fix broken mutex
	initializer

2001-05-16  Zack Weinberg  <zackw@stanford.edu>

	* i386.md: Add two peepholes to clean up code generated by
	cmpstr* expanders.

2001-05-16  Richard Henderson  <rth@redhat.com>

	* dwarf2asm.c (eh_data_format_name): Add names for "pointer size"
	variants of non-absolute encodings.

	* config/i386/i386.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

	* libgcc-std.ver (_Unwind_Find_FDE, __register_frame_info_bases,
	__register_frame_info_table_bases): Export.

2001-05-16  Richard Henderson  <rth@redhat.com>

	* except.c (eh_data_format_name): Move to ...
	* dwarf2asm.c: ... here.  Use designated initializers if available.
	(dw2_asm_output_encoded_addr_rtx): Accept varargs commentary.
	* dwarf2asm.h: Update declarations.
	* dwarf2out.c (output_cfi) [DW_CFA_set_loc]: If for_eh, mind
	ASM_PREFERRED_EH_DATA_FORMAT.
	(output_call_frame_info): Likewise.  Use 'L' augmentation for
	the LSDA encoding.

	* unwind-dw2-fde.h (struct fde_vector): New.
	(struct old_object): Rename from struct object.
	(struct object): New.
	(__register_frame_info_bases): Declare.
	(__register_frame_info_table_bases): Declare.
	(struct dwarf_fde): Remove explicit pc_begin/pc_range members.
	* unwind-dw2-fde.c (objects): Remove.
	(unseen_objects, seen_objects): New.
	(__register_frame_info_bases): New.
	(__register_frame_info): Use it.
	(__register_frame_info_table_bases): New.
	(__register_frame_info_table): Use it.
	(__deregister_frame_info): Rewrite for changed object struct.
	(base_from_object, get_cie_encoding, get_fde_encoding): New.
	(fde_unencoded_compare): Rename from fde_compare; uninline.
	(fde_single_encoding_compare, fde_mixed_encoding_compare): New.
	(start_fde_sort): Adjust for new definition of fde_vector.
	(fde_insert): Likewise.
	(end_fde_sort): Likewise.  Select comparison function based
	on properties of the object.
	(fde_split): Take object and fde_compare_t arguments.
	(frame_heapsort, fde_merge): Likewise.
	(classify_object_over_fdes): Rename from count_fdes.  Handle
	encoded pointers.  Collect encoding, mixed_encoding, and pc_begin
	for the object.
	(add_fdes): Handle encoded pointers.
	(init_object): Rename from frame_init.  Update for new struct object.
	(linear_search_fdes): Rename from search_fdes.  Handle encoded
	pointers.
	(binary_search_unencoded_fdes): Broken out from _Unwind_Find_FDE.
	(binary_search_single_encoding_fdes): New.
	(binary_search_mixed_encoding_fdes): New.
	(search_object): New.
	(_Unwind_Find_FDE): Update for new struct object.  Fill in
	the dwarf_eh_bases.
	* unwind-dw2.c: Include unwind-pe.h.  Constify all pointers
	iterating over EH data.
	(_Unwind_FrameState): Remove saw_lsda, addr_encoding.  Add
	fde_encoding, lsda_encoding.
	(read_uleb128, read_sleb128): Remove.
	(read_encoded_pointer): Remove.  All callers use read_encoded_value.
	(extract_cie_info): Set lsda_encoding from 'L' augmentation.
	(uw_frame_state_for): Don't set bases.func.  Handle encoded fde
	pointers.
	* unwind-pe.h: Add "struct" to _Unwind_Context references.

2001-05-16  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* cppexp.c (lex): Use NODE_NAME and NODE_LEN.
	* cpphash.c (_cpp_lookup_with_hash): Similarly.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_token_len,
	cpp_spell_token, cpp_output_token): Similarly.
	* cpplib.c (lex_macro_node, do_undef, do_pragma,
	do_pragma_poison, parse_assertion, do_assert): Similarly.
	* cppmacro.c (builtin_macro, parse_args, funlike_invocation_p,
	save_parameter, _cpp_create_definition, check_trad_stringification,
	cpp_macro_definition): Similarly.
	* cppmain.c (cb_define, cb_undef, dump_macro): Similarly.
	* c-lex.c (cb_undef, c_lex): Similarly.
	* fix-header.c (recognized_function): Similarly.
	* cpplib.h (NODE_LEN, NODE_NAME): New.
	(cpp_hashnode): Rename length len.

Wed May 16 13:41:10 2001  Jeffrey A Law  (law@cygnus.com)

	* pa32-regs.h (HARD_REGNO_MODE_OK): Allow TI/TFmode values in
	GPRs.

2001-05-16  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (toplev.o): Add dependency on dwarf2asm.h.

	* toplev.c: Include dwarf2asm.h for prototype of
	dw2_output_indirect_constants.

Wed May 16 19:53:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* stmt.c (expand_asm_operands): Be able to offload addressof
	expression to memory. (PR optimization/185)

Wed May 16 18:53:23 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Set op0_mode to VOIDmode after
	applying distributive law.

2001-05-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-hpux10.h (THREAD_MODEL_SPEC): Define.

	* gthr-dce.h (UNUSED): Attribute unused macro.
	(__gthread_key_dtor): Make arguments UNUSED.
	(__gthread_key_delete): Revise for compatibility with DRAFT4
	implementation.

2001-05-16  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi: Update AIX information.
	* README.RS6000: Remove obsolete file.

2001-05-16  Jakub Jelinek  <jakub@redhat.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* gcc.c (give_switch): Don't write before start of string.
	Always append suffix.

2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>

	* cpplex.c (_cpp_lex_token, '/' case): Comments can't appear
	after stage3.

2001-05-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.ALTOS: Remove obsolete file.

2001-05-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.h (save_and_forget_protocol_qualifiers,
	forget_protocol_qualifiers, remember_protocol_qualifiers):
	Remove deleted functions' prototypes.

2001-05-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-parse.in (methodtype): New production.
	(methoddef, methodproto): Collapse separate '-' and '+'
	handlers into 1.

2001-05-16  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* c-common.h (RID_FIRST_PQ): New.
	* c-parse.in (objc_pq_context): New.
	(objc parser): Set objc_pq_context rather than calling
	remember_protocol_qualifiers and forget_protocol_qualifiers.
	Don't call save_and_forget_protocol_qualifiers.
	(yylexname): Handle objc protocol qualifiers here.
	* stringpool.c (struct str_header): Replace with sp_hashnode.
	(SP_EMPTY, SP_LEN, SP_TREE, SP_STR, SP_VALID): New.
	(alloc_string): Rename alloc_ident.  Use the SP_ accessors.
	Allocate an IDENTIFIER_NODE for each identifier.
	(FORALL_STRINGS, set_identifier): Delete.
	(FORALL_IDS, expand_string_table, stringpool_statistics): Update.
	(ggc_alloc_string): Use an obstack.
	(get_identifier, maybe_get_identifier, mark_string_hash): Update.
	* tree.h: Update comments.
	(set_identifier): Delete.
	* objc/objc-act.c (N_PQ, saved_pq, saved_not_pq,
	save_and_forget_protocol_qualifiers, forget_protocol_qualifiers,
	remember_protocol_qualifiers): Delete.

Tue May 15 22:14:09 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (life_analysis): After life analysis is complete, do
	an optional scan over insns looking for REG_LABEL notes that
	reference a deleted label.
	(propagate_block_delete_insn): Verify INOTE is a CODE_LABEL
	before peeking at LABEL_NUSES.

2001-05-15  Richard Henderson  <rth@redhat.com>

	* unwind-sjlj.c (_Unwind_GetDataRelBase): New.
	(_Unwind_GetTextRelBase): New.

2001-05-15  Mark Mitchell  <mark@codesourcery.com>

	* config/sparc/sol2.h (CPLUSPLUS_CPP_SPEC): Define.

2001-05-15  Geoffrey Keating  <geoffk@redhat.com>

	* objc/objc-act.c (handle_class_ref): Use rest_of_decl_compilation
	so that CHOOSE_SECTION gets used.

	* config/rs6000/sysv4.h (ASM_PREFERRED_EH_DATA_FORMAT): Treat
	TARGET_RELOCATABLE like flag_pic for now.

2001-05-15  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (movdi splitter): Sign extend more efficiently.
	* rs6000.c (reg_or_arith_cint_operand): Redefine 64-bit constant
	to "long long" valid on 32-bit and 64-bit hosts.
	(logical_operand): Cast trunc_int_for_mode return value.
	(rs6000_emit_move): Shift macro to encapsulate variable.
	(rs6000_va_start): Use HOST_WIDE_INT_PRINT_DEC.
	(rs6000_emit_{prologue,epilogue}): EH regno is unsigned but
	plus_constant requires signed argument.

2001-05-15  Loren J. Rittle  <ljrittle@acm.org>

	* gthr-posix.h: Make additional pthread-* functions weak.

Tue May 15 13:51:32 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (apply_change_group): Avoid unneeded validating.

2001-05-14  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (num_insns_constant_wide): Constants are sign-extended.
	(num_insns_constant): CONST_INT can be 64-bits.

2001-05-14  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (LIB_SPEC): Just use -lSystem.
	(LIBGCC_SPEC): Don't define.

2001-05-14  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_eh_frame): New test.
	* config.in, configure: Rebuild.
	* gcc.c (init_spec): Honor USE_AS_TRADITIONAL_FORMAT.

2001-05-14  Andrew MacLeod  <amacleod@redhat.com>

	* config/ia64/lib1funcs.asm (__divtf3): Fix incorrect bits in
	extended precision divide.

2001-05-14  Andrew MacLeod  <amacleod@redhat.com>

	* config/ia64/ia64.c (rtx_needs_barrier): Call rtx_needs_barrier
	for RETURNS as well.

Mon May 14 17:34:48 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (TARGET_64BIT): Define to constant if !TARGET_BI_ARCH
	(CPP_CPU??_SIZE_TYPE): New.
	(CPP_CPU??_SPEC, CPP_CPUCOMMON_SPEC): Break out from...
	(CPP_CPU_SPEC): ... here; support choosing of CPU.
	(EXTRA_SPECS): Add cpp_cpu??, cpp_cpu??sizet, cpp_cpucommon.
	(MAX_LONG_TYPE_SIZE, MAX_BITS_PER_WORD): Define to 32 for 32bit-only
	compiler.
	* i386.c (override_options): Add sorry about not suported modes.

Mon May 14 08:56:47 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (NM_FLAGS): Remove.
	(ASM_OUTPUT_FUNCTION_PREFIX): No longer truncate subspace names.
	(ASM_OUTPUT_SECTION_NAME): Remove.
	(MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Likewise.

2001-05-14  Mark Mitchell  <mark@codesourcery.com>

	* regrename.c (regrename_optimize): Do not rename registers to
	leaf registers.

2001-05-14  Alexandre Oliva  <aoliva@redhat.com>

	* rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may
	contain MEMs.  Remove useless distinction about clobbering
	registers.

2001-05-13  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.h (EXCEPTION_SECTION): Move to...
	* config/rs6000/aix.h (EXCEPTION_SECTION): ... here.
	* config/rs6000/sysv4.h (CONST_SECTION_ASM_OP): Delete.
	(ASM_PREFERRED_EH_DATA_FORMAT): Define.
	(EXCEPTION_SECTION): Define.

2001-05-13  Zack Weinberg  <zackw@stanford.edu>

	* libgcc2.c, libgcc2.h: Restore __eprintf.  Label as used for
	binary backward compat only.
	* Makefile.in (LIB2FUNCS_ST): New.  Put _eprintf here, not
	in LIB2FUNCS.  Pass it to mklibgcc.
	* mklibgcc.in: Handle LIB2FUNCS_ST.

	* Makefile.in (installdirs): Don't create $(gcc_tooldir).

2001-05-13  Alexandre Oliva  <aoliva@redhat.com>

	* tm.texi (THREAD_MODEL_SPEC): Document it.
	* gcc.c (main): Use it.
	* config/rs6000/aix43.h (THREAD_MODEL_SPEC): Define it.
	* config/rs6000/aix51.h (THREAD_MODEL_SPEC): Likewise.

2001-05-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rtl.h (SYMBOL_REF_WEAK): New macro.
	* rtlanal.h (rtx_addr_can_trap): Use it, a weak SYMBOL_REF can trap.
	* varasm.c (make_decl_rtl): Mark SYMBOL_REF weak if necessary.
	* rtl.texi (SYMBOL_REF_WEAK): Document it.
	* gcc.texi: Remove wrong description.

2001-05-13  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (STAMP): New macro.
	Replace all uses of `touch' with $(STAMP).
	* fixinc/Makefile.in: Likewise.

Sun May 13 07:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* configure.in: ldopen is never in -lexc, so don't test for it.
	Add test for exc_resume in -lexc for Ada.
	* configure: Regenerated.

2001-05-12  Richard Henderson  <rth@redhat.com>

	* dwarf2asm.c (size_of_encoded_value): New function.
	* dwarf2asm.h: Declare it.
	* except.c (output_function_exception_table): Align the TType
	array only as wide as the encoding.

2001-05-12  Zack Weinberg  <zackw@stanford.edu>

	* extend.texi: Document #pragma GCC java_exceptions.

2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* c-parse.in (bison parser, init_reswords): Remove uses of
	doing_objc_thang.
	* c-tree.h (doing_objc_thang): Remove.

2001-05-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (_cpp_lex_token): Ensure we warn at most once
	about files not ending in newlines.

2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* dwarfout.c (dwarfout_init): Add cast.
	* sched-deps.c (sched_analyze_insn): Remove unused vars.
	* unwind-dw2-fde.c (_Unwind_Find_FDE): Flag unused parameter so.
cp:
	* method.c (build_mangled_C99_name): Remove unused prototype.

2001-05-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/arm/arm.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Use delta.

2001-05-12  Alexandre Oliva  <aoliva@redhat.com>

	* defaults.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Define.
	* tm.texi (TARGET_PRTMEMFUNC_VBIT_LOCATION): Document.

2001-05-11  Richard Henderson  <rth@redhat.com>

	* defaults.h (ASM_PREFERRED_EH_DATA_FORMAT): New.
	* dwarf2asm.c (dw2_force_const_mem, dw2_output_indirect_constant_1,
	dw2_output_indirect_constants, dw2_asm_output_encoded_addr_rtx): New.
	* dwarf2asm.h (dw2_asm_output_encoded_addr_rtx): Prototype.
	(dw2_output_indirect_constants): Prototype.
	* dwarf2out.c (dwarf2out_begin_prologue): Generate
	current_function_func_begin_label if we'll need it for EH.  Exit
	early for IA64_UNWIND_INFO.
	* except.c: Get DW_EH_PE_* defines from dwarf2.h.
	(eh_data_format_name): Update for indirect references.
	(output_function_exception_table): Care for IA64_UNWIND_INFO.
	Handle ASM_PREFERRED_EH_DATA_FORMAT.
	* except.h (MUST_USE_SJLJ_EXCEPTIONS): IA64_UNWIND_INFO needn't
	define HAVE_eh_return etc.
	* final.c (final_start_function): Always call dwarf2out_begin_prologue.
	(final_end_function): Don't call output_function_exception_table.
	* toplev.c (compile_file): Call dw2_output_indirect_constants.
	(rest_of_compilation): Invoke output_function_exception_table
	for ia64 before assemble_end_function.
	* tm.texi (ASM_PREFERRED_EH_DATA_FORMAT): Document.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Document.

	* unwind-dw2.c (_Unwind_GetTextRelBase, _Unwind_GetDataRelBase): New.
	* unwind.h: Declare them.
	* libgcc-std.ver: Export them.
	* unwind-pe.h: New file.

	* config/alpha/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

	* config/ia64/fde-glibc.c: Use "struct unw_table_entry"
	instead of "fde".
	(find_fde_for_dso): Extract DT_PLTGOT.
	(_Unwind_FindTableEntry): Rename from __ia64_find_fde; return
	the segment and gp as well.
	* config/ia64/frame-ia64.c: Remove file.
	* config/ia64/frame-ia64.h: Remove file.
	* config/ia64/unwind-ia64.c: New file.
	* config/ia64/unwind-ia64.h: New file.
	* config/ia64/ia64.h (ASM_OUTPUT_EH_CHAR): Remove.
	(ASM_OUTPUT_EH_SHORT, ASM_OUTPUT_EH_INT): Remove.
	(ASM_OUTPUT_EH_DOUBLE_INT): Remove.
	(ASM_PREFERRED_EH_DATA_FORMAT): New.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
	(IA64_UNWIND_INFO): Re-enable.
	(HANDLER_SECTION): Remove.
	(EH_RETURN_DATA_REGNO): New.
	* config/ia64/ia64.md (exception_receiver): Remove.
	* config/ia64/t-glibc (LIB2ADDEH): Re-enable.
	* config/ia64/t-ia64 (LIB2ADDEH): Re-enable.

2001-05-11  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (group_barrier_needed_p): Don't allow
	calls and jumps to be bundled together.
	(ia64_reorg): Emit a break after a noreturn call that ends
	a function.
	* config/ia64/ia64.md (break_f): New.

2001-05-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (lex_charconst): Convert into a simple wrapper
	around cpp_interpret_charconst, to which most of the code
	body is moved.
	* cppexp.c (MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE,
	MAX_LONG_TYPE_SIZE, MAX_INT_TYPE_SIZE, MAX_CHAR_TYPE_MASK,
	MAX_WCHAR_TYPE_MASK, parse_escape, parse_charconst): Remove.
	(lex): Use cpp_interpret_charconst.
	* cpplex.c (parse_escape, read_ucs, cpp_interpret_charconst,
	hex_digit_value): New functions.
	(MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): New macros.
	* cpplib.h (cpp_interpret_charconst): New prototype.
	* Makefile.in: Update.

2001-05-12  Dean Wakerley  <dean@wakerley.com>

	* doc/install.texi: New file. Converted to texinfo from the HTML
	documentation in wwwdocs/htdocs/install.

Fri May 11 15:50:13 2001  Jeffrey A Law  (law@cygnus.com)

	* gcse.c (insert_insn_end_bb): Do not search for assignments to
	non-argumment registers that are mentioned in CALL_INSN_FUNCTION_USAGE.

	* toplev.c (compile_file): Move comment for opening output
	file to just before the code that opens the output file.

2001-05-11  Jakub Jelinek  <jakub@redhat.com>

	* regmove.c (regmove_optimize): Suppress the optimization for
	unchanging destination register.  Add comment above function.

2001-05-11  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in: Exterminate all references to assert.h.
	* cross-make: Likewise.
	* assert.h: Delete.
	* configure.in: Correct commentary.
	* configure: Regenerate.

	* libgcc-std.ver, libgcc2.c, libgcc2.h, sys-protos.h:
	Remove __eprintf.

	* config/t-freebsd, config/t-linux, config/t-linux-aout,
	config/t-netbsd, config/t-rtems, config/x-linux,
	config/i386/t-beos, config/mcore/t-mcore, config/mcore/t-mcore-pe:
	No need to override INSTALL_ASSERT_H.

	* fixinc/fixinc.dgux, fixinc/fixinc.interix, fixinc/fixinc.ptx,
	fixinc/fixinc.svr4, fixinc/fixinc.winnt, fixinc/fixinc.wrap,
	fixinc/fixincl.sh: Don't install assert.h into objdir/include.

2001-05-11  Graham Stott  <grahams@redhat.com>

	* combine.c (simplify_comparison): Fix typo.

2001-05-11  Mark Mitchell  <mark@codesourcery.com>

	* loop.h (struct movables): Remove `num'.
	* loop.c (scan_loop): Don't set it.  Use count_insns_in_loop.
	Adjust call to strength_reduce.
	(num_unmoved_movables): New function.
	(move_movables): Don't set movables->num.
	(strength_reduce): Compute the number of instructions in the loop
	here, rather than in the caller.
	(check_dbra_loop): Always clear reversible_mem_store if there
	are any memory sets.
	(loop_regs_scan): Don't count instructions here.
	(count_insn_in_loop): New function.

2001-05-11  Mark Mitchell  <mark@codesourcery.com>

	* optabs.c (emit_libcall_block): Don't mark calls as CONST_CALL_P.

2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (finish_label_expr): New function, lifted from
	from cp/semantics.c.
	* c-common.h (finish_label_expr, lookup_label): New prototypes.
	* c-parse.in: Move 3 blocks of parser code into new functions.
	* c-typeck.c (simple_asm_stmt, c_cast_expr): New functions.
	* c-tree.h (simple_asm_stmt, c_cast_expr): New prototypes.
	(lookup_label): Remove.

2001-05-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/t-mn10300 (dp-bit.c, fp-bit.c): Don't define
	FLOAT_BIT_ORDER_MISMATCH.

2001-05-10  David Edelsohn  <edelsohn@gnu.org>

	* expr.c (emit_push_insn): Convert PUSH_ROUNDING argument to
	bytes.  Reported by Kazu Hirata <kazu@hxi.com>.

2001-05-10  David Edelsohn  <edelsohn@gnu.org>

	* expr.c (emit_group_load): extract_bit_field requires a REG or
	MEM as an argument.

Thu May 10 14:45:44 2001  Jeffrey A Law  (law@cygnus.com)

	* cse.c (cse_insn): Mostly remove first hunk of code which collapsed
	a computed jump into an unconditional jump.
	In second hunk of code for collapsing computed and conditional jumps
	into unconditional jumps, reemit the jump in additional cases.

	* jump.c (jump_optimize_1): Do not wrap the new jump target
	inside a LABEL_REF; gen_jump will do that automatically.

2001-05-10  Toon Moene  <toon@moene.indiv.nluug.nl>

	* dwarf2out.c (mem_loc_descriptor): Do not pass constant pool
	contents for a SYMBOL_REF in case of floating point constants.

2001-05-10  DJ Delorie  <dj@redhat.com>

	* c-common.c (combine_strings): Widen strings in a
	host-endian-independent way.

2001-05-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in: Remove many shift/reduce conflicts.  Update
	%expect values.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea, declspecs_ts,
	declspecs_nots, declspecs_ts_nosa, declspecs_nots_nosa,
	declspecs_nosc_ts, declspecs_nosc_nots, declspecs_nosc, declspecs,
	maybe_type_quals_setattrs, typespec_nonattr, typespec_attr,
	typespec_reserved_nonattr, typespec_reserved_attr,
	typespec_nonreserved_nonattr, maybe_setattrs, structsp_attr,
	structsp_nonattr, components_notype, component_notype_declarator,
	absdcl1_ea, absdcl1_noea, direct_absdcl1, absdcl_maybe_attribute,
	firstparm, setspecs_fp): New
	(typed_declspecs, reserved_declspecs, typed_typespecs,
	reserved_typespecquals, declmods, typespec, typespecqual_reserved,
	typed_declspecs_no_prefix_attr reserved_declspecs_no_prefix_attr
	declmods_no_prefix_attr, nonempty_type_quals, structsp,
	type_quals): Remove.  Users updated.
	(initdecls, notype_initdecls, after_type_declarator,
	parm_declarator, notype_declarator, absdcl1, components, ivars):
	Don't allow attributes at the start of a declarator; include them
	in the production containing the declarator instead.  Always
	require type specifiers before trying to redeclare a typedef name.
	(typename): Allow for attributes but warn that they are ignored.
	(parmlist, firstparm, setspecs_fp): Include attributes in
	parmlist; suck them off the parser stack in firstparm using
	setspecs_fp.

Thu May 10 09:17:42 2001  Jeffrey A Law  (law@cygnus.com)

	* ifcvt.c (merge_if_block): Use any_uncondjump_p, not simplejump_p
	to determine if a block has an unconditional jump at its end.

	* jump.c (jump_optimize_1): When converting a conditional jump
	to an unconditional jump, build the jump using gen_jump instead
	of just modify operands in-place.

2001-05-09  Zack Weinberg  <zackw@stanford.edu>

	* cppinit.c (cpp_post_options): Shut off macro expansion if
	-fpreprocessed.
	* cpplib.c (_cpp_handle_directive): If -fpreprocessed, accept
	IN_I directives only if the # is in column 1 and the directive
	name begins in column 2.
	* cppmain.c (scan_buffer): Insert a space between # and an
	identifier, when that identifier is a directive name.

	* tradcpp.c (struct file_buf): Add a pointer to the next entry
	in the header search path.
	(enum node_type): Add T_INCLUDE_NEXT.
	(directive_table): Add entry for include_next.
	(do_include_next): New function.
	(process_include): New routine, broken out of do_include.
	(finclude): Insert 'nhd' argument, to be copied into
	next_header_dir of the new buffer.
	(main): Adjust to match.
	* gsyslimits.h, limity.h: Un-indent #include_next.

2001-05-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* objc.texi: Move from ../libobjc/objc-features.texi.  Adjust for
	inclusion as a chapter of the GCC manual.
	* gcc.texi: Include objc.texi.
	* fdl.texi: Use @unnumberedsec for the addendum.
	* Makefile.in ($(srcdir)/gcc.info, gcc.dvi): Update dependencies.

Wed May  9 16:01:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (DImode move splitters): Use !MMX and !SSE for the condition.

Wed May  9 10:40:25 2001  Alexandre Oliva  <aoliva@redhat.com>

	* regclass.c (scan_one_insn): Update REG_N_REFS when optimizing
	handling of two-address insns.

Wed May  9 10:36:18 2001  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (NM_FOR_TARGET): Look for ./nm, then
	../binutils/nm-new instead of ../binutils/nm.

Wed May  9 12:15:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi splitter): Fix the splitting condition
	(float_extenddftf splitter): Fix mode.

Wed May  9 12:05:39 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* genrecog.c (write_switch): Avoid outputting of switch for
	types wider than int.

2001-05-03  Andrew Haley  <aph@cambridge.redhat.com>

	* reload1.c (copy_eh_notes): New function.
	(emit_input_reload_insns): Call it.
	(emit_output_reload_insns): Call it.

2001-05-07  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc (i[34567]86-*-sco3.2v4*, i[34567]86-*-sco*):
	Delete stanzas.
	* config/i386/sco.h, config/i386/sco4.h, config/i386/scodbx.h,
	config/i386/sco4dbx.h, config/i386/x-sco4: Delete file.

	* optabs.c: Delete #ifdef BROKEN_LDEXP block.

2001-05-07  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (interspace_jump): Revise comment.
	(builtin_longjmp): Block initial setup insns from delay slot of
	interspace branch.
	(builtin_setjmp_receiver): New expander to save and restore PIC
	register.

	* som.h (NM_FLAGS): Remove `-n' sort option.  Revise comment.

Mon May  7 09:30:14 2001  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (compile_file): Set up the output file before we call
	the various initializers for the compiler.

	* except.c (sjlj_mark_call_sites): Do not search for assignments to
	non-argumment registers that are mentioned in CALL_INSN_FUNCTION_USAGE.

	* pa.h (MAX_LONG_TYPE_SIZE): Should be 32, not 64.
	* pa-64.h (*_TYPE_SIZE): Undefine before redefining.

2001-05-06  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (tradcpp0): Correct typo in dependency list.

2001-05-06  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Don't save
	the link register if we're not going to use it.

	* config/rs6000/rs6000.c (output_profile_hook): Fix a warning.
	(output_function_profiler): Likewise.

2001-05-07  Alan Modra  <amodra@one.net.au>

	* pa.c (compute_frame_size): 64-bit frame marker is 16 bytes.

2001-05-06  Alexandre Oliva  <aoliva@redhat.com>

	* unroll.c (loop_iterations): Don't sign-extend abs_diff;
	zero-extend it.  Make abs_inc unsigned.

	* optabs.c (expand_binop): Sign-extend xop0 and xop1 from the
	widest mode in narrowing and widening operations.

	* config/mips/mips.md: Sign extend CONST_INTs.

2001-05-06  Andreas Jaeger  <aj@suse.de>

	* invoke.texi (Option Summary): Add -momit-leaf-frame-pointer
	(i386 Options): Document -momit-leaf-frame-pointer.

2001-05-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-typeck.c (internal_build_compound_expr): Check for
	array to pointer conversion just once.

2001-05-05  Richard Henderson  <rth@redhat.com>

	* integrate.c (copy_insn_list): Substitute NOTE_EXPECTED_VALUE.

2001-05-05  Richard Henderson  <rth@redhat.com>

	* except.c (remove_fixup_regions): Adjust REG_EH_REGION notes
	to the parent of the fixup region.

2001-05-05  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (cpp_options): Define __NO_INLINE__ unless we are honoring
	"inline" keyword.
	* cpp.texi (__NO_INLINE): Document it.

2001-05-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (struct include_file): New member err_no.
	(find_or_create_entry): Set it.
	(open_file): Don't set fds to -2.  Instead, use err_no to
	remember previous errors, if any.

2001-05-05  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Optimize moves
	between X and Y by using sequences of xgdx and xgdy.

2001-05-05  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*logicalsi3_silshr16"): Use '?' instead
	of '!' for the 'D' alternative ('!' is too strong).
	("*logicalsi3_silshl16"): Likewise.
	("movstricthi"): Accept 'A' when 'd' constraint, remove spurious '+'.
	("movstrictsi"): Remove spurious '+'.
	("movstrictqi"): Don't accept 'A' and remove spurious '+'.
	("tstqi_1", "*lshrqi3_const1"): Put 'm' constraint before 'd'.
	("subqi3"): Disparage with '!' the 'x' and 'y' registers to avoid
	a reload to them.

2001-05-04  David Edelsohn  <edelsohn@gnu.org>

	* calls.c (store_one_arg): Don't divide align by BITS_PER_UNIT.

2001-05-04  Lars Brinkhoff  <lars@nocrew.org>

	* simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
	into -a.

2001-05-04  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.md (ashldi3 splits): Guard with
	TARGET_POWERPC64.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (lshrhi3_const1): Fix shift of
	soft register, use ror instead of rol.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Take
	into account pre/post increment decrement for 68HC12.
	Fix other problems in replacement and fix call to reg_mentioned_p.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (L_regs_frame): New for _.frame.
	Put the soft registers in bss for 68HC12.
	(L_regs_d3_4): New for _.d3 and _.d4.
	(L_regs_d5_6): Likewise.
	(L_regs_d1_2): Likewise.
	* config/m68hc11/t-m68hc11-gas (T_CPPFLAGS): Compile new parts.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (CPP_SPEC): Pass -D__HAVE_SHORT_DOUBLE__
	to the pre-processor when -fshort-double is specified.
	* config/m68hc11/m68hc11.2 (CPP_SPEC): Likewise.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (divmodhi4): Empty for 68HC12.
	(__mulsi3): Rewrite for 68HC12.
	* config/m68hc11/m68hc11.md (divmodhi4): Use idivs for 68HC12.
	Mark 'x' constraint with earlyclobber to prevent a
	RELOAD_FOR_OTHER_ADDRESS to go in it.
	(mulhi3_m68hc12): New pattern.
	(mulhi3_m68hc11): Rename of mulhi3.
	(mulhi3): New expand for 68HC12 optimisation.
	(umulhisi3, mulhisi3): New patterns for 68HC12.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (*tbne, *tbeq): New patterns for 68HC12.
	(extendqisi2, extendqihi2, extendhisi2): Use sex for 68HC12.
	(uminqi3, umaxqi3, uminhi3, umaxhi3): New pattern for 68HC12.

2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (CONST_COSTS): Make the cost of
	constants cheap after reload.
	* config/m68hc11/m68hc11.c (m68hc11_shift_cost): Shift by 16 and 32
	are cheap.
	(m68hc11_rtx_costs): Cost of multiplication by 65536 is expensive
	so that gcc prefers a shift by 16.
	(m6811_cost, m6812_cost): Make the shift cheap compared to an add.

2001-05-04  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Define.

2001-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha.h: NULL_PTR -> NULL.
	* arm.c: Likewise.
	* arm.h: Likewise.
	* avr.h: Likewise.
	* c4x.c: Likewise.
	* c4x.h: Likewise.
	* i386.c: Likewise.
	* i386.md: Likewise.
	* i860.c: Likewise.
	* ia64.c: Likewise.
	* m68hc11.h: Likewise.
	* rs6000.h: Likewise.
	* sh.c: Likewise.
	* sh.h: Likewise.
	* sparc.h: Likewise.
	* v850.c: Likewise.

	* expr.c: Likewise.
	* final.c: Likewise.
	* gcc.c: Likewise.
	* recog.c: Likewise.

2001-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i386.c (ix86_emit_restore_regs_using_mov, ix86_save_reg): Change
	`bool' parameter to `int'.

	* hash.c (hash_lookup): Likewise.

	* hash.h (hash_lookup): Likewise.

	* tlink.c (symbol_hash_lookup, demangled_hash_lookup): Likewise.

Fri May  4 13:10:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_initialize_trampoline): Fix mode of constant.

2001-05-03  Geoff Keating  <geoffk@redhat.com>

	* invoke.texi (i386 Options): Delete references to -malign-jumps,
	-malign-loops, -malign-functions.
	* i386.c (ix86_align_funcs): Delete.
	(ix86_align_loops): Delete.
	(ix86_align_jumps): Delete.
	(override_options): Mark -malign-* as obsolete.  Emulate their
	behavior with the -falign-* options.  Default -falign-* from
	the processor table.
	* i386.h (FUNCTION_BOUNDARY): Define to 16; revert Richard Kenner's
	patch of Wed May 2 13:09:36 2001.
	(LOOP_ALIGN): Delete.
	(LOOP_ALIGN_MAX_SKIP): Delete.
	(LABEL_ALIGN_AFTER_BARRIER): Delete.
	(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Delete.

2001-05-04  Andreas Jaeger  <aj@suse.de>

	* except.h: Add prototype declaration for
	expand_builtin_init_dwarf_reg_sizes.

2001-05-03  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (site.exp): Set TESTING_IN_BUILD_TREE.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("bitcmpqi"): New pattern for bitb
	instruction.
	("bitcmpqi2"): New pattern for bit-extract and test.
	("bitcmphi"): New pattern for bitb/bita instructions.

2001-05-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gccbug.in: Use a temporary directory when the mktemp command is
	not available.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (STATIC_CHAIN_REGNUM): Use soft z register
	instead of _.d1.
	(INITIALIZE_TRAMPOLINE): Call it.
	(TRAMPOLINE_SIZE): Define according to 68HC11/68HC12.
	(TRAMPOLINE_TEMPLATE): Remove.
	* config/m68hc11/m68hc11.c (m68hc11_initialize_trampoline): New.
	* config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline):
	Declare.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config/t-freebsd: Don't install "assert.h" in gcc.  Compile crtbeginS.o
	and crtendS.o with PIC.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (__mulqi3): Fix multiplication of two
	negative numbers.
	(___subdi3, ___adddi3): Use x instead of y as index register.
	(__init_bss_section, __map_data_section): Optimize for 68HC12.
	(__memset, __memcpy): Likewise.
	(regs): Put the soft registers in bss for 68HC12.
	(abort): Use trap to abort for 68hc12.
	(__mulhi3, __mulhi32): Use emul for 68hc12.
	(__mulsi3): Avoid to use the tmp soft register for 68hc12.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (LIMIT_RELOAD_CLASS): Don't define.
	* config/m68hc11/m68hc11-protos.h (limit_reload_class): Remove.
	* config/m68hc11/m68hc11.c (limit_reload_class): Remove.
	(m68hc11_override_options): Remove setting of flag_no_nonansi_builtin.
	Set 68HC12 min offset to -65536.
	(print_operand): Put parenthesis arround the operand if it refers
	to a symbol having the same name as a register.
	(m68hc11_z_replacement): When z register is replaced by its
	equivalent soft register, force the insn to be re-recognized.
	(m68hc11_check_z_replacement): Fix the test when destination is
	the index register and z dies in the insn.
	(m68hc11_reorg): Remove the REG_DEAD notes beforce recomputing them.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Initialize
	costs according to processor variant.
	(m68hc11_shift_cost): New function to compute shift costs.
	(m68hc11_rtx_costs): Define costs according to processor variant.
	(m6811_cost): Costs for 68HC11.
	(m6812_cost): Costs for 68HC12.
	(COSTS_N_INSNS): Remove.

	* config/m68hc11/m68hc11.h (RTX_COSTS): New.
	(DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Define costs according to OUTER_CODE.
	(processor_costs): New struct to define costs.
	(m68hc11_cost): Pointer to current costs.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (*addhi3_68hc12): Fix generation
	and use m68hc11_notice_keep_cc when using leax/leay.
	(addhi3 split): Reject split if the insn is handled by
	leax/leay above.
	* config/m68hc11/m68hc11.c (m68hc11_split_move): For 68HC12 the
	push must be handled in a special way if the source operand uses
	sp as index register.
	(m68hc11_notice_keep_cc): New function.
	(m68hc11_gen_movhi): Use it when an insn changes a register but
	not the flags.
	(m68hc11_gen_movqi): Fix move for 68HC12.
	* config/m68hc11/m68hc11-protos.h (m68hc11_notice_keep_cc): Declare.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Use LCT_CONST
	and don't pass operands[0] to emit_library_call_value.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (tsthi_1): Use cpd for 68HC12.
	(zero_extendsi split): Simplify and use (zero_extendhi).
	(*addhi3): Remove 'w' constraint since stack pointer is handled
	by (addhi3_sp).
	(*ashlhi3_2): Operand 2 is clobbered use '+' for its constraint.
	(*ashlhi3, *ashrhi3, *lshrhi3): Likewise.
	(*ashrhi3_const): Fix shift by 7.
	(*lshrsi3_const16): Fix template.
	(call, call_value): Fix constraint and predicate.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (X_REGNUM, D_REGNUM): New constant.
	(Y_REGNUM, SP_REGNUM, PC_REGNUM, A_REGNUM, B_REGNUM): Likewise.
	(CC_REGNUM): Likewise.
	(*unnamed splits): Use above constants instead of hard coded numbers.
	(*adcq, *subcq, *addsi_carry, *rotlqi3_with_carry): Likewise.
	(*rotlhi3_with_carry, *rotrhi3_with_carry): Likewise.
	(*return_16bit, *unnamed peepholes): Likewise.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc(rs6000-ibm-aix|powerpc-ibm-aix):  Do not include
	rs6000/rs6000.h twice.

2001-05-03  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (CPP_PREDEFINES): Define __GO32__.
	(CPP_SPEC): Conditionally define MSDOS and GO32.
	(SUBTARGET_SWITCHES): Ignore -mbnu210 and -mno-bnu210.
	(SUBTARGET_OVERRIDE_OPTIONS): Warn that -mbnu210 and -mno-bnu210 are
	ignored.
	(SUPPORTS_WEAK, SUPPORTS_ONE_ONLY): Remove.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md: Sign-extend GEN_INT operands.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* integrate.h (struct inline_remap): Add leaf_reg_map table.
	* integrate.c (expand_inline_function): Use xcalloc to allocate
	memory.
	(copy_rtx_and_substitute): Use the leaf_reg_map for leaf
	registers.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* c-dump.c (dequeue_and_dump): Don't look at DECL_ASSEMBLER_NAME
	if it is not set.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (LINK_SPEC): Pass --relax to the
	linker if -mrelax is given.
	(TARGET_SWITCHES): Document -mrelax.

	Re-installed 2001-01-09's patch:
	* hwint.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Use long long
	if it's wider than long and the target's long is wider than the
	host's.

2001-05-02  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/rs6000/aix51.h, config/rs6000/mach.h:  Do not
	directly include rs6000/rs6000.h.  Instead do it in tm.h.

2001-05-02  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (STRING_OBJECT_CLASS_NAME): Default to
	NSConstantString for NeXT-style runtimes.
	(STRING_OBJECT_GLOBAL_NAME): New macro.
	(enum objc_tree_index): Add values OCTI_CNST_STR_GLOB_ID and
	OCTI_STRING_CLASS_DECL.
	(constant_string_global_id): New macro.
	(string_class_decl): Ditto.
	(setup_string_decl): New function.
	(build_objc_string_object): Use it to build a NeXT runtime
	compatible string initializer.

2001-05-02  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (do_define): Make sure we don't walk past limit.

2001-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.

2001-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.

2001-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.

2001-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.

2001-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.

2001-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.

2001-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.

2001-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.

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.


Copyright (C) 2001 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
