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.

2000-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 comparision 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.

21-09-2001  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.

21-09-2001  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.

2000-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 dedendancy 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 wehther edges has been cleaned up.
	* reload1.c: Inlucde 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.

See ChangeLog.5 for earlier changes.
