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 dependancy.
	* 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 initialisers.
	(TARGET_ASM_ALIGNED_INT_OP, TARGET_ASM_UNALIGNED_INT_OP): Collect
	the individual initialisers together.
	(TARGET_ASM_OUT): Add the new initialisers.
	* 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 H8/S.
	(get_shift_alg): Generate special code for 25-bit shifts on
	H8/S.

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 H8/S.
	(shift_alg_qi): Use special code for 21-bit shifts on H8/S.
	(get_shift_alg): Generate special code for 21-bit shifts on
	H8/S.

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 favour 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): Initialise 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_FUNCITON): 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 non-zero 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 initialised 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 initialised 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_funciton_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_funciton_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.
