2000-12-31  Alexandre Oliva  <aoliva@redhat.com>

	* resource.c (mark_referenced_resources): Abort() before
	attempting to mark a pseudo register.
	(mark_set_resources): Likewise.

2000-12-31  Philip Blundell  <philb@gnu.org>

	* config/arm/linux-gas.h (CLEAR_INSN_CACHE): Add missing asm
	operands.

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

	* dbxout.c (dbxout_block): Invert logic on eliding LBRAC/RBRAC.
	Initialize variables properly for DBX_LBRAC_FIRST.

2000-12-30  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): Fix typo in last change.

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

	* builtins.c (validate_arglist): New function, use it.

2000-12-30  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_expand_prologue): Fix typos in error
	message and comment.  Note location of testcase for an unhandled
	situation.

2000-12-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* defaults.h (BUILD_VA_LIST_TYPE): New definition.
	* tree.c (build_common_tree_nodes_2): Ensure the va_list_type_node
	is a copy, not an alias.

2000-12-30  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (calls_function_1, case CONSTRUCTOR): New case.

	* alias.c (alias_sets_conflict_p): New function.
	(mems_in_disjoint_alias_sets_p): Use it.
	(readonly_fields_p): Moved from expr.c; check for record type.
	(objects_must_conflict_p): New function.
	* calls.c (expand_call): Use assign_temp as much as possible, use
	readonly variant if assigned once, and don't set memory attributes.
	(emit_library_call_value_1, store_one_arg): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_asm_operands, expand_return): Likewise.
	* expr.c (copy_blkmode_from_reg, store_constructor): Likewise.
	(store_field, save_noncopied_parts, expand_expr): Likewise.
	(expand_expr_unaligned): Likewise.
	(readonly_fields_p): Moved to alias.c.
	(safe_from_p): Rework handling of SAVE_EXPR.
	MEMs ony conflict if alias sets conflict; likewise for INDIRECT_REF.
	* function.c (struct temp_slot): Delete field ALIAS_SET; add TYPE.
	(assign_stack_for_temp): Use objects_must_confict_p.
	Set all memory attributes from type, if specified.
	(mark_temp_slot): Mark TYPE field.
	* tree.h (alias_sets_conflict_p, readonly_fields_p): New decls.
	(objects_must_conflict_p): Likewise.

	* stmt.c (expand_decl): Don't use assign_stack_temp in error case.
	(add_case_node): No need to copy nodes anymore.

2000-12-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (split_branches): Don't dereference re-computed
	`beyond' before checking it's non-NULL.

2000-12-29  Robert Lipe <robertl@sco.com>

	Remove COFF support from i?86-pc-sco3.2v5.
	* i386/sco5.h (PREFERRED_DEBUGGING_TYPE): Change to Dwarf II.
	(TARGET_ELF): Now always true.
	(SUBTARGET_SWTICHES: )Remove -mcoff.

	* i386/t-sco5 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
	MULTILIB_EXCEPTION): Nuke coff.
	(CRTSTUFF_T_CFLAGS_S):  Deleted.
	(TARGET_LIBGCC2_CFLAGS): Added.

2000-12-29  Alexandre Oliva  <aoliva@redhat.com>

	* varasm.c (output_constant_def): Don't ENCODE_SECTION_INFO
	twice.  Update desc->rtl and ->label, in case ENCODE_SECTION_INFO
	modifies them.

2000-12-29  Bernd Schmidt  <bernds@redhat.com>

	* ia64.c (ia64_expand_load_address): Accept additional scratch
	register argument.  All callers & prototype changed.
	Use scratch register when generating load_symptr insns.
	* ia64.md (movdi_symbolic): Clobber a scratch register.  Use it
	when calling ia64_expand_load_address.
	(movdi): Generate movdi_symbolic with additional operand.
	(load_gprel64): Use pic_offset_table_rtx instead of (reg:DI 1).
	(load_symptr): Likewise.  Use additional operand as a scratch
	register instead of generating it here.

	* basic-block.h: Add a comment.
	* flow.c (PROP_POSTRELOAD): New macro.
	(update_life_info): Add it to prop_flags.
	(mark_set_1): If it is set, compute REG_N_SETS for the original
	register number of a hard reg.

	* emit-rtl.c (gen_raw_REG): New function.
	(gen_rtx_REG, gen_reg_rtx, init_emit_once): Use it instead of
	gen_rtx_raw_REG.
	* print-rtl.c (print_rtx): Print ORIGINAL_REGNO.
	* final.c (alter_subreg): Update it.
	* regrename.c (do_replace): Likewise.  Use gen_raw_REG.
	* rtl.def (REG): Update comment.
	* rtl.h (X0UINT, ORIGINAL_REGNO): New macros.
	(gen_raw_REG): Declare.

2000-12-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (get_set_constructor_bits): Use host_integerp and
	tree_low_cst.

	* local-alloc.c (update_equiv_regs): Don't use copy_rtx on PATTERN.

	* toplev.c (main): Call xmalloc_set_program_name.
	* gcc.c (main): Likewise.

2000-12-29  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_override_options): Fix typo in warning
	message.

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

	* config/alpha/alpha.c (alpha_expand_block_move): Initialize
	src_align and dst_align in bits.  Do unaligned quadword loads
	if possible for BWX too.
	(alpha_expand_block_clear): Initialize align in bits.  Track
	small leading offsets into a larger alignment.  Play games with
	stq_u for large 4-byte aligned blocks.  Use load/mask/store
	for appropreately aligned heads and tails.

2000-12-29  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (assign_parms): Convert arguments passed by
	reference to the right mode.

2000-12-28  Geoffrey Keating  <geoffk@redhat.com>

	* c-parse.in (select_or_iter_stmt): Use truthvalue_conversion
	on the condition of a FOR statement, so that it gets typechecked
	and optimized.

2000-12-29  Alexandre Oliva  <aoliva@redhat.com>

	* c-decl.c (grokdeclarator): Prevent crash in case of overflow in
	array size.

	* calls.c (emit_library_call_value_1): Add to call_fusage the
	stack slot assigned to argument passed by reference.

2000-12-28  Jeffrey Oldham  <oldham@codesourcery.com>

	* toplev.h (extern really_sorry): Remove extern declaration for
        nonexistent function.

2000-12-28  Jeffrey Oldham  <oldham@codesourcery.com>

	* varasm.c (initializer_constant_valid_p): Indicate subtraction of
	pointers to the same string constant is absolute.

2000-12-28  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (enum format_type): Add strfmon_format_type.
	(decl_attributes): Handle format attributes strfmon and
	__strfmon__.
	(FMT_FLAG_USE_DOLLAR, FMT_FLAG_ZERO_WIDTH_BAD,
	FMT_FLAG_EMPTY_PREC_OK): Define.
	(format_char_info): Update comment for flag_chars.
	(format_flag_spec): Add skip_next_char.
	(format_kind_info): Add left_precision_char.
	(printf_flag_specs, scanf_flag_specs, strftime_flag_specs,
	format_types): Update for these new structure members and flags.
	(time_char_table): Make const.
	(strfmon_length_specs, strfmon_flag_specs, strfmon_flag_pairs,
	monetary_char_table): New.
	(format_types): Add details of strfmon formats.
	(init_function_format_info): Create default attribute for strfmon.
	(check_format_info_main): Check the new flags.  Handle
	skip_next_char and left precision.
	* toplev.c (documented_lang_options): Update description of
	-Wformat.
	* extend.texi: Document strfmon format attributes.  Document
	attribute forms such as __printf__.  Clarify format_arg attribute
	documentation.
	* invoke.texi (-Wformat): Update for strfmon formats.

2000-12-28  Andreas Jaeger  <aj@suse.de>

	* expmed.c (store_bit_field): Fix last patch.

2000-12-28  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/crt1.asm (start_l): `__SH4_SINGLE_ONLY__' was missing
	the trailing `__'.

2000-12-28  Alan Lehotsky  <lehotsky@tiac.net>

	* expmed.c (store_bit_field): Correctly compute smallest mode that
	is sufficient to contain all bits we are storing.

2000-12-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (build_function_call_expr): New function.  Use it
	everywhere in lieu of manually constructing a CALL_EXPR.

2000-12-27  Chandrakala Chavva  <cchavva@redhat.com>

	* calls.c (store_one_arg):  If parm is passed both in stack and in
	register and offset is greater than reg_parm_stack_space, split
	the offset and call emit_push_insn().

2000-12-27  Nick Clifton  <nickc@redhat.com>

	* ifcvt.c (noce_emit_store_flag): Handle jump insns that are
	PARALLEL.

2000-12-27  Alexandre Oliva  <aoliva@redhat.com>

	* rtl.c (copy_most_rtx, shallow_copy_rtx): Copy frame_related
	flag.

2000-12-27  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.in: fix for ancient Bourne shell
	* fixinc/Makefile.BEOS: obsolete
	* fixinc/Makefile.DOS: obsolete
	* fixinc/fixincl.sh(LINKS): use `test -d' rather than `ls' for testing

2000-12-27  Bernd Schmidt  <bernds@redhat.com>

	* sched-deps.c (get_condition, conditions_mutex_p): New functions.
	(add_dependence): Use them to avoid adding unnecessary dependencies
	between conditionally executed insns.
	(sched_analyze_1, sched_analyze_2, sched_analyze_insn): Don't free
	dependency lists if current insn is a COND_EXEC.

2000-12-27  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (define_attr "length"): Correct
	calculation.

2000-12-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Fix a comment typo.
	(get_shift_alg): Fix a typo in the assembly code for 12-bit
	ASHIFTRT in HImode.  Do not output extra whitespace after one line
	of assembly code.  Output a tab after an opcode instead of a
	space.
	(emit_a_shift): Output a tab after an opcode instead of a space.

2000-12-23  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (out_movqi_r_mr, out_movhi_r_mr, out_movsi_r_mr,
	out_movsi_mr_r, out_movqi_mr_r, out_movhi_mr_r): Use %o instead of
	%4 in output templates, do not modify operands passed by the caller.

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

	* builtins.def (BUILT_IN_LABS, BUILT_IN_LLABS, BUILT_IN_IMAXABS):
	Don't define.
	* builtins.c (expand_builtin): Don't handle BUILT_IN_LABS,
	BUILT_IN_LLABS and BUILT_IN_IMAXABS.
	* c-common.c (c_common_nodes_and_builtins): Use BUILT_IN_ABS for
	builtin labs, llabs and imaxabs.
	(expand_tree_builtin): Don't handle BUILT_IN_LABS, BUILT_IN_LLABS
	and BUILT_IN_IMAXABS.

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

	* c-common.c (builtin_function_2): New function.
	(c_common_nodes_and_builtins): Use it to define each pair (foo,
	__builtin_foo) of builtins in one place.

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

	* gccbug.in: Add libgcj and preprocessor categories.

2000-12-22  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (itanium_reorder): Only schedule stops in
	the final scheduling pass.

2000-12-22  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h (struct machine_function): Add new field
	'lr_save_eliminated'.
	* config/arm/arm.c (arm_compute_save_reg_mask): Do not include the
	link register if its save has been eliminated.
	(output_arm_prologue): Mention if the save of the link register
	has been eliminated.
	(output_arm_epilogue): Rename 'live_regs_mask' to
	'saved_regs_mask'.
	Test 'saved_regs_mask' for the link register, not regs_ever_live.
	(arm_expand_prologue): If the link register has not been saved set
	lr_save_eliminated and emit a USE to prevent later passes from
	scavenging it.

	* dwarf2out_frame_debug_expr: Allow the (scratch) frame
	pointer to be initialized from the stack pointer plus a
	constant.

2000-12-22  Bernd Schmidt  <bernds@redhat.com>

	* regrename.c (struct du_chain): New field "earlyclobber".
	(enum scan_actions): Remove unused entry "note_reference".
	(enum scan_actions_name): Likewise.
	(note_sets, clear_dead_regs, merge_overlapping_regs): New static
	functions.
	(regrename_optimize): Use them to compute unavailable regs; get
	rid of the more simpleminded code we used to have here.
	Use a tick array to ensure registers are allocated in a more
	round-robin way.  Disable code that only optimizes registers
	that were seen more than once.
	(referenced_regs): Remove variable.
	(scan_rtx_reg): New arg "earlyclobber".  All callers changed.
	Store its value in newly generated du_chain structures.
	Add new du_chains at the end, not the start, of the list.
	Don't handle the "note_reference" action.
	(scan_rtx): New arg "earlyclobber".  All callers changed.
	(build_def_use): Lose code to keep track of referenced regs.

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

	* Makefile.in (sched-deps.o, sched-rgn.o): Fix dependency typo.

	* fp-bit.h (usi_to_float): Add prototype.

	* i386.c (ix86_expand_builtin): Delete unused label.

	* dwarf2out.c (file_info_cmp): Prototype.
	(dwarf2out_line): Hide variable `old_in_use'.

	* objc-act.c (objc_fatal): Delete.

	* sched-vis.c (visualize_stall_cycles): Remove unused variable.

	* system.h (getopt): Fix error in last change.

	* varasm.c (assemble_trampoline_template): Constify.

2000-12-22  Jason Merrill  <jason@redhat.com>

	* collect2.c (main): Use auto_demangling.

2000-12-22  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (assign_parms): Update parm's DECL_INCOMING_RTL
	when optimizing PARALLEL to REG.

2000-12-22  Graham Stott  <grahams@redhat.com>

	* reload.c (update_auto_inc_notes): New, broken out from ...
	(find_reloads_address_1): ... use here, also correct possible
	use of uninitialized reloadnum.

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

	* config/freebsd.h (LIB_SPEC): remove -kthread option.

2000-12-22  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* resource.c (mark_set_resources): Use MARK_SRC_DEST for
	PRE_MODIFY and POST_MODIFY cases.

	* rtlanal.c (side_effects_p): Handle PRE_MODIFY and POST_MODIFY.

2000-12-22  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* md.texi (Looping Patterns): New node.

2000-12-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi, cpp.texi: Update last-updated dates.

2000-12-21  Chandrakala Chavva  <cchavva@redhat.com>

	* varasm.c (output_addressed_constants): Use language specific
	expander on unknown nodes.

2000-12-21  Graham Stott  <grahams@redhat.com>

	* combine.c (distribute_notes): Handle REG_NON_LOCAL_GOTO notes.

2000-12-21  Bernd Schmidt  <bernds@redhat.com>

	* Makefile.in (out_object_file): Depend on sched-int.h.
	* rtl.h (single_set_1): New macro.
	(single_set_2): Renamed from single_set_1 and extra argument added.
	* rtlanal.c (single_set_2): Likewise.

	* config/ia64/ia64-protos.h (get_bundle_name, ia64_issue_rate,
	ia64_adjust_cost, ia64_sched_init, ia64_sched_finish,
	ia64_sched_reorder, ia64_sched_reorder2, ia64_variable_issue):
	Declare.
	* config/ia64/ia64.c: Include "sched-int.h".
	(hard_regno_rename_ok): Also disallow renaming from the various
	reg_save_* regs.
	(ia64_safe_itanium_requiers_unit0, ia64_safe_itanium_class,
	ia64_safe_type, init_insn_group_barriers, group_barrier_needed_p,
	safe_group_barrier_needed_p, fixup_errata): New static functions.
	(rtx_needs_barrier):  Handle bundle selector and cycle display
	insns.
	(emit_insn_group_barriers): Accept additional FILE * arg.  All
	callers changed.  Rework to only generate stop bits between
	basic blocks that haven't been inserted by scheduling.
	(struct bundle, struct ia64_packet): New structures.
	(NR_BUNDLES, NR_PACKETS): New macros.
	(bundle, packets, type_names): New static arrays.
	(ia64_final_schedule): New variable.
	(ia64_single_set, insn_matches_slot, ia64_emit_insn_before,
	gen_nop_type, finish_last_head, rotate_one_bundle, rotate_two_bundles,
	cycle_end_fill_slots, packet_matches_p, get_split, find_best_insn,
	find_best_packet, itanium_reorder, dump_current_packet, schedule_stop):
	New static functions.
	(ia64_issue_rate, ia64_sched_init, ia64_sched_reorder,
	ia64_sched_finish, ia64_sched_reorder2, ia64_variable_issue): New
	functions.
	(ia64_reorg): Perform a final scheduling pass.
	* config/ia64/ia64.h (CONST_COSTS): Slightly increase SYMBOL_REF costs.
	(MAX_CONDITIONAL_EXECUTE, ADJUST_COST, ISSUE_RATE, MD_SCHED_INIT,
	MD_SCHED_REORDER, MD_SCHED_REORDER2, MD_SCHED_FINISH,
	MD_SCHED_VARIABLE_ISSUE): Define macros.
	(ia64_final_schedule): Declare variable.
	* config/ia64/ia64.md (attr itanium_class): Add some more classes.
	(attr type): Account for them.
	(itanium_requires_unit0): New attribute.
	(function units): Rewrite.
	(some splitters): Don't create scheduling barriers here.
	(gr_spill_internal, gr_restore_internal): Don't predicate the
	pseudo-op.
	(nop_m, nop_i, nop_f, nop_b, nop_x, cycle_display, cycle_display_1,
	bundle_selector): New patterns.
	(insn_group_barrier): Now has an operand.

2000-12-21  DJ Delorie  <dj@redhat.com>

	* dwarf2out.c (simple_decl_align_in_bits): new
	(field_byte_offset): Try both the type align and the
	decl align, use whichever works, preferring the type align.

2000-12-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gccbug.in: Fix typo.

2000-12-20  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (gcc_gxx_target_include_dir): Use instead of
	build_tooldir and libstdcxx_incdir.

2000-12-20  Robert Lipe <robertlipe@usa.net>

	* haifa-sched.c (schedule_block): Provide empty source statement
	if not MD_SCHED_REORDER2.

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

	* rtl.h (REG_NON_LOCAL_GOTO): New.
	* rtl.c (reg_note_name): Update.
	* stmt.c (expand_goto): Emit a REG_NON_LOCAL_GOTO note.
	* builtins.c (expand_builtin_longjmp): Likewise.
	* flow.c (make_edges): Check for REG_NON_LOCAL_GOTO and do
	not emit an edge.

2000-12-20  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r, out_movhi_mr_r):
	Do not output undefined opcodes where source or destination register
	overlaps with modified pointer register.  Handle (X + d) addresses.
	* config/avr/avr.md (*movhi, *movsi, *movsf): Correct insn length
	in alternatives with memory operand.

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

	* c-typeck.c (build_asm_stmt): New, broken out from ...
	(c_expand_asm_operands): ... here.  Just do rtl expansion.
	(c_expand_return): Return the new stmt node.
	(c_start_case, do_case): Likewise.
	* c-common.c (c_expand_expr_stmt): Likewise.
	* c-common.h: Update declarations.
	* c-tree.h: Likewise.
	* c-semantics.c (build_stmt): Use STMT_LINENO not TREE_COMPLEXITY.
	* c-parse.in (fndef): Set DECL_SOURCE_LINE to the open brace.
	(nested_function, notype_nested_function): Likewise.
	(compstmt): Return the compound statement not the binding level.
	(lineno_labeled_stmt): Simplify.
	(lineno_stmt, lineno_label): Set STMT_LINENO.
	(stmt, label): Return the new stmt node.

2000-12-20  Bernd Schmidt  <bernds@redhat.com>

	* Makefile.in (OBJS): Add sched-ebb.o.
	(sched-ebb.o): New rule.
	(sched-vis.o): Depend on hard-reg-set.h and $(BASIC_BLOCK_H).
	(haifa-sched.o): Depend on insn-flags.h.
	* haifa-sched.c: Include "insn-flags.h".
	(priority): Don't access BLOCK_NUM, use the new contributes_to_priority
	callback.
	* rtl.h (schedule_ebbs): Declare.
	* sched-int.h (struct sched_info): Add new members
	contributes_to_priority and compute_jump_reg_dependencies.
	* sched-rgn.c (contributes_to_priority, compute_jump_reg_dependencies):
	New functions.
	(region_sched_info): Add them.
	* sched-vis.c: Include "hard-reg-set.h" and "basic-block.h".
	* sched-ebb.c: New file.
	* sched-deps.c (sched_analyze_insn): Add code to handle JUMP_INSNs.

	* flow.c (ior_reg_cond, and_reg_cond, elim_reg_cond): Properly
	handle all relational operators.

2000-12-20  Alexandre Oliva  <aoliva@redhat.com>

	* final.c (output_addr_const): Use ASM_OUTPUT_SYMBOL_REF.
	* tm.texi: Document it.

2000-12-19  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (-DGPLUSPLUS_TOOL_INCLUDE_DIR): Use build_tooldir
	instead of gcc_tooldir.

2000-12-19  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* system.h (getopt): Update prototype to match include/getopt.h.

2000-12-19  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	From Jeff Law.
	* pa.c (basereg_operand): Simplify.

2000-12-19  Bernd Schmidt  <bernds@redhat.co.uk>

	* haifa-sched.c (rm_line_notes): Arguments are now head and tail,
	not block number.  All callers and prototype changed.
	(set_priorities): Likewise.
	(save_line_notes): Add head and tail arguments; all callers and
	prototype changed.
	(restore_line_notes): Likewise.  Don't crash on insns generated
	during scheduling.
	(schedule_block): Don't use BLOCK_HEAD/BLOCK_END macros.
	Call MD_SCHED_INIT with additional argument.
	When starting a new cycle, emit cycle_display insns if available.
	Don't stop scheduling when encountering a JUMP_INSN, but add another
	call to schedule_more_p in the inner loop.
	Call MD_SCHED_REORDER2 after scheduling an insn.
	Call MD_SCHED_FINISH once all insns are scheduled.
	(sched_init): Compensate for the fact that get_block_head_tail
	doesn't include leading notes.
	* sched-deps.c (free_deps): Free vectors here.
	* sched-rgn.c (compute_block_backward_dependencies): Not here.
	(last_was_jump): New static variable.
	(schedule_more_p): Test it.
	(init_ready_list): Initialize it.
	(can_schedule_ready_p): Set it if we have a JUMP_INSN.

	* config/i386/i386.h (MD_SCHED_INIT): Add new arg.
	* config/m32r/m32r.h (MD_SCHED_INIT): Add new arg.
	* config/sparc/sparc.h (MD_SCHED_INIT): Add new arg.

	* md.texi (cycle_display): Document.
	* tm.texi (MD_SCHED_INIT): Document new arg.
	(MD_SCHED_FINISH, MD_SCHED_REORDER2): Document.

	* flow.c (ior_reg_cond, nand_reg_cond, not_reg_cond): Rewrite
	to use different representation.  All callers changed.
	(and_reg_cond): Renamed from nand_reg_cond; caller changed.
	(init_propagate_block_info): Don't test flags to determine
	whether to compute conditional lifetimes.
	Adjust code for new representation of conditional lifetimes.
	(mark_regno_cond_dead): Similar adjustment.
	(free_reg_cond_life_info): Similar adjustment.
	(elim_reg_cond): New function.
	(flush_reg_cond_1): Use it.

2000-12-19  Catherine Moore  <clm@redhat.com>

	* reload1.c (reload_combine): Take multi-hard-regs into account
	when processing CALL_INSN_FUNCTION_USAGE.

2000-12-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi (-print-search-dirs): Make references to cpp refer
	to cpp0 instead.

2000-12-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Treat truth values as
	non-negative.

Tue Dec 19 00:37:08 2000  J"orn Rennecke <amylaar@redhat.com>

	* reload.c (push_reload): When using a dying register for the reload
	register in an in-out reload, use outmode if wider than inmode.

2000-12-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config/d30v/d30v.h (EXIT_BODY): Update comment.

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

	* config.gcc (*-*-linux*): Don't define HAVE_ATEXIT or BSTRING.
	* tm.texi (EXIT_BODY): Update documentation.
	* config/freebsd.h, config/netware.h, config/arm/coff.h,
	config/arm/conix-elf.h, config/arm/unknown-elf.h,
	config/d30v/d30v.h, config/mcore/mcore.h, config/pj/pj.h,
	sparc/sp86x-aout.h: Remove definitions of HAVE_ATEXIT (some
	commented out) and associated comments.

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

	* c-common.c (STD_C9L, ADJ_STD): Define.
	(printf_length_specs, scanf_length_specs): Mark "ll" as standard
	STD_C9L.
	(T99_LL): Rename to T9L_LL.
	(T99_ULL): Rename to T9L_ULL.
	(print_char_table, scan_char_table): Use T9L_LL and T9L_ULL
	instead of T99_LL and T99_ULL.
	(check_format_info_main): Use ADJ_STD on all format standard
	versions being compared.
	* c-common.h: Declare warn_long_long.
	* c-tree.h: Don't declare warn_long_long.

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

	* COPYING: Update to current
	ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references
	to 19yy as example year in copyright notice).

2000-12-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (cb_file_change): Treat in_system_header as strictly
	boolean (0 or 1).

2000-12-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmain.c: Update print.lineno with -P.

2000-12-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c: s/change_file/file_change.
	* cpplib.h: Similarly.
	* cppmain.c: Similarly.
	* fix-header.c: Similarly.
	* cppfiles.c (stack_include_file): Pass the buffer location and
	size to cpp_push_buffer.  Generate the file_change callback,
	so that sysp is already set.
	* cpphash.h: Add _cpp_do_file_change.
	* cpplib.c (do_line): Set buffer->sysp directly. Generate the
	file_change callback after setting sysp.
	(_cpp_do_file_change): Handle FC_ENTER and the FC_RENAME exception
	here.
	(cpp_push_buffer): Don't generate a callback.  Clear sysp.
	(cpp_pop_buffer): Clean up logic.

2000-12-18  Benjamin Kosnik  <bkoz@redhat.com>

	* configure.in (gcc_gxx_include_dir): Simplify.
	(libstdcxx_incdir): Export.
	* configure: Regenerate.
	* Makefile.in (PREPROCESSOR_DEFINES): Add in
	GPLUSPLUS_TOOL_INCLUDE_DIR bits here..
	(libstdcxx_incdir): Add.
	* cppdefault.c (GPLUSPLUS_TOOL_INCLUDE_DIR): Add search path.

2000-12-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (lex_lineno): Remove.
	(init_c_lex, c_lex): Remove lex_lineno.
	(cb_change_file): Update lineno correctly, both before calling
	push_srcloc and before leaving the function.
	(cb_def_pragma): Set lineno before outputting diagnostics.

Sun Dec 17 18:45:41 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* print-tree.c (print_node): Print DECL_USER_ALIGN and TYPE_USER_ALIGN.
	Print TYPE_MIN_VALUE and TYPE_MAX_VALUE for REAL_TYPE.
	Use print_node_brief to print bounds.

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

	* cpplib.h (struct cpp_reader): Remove references to string_pool
	and temp_string_pool.
	* cppinit.c (cpp_create_reader, cpp_cleanup): Similarly; using
	ident_pool in place.
	* cpplex.c (parse_number, unescaped_terminator_p, parse_string,
	save_comment, cpp_token_as_text): Similarly.
	* cpplib.c (do_define, glue_header_name, parse_assertion): Similarly.
	* cppmacro.c (make_number_token, builtin_macro, lock_pools,
	unlock_pools, stringify_arg, paste_tokens): Similarly.

Sun Dec 17 12:41:48 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (loc_descriptor_from_tree, case NOP_EXPR): New case.
	(loc_descriptor_from_tree, case CONVERT_EXPR): Likewise.
	(loc_descriptor_from_tree, case NON_LVALUE_EXPR): Likewise.

2000-12-17  Richard Earnshaw  <rearnsha@arm.com>

	* Makefile.in (check-po): Use $(MAKE).
	(risky-stage1, risky-stage2, risky-stage3, risky-stage4): Likewise.

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

	* cppmain.c (check_multiline_token): New function.
	(scan_buffer): Use it.
	(cb_change_file): Restructure to avoid warning.
	* cpperror.c (print_location): Initialize col.

2000-12-14  Philipp Thomas  <pthomas@suse.de>

	* protoize.c (main): Correctly set locale categories.
	* gcc.c (main): Likewise.
	* cppmain.c (general_init): Likewise.
	* toplev.c (main): Likewise.
	* gcov.c (main): Likewise.
	* collect2.c (main): Likewise.

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

	* c-common.c (c_common_nodes_and_builtins): Create a
	cstring_endlink, use it.  Rename int_ftype_string_string to
	int_ftype_cstring_cstring, string_ftype_string_int to
	string_ftype_cstring_int, and string_ftype_string_string to
	string_ftype_cstring_cstring.  Prefer sizetype_endlink and
	int_endlink to manually recreating them.  Fix the prototype
	set for __builtin_strspn/__builtin_strcspn.

2000-12-12  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (out_set_stack_ptr): Update comment.
	(print_operand): Add support for %~ and %o.

2000-12-17 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h: Add ASM_OUTPUT_DEF definition for bounded pointer code.

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

	* c-lex.c: Move main_input_filename handling to FC_ENTER. Clean up.
	* cpperror.c (print_containing_files): Get right line number.
	(print_location): Output column of 1 if 0.
	* cppfiles.c (stack_include_file): cpp_push_buffer handles
	the callback.
	* cpphash.h (_cpp_do_file_change): No longer external.
	* cpplib.c (do_file_change): Now local to cpplib.c.
	(do_line): Fake a buffer stack for preprocessed files.
	(cpp_push_buffer): Create a file_change callback.  Handle faked
	buffers.
	(cpp_pop_buffer): Similarly.
	* cpplib.h: BUF_FAKE: New buffer type.
	* cppmain.c: Update to handle correct file renaming where a
	#line is the first line of the main file, and produce only
	the renamed file, not the original file, as output.

2000-12-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md: Remove redundant @s from output patterns.

2000-12-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
            Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Call c4x_init_pragma.

	* config/c4x/c4x-protos.h (c4x_init_pragma): New prototype.

	* config/c4x/c4x.c (c4x_init_pragma): New function.
	(c_lex_func): New variable.
	(c4x_parse_pragma): Use c_lex_func.

2000-12-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
            Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* config/c4x/c4x.h (MD_INIT_BUILTINS): Add void_list_node argument
	to c4x_init_builtins.

	* config/c4x/c4x-protos.h (c4x_init_builtins): Add tree argument.

	* config/c4x/c4x.c (c4x_init_builtins): Add tree argument.
	(c4x_output_ascii):  Fix.

2000-12-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
            Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* config/c4x/c4x.h (MD_INIT_BUILTINS, MD_EXPAND_BUILTIN): Define.

	* config/c4x/c4x-protos.h (c4x_init_builtins): New prototype.
	(c4x_expand_builtin): Likewise.

	* config/c4x/c4x.c (c4x_init_builtins): New function.
	(c4x_expand_builtin): Likewise.

	* config/c4x/c4x.md (floatunsqihf2): New pattern.
	(*floatqihf2_set, *fixhfqi_set, fix_trunchfqi2): Likewise.
	(fixuns_trunchfqi2, toieee, frieee, *ldhf_conditional): Likewise.
	(*ldhf_conditional_noov, movhfcc, trap, cond_trap_cc): Likewise.
	(*toieee_movqf_clobber, *frieee_movqf_clobber): Likewise.

2000-12-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes.
	* libgcc2.c (__absvsi2): Use Wtype and DWtype.
	(__absvdi2, __addvsi3, __addvdi3, __subvsi3): Likewise.
	(__subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2): Likewise.

2000-12-16  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (INITIALIZE_TRAMPOLINE): Enclose the block
	statement in do/while(0).

Sat Dec 16 19:56:24 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashrsi3_cmpno, ashrhi3_cmpno, ashrqi3_cmpno, lshrsi3_cmpno,
	lshrhi3_cmpno): Remove redundant '@' from the template.

	* i386.md (cmpstrsi_1): Fix type of the compare.

	* genattrtab.c (attr_rtx_cost): New function.
	(simplify_test_exp): Avoid overactive inlining; use temporary
	obstacks for tests.

Sat Dec 16 10:41:11 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (finish_abort): Deleted.
	(fatal): Add code from finish_abort.
	(error_recursion, fancy_abort): Call fatal, not finish_abort.
	(trim_filename): Remove leading "../".
	* diagnostic.h (finish_abort): Deleted.
	* toplev.c (crash_signal): Call fatal, not finish_abort.

	* stor-layout.c (place_field): Treat overflowing DECL_SIZE_UNIT
	as if size were variable.

	* expmed.c (expand_mult): Write REG_EQUAL note with proper mode.

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

	* tradcpp.c: T_WARNING: New.
	(do_warning): New function.
	(finclude): Skip past the newline and increase the line number
	before calling output_line_command.
	(do_line): Skip the new line after output_line_command.  Don't
	pre-decrement the line number.

2000-12-15  Diego Novillo  <dnovillo@redhat.com>

	* i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix references to
	_GLOBAL_OFFSET_TABLE_ when using Intel syntax.

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

	* gcc.c (cpp_options): Pass -fno-operator-names.
	* cpplib.h (struct cpp_options): Add operator_names.
	* cppinit.c (cpp_create_reader): Initialize it.
	(initialize_builtins): If -fno-operator-names, don't add
	C++ alternate operator names.
	(COMMAND_LINE_OPTIONS): Add -fno-operator-names.
	(cpp_handle_option): Clear operator_names.

2000-12-15  Jason Merrill  <jason@redhat.com>

	* jump.c (jump_optimize_1): Don't delete the line note after the
	prologue even if it seems redundant.

	* config/arm/arm.c (arm_expand_prologue): Set RTX_FRAME_RELATED_P
	on all insns used to adjust the stack.

Fri Dec 15 15:32:16 MET 2000  Jan Hubicka  <jh@suse.cz>

	* combine.c (cant_combine_insn_p): Get around SUBREGs when determining
	hardreg<->reg moves.

Fri Dec 15 14:48:37 MET 2000  Jan Hubicka  <jh@suse.cz>

	* genrecog.c (add_to_sequence): Remove special case for
	const_int_operand.
	(maybe_both_true): Return 1 when falling out of sequence when
	trying to find common position in the pattern.

Fri Dec 15 14:44:51 MET 2000  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_rtx_and_substitute): Copy mode too.

Fri Dec 15 14:11:57 MET 2000  Jan Hubicka  <jh@suse.cz>

	* flow.c (notice_stack_pointer_modification_1): Cleanup.

2000-12-15  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (adjust_trampoline_addr): New function.
	(trampoline_address): Call it instead of round_trampoline_addr().
	* tm.texi (TRAMPOLINE_ADJUST_ADDRESS): Document it.

2000-12-14  Zack Weinberg  <zack@wolery.stanford.edu>

	* cppfiles.c (hack_vms_include_specification): Delete function
	(not used since 1998).

Fri Dec 15 03:37:51 2000  J"orn Rennecke <amylaar@redhat.com>

	* haifa-sched.c (sched_init): Don't put a note in front of any BARRIER.

2000-12-14  Jim Wilson  <wilson@redhat.com>

	* alias.c (get_alias_set): Call record_component_aliases for
	COMPLEX_TYPE.
	(record_component_aliases): Handle COMPLEX_TYPE.

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

	* fixinc/gnu-regex.c: Disable NLS.

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

	* config/alpha/alpha.c (alpha_emit_conditional_move): Do not swap
	comparison operands when that would create non-canonical rtl.

	* config/i386/i386.md (umulsi3_highpart): Remove * from name.
	(smulsi3_highpart): Likewise.

2000-12-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc.c (cpp_options): Add -remap.

2000-12-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc.c (cpp_options): Update to use '&'.
	(struct switchstr): Change type of validated to save space.
	New member 'ordering'.
	(handle_braces, validate_switches): Update to handle '&'.

2000-12-13  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/inclhack.def: skip stdio_va_list fix if __DJ_va_list
	found in a header.
	* fixinc/fixincl.x: regenerated.

2000-12-13  DJ Delorie  <dj@redhat.com>

	* config.gcc (cygwin, win32, mingw32): Use float-i386.h.

2000-12-13  Tom Tromey  <tromey@redhat.com>

	* gcc.c (handle_braces): Handle %{<S*} spec correctly.

2000-12-13  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (assign_parms): Optimize incoming PARALLELs into
	REGs if possible.

2000-12-13  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.in(*): substantial rewrite to accommodate systems
	that cannot handle bi-directional pipes, viz. BeOS and DOS.
	* fixinc/fixlib.h(IGNORE_ARG): new macro
	(STATIC): define for all of fixinc to use
	* fixinc/fixfixes.c(*): eliminate unused arg warnings
	* fixinc/fixtests.c(*): ditto
	* fixinc/fixincl.c(start_fixer): chain_open now uses const arg list
	* fixinc/gnu-regex.c: reorder some includes to avoid _GNU_SOURCE
	warning.  Also, eliminate the ``#ifdef emacs'' stuff.
	(re_syntax_options): make global as it is declared so.
	* fixinc/mkfixinc.sh: process the argument list more consistently
	(beos/msdosdjgpp): set TARGETS to twoprocess vs. oneprocess
	* fixinc/procopen.c(globals): include "fixlib.h" for std defs
	* fixinc/server.c(globals): ditto
	* fixinc/server.h(defines): ditto

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

	* tradcpp.c (special_symbol): Improve test for definedness,
	though it is still not perfect.
	(do_define): Don't define illegal macro names.

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

	* config/mips/elf.h (ASM_OUTPUT_SECTION_NAME): emit @nobits
	if changing into .bss section.
	* config/mips/elf64.h: same.
	* config/mips/iris6.h: same.
	* config/mips/netbsd.h: same.
	* config/mips/openbsd.h: same.

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

	* cppfiles.c (read_name_map): Return null if open () fails.
	(remap_filename): Simplify logic.  Add ICE if it doesn't work
	as expected. Perform secondary lookup attempt on base filename
	only.

Wed Dec 13 19:48:04 MET 2000  Jan hubicka  <jh@suse.cz>

	* flow.c (notice_stack_pointer_modification_1): Notice midifications
	using PRE_MODIFY and POST_MODIFY.

Wed Dec 13 17:25:32 MET 2000  Jan Hubicka  <jh@suse.cz>

	* genoutput.c (process_template): Add sanity checking for '@' templates.

2000-12-13  Bernd Schmidt  <bernds@redhat.co.uk>

	* simplify-rtx.c (cselib_finish): Free reg_values and used_regs
	varrays.

2000-12-12  Mike Stump  <mrs@wrs.com>

	* Makefile.in (distclean): Remove safe-ctype.c as well.

2000-12-12  Brad Lucier <lucier@math.purdue.edu>

	* tradcpp.c (do_error): Cast difference of pointers to int
	for error message.

2000-12-12  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Move from here...
	* config/rs6000/sysv4.h (HANDLE_PRAGMA_PACK_PUSH_POP): ...to here.

2000-12-12  Jim Wilson  <wilson@redhat.com>

	* rtlanal.c (may_trap_p): Check operand modes of LE, LT, GE, and GT.

2000-12-12  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Simplify language enabling/disabling code.
	* configure: Rebuilt.
	* ch/config-lang.in (target_libs): Set.
	(build_by_default): Set to no.
	* cp/config-lang.in (target_libs): Set.
	* f/config-lang.in (target_libs): Set.
	* java/config-lang.in (target_libs): Set.
	* objc/config-lang.in (target_libs): Set.

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

	* tradcpp.c (enum node_type): Add T_ERROR.
	(do_error): New function.
	(directive_table): Add #error handler.

2000-12-12  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* configure.in (HAVE_AS_DWARF2_DEBUG_LINE): Enable .file/.loc check
	for powerpc*-*-*.
	* configure: Regenerated.
	* config/rs6000/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
	* config/rs6000/rs6000.c (rs6000_unique_section): Use
	STRIP_NAME_ENCODING.

Mon Dec 11 13:51:09 2000  Jeffrey A Law  (law@cygnus.com)

	* pa.c (cmpib_comparison_operator): Remove GEU and LTU.
	* pa.h (PREDICATE_CODES, cmpib_comparison_operator): Corresponding
	changes.

2000-12-11  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixincl.tpl: initialize all fields for warnings
	* fixinc/fixincl.x: regenerate

2000-12-11  Neil Booth  <neilb@earthling.net>

	* tradcpp.h: For tradcpp, NUL is not whitespace.

2000-12-11  Neil Booth  <neilb@earthling.net>

	* fix-header.c (read_scan_file): Macro expansion is not a file buffer.

2000-12-05  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (compare_condition, compare_sign_p): New functions.
	(compare_diff_p, compare_eq_p): Call compare_condition.
	(out_tsthi, out_tstsi): Call compare_sign_p.
	(avr_progmem_p): Check for error_mark_node.

2000-12-11  Neil Booth  <neilb@earthling.net>

	* cpperror.c (print_location): New function.
	(print_containing_files): Simplify.
	(_cpp_begin_message): Simplify and use print_location.
	* cppfiles.c (stack_include_file): Update.
	(_cpp_pop_file_buffer): Update.
	* cpphash.h (struct cpp_buffer): New members
	include_stack_listed and type.
	* cpplib.c (_cpp_handle_directive): Buffer->inc is not null.
	(run_directive): Take buffer type.  cpp_push_buffer cannot fail.
	(_cpp_do__Pragma, cpp_define, _cpp_define_builtin, cpp_undef,
	handle_assertion): Update.
	(cpp_push_buffer): Take a buffer type and file name.
	(cpp_pop_buffer): Update.  Clear include_stack_listed.
	* cpplib.h (input_stack_listing_current): Remove.
	(enum cpp_buffer_type): New.
	(cpp_push_buffer): New prototype.
	* cppmacro.c (builtin_macro): Simplify; buffer cannot be null.
	* fix-header.c (read_scan_file): Update.

2000-12-10  Robert Lipe <robertlipe@usa.net>

	* install.texi (i*86-*-sco3.2v5*): Remove information duplicated
	in html version.

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

	* genrecog.c (find_operand): Handle 'V' format code.
	(find_matching_operand): New.
	(validate_pattern): Accept '=' for an in-out operand if there
	is another operand with a matching constraint.

	* config/i386/i386.md (andqi_ext_0_cc): Use matching constraint
	for op1 to op0.

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

	* genrecog.c (validate_pattern) [STRICT_LOW_PART]: Fix thinko.

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

	* genrecog.c (validate_pattern): Verify that ZERO_EXTRACT and
	STRICT_LOW_PART as SET_DEST have in-out constraints.

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

	* c-common.c (check_function_format): Don't suggest adding format
	attributes to functions with no parameter to which to add them.

2000-12-09  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_expand_prologue): Mark the generated
	insn not the set as being DWARF2_FRAME_RELATED_P.

2000-12-09  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: use $(build_exeext) for all build
	system executable targets.

2000-12-09  Laurynas Biveinis  <lauras@softhome.net>

	* install.texi: remove i[345]86-*-winnt3.5 section.
	* configur.bat: removed.
	* config/msdos: directory removed.

2000-12-09  Neil Booth  <neilb@earthling.net>

	* cppfiles.c (NEVER_REREAD, DO_NOT_REREAD): Move from cpphash.h.
	* cpphash.h (NEVER_REREAD, DO_NOT_REREAD, ABSOLUTE_PATH): Delete.
	* cpplex.c (parse_identifier): Improve diagnostic.
	(_cpp_lex_token): Return unconditionally at the end of a directive.
	* cpplib.c (read_flag): Verify legality of each flag.
	(end_directive): Resotre pfile->skipping before skip_rest_of_line.
	(do_line): Use the new read_flag.
	* cppmacro.c (struct cpp_macro, parse_arg, replace_args,
	check_macro_redefinition, parse_params): Rename var_args to
	variadic.

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

	* .cvsignore: Add info files.

2000-12-08 Laurynas Biveinis <lauras@softhome.net>

	* config/winnt: Remove obsolete directory.
	* install.texi (Configurations): Remove obsolete documentation for
	Windows NT.

2000-12-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Don't define INSTALL_INFO.
	* configure: Regenerate.
	* Makefile.in (INSTALL_INFO): Remove.
	(info): Depend on info files in source directory.
	(cpp.info, gcc.info, c-tree.info): Build info files in source
	directory.
	(distclean): Don't remove info files.
	(maintainer-clean): Remove info files from source directory.
	(install-normal): Depend on install-info.
	(install-info): Install info files from source directory, if they
	exist.
	* texinfo.tex: Update to version 2000-11-09.08 from ftp.gnu.org.

2000-12-08  Alexandre Oliva  <aoliva@redhat.com>

	* lcm.c (optimize_mode_switching): Check whether an insn is a NOTE
	before taking its NOTE_LINE_NUMBER.

2000-12-08  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (load_indirect_jump): Add pool ranges.

	* extend.texi: Document ARM "interrupt" function attribute.
	Mention that the ARM also support the "naked" function
	attribute.

	* config/arm/arm-protos.h (arm_current_func_type): Add
	prototype.

	* config/arm/arm.h (EXCEPTION_LR_REGNUM): Define.
	(struct machine_function): Add 'func_type' field.
	Define bit values for 'func_type' field.
	(ARM_FUNC_TYPE): New macro.
	(IS_INTERRUPT): New macro.
	(IS_VOLATILE): New macro.
	(IS_NAKED): New macro.
	(IS_NESTED): New macro.
	(ARM_INITIAL_ELIMINATION_OFFSET): Use IS_VOLATILE.

	* config/arm/arm.c (isr_attribute_args): New Structure.  A
	list of "interrupt" function attribute modifiers.
	(arm_isr_value): New Function: Returns the type of the current
	interrupt function.
	(arm_compute_func_type): New Function: Computes the type of
	the current function.
	(arm_current_func_type): New Function: Returns the type of the
	current function.
	(use_return_insn): Use arm_current_func_type.
	(arm_valid_type_attribute_p): Accept "interrupt" function
	attribute.
	(arm_comp_type_attributes): Check "interrupt" attributes.
	(arm_valid_machine_decl): Accept "interrupt" function
	attribute.
	(arm_function_ok_for_sibcall): Do not allow interrupt
	functions to use sibcalls.
	(arm_naked_function_p): Delete.
	(print_multi_reg): Remove redundant parameter 'hat'.
	(arm_compute_save_reg_mask): New Function: Compute a bit mask
	of registers saved during the current function's prologue.
	(output_arm_return_instruction): Use arm_current_func_type.
	Generate return instruction when LR is not poppsed off the
	stack.
	(arm_volatile_func): Delete.
	(output_arm_prologue): Use arm_current_func_type and
	arm_compute_save_reg_mask.
	Note presernce of interrupt functions.
	(arm_output_epilogue): Use arm_current_func_type and
	arm_compute_save_reg_mask.
	(arm_expand_prologue): Use arm_current_func_type and
	arm_compute_save_reg_mask.
	(arm_init_machine_status): Initialize func_type field, if
	necessary.
	(thumb_expand_prologue): Use arm_current_func_type.
	(output_thumb_prologue): Use arm_current_func_type.

2000-12-08  Brad Lucier <lucier@math.purdue.edu>

	* tradcpp.c (do_include): Make pointer differences 64-bit clean.

Fri Dec  8 08:23:29 2000  J"orn Rennecke <amylaar@redhat.com>

	* fp-bit.c (_fpmul_parts): Use USItype variables as inputs
	for multiplies.

2000-12-07  Mike Stump  <mrs@wrs.com>

	* Makefile.in (distclean): Remove alloca.c hashtab.c.

2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>

	* Makefile.in (HOST_RTL): Add safe-ctype.o.
	(safe-ctype.o): New rule.
	* system.h: Include safe-ctype.h, not ctype.h.  No need to
	wrap ctype macros.

	* cpphash.h: Zap IStable and related macros.  Define is_* in
	terms of safe-ctype.h macros.
	* cppinit.c: Delete the IStable and all related code.

	* tradcpp.c: Delete is_idchar, is_idstart, is_hor_space, and
	is_space arrays.  Delete initialize_char_syntax.  Change all
	references to the above arrays to use macros instead.
	* tradcpp.h: Define is_idchar, is_idstart, is_space, and
	is_nvspace in terms of safe_ctype.h's macros.
	* tradcif.y: is_idchar, is_idstart are macros not arrays.

	* config/i370/i370.c, config/winnt/dirent.c,
	config/winnt/fixinc-nt.c, config/winnt/ld.c:
	Use uppercase ctype macros.  If we included ctype.h,
	include safe-ctype.h instead.

	* fixinc/fixfixes.c: Use uppercase ctype macros.  Don't test
	ISLOWER(c) before calling TOUPPER(c).
	* fixinc/fixincl.c (extract_quoted_files): Simplify out some gunk.
	* fixinc/gnu-regex.c: Include safe-ctype.h, not ctype.h.  No need to
	wrap ctype macros.  Don't test ISUPPER(x) before calling TOLOWER(x).

2000-12-07  DJ Delorie  <dj@redhat.com>

	* c-decl.c (grokdeclarator): preserve previous alignments when
	rebuilding array types.

2000-12-07  Neil Booth  <neilb@earthling.net>

	* cppfiles.c (struct include_file): Move from cpphash.h.
	(_cpp_never_reread): New function.
	(open_file, read_include_file): Use it.
	(stack_include_file): Set the buffer's sysp according to the
	path in which the file was found.
	(find_include_file): Don't set sysp.
	(cpp_make_system_header, actual_directory): Update.
	(_cpp_execute_include): Do #include_next lookup handling here,
	not in cpplib.c.  Use _cpp_never_reread.
	* cpphash.h (struct_include_file): Remove.
	(struct cpp_buffer): New member sysp.
	(CPP_IN_SYSTEM_HEADER, _cpp_execute_include): Update.
	(_cpp_never_reread): New.
	* cpplib.c (read_line_number): Rename read_flag.  Rework slightly.
	(end_directive): Clear line_extension flag.
	(_cpp_handle_directive): Set line_extension flag for #number.
	(do_include_next): Handle path lookup in _cpp_execute_include.
	(do_line): Cleanup to use read_flag.  Don't allow flags in #line.
	(_cpp_do_file_change): Update.
	(do_pragma_once): Use cpp_never_reread.  Clean up.
	* cpplib.h (struct lexer_state): New member line_extension.

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

	* flow.c (calculate_global_regs_live): Force the stack pointer live
	after reload as well.

2000-12-07  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.*(exeext): the variables are exeext, the
	substitution expression is build_exeext.

2000-12-07  Neil Booth  <neilb@earthling.net>

	* c-common.c (parse_in): Make a cpp_reader *.
	* cppfiles.c (_cpp_fake_include): Remove.
	* cpphash.h: Similarly.
	* cpplib.c (do_line): Don't call _cpp_fake_include.  A valid
	#line always creates a callback; FC_RENAME if there are no
	#line flags.
	* fix-header.c (read_scan_file): cpp_push_buffer cannot fail.
	The first EOF must be our get_char buffer.

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

	* c-common.c (warn_format_security): New variable.
	(check_format_info): Warn about non-literal formats with no format
	arguments if either -Wformat-nonliteral or -Wformat-security is
	specified.
	(set_Wformat): Set warn_format_security for settings other than 1.
	* c-common.h (warn_format_security): Declare.
	* c-decl.c (c_decode_option): Decode -Wformat-security and
	-Wno-format-security.
	* invoke.texi: Document -Wformat-security.
	* toplev.c (documented_lang_options): Include -Wformat-security
	and -Wno-format-security.

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

	* c-common.c (check_format_info): Warn for non-constant format
	strings with strftime formats if -Wformat-nonliteral.  Where the
	format can convert arguments, if the format is not a string
	literal and there are no arguments to the format, give a different
	warning message from the general non-string-literal case.

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

	* c-common.c (format_wanted_type): Add reading_from_flag.
	(print_char_table): Mark %s and %S formats with flag "R".
	(check_format_info_main): Set up reading_from_flag appropriately.
	If aflag, always set writing_in_flag rather than relying on the
	format used being a scanf format and so having it set.
	(check_format_types): Check for formats reading through null
	pointers.

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

	* invoke.texi (-Wformat): Document what format features are
	checked.

2000-12-06  Kazu Hirata  <kazu@hxi.com>

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

2000-12-06      Joel Sherrill <joel@OARcorp.com>

	* config.gcc (a29k*-*-rtems*, arm*-*-rtems*, c4x-*-rtems*,
	h8300-*-rtems*, hppa1.1-*-rtems, *mips*-*-rtems*): New targets.
	* config.gcc (*-rtems*): Add support for gthr-rtems.h.
	* gthr-rtems.h, config/a29k/rtems.h, config/arm/rtems-elf.h,
	config/h8300/rtems.h, config/mips/rtems.h: New files.

2000-12-06  Mark Kettenis  <kettenis@gnu.org>

	* config.gcc: Reorganize handling of *-*-gnu*, to share target
	specific make details with Linux.  Update comments to clarify
	the distinction between GNU/Linux and GNU/Hurd.

Wed Dec  6 19:22:02 2000  Jeffrey A Law  (law@cygnus.com)

	* contrib.texi: Fix my email address.  Update Per's
	list of contributions.

2000-12-06  Rodney Brown  <RodneyBrown@mynd.com>

	* c-lex.c (cb_indent): Decorate `str' argument, unused on HP-UX.
	* collect2.c (scan_libraries): Remove unused `ch'.
	(COFF specific stuff): Prototype ldgetname.  Declare and prototype
	ldbtread and ldclose.

	* config/alpha/osf.h: Standarize copyright statement.
	* config/arc/arc.h: Likewise.
	* config/arm/elf.h config/arm/coff.h config/arm/aout.h: Likewise.
	* config/arm/arm.c config/arm/arm.h: Likewise.
	* config/elxsi/elxsi.h: Likewise.
	* config/i386/sco.h: Likewise.
	* config/m68k/crds.h config/m68k/hp320.h config/m68k/lynx.h: Likewise.
	* config/m68k/m68kv4.h config/m68k/next21.h: Likewise.
	* config/m68k/sun3.h: Likewise.
	* config/m88k/dgux.h config/m88k/dguxbcs.h: Likewise.
	* config/pdp11/2bsd.h config/pdp11/pdp11.h: Likewise.
	* config/romp/romp.h: Likewise.
	* config/rs6000/aix41.h: Likewise.
	* config/sparc/sysv4.h: Likewise.
	* config/we32k/we32k.c config/we32k/we32k.h: Likewise.
	* fixinc/gnu-regex.c fixinc/gnu-regex.h: Likewise.
	* cpplib.h cppexp.c cselib.h profile.c: Likewise.
	* longlong.h: Likewise.
	* libgcc2.c: Likewise.

2000-12-06 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* machmode.def: Use correct definition for BITSIZE on targets where
	BITS_PER_UNIT != 8.

2000-12-06  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.*: Reduce differences to (ultimately) reduce
	the number of them.

2000-12-06  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c: Include expr.h before c-tree.h.
	(remove_useless_addtr_insns): Use reverse_condition_maybe_unordered
	instead of reverse_condition.
	(print_operand): Correct predicates for GT, GE, LT and LE.  Add
	predicates for LTGT, UNLE, UNLT, UNGE, UNGT, UNEQ, UNORDERED and
	ORDERED.
	(cmpib_comparison_operator): Add GEU and LTU codes.
	* pa.h (PREDICATE_CODES): Add codes for cmpib_comparison_operator.
	* pa.md (bltgt, bunle, bunlt, bunge, bungt, buneq, bunordered,
	bordered): New float conditional branch patterns.

Wed Dec  6 21:03:41 2000  J"orn Rennecke <amylaar@redhat.com>

	* final.c (final_addr_vec_align): Fix clipping to BIGGEST_ALIGNMENT.

2000-12-06  Sylvain Pion  <Sylvain.Pion@sophia.inria.fr>

	* cpplex.c (skip_escaped_newlines): Don't warn for spaces between
	backslash and newline, when inside a comment.

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

	* invoke.texi: Use @table @samp instead of @itemize @minus for
	table of language standards.  Fix use of @pxref.  From Zack
	Weinberg.  Also exclude specs documentation from generated
	manpage, and create separate ENVIRONMENT section.

2000-12-06  Michael Matz  <matzmich@cs.tu-berlin.de>

	* gcse.c (compute_pre_data): Kill trapping expressions in
	destination blocks of abnormal edges.

2000-12-05  Richard Sandiford  <r.sandiford@redhat.com>

	* config/mn10300/mn10300.c (mn10300_print_reg_list): Added.
	(mn10300_get_live_callee_saved_regs): Likewise.
	(mn10300_gen_multiple_store): Likewise.
	(store_multiple_operation): Likewise.
	(expand_prologue): Use mn10300_gen_multiple_store().
	* config/mn10300/mn10300-protos.h (mn10300_print_reg_list): Added.
	(mn10300_get_live_callee_saved_regs): Likewise.
	(mn10300_gen_multiple_store): Likewise.
	(store_multiple_operation): Likewise.
	* config/mn10300/mn10300.md (store_movm): Use a MATCH_PARALLEL
	tied to store_multiple_operation().

Tue Dec  5 20:09:14 2000  Jeffrey A Law  (law@cygnus.com)

	* builtins.c (expand_builtin_setjmp_setup): Set
	current_function_has_nonlocal_label.

2000-12-05  Neil Booth  <neilb@earthling.net>

	* cppfiles.c (stack_include_file): Push zero-length buffers
	in case of failure.  Return void, as we don't fail any more.
	(read_include_file): Check for files we shouldn't re-read.
	Don't return an error code; errors are implied by marking the
	file NEVER_REREAD.
	(_cpp_execute_include): Move the recursion and in-macro checks
	here.  Update for stack_include_file not failing.
	* cpplib.c (cpp_push_buffer): Always succeed, since
	_cpp_execute_include performs the recursion check.  Tidy up.
	* cpplib.h (cpp_push_buffer): Update prototype.

2000-12-05  Alexandre Oliva  <aoliva@redhat.com>

	* sched-vis.c (visual_tbl_line_length): New variable.
	(get_visual_tbl_length): Set it.
	(visualize_stall_cycles): Don't let stalls overrun
	visual_tbl_line_length.

2000-12-05  Geoffrey Keating  <geoffk@redhat.com>

	* global.c (global_conflicts): Allow for a REG_UNUSED note
	with a different mode to the REG set in the insn.

2000-12-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (fixinc.sh): Pass $WARN_CFLAGS into fixinc dir.

	* fixinc/Makefile.in (FIXINC_DEFS): Add $(WARN_CFLAGS).

2000-12-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/mkfixinc.sh(*-gnu*): activate fixinc for GNU/Hurd and
	GNU/Linux.

2000-12-05  Richard Earnshaw  <rearnsha@arm.com>

	* fixinc/mkfixinc.sh: Run fixinc on netbsd.
	* fixinc/inclhack.def (machine/ansi.h): Run this rule on all files,
	to cope with aliased copies.
	* fixinc/fixincl.x: Regenerate.

2000-12-05  Bernd Schmidt  <bernds@redhat.co.uk>

	* sched-vis.c: Guard with #ifdef INSN_SCHEDULING.
	* sched-rgn.c: Likewise.
	(rgn_print_insn): Fix output.

2000-12-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.*: make these more consistent
	* fixinc/mkfixincl.sh: enable BeOS fixincludes

2000-12-05  Richard Henderson  <rth@redhat.com>

	* stmt.c (warn_if_unused_value): Move side effects test earlier.

2000-12-05  Alan Modra <alan@linuxcare.com.au>

	* bb-reorder.c (reorder_basic_blocks): Do check for EH edges even
	when using sjlj.

2000-12-05  Richard Henderson  <rth@redhat.com>

	* flow.c (calculate_global_regs_live): Only force stack pointer
	live before reload.  Force pic register live before reload.
	(insn_dead_p): Don't protect pic references from deletion.

2000-12-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Add support for using texi2pod.pl.  Don't use
	@multitable.

2000-12-04  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_override_options): Test 'insn_flags' not
	'tune_flags' for XScale nature.
	Remove spurious test of HARD_FLOAT and XScale flags.

	* config/arm/arm.md (umulsidi3adddi): Restore "=&r" register
	contraint, accidentally changed during XScale contribution.

	* config/arm/lib1funcs.asm (interwork_call_via_, call_via_): Do
	not create these functions if the target architecture does not
	support Thumb instructions.

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

	* ONEWS: New file with the current contents of NEWS up to EGCS
	1.1.
	* NEWS: Generate automatically from online release notes from EGCS
	1.0 to GCC 2.95.2, using ../contrib/gennews.

2000-12-04  Neil Booth  <neilb@earthling.net>

	* tradcif.y: Move lexptr to top of file.  Add rule to handle
	assertions in conditional expressions.
	* tradcpp.c (parse_answer): Assertions do not need to go to
	end of line in conditional directives.
	(parse_assertion): Get first character of identifiers correct.
	(test_assertion): New function.
	* tradcpp.h (test_assertion): New prototype.

2000-12-01  Rodney Brown  <RodneyBrown@mynd.com>

	* config.gcc: Fix typo for UnixWare 7.

2000-12-03  Phil Edwards  <pme@sources.redhat.com>

	* invoke.texi:  Replace `pedwarns' with clearer text.

2000-12-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.*(clean):  don't clean autogenerated files.
	(mainainer-clean): clean autogenerated files

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

	* md.texi: Add overview, clarify match_dup and define_expand.

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

	* print-tree.c (print_node): Target-specific builtins print
	numbers, not names.

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

	* stor-layout.c (int_mode_for_mode): Handle MODE_VECTOR_INT,
	MODE_VECTOR_FLOAT.

	* diagnostic.c (report_problematic_module): s/function/module/.

	* c-lex.h: Remove decl for check_newline.

2000-12-04  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.APOLLO: Remove obsolete file.

2000-12-04  Neil Booth  <neilb@earthling.net>

	* cppinternals.texi: New file.

2000-12-04  Neil Booth  <neilb@earthling.net>

	* cppfiles.c (cpp_make_system_header): Take 2 booleans,
	and operate on current buffer.
	(cpp_read_file): Rename _cpp_read_file.
	* cpplib.c (do_line, do_pragma_system_header): Update calls to
	cpp_make_system_header.
	* fix-header.c: Similarly.
	* cpphash.h (_cpp_read_file): Move from...
	* cpplib.h: ... here.
	* cppinit.c (do_includes, cpp_start_read): Update appropriately.

2000-12-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strspn, expand_builtin_strcspn):
	Handle another transformation.

2000-12-03  Nick Clifton  <nickc@redhat.com>

	* config.gcc: Add support for StrongARM targets.
	* config/arm/t-strongarm-elf: New file.
	* config/arm/t-strongarm-coff: New file.
	* config/arm/t-strongarm-pe: New file.
	* config/arm/strongarm-pe.h: New file.

2000-12-03  Nick Clifton  <nickc@redhat.com>

	* NEWS: Mention XScale has been added.
	* config.gcc: Add support for XScale targets.
	* config/arm/arm.h: Add support for XScale processor.
	* config/arm/arm.c: Add support for XScale processor.
	* config/arm/arm.md: Add support for XScale processor.
	* config/arm/t-xscale-elf: New file.
	* config/arm/t-xscale-coff: New file.
	* config/arm/xscale-elf.h: New file.
	* config/arm/xscale-coff.h: New file.

2000-12-03  Richard Henderson  <rth@redhat.com>

	* bb-reorder.c (reorder_basic_blocks): Don't check for EH edges
	unless exception handling is enabled, and if not using sjlj.

	* builtins.c (expand_builtin_setjmp_setup): New.
	(expand_builtin_setjmp_receiver): New.
	(expand_builtin_setjmp): Split out _setup and _receiver functions.
	Move argument parsing in from ...
	(expand_builtin): ... here.
	* except.c (receive_exception_label): Branch around receiver
	unless new-style exceptions.  Call expand_builtin_setjmp_receiver.
	(start_dynamic_handler): Call expand_builtin_setjmp_setup.
	* expr.h: Update builtin setjmp decls.

2000-12-03  Bruce Korb  <bkorb@gcc.org>

	* fixinc/mkfixinc.sh(build machine): Sometimes, there is no canonical
	build machine name.  Default to the target.

2000-12-03  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: use $(build_canonical), not $(canonical_build).

2000-12-03  Bernd Schmidt  <bernds@redhat.co.uk>

	* Makefile.in (OBJS): Add sched-rgn.o.
	(sched-rgn.o): New rule.  * haifa-sched.c (sched_verbose): No
	longer static.
	(INSN_PRIORITY, INSN_COST, INSN_UNIT, INSN_REG_WEIGHT,
	INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK, ENCODE_BLOCKAGE,
	UNIT_BLOCKED, BLOCKAGE_RANGE, MIN_BLOCKAGE_COST,
	MAX_BLOCKAGE_COST): Move to sched-int.h.
	(MAX_RGN_BLOCKS, MAX_RGN_INSNS, INSN_REF_COUNT, FED_BY_SPEC_LOAD,
	IS_LOAD_INSN, struct haifa_edge, edge_table, NEXT_IN, NEXT_OUT,
	FROM_BLOCK, TO_BLOCK, nr_edges, in_edges, out_edges, IN_EDGES,
	OUT_EDGES, edgelst, struct region, nr_regions, rgn_table,
	rgn_bb_table, block_to_bb, containing_rgn, RGN_NR_BLOCKS,
	RGN_BLOCKS, BLOCK_TO_BB, BB_TO_BLOCK, CONTAINING_RGN,
	debug_regions, find_single_block_region, find_rgns, too_large,
	init_regions, current_nr_blocks, current_blocks, bitset, bitlst,
	bitlst_table_last, bitlst_table_size, bitlst_table, bitset_member,
	extract_bitlst, bblst, struct candidate, candidate_table,
	bblst_table, bblst_size, bblst_last, IS_VALID, IS_SPECULATIVE,
	SRC_PROB, target_bb, split_edges, compute_trg_info,
	debug_candidate, debug_candidates, bbset, bbset_size, dom,
	IS_RGN_ENTRY, IS_DOMINATED, prob, GET_SRC_PROB, edgeset,
	rgn_nr_edges, rgn_edges, edgeset_size, edgeset_bitsize,
	EDGE_TO_BIT, edge_to_bit, pot_split, ancestor_edges,
	compute_dom_prob_ps, ABS_VALUE, INSN_PROBABILITY,
	IS_SPECULATIVE_INSN, INSN_BB, MIN_DIFF_PRIORITY, MIN_PROBABILITY,
	MIN_PROB_DIFF, check_live_1, update_live_1, check_live,
	update_live, set_spec_fed, is_pfree, find_conditional_protection,
	is_conditionally_protected, may_trap_exp, haifa_classify_insn,
	is_prisky, is_exception_free, add_branch_dependences,
	propagate_deps, compute_block_backward_dependences,
	debug_dependencies, is_cfg_nonregular, build_control_flow,
	new_edge, bb_deps, BITSET_UNION, BITSET_INTER, BITSET_DIFFER,
	BITSET_INVERT, BITSET_ADD, BITSET_REMOVE, debug_regions,
	UPDATE_LOOP_RELATIONS, INSN_TRAP_CLASS, WORST_CLASS, IS_REACHABLE,
	CONST_BASED_ADDRESS_P, free_pending_lists, sched_target_n_insns,
	target_n_insns, sched_n_insns, init_ready_list, deaths_in_region,
	can_schedule_ready_p, new_ready, schedule_more_p, rgn_print_insn,
	rgn_rank, region_sched_info): Move to sched-rgn.c.
	(debug_reg_vector): Delete useless function.
	(get_bb_head_tail): Likewise.
	(insn_issue_delay, insn_cost, ready_add, get_block_head_tail,
	no_real_insns_p, rm_line_notes, save_line_notes,
	restore_line_notes, rm_redundant_line_notes, sched_init): No
	longer static.
	(rm_line_notes, save_line_notes, restore_line_notes,
	schedule_block, set_priorities): Change argument to be a real
	basic block, not one of haifa's "bb"s.  All callers changed
	(rm_other_notes): Initialize note_list here, not in
	schedule_region.
	(sched_finish): New function, called from schedule_insn.  * *
	sched-int.h (INSN_PRIORITY, INSN_COST, INSN_UNIT, INSN_REG_WEIGHT,
	INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK, ENCODE_BLOCKAGE,
	UNIT_BLOCKED, BLOCKAGE_RANGE, MIN_BLOCKAGE_COST,
	MAX_BLOCKAGE_COST): Moved here from haifa-sched.c.
	(get_block_head_tail, no_real_insns_p, rm_line_notes,
	save_line_notes, restore_line_notes, rm_redundant_line_notes,
	rm_other_notes, insn_issue_delay, set_priorities, schedule_block,
	sched_init, sched_finish, ready_add, insn_cost): Declare.

2000-12-03  Laurynas Biveinis  <lauras@softhome.net>
	    Bruce Korb  <bkorb@gnu.org>

	* Makefile.in: pass $(build_canonical) to mkfixinc.sh.
	* fixinc/mkfixinc.sh: accept build system name as an argument.
	Use it for choosing the fix build method.  Use the target for
	selecting special fix rules.

2000-12-03  Bernd Schmidt  <bernds@redhat.co.uk>

	* Makefile.in (OBJS): Add sched-deps.o.
	(sched-deps.o): New rule.
	* haifa-sched.c (struct deps, struct haifa_insn_data): Moved to
	sched-int.h.
	(INSN_DEPEND, INSN_LUID, CANT_MOVE, INSN_DEP_COUNT): Macros moved to
	sched-int.h.
	(SIZE_FOR_MODE): Delete unused macro.
	(reg_known_equiv_p, reg_known_value, reg_pending_clobbers,
	reg_pending_sets, reg_pending_sets_all, true_dependency_cache,
	anti_dependency_cache, output_dependency_cache,
	forward_dependency_cache): Variables moved to sched-deps.c.
	(add_dependence, remove_dependence, find_insn_list,
	find_insn_mem_list, add_insn_mem_dependence, flush_pending_lists,
	sched_analyze_insn, sched_analyze_1, sched_analyze_2,
	sched_analyze, group_leader, compute_forward_dependences,
	init_deps, free_deps, init_dependency_caches, free_dependency_caches):
	Functions moved to sched-deps.c.
	(schedule_region): Call init_deps_global and finish_deps_global
	instead of directly manipulating dependency data structures.
	* sched-deps.c: New file.
	(init_deps_global, finish_deps_global): New functions.
	* sched-int.h (struct haifa_insn_data, struct deps): Moved here from
	haifa-sched.c.
	(h_i_d): Declare.
	(INSN_DEPEND, INSN_LUID, CANT_MOVE, INSN_DEP_COUNT): Macros moved here
	from haifa-sched.c.

	* Makefile.in (OBJS): Add sched-vis.o.
	(sched-vis.o): New rule.
	* haifa-sched.c (get_unit_last_insn): New function.
	(sched_dump, insn_unit, actual_hazard_this_instance): No longer
	static.
	(schedule_block): Call visualize_alloc and visualize_free.  Delete
	spurious return statement.
	(init_target_units, insn_print_units, get_visual_tbl_length,
	init_block_visualization, print_block_visualization, safe_concat,
	visualize_scheduled_inns, visualize_no_unit, visualize_stall_cycles,
	print_exp, print_value, print_pattern, print_insn, target_units,
	MAX_VISUAL_LINES, INSN_LEN, n_visual_lines, visual_tbl,
	n_vis_no_unit, vis_no_unit): Move scheduling visualization
	functions/variables...
	* sched-vis.c: ...here.  New file.
	(visualize_alloc, visualize_free): New functions.
	(visualize_scheduled_insns, visualize_stall_cycles,
	print_block_visualization): Lose basic block argument.  All callers
	changed.
	(visualize_scheduled_insns): Use new function get_unit_last_insn.
	* sched-int.h (current_sched_info, sched_dump): Declare.
	(init_target_units, insn_print_units, init_block_visualization,
	print_block_visualization, visualize_scheduled_inns,
	visualize_no_unit, visualize_stall_cycles, visualize_alloc,
	visualize_free): Declare functions.

	* sched-int.h: New file.
	* Makefile.in (haifa-sched.o): Depend on it.
	* haifa-sched.c: Include it.
	(no_real_insns_p): New function.
	(current_sched_info): New static variable.
	(__inline, HAIFA_INLINE): Moved to sched-int.h.
	(get_block_head_tail): Minor cleanup.
	(init_ready_list, can_schedule_ready_p, new_ready, schedule_more_p,
	rgn_print_insn, rgn_rank): New functions, broken out of
	rank_for_schedule, schedule_insn and schedule_block, where they
	are now called through function pointers in current_sched_info.
	(queue_insn, schedule_insn, queue_to_ready, debug_ready_list,
	print_insn): To display uid and block number, call the print_insn
	function pointer in current_schedule_info.
	(region_sched_info): New static variable.
	(sched_target_n_insns, sched_n_insns, target_n_insns): New global
	variables, moved out of schedule_block.
	(schedule_block): Return void.  All callers changed.
	Move some of the setup code into schedule_region.  Get head/tail
	from current_sched_info, and update it when done.
	(schedule_region): Slightly rearranged, some code moved here from
	schedule_block.  Call no_real_insns_p to avoid doing work for a
	block that consists only of notes and labels.
	(schedule_insns): Initialize current_sched_info.

2000-12-03  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (funlike_invocation_p): Re-disable macros enabled
	by contexts drops AFTER argument pre-expansion, so that they
	remain enabled during argument pre-expansion.
	(_cpp_pop_context): Unconditionally re-enable a macro when
	dropping a context level.

2000-12-03  Manfred Hollstein  <manfredh@redhat.com>

	* arm/t-linux (MULTILIB_OPTIONS): Comment.
	(MULTILIB_DIRNAMES): Likewise.
	(EXTRA_MULTILIB_PARTS): Likewise.
	(LIBGCC): Likewise.
	(INSTALL_LIBGCC): Likewise.

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

	* builtins.c (expand_builtin_strcat, expand_builtin_strncat,
	expand_builtin_strspn, expand_builtin_strcspn): New functions.
	(expand_builtin): Handle BUILT_IN_STRCAT, BUILT_IN_STRNCAT,
	BUILT_IN_STRSPN and BUILT_IN_STRCSPN.

	* builtins.def (BUILT_IN_STRCAT, BUILT_IN_STRNCAT,
	BUILT_IN_STRSPN, BUILT_IN_STRCSPN): New entries.

	* c-common.c (c_common_nodes_and_builtins): Declare builtin
	strcat, strncat, strspn and strcspn.
	(string_ftype_string_cstring): Renamed from `string_ftype_ptr_ptr'.

	* extend.texi (strcat, strcspn, strncat, strspn): Document new
	builtins.

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

	* builtins.c (expand_builtin_strcmp): Use const*_rtx when
	expanding strcmp at compile-time.  Add another transformation.
	(expand_builtin_strncmp): Add more transformations.  Call
	expand_builtin_memcmp, not expand_builtin_strcmp, under
	appropriate conditions if HAVE_cmpstrsi.

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

	* rs6000.md (anddi3_internal[23]): Prefer rldic? over andis
	instruction.
	(cr logic): Really make operands sequential.

2000-12-02  Geoffrey Keating  <geoffk@redhat.com>

	* c-common.c (combine_strings): When the ISO C standard specifies
	the maximum length of a string, it doesn't include the trailing
	zero byte.

	* cpplib.c (do_ifdef): Add check_eol() call.
	(do_ifndef): Likewise.

2000-12-02  Daniel Berlin  <dberlin@redhat.com>
	    Bruce Korb  <bkorb@gnu.org>

	* fixinc/*: global substitute /__MSDOS__/SEPARATE_FIX_PROC/
	* fixinc/mkfixinc.sh: prepare to use Makefile.BEOS for *-*-beos*
	* fixinc/Makefile.DOS: define SEPARATE_FIX_PROC for build
	* fixinc/fixfix.c(wrap_fix): avoid wrapping files that
	use the "__need_" hackery.  It breaks them.
	* fixinc/fixincl.c(process - SEPARATE_FIX_PROC):
	Sometimes on DOS and BeOS the temp output file cannot be opened.
	Skip the file noisily.  Ought to be fixed instead.

2000-12-02  Bruce Korb  <bkorb@gnu.org>

	From: 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixfixes.c (emit_gnu_type, format_write): Prototype.
	(format_write, char_macro_use_fix, char_macro_def_fix): Use gcc's
	custom uppercase ctype macros.
	* fixincl.c (do_version): Make static and add ATTRIBUTE_NORETURN.
	Use gcc's custom uppercase ctype macros.
	(main): Prototype.
	(machine_matches): Add static prototype and constify variable.
	(create_file, test_test, egrep_test): Add static prototype.
	(quoted_file_exists): Likewise, and constify parameters.
	(extract_quoted_files, internal_fix, start_fixer, fix_applies,
	write_replacement, test_for_changes): Add static prototype.
	(write_replacement, test_for_changes): Delete excess argument to
	`create_file'.
	* fixtests.c (test): Make static.
	* server.c (load_data, sig_handler, server_setup, find_shell): Add
	static prototype.
	(sig_handler): Mark parameter with ATTRIBUTE_UNUSED.

2000-12-02  Bruce Korb  <bkorb@gnu.org>

	* fixnc/mkfixinc.sh(msdosdjgpp): remove from fixincludes exception list
	(per Laurynas Biveinis  <lauras@softhome.net>)

2000-12-02  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (ARM_REGNO_OK_FOR_BASE_P, THUMB_REGNO_MODE_OK_FOR_BASE_P): New
	macros.
	(REGNO_MODE_OK_FOR_BASE_P): Define in terms of above.
	(REGNO_OK_FOR_FOR_BASE_P): Delete.
	(ARM_REG_OK_FOR_BASE_P, THUMB_REG_MODE_OK_FOR_BASE_P): New macros for
	both strict and non-strict uses.
	(REG_MODE_OK_FOR_BASE_P): Define in terms of above.
	(ARM_REG_OK_FOR_INDEX_P, THUMB_REG_OK_FOR_INDEX_P): New macros.
	(REG_OK_FOR_INDEX_P): Define in terms of above.
	(REG_OK_FOR_BASE_P): Delete.
	(REG_OK_FOR_PRE_POST_P): Delete.
	(ARM_BASE_REGISTER_RTX_P): Renamed from BASE_REGISTER_RTX_P.
	(ARM_INDEX_REGISTER_RTX_P): Renamed from INDEX_REGISTER_RTX_P.
	(ARM_GO_IF_LEGITIMATE_INDEX): Renamed from GO_IF_LEGITIMATE_INDEX.
	(THUMB_LEGITIMATE_OFFSET): Renamed from LEGITIMATE_OFFSET.
	(ARM_GO_IF_LEGITIMATE_ADDRESS): Adjust for name changes.  Use ARM
	specific variants rather than general ones.  Use ARM_REG_OK_FOR_BASE_P
	in pre/post increment cases.
	(THUMB_GO_IF_LEGITIMATE_ADDRESS): Similarly for Thumb.
	(ARM_LEGITIMIZE_ADDRESS): Similarly.
	(THUMB_LEGITIMIZE_RELOAD_ADDRESS): Similarly.
	* arm.c (legitimate_pic_address): Similarly.

2000-12-02  Neil Booth  <neilb@earthling.net>

	* tradcpp.c (struct answer, parse_assertion, parse_answer,
	canonicalize_text, find_answer): New.
	(do_assert, do_unassert): Provide appropriate function bodies.
	(union hashval): New member answers.

2000-11-23  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.md: Document UNSPEC usage.
	(*tablejump_rjmp, *tablejump_lib, *tablejump_enh, *tablejump):
	Make operand 0 input only, clobber it.  Use UNSPEC, not a bogus
	MEM for program memory word reference.  Do not add the label to
	the table index in each of the asm output templates, instead ...
	(casesi): ... do it in RTL.  Adjust to match the above change.

2000-12-02  Bernd Schmidt  <bernds@redhat.co.uk>

	* c-common.c (PTRDIFF_TYPE): Provide default here, ...
	* c-decl.c: ... not here.

	* haifa-sched.c (sched_dump): Renamed from dump.  All users changed.
	(old_max_uid): New variable.
	(compute_forward_dependences): Renamed from
	compute_block_forward_dependences; changed to accept block head and
	tail instead of block number.  Caller changed.
	(free_deps, init_dependency_caches, free_dependency_caches,
	init_regions, sched_init): New functions, split out from
	schedule_insns and compute_block_backward_dependences.

2000-12-02  Neil Booth  <neilb@earthling.net>

	* cppexp.c (parse_number): Update diagnostic test.

2000-12-02  Bernd Schmidt  <bernds@redhat.co.uk>

	* reload1.c (free_for_value_p): New function, frontend to
	reload_reg_free_for_value_p.  All callers of the latter now call
	this function with an additional mode argument.

2000-12-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* install.texi (Configurations): Remove obsolete documentation for
	hppa*-*-*.

2000-12-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* install.texi (Installation): Remove obsolete description for
	libstdc++ which is now an integral part of GCC.

2000-12-01  Jim Blandy  <jimb@redhat.com>

	* dbxout.c (dbxout_parms): Correctly describe parameters passed by
	invisible reference in registers, but then spilled to the stack.
	Remove code to emit a second stab for such parameters; it attempts
	to describe the value's location by introducing a synthetic C++
	`reference' type, and then saying the stack slot has that
	reference type.  This loses type information (breaking GDB's
	`ptype' command, among other things) just to describe a location
	which stabs can represent correctly in other ways.

2000-12-01  Alexandre Oliva  <aoliva@redhat.com>

	* final.c (output_addr_const) <PLUS>: Don't assume at least one
	operand is a CONST_INT.

	* config/sh/sh.c (reg_class_from_letter): Assign `k' to SIBCALL_REGS.
	(machine_dependent_reorg): Split all insns.
	* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Compute
	reg_class_contents[SIBCALL_REGS].
	(reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add SIBCALL_REGS.
	* config/sh/sh.md (calli_pcrel, call_pcrel, call_valuei_pcrel,
	call_value_pcrel, call, call_value, sibcall): Match even when
	not optimizing.
	(sibcalli_pcrel, sibcall_pcrel): Likewise.  Use constraint `k'
	for call address.
	(sibcalli): Likewise.

2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (warn_format, warn_format_y2k,
	warn_format_extra_args, warn_format_nonliteral): Define.
	(check_format_info): Check warn_format_nonliteral and
	warn_format_extra_args.
	(check_format_info_main): Check warn_format_y2k.
	(set_Wformat): New function.
	* c-common.h (warn_format_y2k, warn_format_extra_args,
	warn_format_nonliteral, set_Wformat): Declare.
	* c-decl.c (warn_format): Remove definition.
	(c_decode_option): Handle -Wformat-nonliteral,
	-Wno-format-extra-args and -Wno-format-y2k, and negated versions.
	Use set_Wformat.
	* invoke.texi: Document these new options and -Wformat=2.
	* toplev.c (documented_lang_options): Add these new options.

2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* builtins.def (BUILT_IN_IMAXABS): Add.
	* builtins.c (expand_builtin): Also abort on BUILT_IN_IMAXABS.
	* c-common.c (c_common_nodes_and_builtins): Create builtin
	functions __builtin_imaxabs, and plain imaxabs unless
	flag_no_nonansi_builtin outside C99 mode.
	(expand_tree_builtin): Handle BUILT_IN_IMAXABS.
	* extend.texi: Document builtin imaxabs.

2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c: Include "defaults.h".
	(WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Define.
	(c_common_nodes_and_builtins): Create string_type_node,
	const_string_type_node, wint_type_node, intmax_type_node,
	uintmax_type_node, default_function_type, ptrdiff_type_node and
	unsigned_ptrdiff_type_node.
	* c-common.h (identifier_global_value): Declare.
	* c-decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
	(init_decl_processing): Don't create string_type_node,
	const_string_type_node, wint_type_node, intmax_type_node,
	uintmax_type_node, default_function_type, ptrdiff_type_node and
	unsigned_ptrdiff_type_node.
	(identifier_global_value): New function.

2000-12-01  Neil Booth  <neilb@earthling.net>

	* cppinit.c (initialize): Forgotten prototype.
	* cpplex.c (_cpp_lex_token): Loop until not skipping.
	Always clear PREV_WHITE upon meeting a new line.
	* cpplib.c (end_directive): Set pfile->skipping after
	skip_rest_of_line.
	* cpplib.h (cpp_reader): Remove macro_pos.
	* cppmacro.c (cpp_get_line): Don't do anything special inside
	macros.
	(parse_arg): Add PREV_WHITE if a token appears after new lines.
	(funlike_invocation_p): Save and restore the output position
	over a successful check for a '('.
	(enter_macro_context): Delete uses of macro_pos.
	(cpp_get_token): Don't use pfile->skipping.

2000-12-01  Phil Edwards  <pme@sources.redhat.com>

	* diagnostic.c:  Fix typos in comments.
	* diagnostic.h:  Likewise.

2000-11-30  Phil Edwards  <pme@sources.redhat.com>

	* rtl.texi (Machine Modes):  Document BImode and OImode.

2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.c (default_compilers): Add suffixes .mi, .cp, .ii, .FOR and
	.FPP.

2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): If pedantic, warn about arrays with
	incomplete element type.
	(grokparms): Before checking for incomplete parameter type, check
	the type isn't error_mark_node.

2000-12-01  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (target_char_cast): New function.
	(expand_builtin_strchr): Use it.
	(expand_builtin_strrchr): Use it.
	(builtin_memset_read_str): New function.
	(expand_builtin_memset): Use target_char_cast.
	Try to optimize memset with second argument nonzero using
	store_by_pieces.

2000-11-30  Marek Michalkiewicz  <marekm@linux.org.pl>

	* install.texi (avr): Replace incomplete list of supported MCU
	types with a link to the current one ...
	* invoke.texi (AVR Options): ... here.  Update -mmcu= to list
	all supported MCU types.  Document -minit-stack= default.
	Document new options -mno-tablejump, -mtiny-stack.
	* md.texi (AVR family):  Fix typo in 'w' constraint letter
	description.  Document 'q'.  Update 'O'.

2000-12-01  Bernd Schmidt  <bernds@redhat.co.uk>

	* combine.c (cant_combine_insn_p): Only disallow insns involving
	hard regs if they are reg-reg moves.
	(try_combine, can_combine_p, combinable_i3pat): Delete old
	SMALL_REGISTER_CLASSES tests.

2000-12-01  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (shiftcosts): Don't get INTVAL before testing
	whether X is a CONST_INT.
	(addsubcosts): Likewise.

	* config/sh/sh.h (OUTPUT_ADDR_CONST_EXTRA): Use INTVAL instead of
	mis-used XINT.
	(ARG_POINTER_REGNUM): Set to AP_REG.

2000-11-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (fpu_switch0, fpu_switch1, movpsi, fpu_switch,
	splits): Only match on TARGET_SH4.

	* combine.c (try_combine): Disregard USEs when updating LOG_LINKS
	of subsequent insns.

2000-11-30  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Disable.
	* config/alpha/alpha32.h (ASM_OUTPUT_MI_THUNK): Likewise.

2000-11-30  Richard Henderson  <rth@redhat.com>

	* config/alpha/elf.h (ASM_OUTPUT_SECTION_NAME): Copy elfos.h defn.
	(DO_SELECT_SECTION): New.
	(SELECT_SECTION): Use it.
	(UNIQUE_SECTION_P): New.
	(UNIQUE_SECTION): New.

2000-11-30  Alexandre Oliva  <aoliva@redhat.com>

	* c-common.c (status_warning) [! ANSI_PROTOTYPES]: Load status
	from va_list before using it.

2000-11-30  Michael Matz  <matzmich@cs.tu-berlin.de>

	* flow.c (make_edge): Early out, if no flags to set.
	(calculate_global_regs_live): Clear out garbage only when necessary.

	* simplify-rtx.c (varray_type used_regs): New.
	(clear_table): Use it to only clear necessary items.
	(cselib_lookup, cselib_record_set): Remember newly set items.
	(cselib_update_varray_sizes, cselib_init): Initialize and grow
	used_regs.

	* local-alloc.c (update_equiv_regs): New local `cleared_regs'.
	Move clearing of dead regs out of insn-loop.

2000-11-30  Richard Henderson  <rth@redhat.com>

	* calls.c (expand_call): Emit queued insns before creating
	the tail recursion sequence.

2000-11-30  J. David Anglin  <dave.anglin@nrc.ca>
	    Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def(): prevent dual double definition protection
	* fixinc/fixincl.x: regenerate

2000-11-29  Loren J. Rittle  <ljrittle@acm.org>

	* fixinc/Makefile.in (fixincl.x): Explicitly state the
	location of the generated file.

2000-11-30  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.FRESCO: Remove obsolete file.

2000-11-30  Mark Kettenis  <kettenis@gnu.org>

	* config/t-gnu (LIBGCC1, CROSS_LIBGCC1, CRTSTUFF_T_CFLAGS,
	TARGET_LIBGCC2_CFLAGS): Remove.  We now use the settings from
	config/t-linux for the Hurd.

2000-11-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/mn10200/udivmod.c, config/mn10200/divmod.c,
	config/mn10200/udivmodsi4.c: Moved from here.
	* config/udivmod.c, config/divmod.c, config/udivmodsi4.c: To here.
	* config/mn10200/t-mn10200 (LIB2FUNCS_EXTRA): Use the generic
	C division functions.
	* config/m68hc11/t-m68hc11-gas (LIB2FUNCS_EXTRA): Likewise.

Thu Nov 30 01:12:52 2000  Jeffrey A Law  (law@cygnus.com)

	* pa.md (conditional moves): Avoid holes in operand list.
	(mod, umod patterns): Similarly.
	(variable extract/shift patterns): Similarly.

2000-11-30  Neil Booth  <neilb@earthling.net>

	* objc/objc-act.c (lang_init, finish_file, maybe_objc_comptypes,
	maybe_objc_check_decl, build_objc_string_object,
	objc_declare_alias, objc_declare_class, build_message_expr,
	build_protocol_expr, build_selector_expr, build_encode_expr,
	get_class_ivars, start_class, start_protocol): Remove
	redundant code, assuming doing_objc_thang is true.

2000-11-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (restore_unscaled_index_insn_codes): Delete procedure.
	(record_unscaled_index_insn_codes): Likewise.
	(unscaled_index_insn_codes): Delete.
	(max_unscaled_index_insn_codes_uid): Delete.
	(output_function_prologue, output_function_epilogue, pa_reorg):
	Don't use the unscaled index insn hack.

	* pa.md: Remove hack from all index insns to reverse the operand
	order of frame and stack pointer references incorrectly created
	in the reload pass.

	* function.h (emit_status): Delete member regno_pointer_flag and
	rename regno_pointer_flag_length to regno_pointer_align_length.
	Delete define for REGNO_POINTER_FLAG.
	* integrate.h (inline_remap): Delete member regno_pointer_flag.
	Add member x_regno_reg_rtx.
	* rtl.h (rtx_def): Use frame_related bit to indicate register is
	a pointer in REG expressions.  Define REG_POINTER macro.
	* alias.c (find_base_value, find_base_term): Use REG_POINTER
	instead of REGNO_POINTER_FLAG.
	* combine.c (nonzero_bits, num_sign_bit_copies): Likewise.
	* emit-rtl.c (gen_reg_rtx): Use regno_pointer_align_length instead
	of regno_pointer_flag_length.  Remove code which refers to
	regno_pointer_flag.
	(mark_reg_pointer): Use REG_POINTER.
	(free_emit_status): Remove code which refers to regno_pointer_flag.
	(init_emit, mark_emit_status): Likewise.
	* flow.c (dump_flow_info): Likewise.
	* function.c (preserve_temp_slots): Likewise.
	* integrate.c (expand_inline_function, copy_rtx_and_substitute):
	Use x_regno_reg_rtx instead of regno_pointer_flag for function
	pointer determination in map.
	* loop.c (strength_reduce, maybe_eliminate_biv_1): Use REG_POINTER.
	* predict.c (estimate_probability): Likewise.
	* regclass.c (record_address_regs, reg_scan_mark_refs): Likewise.
	* unroll.c (unroll_loop): Use x_regno_reg_rtx instead of
	regno_pointer_flag for function pointer determination in map.
	* convex.h (RTX_COSTS): Don't test regno_pointer_flag and use
	REG_POINTER.
	* pa.c (hppa_legitimize_address, emit_move_sequence, basereg_operand):
	Use REG_POINTER.
	(restore_unscaled_index_insn_codes): Revise comment.

	* expr.c (do_compare_and_jump): Add missing TYPE_MODE in statement.

2000-11-30  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Update documentation for attributes.

2000-11-29  David O'Brien  <obrien@FreeBSD.org>

	* config/alpha/elf.h (IDENT_ASM_OP): Protect the #define.
	(ASM_DECLARE_OBJECT_NAME): Same.
	(ASM_FILE_END): Same.
	(ASM_FINISH_DECLARE_OBJECT): Same.
	(ASM_IDENTIFY_GCC): Same.
	(ASM_IDENTIFY_LANGUAGE): Same.
	(ASM_OUTPUT_CONSTRUCTOR): Same.
	(ASM_OUTPUT_DEF): Same.
	(ASM_OUTPUT_DESTRUCTOR): Same.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Same.
	(ASM_OUTPUT_SECTION_NAME): Same.
	(ASM_WEAKEN_LABEL): Same.
	(BSS_SECTION_ASM_OP): Same.
	(COMMON_ASM_OP): Same.
	(CONST_SECTION_ASM_OP): Same.
	(CONST_SECTION_FUNCTION): Same.
	(CTORS_SECTION_ASM_OP): Same.
	(DTORS_SECTION_ASM_OP): Same.
	(ESCAPES): Same.
	(FINI_SECTION_ASM_OP): Same.
	(IDENT_ASM_OP): Same.
	(IDENT_ASM_OP): Same.
	(INIT_SECTION_ASM_OP): Same.
	(INT_ASM_OP): Same.
	(MAX_OFILE_ALIGNMENT): Same.
	(SBSS_SECTION_ASM_OP): Same.
	(SDATA_SECTION_ASM_OP): Same.
	(SECTION_FUNCTION_TEMPLATE): Same.
	(SELECT_SECTION): Same.
	(SE_CONST_SECTION): Same.
	(SIZE_ASM_OP): Same.
	(SKIP_ASM_OP): Same.
	(STRING_ASM_OP): Same.
	(STRING_LIMIT): Same.
	(TYPE_ASM_OP): Same.
	(TYPE_OPERAND_FMT): Same.

2000-11-29  Neil Booth  <neilb@earthling.net>

	* c-decl.c (c_decode_option): Don't handle -lang-objc.
	* objc/lang-options.h: Remove -lang-objc.
	* objc/lang-specs.h: Don't pass -lang-objc to cc1obj.
	* objc/objc-act.c (lang_init_options): Set c_language.

2000-11-29  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (can_store_by_pieces): Reinitialize max_size for reverse
	tests.

2000-11-29  Neil Booth  <neilb@earthling.net>

	* c-pragma.c (init_pragma): Update for parse_in type change.

2000-11-29  Laurynas Biveinis  <lauras@softhome.net>

	* configure.in: recognize DOS-style absolute paths.

2000-11-29  Jakub Jelinek  <jakub@redhat.com>

	* expr.h (store_by_pieces): Add prototype.
	(can_store_by_pieces): Likewise.
	* expr.c (struct store_by_pieces): Renamed from clear_by_pieces.
	(can_store_by_pieces): New.
	(store_by_pieces): New.
	(clear_by_pieces): New.
	(clear_by_pieces_1): New.
	(store_by_pieces_1): Renamed from clear_by_pieces, handle storing
	arbitrary compiler generated constants into memory block.
	(store_by_pieces_2): Renamed from clear_by_pieces_1, likewise.
	* builtins.c (c_readstr): New.
	(builtin_memcpy_read_str): New.
	(expand_builtin_memcpy): If src is string constant and
	emit_block_move would move it by pieces, compute integer constants
	from the string and store it into memory block instead.
	(builtin_strncpy_read_str): New.
	(expand_builtin_strncpy): If N is not constant zero and c_strlen does
	not return INTEGER_CST, don't optimize.
	If N is larger than strlen(src) + 1, try to copy the string
	including padding with store_by_pieces.
	(expand_builtin_strcmp): If both arguments have side effects, don't
	optimize.
	(expand_builtin_fputs): If STR has side effects, don't optimize.

2000-11-29  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (sibcall, sibcall_value, sibcall_insn, sibcall_value_insn):
	Add use of link register.

2000-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Update documentation for default format attributes.

Tue Nov 28 21:56:45 2000  Jeffrey A Law  (law@cygnus.com)

	* pa/pa-64.h (ASM_OUTPUT_SECTION_NAME): Use a hash table, not
	a list, to keep track of the sections.

2000-11-28  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (pic_load_addr): Split into
	pic_load_addr_arm and pic_load_addr_thumb.

	* config/arm/arm.c (legitimize_pic_address): Generate either
	ARM or Thumb versions of pic_load_addr.
	(arm_finalize_pic): Generate either ARM or Thumb versions of
	pic_load_addr.

2000-11-28  Richard Henderson  <rth@redhat.com>

	* calls.c (expand_call): Defer const/pure NO_DEFER_POP until
	after sibcall do_pending_stack_adjust.

Wed Nov 29 00:08:23 2000  J"orn Rennecke <amylaar@redhat.com>

	* jump.c (delete_insn): Check that REG_LABEL note actually contains
	a CODE_LABEL.

2000-11-28  Neil Booth  <neilb@earthling.net>

	* c-common.h: Remove flag_digraphs.
	* c-decl.c: Remove flag_digraphs.
	(c_decode_option): Don't set it.
	* c-lex.c (init_c_lex): Don't do anything for digraphs.

2000-11-28  Richard Henderson  <rth@redhat.com>

	* c-parse.in (finish_parse): Update for parse_in type change.
	(_yylex): Likewise.

2000-11-28  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (cpp_scan_buffer_nooutput): Take a boolean
	indicating whether to scan all buffers on the stack or
	just one.
	* cppinit.c (do_includes): Update.
	* cppmain.c (main): Update.
	* cpplib.h: Update prototype.

2000-11-28  Richard Henderson  <rth@redhat.com>

	* genoutput.c (validate_insn_operands): New.
	(gen_insn): Call it.

	* config/alpha/alpha.md (divmodsi_internal): Renumber operands.
	(divmoddi_internal): Likewise.
	* config/arm/arm.md (andsi3_compare0_scratch): Likewise.
	* config/i960/i960.md (branch patterns): Likewise.
	* config/ia64/ia64.md (tbit_and_0): Likewise.
	(tbit_and_1, tbit_or_0, tbit_or_1): Likewise.
	* config/m68k/m68k.md (zero_extract memory patterns): Likewise.
	* config/mips/mips.md (divmodsi4_internal): Likewise.
	(divmoddi4_internal): Likewise.
	* config/rs6000/rs6000.md (call patterns): Likewise.
	* config/sh/sh.md (movsi_y): Likewise.
	* config/sparc/sparc.md: Comment out if 0 v8p shift pattern.

2000-11-28  Richard Henderson  <rth@redhat.com>

	* config.gcc: Kill residual pyramid support.

2000-11-28  Neil Booth  <neilb@earthling.net>

	* c-lex.h (parse_in): Change parse_in to a cpp_reader *.
	* c-decl.c (c_decode_option): Update to match.
	* c-lex.c (init_c_lex, yyparse): Update to match.
	* c-lang.c (lang_init_options): Use cpp_create_reader.
	* cppinit.c (cpp_init): Rename initialize.
	(cpp_reader_init): Rename cpp_create_reader.  Create the
	reader.  Initialize cpplib if appropriate.
	* cpplib.h (cpp_create_reader) New prototype.
	(cpp_init, cpp_reader_init): Delete prototypes.
	* cppmain.c (general_init, setup_callbacks): New functions.
	(main): Use them.
	* fix-header.c (scan_in): Change type to cpp_reader *.
	(read_scan_file): Update for new cpplib interface and scan_in type.

	* cp/decl.c (parse_in): Change to cpp_reader *.
	(lang_decode_option): Update.
	* cp/lex.c (lang_init_options): Use new cpplib interface.
	(init_cp_pragma, finish_parse, handle_pragma_implementation): Update.
	* cp/spew.c (read_token): Update.
	* objc/objc-act.c (lang_init_options): Update new cpplib interface.

2000-11-28  Jakub Jelinek  <jakub@redhat.com>

	* loop.c (load_mems): Avoid using next_label to find end_label. If
	jumping outside of the loop (other than loop end), don't hoist MEMs
	out of loop.

2000-11-28  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Don't disable tail recursion based
	on the loop nest.

2000-11-28  Neil Booth  <neilb@earthling.net>

	* tradcpp.c (enum node_type): New hash types T_ASSERT, T_UNASSERT.
	(struct directive): Drop 4th argument from handlers.
	(do_define, do_line, do_include, do_undef, do_else, do_elif,
	do_endif): Similarly.
	(do_assert, do_unassert, do_ifdef, do_ifndef): New handlers.
	(do_ifxdef): Update as common handler of do_ifdef and do_ifndef.
	(make_definition, make_undef): Take a const char*.
	(make_assertion): New function.
	(struct directive_table): Update.
	(main): Handle -A command line argument.
	(handle_directive): Drop fourth handler argument.

2000-11-28  Bernd Schmidt  <bernds@redhat.co.uk>

	* simplify-rtx.c (cselib_record_sets): Ignore sets whose destination
	is anything but REG or MEM, but look inside STRICT_LOW_PART.

Tue Nov 28 09:53:50 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* system.h (IS_DIR_SEPARATOR): Use uppercase macro name.
	(IS_ABSOLUTE_PATHNAME): New macro.
	* gcc.c (find_a_file, process_command, do_spec_1, main): Use it.

2000-11-28  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (truncxfsf2_2): Fix predicate.

2000-11-27  Jim Wilson  <wilson@redhat.com>

	* reload1.c (reload): Use HOST_WIDE_INT for old_frame_size.

2000-11-27  Matthias Klose  <doko@cs.tu-berlin.de>

	* extend.texi (Nested Functions): Update URL of Usenix paper.

2000-11-27  Mark Mitchell  <mark@codesourcery.com>

	* function.c (free_after_compilation): Clear x_clobber_return_insn.

2000-11-27  Neil Booth  <neilb@earthling.net>

	* cppinit.c (cpp_reader_init): Remove handling of warn_paste
	command line options.
	(cpp_handle_option): Similarly.
	* cpplib.h (struct cpp_options): Remove warn_paste.
	* cppmacro.c (paste_tokens): Apart from assembler, make
	unpasteable token warning mandatory.

2000-11-27  Neil Booth  <neilb@earthling.net>

	* tradcpp.c (enum pending_dir_t, struct pending_dir): New.
	(main): Allocate a pending directive set of these.  Use it.
	Merge handling of -D and -U.  Update handling of pending
	directives.  Free the memory after use.

2000-11-27  Bernd Schmidt  <bernds@redhat.co.uk>

	* flow.c (entry_exit_blocks): Add entry for cond_local_set.
	(struct propagate_block_info): Add new member cond_local_set.
	(propagate_block): Accept new arg cond_local_set.  All callers
	changed.
	(init_propagate_block_info): Likewise.
	(calculate_global_regs_live): Allocate & free cond_local_set.  Always
	rescan if there's overlap between cond_local_set and new_live_at_end.
	(mark_set_1): Set bits either in cond_local_set or local_set, as
	appropriate.
	* basic-block.h (struct basic_block_def): New field cond_local_set.
	(propagate_block, init_propagate_block_info): Update prototypes.

Mon Nov 27 17:29:44 2000  kaz Kojima <kkojima@rr.iij4u.or.jp>

	* gcc/config/sh/sh.md (udivsi3_i4, udivsi3_i4_single): Clobber
	T register.

2000-11-27  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (select_dominance_cc_mode): Handle new way that combine
	canonicalizes conditional compares.
	(arm_select_cc_mode): Likewise.
	* arm.md: Garbage collect some dead code.
	(cmp_and, cmp_ior): New patterns.
	(splitter for conditional move with inverted false): Use cond_exec
	and handle unordered comparisons.

Mon Nov 27 17:22:56 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_force_to_memory, ix86_free_from_memory): New.
	* i386-protos.h (ix86_force_to_memory, ix86_free_from_memory): Declare
	* i386.md (float?i?f, int/fp operations): Rewrite spliters to use
	ix86_force_to_memory and ix86_free_from_memory.

2000-11-27  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (arm_adddi3, adddi_sesidi_di, adddi_zesidi_di, arm_addsi3,
	arm_subsi3_insn, anddi_zesidi_di, arm_andsi3_insn, anddi_notdi_di,
	anddi_notzesidi_di, anddi_notsesidi_di, arm_iorsi3,
	one_cmpldi2): Merge with splitters to create define_insn_and_split
	patterns.  Remove redundant splits.
	(peephole2 for add:SI of invalid immediate): New.
	(peephole2 for minus:SI of invalid immediate): New.
	(peephole2 for ior:SI of invalid immediate): New.
	(peephole for merge of move and compare): Convert ot peephole2.
	(addsf3, adddf3): Mark as commutative.

	* arm.md (thumb peephole for merging stack adjustments): Convert to
	peephole2.

2000-11-27  Bernd Schmidt  <bernds@redhat.co.uk>

	* haifa-sched.c (print_pattern): Prettier output for COND_EXEC.

	* reload1.c (reload_cse_simplify_set): Pass down mode to cselib_lookup.
	(reload_cse_simplify_operands): Do nothing about operands where both
	the operand and the match_operand fail to give us a mode.
	* simplify-rtx.c (wrap_constant): New function.
	(entry_and_rtx_equal_p): Except integer constants to come wrapped in a
	CONST describing the proper mode.
	(rtx_equal_for_cselib_p): Pass down modes to recursive calls of
	cselib_lookup.
	(cselib_lookup_mem): Call wrap_constant on the rtx that is passed to
	htab_find_slot_with_hash.
	(cselib_lookup): Likewise.

	Based on a patch from Geoff Keating <geoffk@redhat.com>:
	* loop.c (basic_induction_var): If a REG is set from something
	that is not a biv, then the REG is not a biv.  Even if it is
	earlier set from something that is a biv.

2000-11-27  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (extra_objs): Enclose extra_headers in quotes.
	* configure: Rebuilt.

2000-11-27  Neil Booth  <neilb@earthling.net>

	* c-lex.c (cb_enter_file, cb_leave_file, cb_rename_file):
	Combine into the new function cb_change_file.
	(init_c_lex): Update.
	* cppfiles.c (stack_include_file): Use _cpp_do_file_change.
	(cpp_syshdr_flags): Delete.
	* cpphash.h (_cpp_do_file_change): New prototype.
	Move struct cpp_buffer here from...
	* cpplib.h (struct cpp_buffer): ... here.
	(enum cpp_fc_reason, struct cpp_file_loc,
	struct_cpp_file_change, change_file): New.
	(enter_file, leave_file, rename_file, cpp_syshdr_flags): Delete.
	* cpplib.c (do_line): Update for new cb_change_file callback.
	(_cpp_do_file_change): New function.
	(_cpp_pop_buffer): Update to use it.
	* cppmain.c (move_printer): Delete.
	(main): Set up single callback cb_change_file.
	(cb_enter_file, cb_leave_file, cb_rename_file): Delete.
	(cb_change_file): New.
	* fix-header.c (cur_file, cb_change_file): New.
	(recognized_function, read_scan_file): Update.
	* scan-decls.c (scan_decls): Update.
	* scan.h (recognized_function): Update prototype.

2000-11-26  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (mark_tree_hashtable): New function.
	* tree.c (mark_tree_hashtable_entry): New function.
	(mark_tree_hashtable): Likewise.

2000-11-27  Michael Meissner  <meissner@redhat.com>

	* d30v-protos.h (srelational_si_operator): Correctly spell
	function.
	(urelational_si_operator): Ditto.
	(relational_si_operator): Ditto.
	(d30v_expand_prologue): Add prototype.
	(d30v_expand_epilogue): Ditto.

	* d30v.h (OPTIMIZATION_OPTIONS): Undo November 22nd change.

	* d30v.md (movcccc_*): Delete now unused patterns.
	(64 bit comparison splitters): Rewrite to use COND_EXEC instead of
	IF_THEN_ELSE.
	(define_cond_exec): Use 'b' to select branch flags.

2000-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strncmp, expand_builtin_strncpy): New
	functions.
	(expand_builtin): Handle BUILT_IN_STRNCPY and BUILT_IN_STRNCMP.

	* builtins.def (BUILT_IN_STRNCPY, BUILT_IN_STRNCMP): New entries.

	* c-common.c (c_common_nodes_and_builtins): Declare builtin
	strncpy and strncmp.

	* extend.texi (strncmp, strncpy): Document new builtins.

2000-11-26  Mark Mitchell  <mark@codesourcery.com>

	* config/elfos.h (ASM_OUTPUT_SECTION_NAME): Use a hash table, not
	a list, to keep track of the sections.
	* tm.texi (ASM_OUTPUT_SECTION_NAME): Document the fact that the
	parameter provided will always be a canonical string.

2000-11-26  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (cpp_scan_buffer_nooutput): Only scan the
	current buffer.

2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>

	* makefile.vms: Remove EGCS references.

2000-11-26  Ulrich Drepper  <drepper@redhat.com>

	* dwarf2out.c (output_file_names): New function.  Compute minimal
	combination of directory and file name table and emit them.
	(output_line_info): Remove code to emit directory and file name
	table and call output_file_names instead.
	(file_info_cmp): Helper function to sort directory names.

2000-11-26  Neil Booth	<neilb@earthling.net>

	* cpplib.h (struct cpp_reader): Remove lang_asm.
	(struct cpp_options): Remove c89. New members lang,
	extended_numbers.
	* cppexp.c (parse_number): Use them.
	* cpphash.h (VALID_SIGN): Use them.
	* cppinit.c (set_lang, cpp_start_read): Update.
	* cpplex.c (parse_string, _cpp_lex_token): Update.
	* cpplib.c (_cpp_handle_directive): Update.
	* cppmacro.c (parse_args): Update.
	* cppmain.c (scan_buffer): Update.

Sun Nov 26 10:02:37 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (fold, case CONVERT_EXPR): Always return tree of
	proper type.

2000-11-26  Neil Booth	<neilb@earthling.net>

	* Makefile.in: Remove MAYBE_CPPLIB and maybe_cpplib.
	* c-decl.c: Remove parse_in declaration.
	* c-lang.c: Similarly.
	* c-lex.c: Similarly.
	* c-parse.in: Similarly.
	* c-pragma.c: Similarly.
	* configure.in: Similarly.
	* cp/Make-lang.in: Similarly.
	* cp/spew.c: Similarly.
	* cp/decl2.c: Remove check for lang-c++ option.
	* cp/lang-specs.h: Remove -lang-c++ from cc1plus command line.
	* cp/lex.c (lang_init_options): With cpp_reader_init, default to C++.
	* c-lex.h: Add declaration of parse_in.
	* cppinit.c: Call set_lang after allocating pfile->pending.
	* configure: Regenerate.

2000-11-25  Zack Weinberg  <zack@wolery.stanford.edu>

	* combine.c (try_combine): Remove redundant test.

2000-11-25  Richard Henderson  <rth@redhat.com>

	* c-common.h (DECL_C_HARD_REGISTER): New.
	* c-decl.c (finish_decl): Set it for asm register variables.
	* c-semantics.c (emit_local_var): Test it when instantiating one.

2000-11-25  Richard Henderson  <rth@redhat.com>

	* c-decl.c (c_expand_body): Use DECL_SOURCE_LINE rather than
	lineno for the start of the function.

2000-11-25  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (file_table, file_table_allocated): Remove.
	(file_table_allocated): Remove.
	(struct file_table): New.
	(decl_file_table, line_file_table): New.
	(print_dwarf_line_table): Use them.
	(size_of_line_prolog): Likewise.
	(output_line_info): Likewise.
	(add_src_coords_attributes): Likewise.
	(gen_subprogram_die): Likewise.
	(gen_variable_die): Likewise.
	(dwarf2out_add_library_unit_info): Likewise.
	(dwarf2out_line): Likewise.
	(lookup_filename): Take a struct file_table argument.
	(init_file_table): New.
	(dwarf2out_init): Use it.

2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Update sequence points references.

2000-11-25  Neil Booth  <neilb@earthling.net>

	* c-common.c: Remove USE_CPPLIB conditional inclusions.
	* c-common.h: Similarly.
	* c-decl.c: Similarly.
	* c-lang.c: Similarly.
	* c-lex.c: Similarly.
	* c-parse.in: Similarly.
	* c-pragma.c: Similarly.
	* c-pragma.h: Similarly.
	* gcc.c: Similarly.
	* toplev.c: Similarly.
	* cp/cp-tree.h: Similarly.
	* cp/decl2.c: Similarly.
	* cp/lang-specs.h: Similarly.
	* cp/lex.c: Similarly.
	* cp/lex.h: Similarly.
	* cp/spew.c: Similarly.
	* java/lang-options.h: Similarly.
	* objc/lang-specs.h: Similarly.
	* objc/objc-act.c: Similarly.

	* configure.in: Remove configure option.
	* config.in: Regenerate.
	* configure: Regenerate.

2000-11-25  Richard Henderson  <rth@redhat.com>

	* haifa-sched.c (sched_analyze_1, sched_analyze_2, sched_analyze):
	Revert 2000-11-22 change.

2000-11-25  Bernd Schmidt  <bernds@redhat.co.uk>

	* config/i386/i386.h (FIXED_REGS): Make the three flags registers
	fixed.

2000-11-25  Philipp Thomas  <pthomas@suse.de>
	* configure.in (ALL_LINGUAS): Remove en_GB and add sv.
	* configure: Rebuilt.

2000-11-25  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (muldi3_v8plus): Remove H constraint.
	Handle CONST_INT as second argument.
	* config/sparc/sparc.c (set_extends): Remove first argument.
	Properly handle AND, CONST_INT and CONST_DOUBLE, handle IOR, XOR and
	MOV.
	(sparc_check_64): Abort if first argument is not REG.
	If it is DImode REG, look at the lower register of the register
	pair.

	* config/sparc/sparc.c (load_pic_register, restore_regs,
	output_return, sparc_v8plus_shift, sparc_function_profiler,
	sparc_function_block_profiler, sparc_block_profiler): Fix output
	formatting.

2000-11-25  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (TARGET_NONE): New.
	(TARGET_SWITCHES): For all variant-selecting switch, use
	TARGET_NONE to reset all other variant-selecting switch.  Added
	empty strings to avoid warnings.
	(TARGET_DEFAULT): Set to SH1_BIT.

	* Makefile.in ($(INTL_TARGETS)): Added $(CONFIG_H) for
	insn-codes.h.

	* gcc/config/sh/sh.md (sibcalli, sibcalli_pcrel): New insns.
	(sibcall_pcrel): New insn_and_split.
	(sibcall, sibcall_value, sibcall_epilogue): New expands.

	* config/sh/sh.md (GOTaddr2picreg, symGOT2reg, symGOTOFF2reg,
	symPLT_label2reg, call, call_value): Don't set
	current_function_uses_pic_offset_table.
	* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Don't mark
	PIC_OFFSET_TABLE_REGNUM as call_used, so that calc_live_regs
	takes it into account.
	(FINALIZE_PIC): Delete, useless.
	(LEGITIMATE_CONSTANT_P): Delete, unused.
	* config/sh/sh.c (sh_expand_prologue): Don't use
	current_function_uses_pic_offset_table.  Don't special-case
	PIC_OFFSET_TABLE_REGNUM.  Initialize it if it's ever live and
	PIC is enabled.
	(sh_expand_epilogue, initial_elimination_offset): Don't
	special case PIC_OFFSET_TABLE_REGNUM.

2000-11-25  Alexandre Oliva  <aoliva@redhat.com>, NIIBE Yutaka  <gniibe@m17n.org>

	* config/sh/sh-protos.h (symbol_ref_operand): Declare.
	* config/sh/sh.md (UNSPEC_CALLER): New constant.
	(calli_pcrel, call_valuei_pcrel): Use PIC_REG.
	(call_pcrel, call_value_pcrel): New insn_and_splits.
	(call, call_value): Use them.
	(call_site): New expand.
	(sym_label2reg, symPLT_label2reg): Adjust to hold call_sites.
	* config/sh/sh.h (OUTPUT_ADDR_CONST_EXTRA) [UNSPEC_CALLER]:
	Output call_site label.
	(PREDICATE_CODES): Added symbol_ref_operand.
	* config/sh/sh.c (symbol_ref_operand): Define.
	* emit-rtl.c (try_split): Propagate CALL_INSN_FUNCTION_USAGE
	to CALL_INSNs in the split sequence.

2000-11-24  Nick Clifton  <nickc@redhat.com>

	* config.gcc (v850-*-*): Define c_target_objs and
	cxx_target_objs.

	* config/v850/t-v850: Define how to build v850-c.o

	* config/v850/v850.h (struct data_area_stack_element): Move
	definition here from v850.c.

	* config/v850v850.c: Include gcc.h to avoid compile time
	warning.
	(push_data_area): Move to v850-c.c.
	(pop_data_area): Move to v850-c.c.
	(mark_current_function_as_interrupt): Move to v850-c.c.
	(GHS_default_section_names): Allow to be exported.
	(GHS_current_section_names): Allow to be exported.
	(data_area_stack_elements): Allow to be exported.
	(ghs_pragma_section): Move to v850-c.c.
	(ghs_pragma_interrupt): Move to v850-c.c.
	(ghs_pragma_starttda): Move to v850-c.c.
	(ghs_pragma_startsda): Move to v850-c.c.
	(ghs_pragma_startzda): Move to v850-c.c.
	(ghs_pragma_endtda): Move to v850-c.c.
	(ghs_pragma_endsda): Move to v850-c.c.
	(ghs_pragma_endzda): Move to v850-c.c.

	* config/v850/v850-c.c: New file: Contains v850 specific
	pragma parsing functions.

2000-11-24  Nick Clifton  <nickc@redhat.com>

	* config.gcc (extra_objs): Remove duplicate description.
	(c_target_objs): New variable.  Contains target specific
	object files for the gcc C compiler only.
	(cxx_target_objs): New variable.  Contains target specific
	object files for the gxx C++ compiler only.

	* configure.in (c_target_objs): Substitute in the makefile.
	(cxx_target_objs): Substitute in the makefile.
	* configure: Regenerate.

	* Makefile.in (C_TARGET_OBJS): Define and initialize from
	c_target_objs.
	(CXX_TARGET_OBJS): Define and initialize from
	cxx_target_objs.
	(C_AND_OBJC_OBJS): Include C_TARGET_OBJS.

	* cp/Make-lang.in (CXX_C_OBJS): Include CXX_TARGET_OBJS).

	* tm.texi (REGISTER_TARGET_PRAGMAS): Add paragraph explaining
	about how the use of the 'c_lex' function requires the use of
	the target specific, language specific object files feature of
	the configuration mechanism.

Fri Nov 24 18:50:58 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc.c (process_command): Use F_OK, not R_OK.

2000-11-24  Arno J. Klaassen  <arno@heho.snv.jussieu.fr>

	* flow.c (print_rtl_and_abort): Remove ANSIism.

Fri Nov 24 19:54:36 2000  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (GENERAL_REGISTER_P,
	GENERAL_OR_AP_REGISTER_P, FP_REGISTER_P, XD_REGISTER_P,
	FP_OR_XD_REGISTER_P, FP_ANY_REGISTER_P): New macros.  Use them
	all over.
	(SPECIAL_REG): Renamed to SPECIAL_REGISTER_P.
	* config/sh/sh.c: Use new macros.
	* config/sh/sh.md: Likewise.

Fri Nov 24 19:46:16 2000  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md: Clobber MACH_REG and MACL_REG in SImode,
	instead of just MACH_REG in DImode.  Always refer to FPSCR_REG
	in PSImode.

Fri Nov 24 22:37:41 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (out_tsthi,out_tstsi): Test simplification bug
	fixed.
	(machine_dependent_reorg): Wrong optimization based on
	NOTICE_UPDATE_CC removed.

Fri Nov 24 19:48:09 2000  J"orn Rennecke <amylaar@redhat.com>

	* jump.c (delete_computation): Re-instate deletion of feeding insn.
	(delete_insn): Look for REG_LABEL notes.
	(redirect_tablejump): Delete feeding insns.

2000-11-24  Bernd Schmidt  <bernds@redhat.co.uk>

	* config/i386/i386.md (call_pop_0, call_pop_1, call_value_pop_0,
	call_value_pop_1): Make sure operand numbers are contiguous.

	* fold-const.c (fold_range_test): Avoid crash if LHS or RHS is null.

	* reload1.c (conflicts_with_override): New function.
	(emit_input_reload_insns): Use it to tighten test for validity
	of substituting into output of previous insn.

	* haifa-sched.c (struct ready_list): New.
	(ready_lastpos, ready_add, ready_remove_first, ready_sort): New static
	functions.
	(schedule_insn): Replace args READY and N_READY with a pointer to a
	ready_list; return void.  Use the new functions to access the ready
	list.  All callers changed.
	(queue_to_ready, debug_ready_list): Likewise.
	(schedule_block): Initialize a ready_list structure.  Use new
	functions to access it.
	(max_priority): Remove unused variable.
	(schedule_insn): Don't set it.

	* c-common.c (verify_tree): Don't recurse into CONSTRUCTORs.

	* combine.c (cant_combine_insn_p): New function.
	(try_combine): Use it.

	* Makefile.in (c-common.o): Depend on $(OBSTACK_H).
	* c-common.c (c-obstack.c): Include "obstack.h".
	(struct reverse_tree): Delete.
	(reverse_list, reverse_max_depth): Delete.
	(build_reverse_tree, common_ancestor, modify_ok): Delete functions.
	(struct tlist, struct tlist_cache): New.
	(tlist_obstack, tlist_firstobj, warned_ids, save_expr_cache): New.
	(add_tlist, merge_tlist, verify_tree, warning_candidate_p,
	warn_for_collisions, warn_for_collisions_1, new_tlist): New
	static functions.
	(verify_sequence_points): Rewritten.
	* fold-const.c (fold): Don't lose possibly important sequence
	points when removing one arm of TRUTH_ORIF_EXPRs or TRUTH_ANDIF_EXPRs.

2000-11-24  Richard Sandiford  <rsandifo@redhat.com>

	* gcc/cse.c (cse_insn): Removed conversion of REG_EQUIV to REG_EQUAL
	when reversing a register-to-register copy.  Reversal now disabled
	when the previous instruction has a REG_EQUIV.

2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>

	* c-parse.in (unary_expr): Move VA_ARG from here ...
	(primary): ... to here.

2000-11-23  Graham Stott  <grahams@redhat.com>

	* expr.c (store_constructor): If a field is non addressable and
	the target is a MEM use MEM_ALIAS_SET otherwise use get_alias_set.

2000-11-23  Bernd Schmidt  <bernds@redhat.co.uk>

	* flow.c (print_rtl_and_abort): New function.
	(verify_wide_reg, verify_local_live_at_start): Try to dump more
	information before aborting.

2000-11-23  Alexandre Oliva  <aoliva@redhat.com>

	* emit-rtl.c (gen_lowpart_common): Use word 0 if register mode
	is narrower than requested mode.
	(gen_highpart): Abort if register mode is narrower than
	requested mode.

2000-11-23  Graham Stott  <grahams@redhat.com>

	* cse.c (cse_insn): Initialize all regcost variables.
	Fix a typo add missing '='.
	Only compare costs if there is a replacement insn.

Thu Nov 23 04:33:33 2000  Alexandre Oliva  <aoliva@redhat.com>

	* final.c (output_addr_const) [LABEL_REF]: Simplify.
	[MINUS]: Enclose non-CONST_INTs in parentheses.
	[default]: Try OUTPUT_ADDR_CONST_EXTRA.
	* tm.texi (OUTPUT_ADDR_CONST_EXTRA): Document it.
	* varasm.c (decode_rtx_const) [CONST]: If it's not something
	PLUS or MINUS a CONST_INT, use the whole CONST with offset 0
	instead of abort()ing.
	* sh.c (output_pic_addr_const): Removed.  Fixed all callers.
	* sh.h (OUTPUT_ADDR_CONST_EXTRA): New.  Handle the UNSPECs
	formerly handled in output_pic_addr_const.
	* sh.md (sym_label2reg, symPLT_label2reg): Enclose UNSPEC
	operands of MINUS in CONSTs so that decode_rtx_const() will
	accept them.

Thu Nov 23 04:10:30 2000  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (mova_const): New pattern.
	(GOTaddr2picreg): Use it.
	* config/sh/sh.c (broken_move): Match it.
	(mova_p): Don't match it.
	(machine_dependent_reorg): Adjust it.

Thu Nov 23 02:09:09 2000  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (FIRST_GENERAL_REG, LAST_GENERAL_REG): New.
	Moved most register-number #defines...
	* config/sh/sh.md (define_constants): ... here.  Use macros to
	refer to registers and unspecs.
	* config/sh/sh.c: Likewise.

Thu Nov 23 01:01:32 2000  J"orn Rennecke <amylaar@redhat.com>

	* Makefile.in (HOST_CFLAGS): Add -DGENERATOR_FILE.
	(rtl.o, print-rtl.o, bitmap.o, obstack.o): Build with -DGENERATOR_FILE.
	(alloca.o, vfprintf.o, ggc-none.o, errors.o): Likewise.
	(splay-tree.o, hash.o): Likewise.
	GCONFIG_H: New.
	(rtl.o, print-rtl.o): Depend on $(GCONFIG_H) instead of $(CONFIG_H).
	(bitmap.o, obstack.o, vfprintf.o, ggc-none.o, errors.o): Likewise.
	(hashtab.o): Likewise.
	(gcov.o): Depend on $(CONFIG_H).
	* configure.in: #include insn-codes.h in tm.h.

2000-11-22  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_encode_call_attribute): Make 'newstr' a
	const char * to avoid a compile time warning.

	* config/arm/arm.md (define_constants): Define symbolic names for
	the link register, last integer register and the fake CC register.
	Update patterns to use these symbolic names.

2000-11-22  Neil Booth  <neilb@earthling.net>

	* cpplex.c (trigraph_ok): Ensure we don't warn twice.
	* cpplib.h (struct cpp_buffer): New member last_Wtrigraphs.

2000-11-22  Richard Henderson  <rth@redhat.com>

	* haifa-sched.c (sched_analyze_1): Don't special-case calls
	for clobbering registers.
	(sched_analyze_2): Likewise.
	(sched_analyze): Zap reg_last_uses and reg_last_sets after calls.

2000-11-22  Chris Demetriou  <cgd@sibyte.com>
	    Neil Booth  <neilb@earthling.net>

	* gcc.c (validate_switches): Validate multiple switches named
	in '|' (or) expressions in specs.
	(handle_braces): If more than 1 alternative in a '|' spec
	matches, call do_spec1 just once.

2000-11-22  Michael Meissner  <meissner@redhat.com>

	* d30v.h (TARGET_SWITCHES): Add documentation strings.
	(TARGET_OPTIONS): Ditto.
	(OPTIMIZATION_OPTIONS): Temporarily turn off -frename-registers if
	-O3.

Wed Nov 22 06:40:56 2000  Jeffrey A Law  (law@cygnus.com)

	* pa.c (hppa_encode_label): Account for addition of encoding
	character when allocating persistent space for the new label
	name.

2000-11-22  Zack Weinberg  <zack@wolery.stanford.edu>

	* Makefile.in, config.gcc, configure.in: Expunge remaining
	traces of facility for running MD files through C preprocessor.

2000-11-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcov.texi: Add magic comments for texi2pod.pl.
	* Makefile.in: Add rules to generate and install gcov.1.
	* gcov.1: New (generated) file.

2000-11-21  Richard Henderson  <rth@redhat.com>

	* regrename.c (scan_rtx_reg): Terminate the chain rather than
	abort on mark_read with NO_REGS.

2000-11-21  Mike Stump  <mrs@wrs.com>

	* fixinc/fixtests.c (TEST_FOR_FIX_PROC_HEAD): Fix to allow
	compilation with older compilers, such as /bin/cc on SunOS.
	* fixinc/fixfixes.c (FIX_PROC_HEAD): Ditto.

2000-11-21  Richard Henderson  <rth@redhat.com>

	* varasm.c (record_constant): Pad the constructed
	constant_descriptor appropriately.

Wed Nov 22 00:52:55 2000  J"orn Rennecke <amylaar@redhat.com>

	* rtl.h (traverse_md_constants): Declare.
	(struct md_constant): Define.
	* Makefile.in (HOST_RTL): Add hashtab.o .
	(OBJS): Add hashtab.o .
	(hashtab.o): New rule.
	(rtl.o): Depends on HASHTAB_H.
	* rtl.c (hashtab.h): #include.
	(md_constants): New static variable.
	(def_hash, def_name_eq_p, read_constants): New static functions.
	(traverse_md_constants): New function.
	(read_name): Do constant expansion.
	(read_rtx): Recognize define_constants.
	* gencodes.c (print_md_constant): New function.
	(main): Emit #defines for all constant definitions encountered.
	* md.texi (Constant Definitions): New node.
	* gensupport.c (xcalloc): New function.

2000-11-21  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_split_tfmode_frobsign): New.
	* config/alpha/alpha-protos.h: Declare it.
	* config/alpha/alpha.md (abstf_internal): Use it.
	(negtf_internal): Likewise.
	(andnotdi3): Unstar the name.
	(movtf_internal): Add o/G alternative.

2000-11-21  Zack Weinberg  <zack@wolery.stanford.edu>

	* stringpool.c (stringpool_statistics): Also report number and
	percentage of entries which are identifiers.

2000-11-21  Diego Novillo  <dnovillo@redhat.com>

	* gcse.c (hoist_expr_reaches_here_p): Do not mark expr_bb as
	visited before visiting it.

2000-11-21  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h: Accept TARGET_CPU_arm9tdmi,
	TARGET_CPU_strongarm110 and TARGET_SPU_strongarm1100.

	* config.gcc: Accept --with-cpu=arm9 and --with-cpu=arm9tdmi.

2000-11-21  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_unsafe_for_reeval): New function.
	(add_c_tree_codes): Register it.
	* c-common.h: Declare it.
	* tree.c (lang_unsafe_for_reeval): New hook.
	(unsafe_for_reeval): Call it.
	* tree.h: Declare it.

2000-11-21  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (i386_simplify_dwarf_addr): Simplify @GOT
	references as well.

2000-11-21  Neil Booth  <neilb@earthling.net>

	* do_includes: Revert to using cpp_read_file.

2000-11-21  Bernd Schmidt  <bernds@redhat.co.uk>

	* loop.c (consec_sets_giv): If the reg we're examining is anything
	but UNKNOWN_INDUCT, do nothing.
	Reset the reg's type to UNKNOWN_INDUCT before returning.

	Mostly from Vladimir Makarov (vmakarov@redhat.com)
	* ia64.md (attr itanium_class): Define insn types as described in
	Itanium docs.
	(all insn patterns): Use itanium_class, not type attributes.
	Occasionally split alternatives as necessary.
	(attr type): Compute from new attr itanium_class.

2000-11-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tradcpp.c (output_line_command): Mark system headers as such in
	`line' commands.

2000-11-21  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (HAVE_AS_DWARF2_DEBUG_LINE): SPARC has .file/.loc
	support in as as well.
	* configure: Regenerate.

2000-11-20  Richard Henderson  <rth@redhat.com>

	* c-lex.c (orig_filename): New variable.
	(init_c_lex): Set it.  Move call to cpp_start_read ...
	(yyparse): ... here.  New function.
	* c-parse.in (yyparse_1): Rename the parser entry point.
	* c-tree.h: Declare it.

2000-11-21  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (do_compare_and_jump): If op0 was replaced by promoted
	integer constant, use type of op1 for comparison.

2000-11-20  Stan Shebs  <shebs@apple.com>

	* config/rs6000/xm-darwin.h: New file, Darwin host definitions.
	* config/rs6000/x-darwin: New file, Darwin host fragment.
	* config.gcc (powerpc-*-darwin*): New host.
	* system.h (HAVE_DESIGNATED_INITIALIZERS):  Allow this to be
	overridden by a config file.

2000-11-20  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (paste_tokens): Rename from paste_payloads.
	Change token type after pasting spellings.
	(paste_all_tokens): Use it.
	* gcc.dg/cpp/paste2.c: Update test.
	* objc/execute/paste.m: New test.

2000-11-20  Richard Henderson  <rth@redhat.com>

	* dwarf.h (FMT_CODE): Adjust argument order; fix mapping to
	dwarf_subscr_data_formats bits.
	* dwarfout.c (simple_type_size_in_bits): Handle a type with
	no computed size as size zero.
	(field_byte_offset): Likewise.
	(subscript_data_attribute): Handle a range with no upper bound.

2000-11-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gansidecl.h (const): Check __STDC__ before undef'ing `const'.

2000-11-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (build_conditional_expr): When merging type
	qualifiers for conditional expressions between a pointer and a
	pointer to a void type, merge the qualifiers on the target types
	rather than the pointer type.  Remove obsolete conditioned out
	code.

2000-11-20  Neil Booth  <neilb@earthling.net>

	* c-lang.c (lang_init_options): Update call to
	cpp_reader_init.
	* cppmain.c (main): Similarly.
	* fix-header.c (read_scan_file): Similarly.
	* cp/lex.c (lang_init_options): Similarly.
	* objc/objc-act.c (lang_init_options): Similarly.
	* cppexp.c (parse_number): Only warn for unextended C89.
	* cppinit.c (set_lang): New function.
	(cpp_reader_init): Take a LANG argument and pass it to set_lang.
	(COMMAND_LINE_OPTIONS): New option std=c++98.
	(cpp_handle_option): Use set_lang.
	* cpplex.c (_cpp_lex_token): Warn pedantically if not C99.
	* cppib.h (enum_c_lang): New enumeration.  Update comments.

2000-11-20  Will Cohen  <wcohen@redhat.com>

	* calls.c (expand_call): Clear target only when target is in
	hard register and current_function_check_memory_usage is set.

2000-11-20  Bernd Schmidt  <bernds@redhat.co.uk>

	* toplev.c (rest_of_compilation): Run optimize_mode_switching even
	if not optimizing.
	* sh.c (emit_sf_insn, emit_df_insn): Just call emit_insn.

2000-11-19  Richard Henderson  <rth@redhat.com>

	* crtstuff.c (force_to_data): Use array size 1 not 0.

	* dwarf2out.c (simple_type_size_in_bits): Handle a type with
	no computed size as size zero.
	(field_byte_offset): Likewise.

2000-11-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config.gcc: Fix another typo.

2000-11-19  Richard Henderson  <rth@redhat.com>

	* c-decl.c (grokdeclarator): Support flexible array members.
	Use open-ended ranges for these and zero-length arrays.
	* c-typeck.c (push_init_level): Validate the context of
	initialization of a zero-length array.
	* tree.c (int_fits_type_p): Be prepared for missing bounds.
	* varasm.c (array_size_for_constructor): New.
	(output_constructor): Use it for arrays of unspecified length.
	* extend.texi (Zero Length): Mention C99 flexible array members.
	Document initialization in a top-level struct as valid.

2000-11-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config.gcc, invoke.texi: Fix errors in spelling of "deprecated".

	* alias.c (mems_in_disjoint_alias_sets_p): Do use alias sets in
	stdarg and varargs functions.

2000-11-19  Zack Weinberg  <zack@wolery.stanford.edu>

	* gcc.c (process_command): Define 'j' variable when
	MODIFY_TARGET_NAME is defined.

2000-11-19  Richard Henderson  <rth@redhat.com>

	* stor-layout.c (variable_size): Only put SAVE_EXPRs on pending_sizes.

2000-11-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000/rs6000.c (rs6000_encode_section_info): Fix string length
	calculation and allocation.

2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (c_getstr): Constify variable.
	* gmon-sol2.c (_mcleanup): Comment out #endif labels.
	* conflict.c (const_conflict_graph_arc): New typedef.
	(arc_hash, arc_eq): Avoid needlessly casting away const-ness.
	* cppmacro.c (builtin_macro): Likewise.
	* dwarf2out.c (output_comp_unit): Constify variable.
	* fix-header.c (v_fatal): Add ATTRIBUTE_PRINTF.
	* protoize.c (IS_SAME_PATH_CHAR): Use TOUPPER, not toupper.
	* ssa.c (ssa_rename_from_hash_function): Avoid needlessly casting
	away const-ness.
	* tradcpp.c (rescan, do_line, macroexpand, macarg): Use
	ISALNUM/ISDIGIT/ISPRINT, not isalnum/isdigit/isprint.
	* varasm.c (const_str_htab_hash, const_str_htab_eq,
	compare_constant_1, record_constant_1): Constify.

2000-11-18  Richard Henderson  <rth@redhat.com>

	* c-decl.c (grokdeclarator): Special case the creation of an
	index for a zero-length array.
	* tree.c (build_index_type): Revert Oct 20 change.

2000-11-18  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr-protos.h (avr_output_addr_vec_elt): Prototype.
	* config/avr/avr.c (jump_tables_size): New variable.
	(function_prologue): Initialize it as 0.
	(function_epilogue): Add it to function_size.
	(avr_output_addr_vec_elt): New function.  Count words in jump
	tables in jump_tables_size.  Move code ...
	* config/avr/avr.h (ASM_OUTPUT_ADDR_VEC_ELT): ... from here.
	Call avr_output_addr_vec_elt instead.
	* config/avr/avr.md (tablejump): Remove disabled define_expand.

2000-11-18  Mark Mitchell  <mark@codesourcery.com>

	* configure.in: Make --enable-new-gxx-abi the default.
	* configure: Likewise.

2000-11-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (tradcpp.o, tradcif.o): Depend on tradcpp.h.

	* tradcif.y: Include tradcpp.h.  Constify.  Make functions static.
	Move extern function declarations to tradcpp.h.

	* tradcpp.c: Likewise.

	* tradcpp.h: New file.

2000-11-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (check_for_loop_decls): New function.
	* c-parse.in (for_init_stmt): New.
	(select_or_iter_stmt): Use for_init_stmt.
	* c-tree.h (check_for_loop_decls): New declaration.

2000-11-18  Neil Booth  <neilb@earthling.net>

	* cppinit.c: Update comments.
	(cpp_reader_init): Make -imacro and -include use the standard
	#include "" search path.
	(do_includes): New function.

2000-11-18  Ben Elliston  <bje@redhat.com>

	* config/sh/crt1.asm (start_l): Move PC-relative move instruction
	out of a branch delay slot.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* config/alpha/elf.h (PREFERRED_DEBUGGING_TYPE): Set to DWARF2_DEBUG.
	(ASM_SPEC): Disable and enable .mdebug based on -gstabs.
	(ASM_FILE_START): Only write out ecoff .file directive if
	emitting mdebug debugging.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_DWARF2_DEBUG_LINE): New.  Detect
	whether as accepts .file/.loc and produces dwarf2 line info.
	* dwarf2out.c (DWARF2_ASM_LINE_DEBUG_INFO): Default on if
	the assembler supports it.
	* config.in, configure: Regenerate.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* fixinc/mkfixinc.sh: Don't disable fixincludes for any linux*.

2000-11-17  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (emit_insn_group_barriers, case CALL_INSN):
	Don't clear need_barrier is next_insn is a CALL_INSN, or has
	instruction type B or UNKNOWN.

2000-11-17  Neil Booth  <neilb@earthling.net>

	* cpperror.c (print_file_and_line): Don't display line number if 0.

2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>

	* ggc.h: Delete ggc_add_string_root and ggc_mark_string.  Add
	digit_vector and digit_string.
	* stringpool.c (digit_vector): New.
	(ggc_alloc_string): Use digit_string.

	* stmt.c (digit_strings): Delete.
	(init_stmt): Do not initialize digit_strings.
	(expand_asm_operands): Use ggc.h's digit_string macro.
	* toplev.c (mark_file_stack): Delete.
	(compile_file): Don't call init_tree_codes.
	(main): No need to make the file stack a GC root.
	* tree.c (init_tree_codes): Delete.
	* tree.h (init_tree_codes): Delete.

	* c-lex.c: Don't include ggc.h.
	(mark_splay_tree_node, mark_splay_tree): Delete.
	(init_c_lex): No need to ggc_strdup string constant.  Don't add
	file_info_tree to GGC roots.
	(cb_enter_file, cb_rename_file): No need to ggc_strdup
	ip->nominal_fname.

	* Makefile.in (c-lex.o): No longer depends on $(GGC_H).

	* dbxout.c (dbxout_init),
	dwarf2out.c (dwarf2out_line),
	ggc-common.c (ggc_mark_rtx_children, ggc_mark_trees),
	varasm.c (mark_const_hash_entry, mark_pool_constant, init_varasm_once),
	xcoffout.c (xcoffout_source_file),
	i386.c (load_pic_register):
	Delete call(s) to ggc_add_string_root and/or ggc_mark_string.

	* except.c (create_rethrow_ref),
	profile.c (init_edge_profiler),
	toplev.c (compile_file),
	varasm.c (named_section, assemble_static_space,
	assemble_trampoline_template, output_constant_def, force_const_mem),
	i386.c (load_pic_register),
	ia64.c (ia64_encode_section_info),
	rs6000.c (rs6000_emit_load_toc_table, create_TOC_reference,
	rs6000_emit_prologue, rs6000_emit_epilogue),
	rs6000.md (load_toc_aix_si, load_toc_aix_di):
	Change ggc_alloc_string (var, -1) to ggc_strdup (var).

	* profile.c (output_func_start_profiler),
	tree.c (make_node),
	i386.c (load_pic_register): No need to ggc_strdup string constant.

2000-11-17  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (config.status): Depend on config.gcc.
	* configure.in <for machine in $build $host $target>: Move
	contents of loop into config.gcc, removing autoconf quoting.
	Fix changequote bug for alpha*-*-vxworks*.
	* configure: Regenerate.
	* config.gcc: New.

2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>

	* c-parse.in (if_prefix): Find the filename and line number at
	$-2 and $-1 respectively.
	* diagnostic.c (error_recursion): Add missing newline, use
	fputs, translate string.

2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>

	* stringpool.c: New file.
	* ggc-common.c (ggc_mark_string_ptr, ggc_add_string_root): Delete.
	(ggc_alloc_string): Now in stringpool.o.
	* ggc-page.c, ggc-simple.c: Do not define or allocate empty_string.
	* ggc.h: Delete prototype of ggc_add_string_root.  #define
	ggc_add_string_root and ggc_mark_string to nothing.  Prototype
	init_stringpool and stringpool_statistics.
	(ggc_alloc_string): Returns a const char *.
	* tree.c (hash_table, do_identifier_warnings): Delete.
	(init_obstacks): Don't initialize the identifier hash table.
	(get_identifier, maybe_get_identifier, start_identifier_warnings,
	set_identifier_size): Now in stringpool.c.
	* tree.h (struct tree_string): Constify pointer field.
	(approx_sqrt): Prototype.

	* Makefile.in (stringpool.o): Add rule, mention in OBJS.

	* toplev.c (approx_sqrt): New function.
	(compile_file): Call stringpool_statistics if mem_report is on.
	(main): Call init_stringpool.

	* builtins.c (c_strlen), c-decl.c (finish_decl), c-lex.c
	(process_directive), c-typeck.c (constructor_asmspec, struct
	initializer_stack, start_init), except.c (create_rethrow_ref),
	stmt.c (digit_strings), toplev.c (decode_f_option), tree.c
	(built_in_filename), varasm,c (in_named_name,
	assemble_static_space, struct constant_descriptor, struct
	deferred_string, struct pool_constant, force_const_mem),
	i386.c (pic_label_name, global_offset_table_name), rs6000.c
	(rs6000_emit_prologue, rs6000_emit_epilogue) : Constify a char *.

	* c-common.c (combine_strings): Combine strings in scratch
	buffer, then pass to build_string.
	* optabs.c (init_libfuncs), profile.c (init_edge_profiler,
	output_func_start_profiler), stmt.c (init_stmt), alpha.c
	(alpha_need_linkage), arm.c (arm_encode_call_attribute),
	i386.c (load_pic_register), ia64.c (ia64_encode_section_info),
	rs6000.c (rs6000_encode_section_info): Create string in
	scratch buffer, then pass to ggc_alloc_string.

	* stmt.c (expand_asm_operands): If we must adjust the
	constraint strings, do so by creating a new one, not by
	modifying the old one in place.  Constify some char *s.
	* config/pa/pa.c (hppa_encode_label): Drop unnecessary second
	argument.  Create string in scratch buffer, then pass to
	ggc_alloc_string.
	* config/pa/pa-protos.h: Update prototype.
	* config/pa/elf.h, config/pa/pa.h, config/pa/som.h:
	hppa_encode_label takes only one argument.

2000-11-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mcore.c (mcore_expand_prolog): Call xmalloc/xrealloc, not
	malloc/realloc.

	* cpplib.c (glue_header_name): Likewise.

	* fixincl.c (run_compiles, start_fixer): Likewise.

	* fixlib.c (load_file_data): Likewise.

	* mkdeps.c (munge): Likewise.

2000-11-17  Hans-Peter Nilsson  <hp@axis.com>

	* defaults.h [EH_FRAME_SECTION_ASM_OP] (EH_FRAME_SECTION): Remove
	trailing ';'.  Fix formatting.

2000-11-16  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h (MASK_INLINE_DIV_LAT, MASK_INLINE_DIV_THR):
	Shift masks left by one to avoid conflict.

	* config/ia64/ia64.c (ia64_encode_section_info): Disallow decls with
	DECL_EXTERNAL set.

2000-11-16  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (output_arm_prologue): Note nested functions.
	(arm_expand_prologue): For nested functions preserve the
	static chain register during stack frame creation.

	* config/arm/arm.h (STATIC_CHAIN_REGNUM): Change to 12.
	(ARM_INITIAL_FRAME_ELIMINATION_OFFSET): For a nested function
	with a stack frame there is a 4 byte gap between the arg
	pointer and the hard frame pointer (used to preserve the
	static chain register during stack frame creation).

2000-11-16  DJ Delorie  <dj@redhat.com>

	* rtl.c (read_rtx): Provide suitable names for unnamed
	define_insn and define_insn_and_split patterns, based on file
	and line numbers.

2000-11-15  Neil Booth  <neilb@earthling.net>

	* cpplib.c (start_directive, end_directive): New functions.
	(_cpp_handle_directive, run_directive): Use them.
	(_cpp_handle_directive): Don't -Wtraditional on indented
	null directives.
	(_cpp_push_buffer): Don't re-clear was_skipping.
	* cpplib.h (struct cpp_reader): New member la_saved.
	* cppmacro.c (cpp_get_token): Don't interpret _Pragma in
	directives.

	gcc.dg/cpp/_Pragma1.c: Update.
	gcc.dg/cpp/_Pragma2.c: New test.

2000-11-15  Mark Mitchell  <mark@codesourcery.com>

	* toplev.c (wrapup_global_declarations): Don't write out
	artificial static variables that aren't needed.

2000-11-15  Bernd Schmidt  <bernds@redhat.co.uk>

	* ia64.c (struct group): New structure.
	(last_group): New static array.
	(group_idx): New static variable.
	(emit_group_barrier_after, errata_find_address_regs, errata_emit_nops):
	New static functions.
	(emit_insn_group_barriers): Initialize and keep track of group_idx
	and last_group.
	Call errata_emit_nops if TARGET_B_STEP or TARGET_A_STEP.
	Replace all calls to emit_insn_after that emit a group barrier to use
	emit_group_barrier_after.
	* ia64.h (MASK_B_STEP): New.
	(other MASK_XXX macros): Renumbered.
	(TARGET_B_STEP): New.
	(TARGET_SWITCHES): Add -mb-step.

2000-11-15  Fred Fish  <fnf@be.com>

	* fixinc/mkfixinc.sh (fixincludes): Add *-*-beos* to list of
	machines for which fixincludes is not needed.
	* config/i386/x-beos (STMP_FIXPROTO): Don't run fixproto.

2000-11-15  Jason Merrill  <jason@redhat.com>

	* diagnostic.c (finish_abort): New fn.
	(fancy_abort, error_recursion): Use it.
	* toplev.c (crash_signal): Likewise.
	* diagnostic.h: Declare it.

2000-11-13  Andrew Haley  <aph@redhat.com>

	* tree.c (build_type_no_quals): New function.
	* tree.h (build_type_no_quals): Declare.
	* c-common.c (c_get_alias_set): When considering type
	compatibility for pointer types, ignore cv-qualifiers anywhere in
	a pointer chain.

2000-11-15  Graham Stott  <grahams@redhat.com>

	* regrename.c (scan_rtx_rtx): Skip to the next chain on
	encountering a terminated chain.

2000-11-14  Mark Mitchell  <mark@codesourcery.com>

	* configure.in: Move check for V3 above check for C++ header-file
	directory.
	* configure: Regenerated.

2000-11-14  DJ Delorie  <dj@redhat.com>

	* config/v850/v850.c: Remove obstacks.

Tue Nov 14 21:54:31 2000  Marek Michalkiewicz  <marekm@linux.org.pl> & Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (avr_case_values_threshold): New.
	(avr_override_options): Set it depending on options, make it large
	when not optimizing to work around "unable to generate reloads".

	* config/avr/avr.h (TARGET_SWITCHES): Add -mno-tablejump option.
	(EXTRA_SECTION_FUNCTIONS): Make the .progmem.gcc_sw_table section
	executable if not AVR_MEGA.  Make sure jump tables are word-aligned.
	(JUMP_TABLES_IN_TEXT_SECTION): Define as 0, not 1.
	(ASM_OUTPUT_ADDR_VEC_ELT): Optimize, use "rjmp" if not AVR_MEGA.
	(avr_case_values_threshold): Declare as extern int.
	(CASE_VALUES_THRESHOLD): Define as avr_case_values_threshold.

	* config/avr/avr.md (tablejump): Removed.
	(*tablejump_rjmp): New for jump tables made from "rjmp" instructions.
	(*tablejump_lib, *tablejump_enh, *tablejump): Change to expect the
	index in the table, not multiplied by 2.
	(casesi): Change to match the above insns.  Always enable.

	* config/avr/libgcc.S (__tablejump__): Rename to __tablejump2__.
	Change to expect the word address of the table, multiply it by 2
	here and not in the caller.  Change "adiw" to faster "inc".

2000-11-14  Neil Booth  <neilb@earthling.net>

	* cppexp.c (parse_defined): Call cpp_get_token not
	_cpp_get_token.
	(lex): Similarly.
	* cpplex.c (cpp_output_line): Similarly.
	* cpplib.c (glue_header_name, do_line, do_ident,
	parse_answer, parse_assertion): Similarly.
	(_cpp_handle_diretive): Don't save to lookaheads
	when processing directives.
	* cppmacro.c (parse_arg, expand_arg): Call cpp_get_token not
	_cpp_get_token.
	(funlike_invocation_p): Don't save to lookaheads
	when pre-expanding arguments.
	(_cpp_get_token): Delete.
	(cpp_get_token): Merge contents of _cpp_get_token.

2000-11-14  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_setjmp): Set
	current_function_calls_setjmp.
	(expand_builtin_longjmp): Set current_function_calls_longjmp.

	* config/sparc/sparc.md (builtin_setjmp_setup): New expand.
	(do_builtin_setjmp_setup): New insn.

Tue Nov 14 12:34:56 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (get_unwidened): Use host_integerp and tree_low_cst.
	(int_fits_type_p): For variable bounds, call force_fit_type.

2000-11-14  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (struct deferred_string): New structure.
	(const_str_htab): New variable.
	(STRHASH): New macro.
	(mark_const_str_htab_1, mark_const_str_htab, const_str_htab_hash,
	constr_str_htab_eq, const_str_htab_del): New functions.
	(output_constant_def): Add DEFER argument, defer string
	constants until mark_constant_pool time if requested.
	(mark_constant_pool): Walk the insn chain even if const_str_htab is
	not empty.
	(mark_constants): If a SYMBOL_REF for deferred string is found,
	output it and remove from hash table.
	(output_addressed_constants): Set DEFER to 0 in call to
	output_constant_def.
	* rtl.h (STRING_POOL_ADDRESS_P): Define.
	(output_constant_def): Adjust prototype.
	* expr.c (expand_expr): Set DEFER to 1 in call to output_constant_def.

2000-11-14  Chandrakala Chavva  <cchavva@redhat.com>

	* optabs.c (expand_complex_ab):: Use overflow-trapping optabs for
	signed types if flag_trapv.

2000-11-14  Zack Weinberg  <zack@wolery.stanford.edu>

	* tradcpp.c, tradcif.y: Update FSF mailing address, delete
	reference to GPLv1.

2000-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.h (CTI_C_SIZE_TYPE): Update comment.

2000-11-14  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (struct varasm_status): Change x_const_rtx_sym_hash_table
	to array of pool_constnat pointers.
	(struct pool_constant): Add next_sym and label members.
	(struct pool_sym): Remove.
	(init_varasm_status): Change pool_sym into pool_constant.
	(mark_pool_constant): Mark pc->label string as well.
	(mark_pool_sym_hash_table): Remove.
	(mark_varasm_status): Remove it from caller as well.
	(free_varasm_status): Don't free pool_sym structures.
	(force_const_mem): Don't allocate pool_sym structure, instead
	fill pool->label and chain it into rtx_sym hash table.
	(find_pool_constant, mark_constant_pool): Use pool_constant instead
	of pool_sym.

2000-11-14  Jakub Jelinek  <jakub@redhat.com>

	* reload1.c (emit_input_reload_insns): Honor forcing of constants
	into memory by PREFERRED_RELOAD_CLASS NO_REGS.

2000-11-14  Michael Matz  <matzmich@cs.tu-berlin.de>

	* dominance.c: New file.
	* Makefile.in (OBJS): Add dominance.o.

	* flow.c (compute_flow_dominators): Remove.
	(compute_immediate_dominators): Remove.
	(compute_immediate_postdominators): Remove.
	* basic-block.h: Remove their prototypes.
	(calculate_dominance_info): Add prototype.

	* dce.c (eliminate_dead_code): Change calls to above functions.
	Don't compute dominators but only immediate dominators.
	* flow.c (flow_loops_find): Change callers.
	* gcse.c (compute_code_hoist_data): Likewise.
	* haifa-sched.c (schedule_insns): Likewise.
	* ifcvt.c (if_convert): Likewise.
	* ssa.c (convert_to_ssa): Likewise, and only compute immediate
	dominators.

2000-11-14  Richard Henderson  <rth@redhat.com>

	* stmt.c (warn_if_unused_value): Don't warn if the expression
	has side effects.

	* c-typeck.c (c_sizeof): Fold result to c_size_type_node.
	(c_sizeof_nowarn, c_alignof, c_alignof_expr): Likewise.

2000-11-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* loop.c (basic_induction_var): Revert accidental checkin.

2000-11-13  Hans-Peter Nilsson  <hp@axis.com>

	* c-lex.c (cb_leave_file): Harmonize conditions and order of
	statements to those of process_directive for (action == act_pop).

	* collect2.c (main): Pass on -B options from COLLECT_GCC_OPTIONS.

	* local-alloc.c (equiv_init_movable_p): References to CC0 are not
	movable.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (stmts_and_decls): Deprecate use of label at end of
	compound statement.

2000-11-13  Neil Booth  <neilb@earthling.net>

	* cpplex.c (_cpp_lex_token): CPP_COMMENT and true CPP_EOF
	cases return without MI check.
	* cpplib.c (do_diagnostic): Take boolean of whether to
	print the directive name.
	(do_error, do_warning): Update.
	(do_pragma_dependency): Use it.
	* cpplib.h (VARARGS_FIRST): Delete.
	(struct cpp_token): Delete integer.
	* cppmacro.c (enter_macro_context): Move disabled check
	to _cpp_get_token.
	(_cpp_get_token): Simplify into a single loop.

2000-11-13  Richard Earnshaw  <rearnsha@arm.com>

	* configure.in:  Use 'test -f' not '[ -e'.
	* configure: Regenerated.

2000-11-13  DJ Delorie  <dj@redhat.com>

	* config/mn10300/mn10300.md (store_movm): Note which registers are
	really used or clobbered.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (ends_in_label): Remove from %union and %type.
	(decls, stmts, lineno_stmt_or_labels, xstmts,
	lineno_stmt_or_label, stmt_or_label): Remove.
	(stmts_and_decls, lineno_stmt_decl_or_labels_ending_stmt,
	lineno_stmt_decl_or_labels_ending_decl,
	lineno_stmt_decl_or_labels_ending_label,
	lineno_stmt_decl_or_labels_ending_error,
	lineno_stmt_decl_or_labels, compstmt_contents_nonempty,
	lineno_stmt, lineno_label): New.
	(compstmt_nostart): Use compstmt_contents_nonempty.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (boolean_increment): New function.
	* c-common.h (enum c_tree_index): Add CTI_C_BOOL_TYPE,
	CTI_C_BOOL_TRUE and CTI_C_BOOL_FALSE.
	(c_bool_type_node, c_bool_true_node, c_bool_false_node): Define.
	(boolean_increment): Declare.
	* c-convert.c (convert): Allow for BOOLEAN_TYPE.
	* c-decl.c (init_decl_processing): Create boolean nodes.
	(finish_struct): Allow for _Bool bitfields.
	* c-parse.in (reswords): Add _Bool.
	(rid_to_yy): Allow for RID_BOOL.
	* c-typeck.c (default_conversion): Make booleans promote to int.
	(convert_arguments, build_unary_op, build_modify_expr,
	convert_for_assignment): Allow for booleans.
	* ginclude/stdbool.h: Make conforming to C99.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (c99_block_start, c99_block_end,
	c99_block_lineno_labeled_stmt): New.
	(simple_if, do_stmt_start): Use c99_block_lineno_labeled_stmt.
	(stmt): Split off selection and iteration statements into...
	(select_or_iter_stmt): New.  Use c99_block_lineno_labeled_stmt.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi (-Wtrigraphs, -fdump-translation-unit, -save-temps,
	-time): Update.

2000-11-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (mulsidi3adddi, umulsidi3adddi): Revert previous change.
	Rewrite to avoid use of match_dup.  Don't try to tie registers that
	are not in the same mode.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Update lists of languages and suffixes supported.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Take toplevel configure arguments from the
	environment to create configargs.h and substitute
	gcc_config_arguments, taking account of any existing configargs.h
	if reconfiguring.
	* configure: Regenerate.
	* gccbug.in: Include toplevel configure arguments in gccbug.

2000-11-13  Richard Earnshaw  <rearnsha@arm.com>

	* varasm.c (struct constant_descriptor): Put CONTENTS inside a
	union to make it well-aligned.  Update all uses.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (initelt): Give appropriate pedantic warnings,
	depending on flag_isoc99, for non-ISO syntax and for C99 syntax
	outside C99 mode.
	(designator): If pedantic, pedwarn for a designator specifying a
	range of elements.
	* c-typeck.c (set_init_index, set_init_label): Don't pedwarn for
	these cases.
	* extend.texi: Document the C99 syntax as the preferred syntax,
	and the pre-2.5 syntax as obsolete.  Mention use of designator
	lists for nested subobjects.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* diagnostic.c (vbuild_message_string, output_do_printf, vnotice):
	Add ATTRIBUTE_PRINTF.
	* tradcpp.c (v_message, warning, error, fatal, error_with_line):
	Add ATTRIBUTE_PRINTF*.

2000-11-12  Mark Mitchell  <mark@codesourcery.com>

	* function.c (assign_parms): When calling put_var_into_stack, make
	sure that there are no hidden pending sequences.

2000-11-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin): Handle BUILT_IN_INDEX and
	BUILT_IN_RINDEX.  Add missing checks for BUILT_IN_STRCHR and
	BUILT_IN_STRRCHR.

	* builtins.def (BUILT_IN_INDEX, BUILT_IN_RINDEX): New entries.

	* c-common.c (c_common_nodes_and_builtins): Declare index and
	rindex when nonansi builtins are allowed.

	* extend.texi (index, rindex): Document new builtins.

2000-11-12  Mark Mitchell  <mark@codesourcery.com>

	* configure.in: Turn on libstdc++ V3 by default.
	* configure: Regenerated.

	* fixinc/mkfixinc.sh: Use the ordinary fixincludes on Solaris.

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

	* reload1.c (set_label_offsets): Go inside of PARALLELs.

2000-11-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Clean up option summary.

2000-11-12  Nick Clifton  <nickc@redhat.com>

	* config/mcore/mcore.c: Fix comment formating, and adjust sequence
	of #include headers.

2000-11-12  Marc Espie <espie@openbsd.org>

	* configure.in: Fix filds test.
	* configure: Regen.

2000-11-12  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (delete_computation): Don't assume that just because an
	instruction sets a register, that register is dead.

2000-11-12  Neil Booth  <neilb@earthling.net>

	* cppexp.c: Don't worry about pfile->skipping.
	* cpplib.c (struct if_stack): Make was_skipping unsigned char.
	(cpp_handle_directive): Save pfile->skipping in struct cpp_buffer
	for handled directives.
	(skip_rest_of_line): Use _cpp_lex_token after popping contexts
	and releasing lookaheads.
	(do_ifdef, do_ifndef, do_if): Use buffer->was_skipping.
	(do_else, do_elif, push_conditional): Update logic.
	(do_endif): Set buffer->was_skipping rather than pfile->skipping.
	(unwind_if_stack): Inline into cpp_pop_buffer.
	(cpp_push_buffer): Clear ifs->was_skipping for cpp_handle_directive.
	* cpplex.c (_cpp_lex_token): Clear skipping on EOF.  Handle
	multiple-include optimisation.
	* cpplib.h (struct cpp_buffer): New member was_skipping.
	* cppmacro.c (_cpp_get_token): Loop whilst pfile->skipping.  This
	works because skipping == 0 in directives.
	(_cpp_release_lookahead): Renamed from release_lookahead.
	(cpp_get_token): No need to check skipping as _cpp_get_token does
	this for us.  No need to handle MI optimisation.

Sat Nov 11 21:14:02 2000  Mark P Mitchell  <mark@codesourcery.com>

	* fixinc/inclhack.def (sunos_matherr_decl): Bypass matherr
	declarations that use `__MATH_EXCEPTION' in their prototypes, too.
	* fixinc/fixincl.x: Regenerated.

2000-11-11  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (avoid_bool_type): avoid commenting out #endif
	(avoid_wchar_t_type): ditto
	* fixinc/fixinc.irix: obsoleted

2000-11-11  Zack Weinberg  <zack@wolery.stanford.edu>

	* configure.in: Don't add $outputs to all_lang_makefiles.  Add
	$srcdir/$s/Makefile.in if it exists.
	* configure: Regenerate.

Sat Nov 11 18:41:20 2000  Mark P Mitchell  <mark@codesourcery.com>

	* fixinc/mkfixinc.sh: Use the ordinary fixincludes on IRIX.

2000-11-11  Jason Merrill  <jason@redhat.com>

	* function.c (assign_parms): If TREE_ADDRESSABLE is set, try to
	give the parm a register and then call put_var_into_stack.
	* stmt.c (expand_decl): Likewise.

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

	* gcc.texi: Adjust wording.

2000-11-11  Mark Mitchell  <mark@codesourcery.com>

	* fixinc/inclhack.def (avoid_wchar_t_type): New fix.
	* fininc/fixincl.x: Regenerated.

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

	* invoke.texi: Correct spelling of -foptimize-register-move.

2000-11-11  Neil Booth  <neilb@earthling.net>

	Remove CPP_PLACEMARKERs.

	* cppexp.c (lex): Don't handle CPP_PLACEMARKER.
	* cpplex.c (_cpp_lex_token): Rename skip_newlines to next_bol
	* cpplib.c (skip_rest_of_line, check_eol, cpp_push_buffer):
		   Similarly.
	* cpplib.h: Remove CPP_PLACEMARKER.
	(struct lexer_state): Rename skip_newlines to next_bol.
	* cppmacro.c (stringify_arg): Don't handle CPP_PLACEMARKER.
	Simplify prev_white handling as a result.
	(paste_all_tokens): Don't worry about CPP_PLACEMARKERs.
	(parse_arg): Empty arguments are now empty, not CPP_PLACEMARKERs.
	(parse_args): Similarly.  Update argument count tests.
	(enter_macro_context): Return 2 to indicate an empty macro.
	(replace_args): Don't bother pre-expanding an empty argument.
	Handle placemarkers and ## extension during pre-expansion.
	(cpp_get_token): Handle empty macro expansions.  Don't worry
	about CPP_PLACEMARKERs.
	(_cpp_create_definition): Empty macros are now empty.
	(cpp_macro_definition): Don't special case empty macros.
	* scan-decls.c: Don't bother with CPP_PLACEMARKERs.
	* c-lex.c: Similarly.

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

	* gcc.texi, invoke.texi: Add new section discussing language
	standards; link to it where appropriate; refer to ISO C instead of
	ANSI C.

2000-11-11  Alexandre Oliva  <aoliva@redhat.com>

	* builtins.c (std_expand_builtin_va_start): Take PARM_BOUNDARY
	into account.

	* config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP
	modes.

2000-11-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi, gcov.texi: Update dates and version numbers.

2000-11-10  Zack Weinberg  <zack@wolery.stanford.edu>

	* configure.in: Remove AC_PROG_LEX and AC_PROG_YACC.  Look for
	flex and bison, specifically, first in a unified build and
	then installed on the system.
	* Makefile.in: Set BISON to @BISON@, FLEX to @FLEX@.  Rename
	LEXFLAGS to FLEXFLAGS.  Adjust ORDINARY_FLAGS_TO_PASS to
	match.

	(collect2.o, gcc.o, prefix.o, toplev.o, alloca.o, intl.o,
	cppdefault.o): Remove pointless sed munging of source file
	name.

2000-11-10  Bernd Schmidt  <bernds@redhat.co.uk>

	* reload.c (find_reloads_address_1, case POST_MODIFY): Use RELOAD_OTHER
	for address reloads.  Push replacements for REG_INC notes.
	(regno_clobbered_p): New arg SETS.  Examine SETs if it's nonzero.  All
	callers changed.
	* reload1.c (choose_reload_regs): Registers set in the insn can't be
	used for RELOAD_OTHER reloads.

2000-11-10  Mark Mitchell  <mark@codesourcery.com>

	* c-dump.h: New file.

2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha.c (check_float_value): Use memcpy, not bcopy.
	* arm.c (output_move_double): Likewise.
	* arm.md: Likewise.
	* m88k.c (legitimize_operand): Likewise.
	* m88k.h (ORDER_REGS_FOR_LOCAL_ALLOC): Likewise.
	* m88k.md: Likewise.
	* mips.c (override_options): Likewise.
	* mips.md: Likewise.
	* romp.c (output_fpops): Likewise.
	* rs6000.c (rs6000_override_options): Likewise.
	* sh.md: Likewise.
	* vax.c (check_float_value): Likewise.

	* emit-rtl.c (copy_rtx_if_shared, init_emit_once): Likewise.
	* expmed.c (synth_mult): Likewise.
	* final.c (add_bb_string): Likewise.
	* genattr.c (main): Likewise.
	* genattrtab.c (attr_string, simplify_cond, copy_rtx_unchanging):
	Likewise.
	* jump.c (thread_jumps): Likewise.
	* prefix.c (save_string): Likewise.
	* real.h (REAL_VALUE_FROM_CONST_DOUBLE): Likewise.
	* regclass.c (init_reg_sets, init_reg_sets_1): Likewise.
	* reload1.c (reload, eliminate_regs): Likewise.

2000-11-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi (Service): Update to reflect current practice and
	location of the GNU service directory.

2000-11-09  Bernd Schmidt  <bernds@redhat.co.uk>

	* regrename.c (build_def_use): Mark contents of REG_INC notes as
	needing replacement.

	* config/ia64/ia64.md (extendsfdf2, extendsftf2, extenddftf2): Emit
	a no-op move if regs are equal.
	* toplev.c (rest_of_compilation): Do the noop moves elimination pass
	when calling jump after post-reload splitting.

2000-11-09  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* c-tree.texi: Fix typos.
	* extend.texi: Likewise
	* gcov.texi: Likewise
	* rtl.texi: Likewise
	* tm.texi: Likewise

2000-11-09  Hans-Peter Nilsson  <hp@axis.com>

	* c-lex.c [! NO_IMPLICIT_EXTERN_C] (cb_enter_file): Check
	in_system_header and flags[1] before dereferencing flags[2].

2000-11-09  Matthew Hiller <hiller@redhat.com>

	* reload1.c (reload_combine): Fixed calculation of
	first_index_reg, last_index_reg.

2000-11-09  Mark Mitchell  <mark@codesourcery.com>

	* c-dump.c (dequeue_and_dump): Dump function bodies.

	* Makefile.in (C_AND_OBJC_OBJS): Add c-dump.o.
	(c-dump.o): New target.
	* c-common.h (flag_dump_translation_unit): New variable.
	(C_TYPE_QUALS): New macro.
	(strip_array_types): New function.
	(DECL_C_BIT_FIELD): New macro.
	(SET_DECL_C_BIT_FIELD): Likewise.
	(CLEAR_DECL_C_BIT_FIELD): Likewise.
	(dump_info_p): New typedef.
	(dump_tree_fn): Likewise.
	(lang_dump_tree): New variable.
	(dump_node_to_file): New function.
	* c-common.c (flag_dump_translation_unit): Define it.
	(strip_array_types): New function.
	* c-decl.c (c_decode_option): Handle -fdump-translation-unit.
	* c-lang.c (finish_file): Call dump_node_to_file if
	flag_dump_translation_unit.
	* c-semantics.c (mark_rtl_for_local_static): Fix typo in comment.
	* c-tree.h (DECL_C_BIT_FIELD): Remove declaration.
	* c-dump.c: New file.

2000-11-09  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Add mingw startfile prefix.

2000-11-09  Richard Henderson  <rth@redhat.com>

	* flow.c (invalidate_mems_from_set): Split out from ...
	(mark_set_1): ... here.
	(try_pre_increment_1): Use it.  Use propagate_block_delete_insn
	instead of turning insn into a NOTE_INSN_DELETED.

2000-11-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi, invoke.texi: Move documentation of builtin versions
	of C library functions to one place and update.

2000-11-09  Richard Henderson  <rth@redhat.com>

	* fold-const.c (fold): Compare TYPE_MAIN_VARIANT rather than
	the types themselves to discover type equivalence.

2000-11-09  Mike Stump  <mrs@wrs.com>

	* Makefile.in (distclean): Remove a few extra leftovers.

2000-11-09  Richard Henderson  <rth@redhat.com>

	* recog.c (validate_replace_rtx_1): Consider subregs when
	replacing a register with a constant inside a sign/zero_extend.

	* config/alpha/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2000-11-09  Geoffrey Keating  <geoffk@redhat.com>

	* c-decl.c (finish_struct): When a structure is completed,
	check all its variant types for completeness.

2000-11-09  Neil Booth  <neilb@earthling.net>

	* cpphash.c: Move cpp_defined here from cpplib.c.
	* cpplib.c: Update comments, move cpp_defined to cpphash.c.
	* cpplex.c (_cpp_lex_token): Don't leave the lexer at EOL.
	* cppmacro.c (cpp_get_token): Update comments, no need now
	to catch the CPP_EOF meaning EOL case.

2000-11-08  Geoffrey Keating  <geoffk@redhat.com>

	* config/sparc/sparc.c (sparc_va_arg): When the required alignment
	is more than that provided, copy to a temporary.

2000-11-09  Alexandre Oliva  <aoliva@redhat.com>

	* mklibgcc.in (EXTRA_MULTILIB_PARTS): Prevent `make' from
	interpreting $out as a macro assignment.
	* Makefile.in (T_TARGET): New auxiliary macro and target.
	(all): Add a target right in the beginning, so that we don't build
	T_TARGET by default.

2000-11-09  Graham Stott  <grahams@redhat.com>

	* config/i386/i386.md (mmx_pinsrw): Output operands in correct
	order for -mintel-syntax.  Remove comment now that the operand
	order has been checked.
	(mmx_pextrw): Likewise.
	(mmx_pshufw): Likewise.

2000-11-09  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (c_strlen): Use TREE_STRING_LENGTH - 1 for max.
	(c_getstr): New function.
	(expand_builtin_strstr): Do nothing if -fcheck-memory-usage.
	If both arguments are constant string, optimize out.
	(expand_builtin_strchr, expand_builtin_strrchr): New functions.
	(expand_builtin_strpbrk): Use c_getstr, do nothing if
	-fcheck-memory-usage.
	(expand_builtin_fputs): Likewise.
	(expand_builtin_strcmp): Add MODE argument.
	Use even if !HAVE_cmpstrsi.
	Optimize the case when both arguments are constant strings.
	(expand_builtin): Adjust expand_builtin_strcmp caller.
	Call expand_builtin_strchr and expand_builtin_strrchr.
	* c-common.c (c_common_nodes_and_builtins): Add strchr and strrchr
	builtins.
	* builtins.def (BUILT_IN_STRRCHR): Add.

2000-11-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* fixinc/gnu-regex.c: Rename EGCS LOCAL markers to GCC LOCAL.

2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* calls.c (expand_call, emit_library_call_value_1), collect2.c
	(scan_prog_file), config/a29k/a29k.c (print_operand),
	config/sparc/sparc.c (order_regs_for_local_alloc): Use memcpy ()
	instead of bcopy ().
	* real.h: Use memcmp () instead of bcmp ().
	* config/m88k/m88k.c (m88k_layout_frame), config/sh/sh.c
	(split_branches), config/sparc/sparc.c (ultra_flush_pipeline,
	ultrasparc_sched_init, ultrasparc_sched_reorder),
	config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Use memset ()
	instead of bzero ().
	* config/vax/xm-xms.h (FILE_NAME_NONDIRECTORY): Use strrchr ()
	instead of rindex ().
	* configure.in: Don't check for bzero, bcmp, index or rindex.
	* configure, config.in: Regenerate.
	* system.h: Don't include declarations for bzero, bcmp, index or
	rindex.
	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Don't define
	bzero, bcmp, index or rindex.

Wed Nov  8 21:58:20 2000  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Add -no-win32 switch.  Separate -mno-cygwin
	include and library paths from -mcygwin case.  Parameterize some
	declarations to avoid warnings.  Use standard locations for include and
	lib dirs.

2000-11-08  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (mulsidi3adddi): Change output operand
	constraint from "=&" to "+&".
	(umulsidi3adddi): Change output operand	constraint from "=&" to
	"+&".

2000-11-08  Richard Henderson  <rth@redhat.com>

	* flow.c (init_propagate_block_info): Protect the rtx stored in
	mem_set_list from modification by find_auto_inc.
	(mark_set_1): Likewise.

2000-11-08  Neil Booth  <neilb@earthling.net>

	Move directive handling into the lexer itself.

	* cpplex.c (_cpp_lex_token): Handle directives directly.
	In the case of a directive interrupting a function-like
	macro invocation, use extra_char since read_ahead is
	used to store the '#'.  Return a CPP_EOF in this case.
	* cppmacro.c (parse_arg): No need to handle CPP_DHASH any more.
	(cpp_get_token): Don't handle directives here.
	* cpplib.h: Remove CPP_DHASH token type.

Wed Nov  8 21:53:41 MET 2000  Jan Hubicka  <jh@suse.cz>

	* regmove.c (combine_stack_adjustments_for_blocks): Recognize pushes
	formed using PRE_MODIFY too.

2000-11-08  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.texi (VAR_DECL): Describe representation of GCC's
	extension for placing variables in particular registers.

	* c-tree.texi (FUNCTION_TYPE): Clarify TYPE_ARG_TYPES for
	unprototyped C functions with no parameters.

2000-11-08  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Cast DELTA to int
	before passing to fprintf.

2000-11-08  Jakub Jelinek  <jakub@redhat.com>

	* function.c (expand_function_start): Cast GET_MODE_SIZE to
	HOST_WIDE_INT before negating it.

2000-11-08  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (expand_expr) [ADDR_EXPR]: Handle when op0 is RETURN_DECL
	passed in multiple non-contiguous locations.

2000-11-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.gnat: Remove file.

2000-11-08  Alexandre Oliva  <aoliva@redhat.com>

	* mklibgcc.in (EXTRA_MULTILIB_PARTS): Generate multilib parts
	in-place.

2000-11-07  Richard Henderson  <rth@redhat.com>

	* dwarfout.c (INSN_LABEL_FMT): Remove.
	(output_label_die): Use ASM_GENERATE_INTERNAL_LABEL.
	(dwarfout_label): Remove.
	* dwarfout.h: Remove it's prototype.
	* dwarf2out.c (INSN_LABEL_FMT): Remove.
	(gen_label_die): Use ASM_GENERATE_INTERNAL_LABEL.
	(dwarf2out_label): Remove.
	* dwarf2out.h: Remove it's prototype.
	* final.c (final_scan_insn): Don't call dwarf[2]out_label.

2000-11-07  Richard Henderson  <rth@redhat.com>

	* config/ia64/fde-glibc.c (find_fde_for_dso): Do a binary
	search on the unwind region section.

	* config/ia64/ia64.md (movbi): Add r/r alternative.
	(cmovdi_internal_astep): Describe all combinations of register
	classes for sources & destinations; remove matching constraints.
	(cmovdi_internal): Likewise.

	* gcc.c (default_compilers) [@cpp-output]: Add -fpreprocessed.

2000-11-07  Richard Henderson  <rth@redhat.com>

	* c-lang.c (start_cdtor, finish_cdtor): New functions.
	(finish_file): Use them in building constructor/destructor functions.

	* config/alpha/alpha.h (HAS_INIT_SECTION, LD_INIT_SWITCH,
	LD_FINI_SWITCH): Move ...
	* config/alpha/osf.h: ... here.
	* config/alpha/alpha-interix.h: Don't undef them.

2000-11-07  Jeffrey Oldham  <oldham@oz.codesourcery.com>

	* config/mips/t-iris6 (FPBIT): New.  Added so that __unorddf2 is
	included in libgcc.a.
	(DPBIT): Likewise.
	(dp-bit.c): Likewise.
	(fp-bit.c): Likewise.

2000-11-07  Nick Clifton  <nickc@redhat.com>

	* config/m88k/m88k.h (GLOBAL_ASM_OP): Add missing tab.
	(INTERNAL_ASM_OP): Add missing tab.

2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* alias.c (init_alias_analysis), calls.c (expand_call,
	emit_library_call_value_1), combine.c (init_reg_last_arrays),
	cse.c (new_basic_block), dbxout.c (dbxout_type), diagnostic.c
	(init_output_buffer, set_diagnostic_context), dwarf2out.c
	(equate_decl_number_to_die, build_abbrev_table), emit-rtl.c
	(init_emit_once), fold-const.c (mul_double, div_and_round_double),
	function.c (assign_parms), gcse.c (compute_can_copy,
	alloc_gcse_mem, alloc_reg_set_mem, record_one_set,
	compute_hash_table, compute_set_hash_table,
	compute_expr_hash_table), genattrtab.c (optimize_attrs), global.c
	(global_alloc, global_conflicts), haifa-sched.c (compute_trg_info,
	clear_units, schedule_block), integrate.c (initialize_for_inline,
	expand_inline_function), jump.c (thread_jumps), local-alloc.c
	(local_alloc), loop.c (combine_movables, count_loop_regs_set,
	load_mems_and_recount_loop_regs_set), print-tree.c (debug_tree),
	regclass.c (init_reg_sets, init_reg_sets_1, regclass,
	record_reg_classes, allocate_reg_info), reload.c
	(get_secondary_mem, remove_address_replacements, find_reloads),
	reload1.c (reload, set_initial_label_offsets, finish_spills,
	reload_as_needed, choose_reload_regs_init,
	reload_cse_simplify_operands), reorg.c (dbr_schedule), sbitmap.c
	(sbitmap_zero), simplify-rtx.c (simplify_plus_minus), ssa.c
	(rename_registers), stmt.c (expand_end_case), unroll.c
	(unroll_loop), varray.c (varray_grow), objc/objc-act.c: Use memset
	() instead of bzero ().

2000-11-07  Neil Booth  <neilb@earthling.net>

	* cp/lang-specs.h: Fix -save-temps specs under USE_CPPLIB.

2000-11-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (combine_strings): Only warn about long strings for C.

Tue Nov  7 19:44:30 2000  J"orn Rennecke <amylaar@redhat.com>

	* combine.c (distribute_notes): Fix typo in last change.

2000-11-07  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (movdi_internal32+1): Use
	operand_subreg_force rather than gen_rtx_SUBREG.
	(movdi_internal32+2): Likewise.

2000-11-07  Philip Blundell  <philb@gnu.org>

	* configure.in (arm*-*-linuxaout*): Obsolete, deleted.
	* config/arm/linux-aout.h: Likewise.
	* configure: Regenerate.

2000-11-07  Philipp Thomas  <pthomas@suse.de>

	* ABOUT-GCC-NLS: Remove the patch for gettext as it has been
	accepted my the gettext maintainer.

2000-11-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strpbrk): New function.
	(expand_builtin): Handle BUILT_IN_STRPBRK.

	* builtins.def (BUILT_IN_STRPBRK): New entry.

	* c-common.c (c_common_nodes_and_builtins): Declare builtin
	strpbrk.

2000-11-07  David O'Brien  <obrien@dragon.nuxi.com>

	* config/alpha/freebsd.h: New file -- FreeBSD/alpha architecture file.
	* POTFILES.in: Add config/alpha/freebsd.h
	* configure.in: Add alpha*-freebsd support.
	* configure: Regenerate.

2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* tree.c (build_common_tree_nodes_2): Make va_list_type_node be a
	copy of ptr_type_node rather than ptr_type_node itself.

Tue Nov  7 06:29:24 2000  J"orn Rennecke <amylaar@redhat.com>

	* combine.c (recog_for_combine): Allocate uninitialized vector with
	rtvec_alloc.
	* recog.c (apply_change_group): Likewise.

Tue Nov  7 06:24:02 2000  J"orn Rennecke <amylaar@redhat.com>

	* flow.c (verify_local_live_at_start): Back out last change.
	* combine.c (distribute_notes): When parts of a hard reg are
	neither set nor referenced in PLACE, search backwards for a
	place to put a REG_UNUSED note; if none found, ask for flow
	info refresh.

Mon Nov  6 20:08:13 2000  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (eliminate_regs_in_insn): Allow a set to be a PARALLEL
	with (clobber (match_scratch...)).

2000-11-06  Neil Booth  <neilb@earthling.net>

	* c-lex.c (init_c_lex): If cpp_start_read fails, exit with
	error status.

2000-11-06  Neil Booth  <neilb@earthling.net>

	* tradcpp.c (special_symbol): Assign an null string rather
	than writing to an unallocated buffer.

2000-11-06  Neil Booth  <neilb@earthling.net>

	* cpplex.c (_cpp_equiv_tokens): Check arg_no in the
	CPP_MACRO_ARG case.

2000-11-06  Neil Booth  <neilb@earthling.net>

	* c-lex.c (c_lex): Replace tok.val.aux with tok.val.c or
	tok.val.arg_no as appropriate.
	* cppexp.c (lex): Similarly.
	* cpplex.c (_cpp_lex_token, cpp_spell_token, cpp_output_token,
	cpp_equiv_tokens, cpp_can_paste, cpp_avoid_paste): Similarly.
	* cppmacro.c (stringify_arg, replace_args, lex_expansion_token,
	cpp_macro_definition): Similarly.
	* cpplib.h (struct cpp_token): Replace aux with c and arg_no.

2000-11-06  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (adddi3): If operands[2] is 4096 and
	operands[1] is constant, calculate the sum and generate movdi.
	(addsi3): Similarly.  Use SImode in call to arith_4096_operand.
	(subsi3): Use SImode in call to arith_4096_operand.

2000-11-06  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): On sparc64 we need to
	adjust %o1, not %o0 if the return type is large structure.

2000-11-06  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (smulsi3_highpart_v8plus, ashldi3_v8plus+1,
	update_return, flush, flushdi, ffssi2, ffsdi2): Fix output formatting.

Sat Sep 23 19:10:20 2000  Denis Chertykov  <denisc@overta.ru> & Marek Michalkiewicz  <marekm@linux.org.pl>

	* expmed.c (expand_divmod): For signed divide by 2, prefer
	a branch and fewer shifts if branches are very cheap.

2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in: Remove all targets related to building
	distributions and diffs, or INSTALL.
	* INSTALL, install1.texi: Remove.
	* configure.in: Remove mention of distdir.
	* configure: Regenerate.
	* objc/Make-lang.in: Remove mention of distdir.

2000-11-04  Neil Booth  <neilb@earthling.net>

	* cpp.texi: Update for _Pragma.

2000-11-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi (Contributing): Update URL for projects web page.

2000-11-04  Neil Booth  <neilb@earthling.net>

	* cpplex.c (parse_string): Don't allow multiline strings in
	#include family directives.

2000-11-04  Neil Booth  <neilb@earthling.net>

	* cpplib.c (do_line): Only warn pedantically if not reading
	preprocessed input.

2000-11-04  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_call_1) [sibcall_pop]: Use n_popped instead of
	RETURN_POPS_ARGS().

2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>

	* builtins.c (expand_builtin_strlen): Remove unused mode
	argument.
	* gcc.c (process_command): Remove unused variable.
	* fold-const.c: Include expr.h.
	* recog.c: Include reload.h.
	* Makefile.in (recog.o, fold-const.o): Update deps.

2000-11-02  Geoffrey Keating  <geoffk@cygnus.com>

	* fixinc/gnu-regex.c: Change 'CYGNUS LOCAL' to 'EGCS LOCAL'.

Fri Nov  3 13:41:04 2000  Mark P Mitchell  <mark@codesourcery.com>

	* config/mips/iris6.h (SUBTARGET_CC1_SPEC): Remove -static
	handling.
	(STARTFILE_SPEC): Likewise.
	(LINK_SPEC): Likewise.

2000-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (fold-const.o): Depend on $(GGC_H), not ggc.h.
	(toplev.o): Likewise for $(LOOP_H)/loop.h and $(REGS_H)/regs.h.
	(simplify-rtx.o): Likewise for $(GGC_H)/ggc.h.

2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (duplicate_decls, copy_lang_decl), dwarfout.c
	(dwarfout_line), gcc.c (main, save_string), tree.c (init_obstacks,
	perm_calloc, get_identifier, maybe_get_identifier,
	real_value_from_int_cst, simple_cst_equal), varasm.c
	(assemble_name, assemble_real, immed_real_const_1,
	compare_constant_1, decode_rtx_const, output_constant_pool): Use
	strrchr () instead of rindex ().  Use memcmp () instead of bcmp
	().  Use memcpy () instead of bcopy ().  Use memset () instead of
	bzero ().

2000-11-03  Nathan Sidwell  <nathan@codesourcery.com>

	* cppfiles.c (open_file): If already read, then don't reopen.
	Immediately close an empty file.

2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>

	* expr.h (fold_builtin): Move declaration...
	* tree.h (fold_builtin): ... here.

Fri Nov  3 05:41:07 2000  J"orn Rennecke <amylaar@redhat.com>

	* flow.c (verify_local_live_at_start): Allow hard regs to die.

2000-11-02  Neil Booth  <neilb@earthling.net>

config:
	* a29k/a29k.h, a29k/unix.h, a29k/vx29k.h,
	alpha/alpha-interix.h, alpha/alpha.h, alpha/linux.h,
	alpha/openbsd.h, alpha/osf.h, alpha/vms.h, alpha/vxworks.h,
	alpha/win-nt.h, arc/arc.h, arm/arm.h, arm/conix-elf.h,
	arm/linux-aout.h, arm/linux-elf.h, arm/netbsd.h, arm/riscix.h,
	arm/riscix1-1.h, arm/semiaof.h, arm/unknown-elf-oabi.h, arm/vxarm.h,
	c4x/rtems.h, clipper/clix.h, convex/convex.h, d30v/d30v.h,
	elxsi/elxsi.h, fr30/fr30.h, h8300/h8300.h, i370/linux.h, i370/mvs.h,
	i370/oe.h, i386/386bsd.h, i386/aix386ng.h, i386/beos-elf.h,
	i386/bsd386.h, i386/crtdll.h, i386/cygwin.h, i386/dgux.h,
	i386/djgpp-rtems.h, i386/djgpp.h, i386/freebsd-aout.h, i386/freebsd.h,
	i386/gnu.h, i386/i386-interix.h, i386/i386.h, i386/linux-aout.h,
	i386/linux-oldld.h, i386/linux.h, i386/lynx-ng.h, i386/lynx.h,
	i386/mach.h, i386/mingw32.h, i386/moss.h, i386/netbsd.h,
	i386/netware.h, i386/next.h, i386/openbsd.h, i386/osf1elf.h,
	i386/osfelf.h, i386/osfrose.h, i386/ptx4-i.h, i386/rtems.h,
	i386/rtemself.h, i386/sco.h, i386/sco4.h, i386/sco4dbx.h, i386/sco5.h,
	i386/scodbx.h, i386/sequent.h, i386/sol2.h, i386/sun.h, i386/sysv3.h,
	i386/sysv4.h, i386/uwin.h, i386/vsta.h, i386/vxi386.h, i386/win-nt.h,
	i386/win32.h, i860/fx2800.h, i860/i860.h, i860/mach.h, i860/sysv3.h,
	i860/sysv4.h, i960/i960.h, i960/rtems.h, i960/vx960-coff.h,
	ia64/ia64.h, ia64/linux.h, m32r/m32r.h, m68k/3b1.h, m68k/3b1g.h,
	m68k/a-ux.h, m68k/altos3068.h, m68k/amix.h, m68k/apollo68.h,
	m68k/crds.h, m68k/ctix.h, m68k/dpx2.h, m68k/hp2bsd.h, m68k/hp320.h,
	m68k/hp3bsd.h, m68k/hp3bsd44.h, m68k/isi.h, m68k/linux-aout.h,
	m68k/linux.h, m68k/lynx-ng.h, m68k/lynx.h, m68k/m68kemb.h,
	m68k/m68kv4.h, m68k/mot3300.h, m68k/netbsd.h, m68k/news.h,
	m68k/next.h, m68k/openbsd.h, m68k/pbb.h, m68k/plexus.h, m68k/rtems.h,
	m68k/rtemself.h, m68k/sun2.h, m68k/sun3.h, m68k/sun3mach.h,
	m68k/tower-as.h, m68k/tower.h, m68k/vxm68k.h, m88k/dgux.h,
	m88k/dolph.h, m88k/luna.h, m88k/m88k-aout.h, m88k/m88k-coff.h,
	m88k/openbsd.h, m88k/sysv3.h, m88k/sysv4.h, mips/bsd-4.h,
	mips/bsd-5.h, mips/dec-bsd.h, mips/dec-osf1.h, mips/gnu.h,
	mips/iris3.h, mips/iris5.h, mips/iris6.h, mips/linux.h, mips/mips.h,
	mips/netbsd.h, mips/news4.h, mips/news5.h, mips/nws3250v4.h,
	mips/openbsd.h, mips/osfrose.h, mips/rtems64.h, mips/sni-svr4.h,
	mips/svr3-4.h, mips/svr3-5.h, mips/svr4-4.h, mips/svr4-5.h,
	mips/ultrix.h, ns32k/encore.h, ns32k/merlin.h, ns32k/netbsd.h,
	ns32k/ns32k.h, ns32k/pc532-mach.h, ns32k/pc532.h, ns32k/sequent.h,
	ns32k/tek6000.h, ns32k/tek6100.h, ns32k/tek6200.h, pa/pa-hiux.h,
	pa/pa-hpux.h, pa/pa-hpux7.h, pa/pa-linux.h, pa/pa-osf.h,
	pa/pa-pro-end.h, pa/pa.h, pa/rtems.h, pj/linux.h, pj/pj.h,
	romp/romp.h, rs6000/aix.h, rs6000/aix31.h, rs6000/aix41.h,
	rs6000/aix43.h, rs6000/beos.h, rs6000/eabi.h, rs6000/eabisim.h,
	rs6000/linux.h, rs6000/lynx.h, rs6000/mach.h, rs6000/rtems.h,
	rs6000/sysv4.h, rs6000/vxppc.h, sh/elf.h, sh/linux.h, sh/rtems.h,
	sh/rtemself.h, sh/sh.h, sparc/aout.h, sparc/elf.h, sparc/linux-aout.h,
	sparc/linux.h, sparc/linux64.h, sparc/lite.h, sparc/litecoff.h,
	sparc/liteelf.h, sparc/lynx-ng.h, sparc/lynx.h, sparc/netbsd.h,
	sparc/openbsd.h, sparc/pbd.h, sparc/rtems.h, sparc/rtemself.h,
	sparc/sol2-sld-64.h, sparc/sol2.h, sparc/sp64-aout.h,
	sparc/sp64-elf.h, sparc/sp86x-aout.h, sparc/sp86x-elf.h,
	sparc/sparc.h, sparc/sysv4.h, sparc/vxsim.h, sparc/vxsparc.h,
	v850/rtems.h, vax/netbsd.h, vax/openbsd.h, vax/ultrix.h, vax/vax.h,
	vax/vaxv.h, vax/vms.h, we32k/we32k.h

	Replace -A() with -A=, the new assertion syntax.

Thu Nov  2 21:52:35 2000  J"orn Rennecke <amylaar@redhat.com>

	* combine.c (distribute_notes): Use rtx_equal_p to check elim_i2 /
	elim_i1.
	In REG_DEAD handling: When handling parts of multi-hard-reg hard
	registers, increment the loop counter by the size of the parts;
	use recursion to handle individual parts.

2000-11-02  Neil Booth  <neilb@earthling.net>

	* configure.in: Make integrated CPP the default.
	* configure: Regenerate.

Thu Nov  2 19:20:12 2000  J"orn Rennecke <amylaar@redhat.com>

	* reload.c (find_equiv_reg): Test all hard registers for membership
	in the requested class.

2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* collect2.c (main, write_c_file_stat), gcc.c (translate_options,
	process_command, main), gcov.c (open_files, output_data), tlink.c
	(frob_extension, scan_linker_output), toplev.c
	(file_name_nondirectory): Use strchr () and strrchr () instead of
	index () and rindex ().

2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (get_flag_spec, check_format_info_main,
	check_format_types): Use strchr () instead of index ().  Compare
	against error_mark_node instead of comparing the TREE_CODE against
	ERROR_MARK.

2000-11-02  Zack Weinberg <zackw@Stanford.EDU>

	Integrated CPP.

	* c-lex.c (init_c_lex): Update cpp_start_read call.
	(cb_ident): Update for new callback prototype.
	(cb_def_pragma): Update for new cpp_get_token prototype.
	(c_lex): Similarly.  Use cpp_get_line.

	* c-parse.in (finish_parse): Update for new cpp_finish
	prototype.

	* cp/lex.c (finish_parse): Similarly.

2000-11-01  Geoff Keating  <geoffk@cygnus.com>

	* machmode.def: Add V16QImode.

2000-11-01  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (loc_descriptor_from_tree): Check for null result
	from rtl_for_decl_location.
	(add_location_or_const_value_attribute): Likewise.

2000-11-01  Neil Booth  <neilb@earthling.net>

	* cpplib.c (run_directive): Use correct line number for output
	of _Pragma.  Remember any in-progress directive.

	* gcc.dg/cpp/vararg2.c, gcc.dg/cpp/_Pragm1.c: New tests.

2000-11-01  Richard Henderson  <rth@redhat.com>

	* stmt.c (expand_start_null_loop): Set continue_label.

2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>

	* builtins.c (fold_builtin_constant_p, fold_builtin): New functions.
	(expand_builtin_constant_p): Move parts of the code into
	fold_builtin_constant_p.
	(expand_builtin_strlen): Move parts of the code into fold_builtin.
	* expr.h (fold_builtin): Declare.
	* fold-const.c (fold): Handle builtin calls.

	* c-typeck.c (build_function_call): Call fold on the CALL_EXPR.

2000-11-01  Richard Henderson  <rth@redhat.com>

	* stmt.c (expand_start_null_loop): New.
	(expand_end_null_loop): New.
	* c-semantics.c (genrtl_do_stmt): Use them.
	* tree.h: Declare them.

2000-11-01  Richard Henderson  <rth@redhat.com>

	* cppmain.c (scan_buffer): Don't avoid paste for assembly.

2000-11-01  Neil Booth  <neilb@earthling.net>

	* c-parse.in (_yylex): Remove CPP_BACKSLASH case.
	* cp/spew.c: Similarly.
	* cpplex.c (_cpp_lex_token): Backslashes are now CPP_OTHER.
	* cppmacro.c (stringify_arg): Similarly.
	* cpplib.h (CPP_BACKSLASH): Delete.

2000-10-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strstr): New function.
	(expand_builtin): Handle BUILT_IN_STRSTR and BUILT_IN_STRCHR.

	* builtins.def (BUILT_IN_STRSTR, BUILT_IN_STRCHR): New entries.

	* c-common.c (c_common_nodes_and_builtins): Declare builtin strstr
	and builtin strchr.

2000-10-31  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (fcmov_comparison_operator): Check for
	CCFPmode or CCFPUmode instead of CCmode.
	(ix86_expand_fp_movcc): Call ix86_expand_setcc for most
	unordered operations as well.

2000-10-31  Richard Henderson  <rth@redhat.com>

	* c-semantics.c (genrtl_do_stmt): Use integer_zerop instead
	of integer_zero_node.

2000-10-31  Richard Henderson  <rth@redhat.com>

	* c-semantics.c (genrtl_do_stmt): Special case do/while(0).

2000-10-31  Nick Clifton  <nickc@redhat.com>

	* config/arm/unknown-elf.h (UNIQUE_SECTION_P): Do not allow
	-fdata-sections to override the section attribute of a DECL.

2000-10-31  Chris Demetriou  <cgd@sibyte.com>

	* libgcc2.c (__shtab): Remove __shtab variable.
	* libgcc-std.ver (GCC_3.0): Remove __shtab from symbol list.
	* Makefile.in (LIB2FUNCS): Remove _shtab from list of library
	members.

2000-10-31  Jim Wilson  <wilson@redhat.com>

	* defaults.h (ASM_OUTPUT_DEBUG_LABEL): New.
	* tm.texi (ASM_OUTPUT_DEBUG_LABEL): Document.
	* dwarf2out.c (dwarf2out_begin_block): Use ASM_OUTPUT_DEBUG_LABEL
	instead of ASM_OUTPUT_INTERNAL_LABEL.
	(dwarf2out_end_block, dwarf2out_label): Likewise.
	* final.c (final_scan_insn, case NOTE_INSN_DELETED_LABEL): Likewise
	* config/ia64/ia64.h (ASM_OUTPUT_DEBUG_LABEL): Define.

2000-10-31  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (struct dw_loc_descr_struct): Add dw_loc_addr.
	(size_of_locs): Set it.
	(output_loc_operands): Use it to compute branch displacement.
	(int_loc_descriptor): New.
	(mem_loc_descriptor): Dereference memory in the proper size.
	Use DW_OP_plus_uconst when possible.  Use int_loc_descriptor.
	(loc_descriptor_from_tree): New.
	(rtl_for_decl_location): Break out from ...
	(add_location_or_const_value_attribute): ... here.
	(add_bound_info): Use loc_descriptor_from_tree.

2000-10-31  Neil Booth  <neilb@earthling.net>

	* cpp.texi: Update for new command line assertion syntax.
	* cpplib.c (cpp_define): Simplify a bit.
	(cpp_assert, cpp_unassert): Use handle_assertion.
	(handle_assertion): New function; accept new command line
	syntax with '='.
	* testsuite/gcc.dg/cpp/assert3.c: New tests.

2000-10-31  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (STDC_0_IN_SYSTEM_HEADERS): Define to 0 if
	undefined.  Remove #ifdef check.
	* config/i386/sol2.h, config/rs6000/sol2.h, config/sparc/sol2.h:
	Define STDC_0_IN_SYSTEM_HEADERS to 1.

2000-10-31  Jan Hubicka  <jh@suse.cz>
	    Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.h: Clarify CCNOmode description in comment.
	(EXTRA_CC_MODES): Remove CCRCmode.
	* config/i386/i386.c (ix86_comparison_operator): Remove CCRCmode.
	(put_condition_code, ix86_match_ccmode): Likewise.
	(ix86_cc_mode): Likewise.  Fix comment.
	(ix86_expand_strlensi_unroll_1): *rc patterns are gone.
	* config/i386/i386.md: Add unspec 12 description.
	(adddi3 split): Use unspec 12 instead of CCRCmode.
	(addsi3_carry_rc): Remove.
	(addsi3_cc, addqi3_cc): New patterns.
	(addsi_3): Swap operands, match CCZmode.
	(addsi_4): Rewritten.
	(addsi_5): Renamed from addsi_6.
	(addsi_6): Removed.
	(addhi_3): Swap operands, match CCZmode.
	(addhi_4): Rewritten.
	(addhi_5): Renamed from addhi_6.
	(addhi_6): Removed.
	(addqi_3): Swap operands, match CCZmode.
	(addqi_4): Rewritten.
	(addqi_5): Renamed from addqi_6.  Use =q constraint for clobber.
	(subsi3_carry_rc): Removed.
	(iorqi_3): Use =q constraint for clobber.
	(xorqi_cc_2): Likewise.
	(negdi2_1 split): Don't use CCRCmode, use ltu instead of gtu.
	(x86_movsicc_0_m1_rc): Removed.
	(cmp?i peepholes): Remove neg.  Use CCGCmode instead of CCRCmode.

2000-10-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (build_unary_op): If pedantic, pedwarn for increment
	and decrement of complex types.

2000-10-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_fputs): When deleting NOP calls to
	builtin fputs, ensure we still evaluate the stream in case it
	has side-effects.

2000-10-31  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (do_store_flag): Pass operand_mode instead of GET_MODE (op0)
	to expand_shift.

Tue Oct 31 15:33:27 2000  J"orn Rennecke <amylaar@redhat.com>

	* sh-protos.h (reg_no_subreg_operand, emit_fpscr_use): Don't declare.
	(fp_extended_operand, emit_fpscr_use): Likewise.
	* sh.c (reg_no_subreg_operand, fp_extended_operand): Delete functions.
	(fpul_operand): New function.
	* sh.h (PREDICATE_CODES): Remove reg_no_subreg_operand and
	fp_extended_operand.  Add fpul_operand.
	* sh.md (mulsf3, mulsf3_i4): Use fp_arith_reg_operand for "f" operands.
	(mulsf3_ie, macsf3, cmpgtsf_t, cmpeqsf_t, ieee_ccmpeqsf_t): Likewise.
	(cmpgtsf_t_i4, cmpeqsf_t_i4, ieee_ccmpeqsf_t_4, negsf2): Likewise.
	(negsf2_i, sqrtsf2, sqrtsf2_i, abssf2, abssf2_i, adddf3): Likewise.
	(adddf3_i, subdf3, subdf3_i, muldf3, muldf3_i, divdf3): Likewise.
	(divdf3_i): Likewise.
	(floatsisf2): Likewise.  Use fpul_operand for 'y' operand.
	(floatsisf2_i4, floatsisf2_ie, fix_truncsfsi2): Likewise.
	(fix_truncsfsi2_i4, fixsfsi, floatsidf2, floatsidf2_i): Likewise.
	(fix_truncdfsi2, fix_truncdfsi2_i, extendsfdf2): Likewise.
	(extendsfdf2_i4, truncdfsf2, truncdfsf2_i4): Likewise.

2000-10-31  Bernd Schmidt  <bernds@redhat.co.uk>

	* config/i386/i386.c (ix86_init_builtins): Correct return type
	building v4hi_ftype_v4hi_int_int tree node.
	(ix86_expand_builtin): Use correct operand numbers 0 and 1.
	Copy operand 0 into a Pmode register, don't generate a MEM rtx.

	* config/i386/i386.md (sse_movntdi): Use mmx register constraint
	for operand 1.
	(mmx__uavgv8qi3): Correct insn mnemonic.
	(mmx_psadbw): Correct insn mnemonic.  Use V8QI mode for operands 1 and 2.
	(mmx_punpckhwd): Correct insn mnemonic.
	(mmx_punpckhdq): Likewise.
	(mmx_punpcklwd): Likewise.
	(mmx_punpckldq): Likewise.
	(prefetch): Use immediare_operand and 'n' constraint for operand 1.
	Renumber case labels to match the _mm_prefetch constants defined in
	xmmintrin.h.

	* recog.c (split_all_insns): Don't try to call cleanup_subreg_operands
	if the splitter didn't emit new insns.
	Make sure we call cleanup_subreg_operands even when splitting the last
	insn in a basic block.

	* invoke.texi (Debugging Options): Describe -do.
	* toplev.c (enum_dump_file_index): New entry DFI_postreload.
	(dump_file): Likewise.
	(rest_of_compilation): Split .greg dump into .greg and .postreload.

2000-10-30  Neil Booth  <neilb@earthling.net>

	* cppfiles.c (stack_include_file): Check for stacked contexts
	here.
	* cpphash.h (_cpp_do__Pragma): New prototype.
	* cppinit.c (cpp_reader_init): Add _Pragma keyword to hash table.

	* cpplex.c (skip_escaped_newlines): Only process trigraphs and
	escaped newlines if !(buffer->from_stage3).
	(_cpp_lex_token): Warn about missing newlines iff
	!buffer->from_stage3.

	* cpplib.c (get__Pragma_string, destringize,
	_cpp_do__Pragma): New functions.
	(run_directive): Set output_line for _Pragma to avoid line
	markers in output.  Set from_stage3 and prevent macro expansion
	for _Pragma and command-line options.  Check buffer exhaustion.
	(cpp_push_buffer): Don't check for stacked macro contexts, as
	this is perfectly legitimate for _Pragma.  Move the check to
	stack_include_file instead. Set from_stage3 iff buffer is
	preprocessed input.

	* cpplib.h (struct cpp_buffer): Make warned_cplusplus_comments
	unsigned. New boolean from_stage3.
	(struct spec_nodes): Add n__Pragma.

	* cppmacro.c (enter_macro_context): Flip sense of return value.
	(_cpp_get_token): Handle _Pragma operator.

2000-10-30  Phil Edwards  <pme@sources.redhat.com>

	* gcc.texi:  The C++ standard isn't "draft" anymore.

2000-10-30  Mark Mitchell  <mark@codesourcery.com>

	* cppmacro.c (builtin_macro): Use NT_VOID, not T_VOID.

2000-10-29  Neil Booth  <neilb@earthling.net>

	* cpplib.c (skip_rest_of_line):  Use _cpp_get_token.

2000-10-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* toplev.c, flags.h, fold-const.c, real.c, rtl.c,
	fixinc/inclhack.def: Change comments mentioning C9X to refer to
	C99 instead.

	* invoke.texi: Document that -V will only work for very similar
	versions of driver and compiler.

2000-10-29  Neil Booth  <neilb@earthling.net>

	* cppmacro.c (_cpp_create_definition): Optimize the case of
	a macro defined to itself.

2000-10-29  Neil Booth  <neilb@earthling.net>

	* cpplex.c (save_comment): Don't store new lines in C++ comments.

2000-10-29  Michael Hayes  <mhayes@redhat.com>

	* integrate.c (copy_insn_list): Copy the unchanging flag for calls.

2000-10-28  Geoffrey Keating  <geoffk@cygnus.com>

	* cpphash.c (cpp_forall_identifiers): Add context variable
	for callback routine.
	* cppmain.c (dump_macro): Update to match cpp_forall_identifiers
	change.
	(main): Call cpp_forall_identifiers with null context.
	* cpplib.h (cpp_forall_identifiers): Update prototype.

	* cppmain.c: Make `parse_in' and `print' static.

2000-10-28  Alan Modra <alan@linuxcare.com.au>

	* c-decl.c (finish_function): Clear c_function_name_declared_p.

2000-10-28  Richard Henderson  <rth@redhat.com>

	* regrename.c (scan_rtx_address): Frob action, not class,
	when trying to disable optimization.

2000-10-28  Mark Mitchell  <mark@codesourcery.com>

	* c-semantics.c (make_rtl_for_local_static): Don't clobber
	DECL_ASSEMBLER_NAME.

2000-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Determine and substitute gcc_version_full.
	* configure: Regenerate.
	* gccbug.in: Use it to give full version.  Don't allow
	confidential PRs.

2000-10-28  Richard Henderson  <rth@redhat.com>

	* recog.c (split_all_insns): Run cleanup_subreg_operands
	after reload.

	* regrename.c (regrename_optimize): Verify that all registers of
	a multiple register mode are available.
	(scan_rtx_address): Accept the mode of the address; all callers
	changed.

	* cpplib.c (run_directive): Fix prototype.

2000-10-28  Bernd Schmidt  <bernds@redhat.co.uk>

	* reload.c (find_reloads): Distinguish "wins" so that we know whether
	a given operand won because of a matching constraint or not; then use
	that information to compute goal_alternative_matched properly.
	* reload1.c (choose_reload_regs): Never set reload_override_in for an
	optional reload.

	* config/ia64/ia64.h (RTX_COSTS): A few more entries, and a more
	accurate value for MULT.
	* config/ia64/ia64.c (ia64_print_operand): Require probability to be
	2% or > 98% before using static branch prediction bits.

2000-10-28  Neil Booth  <neilb@earthling.net>

	New macro expander.

	* cpplib.c (struct answer): New.
	(struct if_stack): Use cpp_lexer_pos rather than line and col.
	Rename cmacro mi_cmacro.
	(struct directive, KANDR, STDC89, EXTENSION, COND, IF_COND, INCL,
	IN_I): New directive and flags.
	(skip_rest_of_line, check_eol, run_directive, glue_header_name,
	parse_answer, parse_assertion, find_answer): New functions.
	(parse_ifdef, detect_if_not_defined, validate_else): Remove.
	(lex_macro_node): New function to replace parse_ifdef and
	get_define_node.

	(_cpp_handle_directive): New function, combines _cpp_check_directive
	and _cpp_check_linemarker.

	(do_define, do_undef, parse_include, do_include, do_import,
	do_include_next, read_line_number, do_line, do_ident, do_pragma,
	do_pragma_once, do_pragma_poison, do_pragma_dependency):
	Update for new token getting interface.

	(do_ifdef, do_ifndef, do_if, do_else, do_endif, push_conditional)
	: Update for new multiple-include optimisation technique.
	(do_elif): Don't forget to invalidate controlling macros.

	(unwind_if_stack, cpp_defined, cpp_push_buffer, cpp_pop_buffer): Update.
	(parse_assertion, parse_answer, find_answer, _cpp_test_assertion):
	Functions to handle assertions with the new token interface.
	(do_assert, do_unassert): Use them.

	(cpp_define, _cpp_define_builtin, cpp_undef, cpp_assert, cpp_unassert):
	Use run_directive.

	(_cpp_init_stacks): Register directive names.  Don't register special
	nodes.

	* cpperror.c (print_containing_files, _cpp_begin_message): Update to
	new position recording regime.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Update for _cpp_begin_message changes.
	(cpp_type2name): Move to cpplex.c.

	* cppexp.c (parse_charconst): spec_nodes is no longer a pointer.
	(parse_defined): Update to handle new multiple include optimisation
	method.  Remove poisoned identifier warning.
	(parse_assertion, TYPE_NAME): Delete.
	(lex): Update for multiple include optimisation, removal of
	CPP_DEFINED, to use _cpp_test_assertion for assertions and
	cpp_token_as_text.
	(_cpp_parse_expr): Update for MI optimisation, and to use op_as_text.
	(op_as_text): New function, to wrap cpp_token_as_text.

	* cppfiles.c (stack_include_file, _cpp_pop_file_buffer):
	Update for MI optimisation.
	(_cpp_execute_include): Take a token rather than 3 arguments.  Fix
	segfault on diagnostic.
	(_cpp_compare_file_date): Take a token rather than 3 args.
	(cpp_read_file): Work correctly for zero-length files.

	* cpphash.c (_cpp_init_macros, _cpp_cleanup_macros): Rename
	_cpp_init_hashtable and _cpp_cleanup_hashtable.
	(cpp_lookup): Place identifiers at front of identifier pool
	for _cpp_lookup_with_hash.
	(_cpp_lookup_with_hash): Require identifiers to be at the front of
	the identifier pool.  Commit the memory if not already in the
	hash table.

	* cppinit.c (cpp_reader_init): Move cpp_init_completed test to top.
	Initialize various members of cpp_reader, memory pools, and the
	special nodes.
	(cpp_printer_init): Delete.
	(cpp_cleanup): Update.
	(struct builtin, builtin_array, initialize_builtins): Update for new
	hashnode definition and builtin handling.
	(cpp_start_read, cpp_finish): Don't take or initialize a
	printer.  Update.

	* cpplib.h (cpp_printer, cpp_toklist, CPP_DEFINED, BOL,
	PASTED, VAR_ARGS, BEG_OF_FILE, IN_DIRECTIVE, KNOWN_DIRECTIVE,
	T_VOID, T_SPECLINE, T_DATE, T_FILE, T_BASE_FILE, T_INCLUDE_LEVEL,
	T_TIME, T_STDC, T_OPERATOR, T_POISON, T_MACRO, T_ASSERTION): Delete.
	(struct cpp_pool, struct cpp_macro, struct cpp_lexer_pos,
	struct cpp_lookahead, CPP_DHASH, enum mi_state, enum mi_ind,
	NO_EXPAND, VARARGS_FIRST, struct cpp_token_with_pos,
	struct toklist, struct cpp_context, struct specnodes,
	TOKEN_LOOKAHEAD, TOKEN_BUFFSIZE, NODE_OPERATOR, NODE_POISONED,
	NODE_BUILTIN, NODE_DIAGNOSTIC, NT_VOID, NT_MACRO, NT_ASSERTION,
	enum builtin_type, cpp_can_paste): New.
	(struct cpp_token): Delete line and col members.
	(struct cpp_buffer): New member output_lineno.
	(struct lexer_state): Delete indented, in_lex_line, seen_dot.
	Add va_args_ok, poisoned_ok, prevent_expansion, parsing_args.
	(struct cpp_reader): New members lexer_pos, macro_pos, directive_pos,
	ident_pool, temp_string_pool, macro_pool, argument_pool, string_pool,
	base_context, context, directive, mi_state, mi_if_not_defined,
	mi_lexed, mi_cmacro, mi_ind_cmacro, la_read, la_write, la_unused,
	mlstring_pos, macro_buffer, macro_buffer_len.
	Delete members mls_line, mls_column, token_list, potential_control_macro,
	temp_tokens, temp_cap, temp_alloced, temp_used, first_directive_token,
	context_cap, cur_context, no_expand_level, paste_level, contexts, args,
	save_parameter_spellings, need_newline, .
	Change type of date, time and spec_nodes members.
	Change prototypes for include and ident callbacks.
	(struct cpp_hashnode): Change type of name.  Remove union members
	expansion and code.  Add members macro, operator and builtin.

	(cpp_token_len, cpp_token_as_text, cpp_spell_token, cpp_start_read,
	cpp_finish, cpp_avoid_paste, cpp_get_token, cpp_get_line,
	cpp_get_output_line, cpp_macro_definition, cpp_start_lookahead,
	cpp_stop_lookahead): New prototypes.
	(cpp_printer_init, cpp_dump_definition): Delete prototypes.

	(U_CHAR, U, ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr, ufputs):
	Move from cpphash.h.

	* cpphash.h (U_CHAR, U, ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr,
	ufputs): Move to cpplib.h.
	(enum spell_type, struct token_spelling, _cpp_token_spellings, TOKEN_SPELL,
	TOKEN_NAME, struct answer, FREE_ANSWER, KANDR, STDC89, EXTENSION,
	COND, EXPAND, INCL, COMMENTS, IN_I, struct directive, directive_handler,
	struct spec_nodes, _cpp_digraph_spellings, _cpp_free_temp_tokens,
	_cpp_init_input_buffer, _cpp_grow_token_buffer, _cpp_init_toklist,
	_cpp_clear_toklist, _cpp_expand_token_space, _cpp_expand_name_space,
	_cpp_equiv_tokens, _cpp_equiv_toklists, _cpp_process_directive,
	_cpp_run_directive, _cpp_get_line, _cpp_get_raw_token, _cpp_glue_header_name,
	_cpp_can_paste, _cpp_check_directive, _cpp_check_linemarker,
	_cpp_parse_assertion, _cpp_find_answer): Delete.
	(VALID_SIGN, ALIGN, POOL_FRONT, POOL_LIMIT, POOL_BASE, POOL_SIZE,
	POOL_USED, POOL_COMMIT, struct cpp_chunk, _cpp_lex_token, _cpp_init_pool,
	_cpp_free_pool, _cpp_pool_reserve, _cpp_pool_alloc, _cpp_next_chunk,
	_cpp_lock_pool, _cpp_unlock_pool, _cpp_test_assertion,
	_cpp_handle_directive, DSC): New.
	(struct include_file): New member defined.

	(DO_NOT_REREAD, _cpp_begin_message, _cpp_execute_include,
	_cpp_compare_file_date): Update.
	(_cpp_pop_context, _cpp_get_token, _cpp_free_lookaheads, _cpp_push_token): New.
	(_cpp_init_macros, _cpp_cleanup_macros): Rename to _cpp_init_hashtable,
	_cpp_cleanup_hashtable.

	* Makefile.in: Remove cppoutput.c.

	* cppoutput.c: Delete

	* fixheader.c (read_scan_file): Update for new cpp_get_token
	prototype.
	(recognized_function): New argument LINE.

	* scan-decls.c (skip_to_closing_brace, scan_decls): Update for
	new cpp_get_token prototype.

	* scan.h (recognized_function): Update prototype.

	* po/POTFILES.in: Remove cppoutput.c.

2000-10-27  Mark Mitchell  <mark@codesourcery.com>

	* c-typeck.c (check_init_type_bitfields): Remove.
	(constructor_incremental): Likewise.
	(struct constructor_stack): Remove incremental bit.
	(struct initializer_stack): Likewise.
	(start_init): Don't play with constructor_incremental.
	(finish_init): Likewise.
	(really_start_incremental_init): Likewise.
	(push_init_level): Likewise.
	(pop_init_level): Likewise.
	(output_init_level): Likewise.
	(output_pending_init_elements): Likewise.

2000-10-21  Mike Coleman  <mcoleman2@kc.rr.com>

	* c-pragma.c (handle_pragma_pack): Initialize align to -1.
	Improve error messages.  Correct parsing of
	#pragma pack(pop [,id]).  Do not check the user-supplied
	alignment if we're popping.

	* gcc.dg/pack-test-1.c: New test case.
	* gcc.dg/pack-test-2.c: New test case.
	* gcc.dg/pack-test-1.h: New file.

2000-10-27  Neil Booth  <neilb@earthling.net>

	* cpp.texi: Update.

2000-10-27  Kelley Cook <kelley.cook@home.com>

	* invoke.texi: Document -mintel-syntax

2000-10-27  Richard Henderson  <rth@redhat.com>

	* invoke.texi: Document -frename-registers.  Add it to -O3.
	* toplev.c (rest_of_compilation): Run regrename before ifcvt2.
	(enum dump_file_index, dump_file): Update order.
	(main): Set flag_rename_registers at -O3.

2000-10-27  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (enum reg_class): Add PV_REG.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS): Update.
	(REG_CLASS_FROM_LETTER): Assign it to 'c'.
	* config/alpha/alpha.md (call_osf_1): Use it.
	(call_value_osf_1): Likewise.

	* config/ia64/ia64.c: Revert 10-23 patch.
	(ia64_hard_regno_rename_ok): New.
	* config/ia64/ia64-protos.h: Declare it.
	* config/ia64/ia64.h (HARD_REGNO_RENAME_OK): Use it.

2000-10-27  Bernd Schmidt  <bernds@redhat.co.uk>
	    Richard Henderson  <rth@redhat.com>

	* regrename.c: Rewrite to handle multi-register modes and
	cond_exec instructions.
	* Makefile.in (regrename.o): Update dependencies.
	* recog.h (struct operand_alternative): Add is_address.
	* recog.c (preprocess_constraints) [case 'p']: Set it.

2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>

	* configure.in: If not NO_MINUS_C_MINUS_O, substitute
	OUTPUT_OPTION with '-o $@'.  Make zlibdir, zlibinc relative to
	top level.  Kill oldstyle_subdirs.  Do not include
	$srcdir/$s/Makefile.in in all_lang_makefiles, but do include
	$outputs.  Do not run configure.lang from config.status.
	Rearrange warning-flag logic to correspond to what the
	makefile wants.  Put special vax stage1 options in
	@stage1_flags@ not @stage1_warn_cflags@.  Don't do anything
	with extra_c_objs, extra_cxx_objs, or extra_cpp_objs.
	(--enable-c-cpplib): AC_SUBST(maybe_cpplib) with "libcpp.a" if
	switch is given, nothing otherwise.
	* configure.lang: Delete.

	* Makefile.in: Expunge all traces of extra_c_objs,
	extra_cxx_objs, and extra_cpp_objs.  Set MAYBE_CPPLIB from
	@maybe_cpplib@. Add $(MAYBE_CPPLIB) to C_AND_OBJC_OBJS.  Set
	warning options via a three level scheme so that -pedantic and
	-Wtraditional are not used for non-C front ends: LOOSE_WARN,
	STRICT1_WARN, STRICT2_WARN -> $(@D)-warn, GCC_WARN_CFLAGS ->
	WARN_CFLAGS.  Distinguish STAGE1_CFLAGS from BOOT_CFLAGS.
	Add -I$(@D) and -I$(srcdir)/$(@D) to INCLUDES.
	Set OUTPUT_OPTION, ZLIB, ZLIBINC.  Do not set P,
	LANG_FLAGS_TO_PASS.  Add OUTPUT_OPTION to all object-file
	generation rules.  Wrap all rules that change the current
	directory in parentheses; pmake doesn't spawn a new shell for
	each command.  Expunge all references to $(P).  When one
	command depends on another and they're run all at once, use &&
	to separate them, not ;.  Add libgcc_s$(SHLIB_EXT) to files
	deleted on make clean.  Force OUTPUT_OPTION='-o $@' in stage2
	and beyond.

	* objc/Make-lang.in: Wrap all rules that change the current
	directory in parentheses.  Expunge all references to $(P).
	When one command depends on another and they're run all at
	once, use && to separate them, not ;.  Add OUTPUT_OPTION to
	all object-file generation rules.  Delete obsolete variables.
	* objc/Makefile.in: Delete.

2000-10-27  Jakub Jelinek  <jakub@redhat.com>

	* calls.c (expand_call): If sibcall_failure is set during pass 1,
	clear tail_call_insns as well.

2000-10-27  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm-protos.h (arm_function_ok_for_sibcall): Add
	prototype.

2000-10-26  Richard Henderson  <rth@redhat.com>

	* calls.c (expand_call): Supress sibcall if we have a
	BLKmode return in registers.

2000-10-26  Bernd Schmidt  <bernds@redhat.co.uk>

	* ia64.h (PREFERRED_RELOAD_CLASS): Force floating point constants
	into memory.

2000-10-26  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.c (make_node, case 't'): Set alignment to that of
	char_type_node.
	* expr.c (move_by_pieces_ninsns): Abort if some length remains.

2000-10-25  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (site.exp): Define HAVE_LIBSTDCXX_V3.
	* configure.in (enable-libstdcxx-v3): Arrange to have
	HAVE_LIBSTDCXX_V3 substituted into the output files.

2000-10-25  Richard Henderson  <rth@redhat.com>

	* recog.c (constrain_operands): Initialize which_alternative
	before no alternatives early exit.

	* cse.c (find_comparison_args): Check that we can reverse a
	comparison if needed before accepting the substitution.

	* reload.c (find_reloads_address_part): Kill rtx obstack hackery.

	* simplify-rtx.c (simplify_relational_operation): Sign extend
	low words before sign extending to high words.

2000-10-25  Nick Clifton  <nickc@redhat.com>

	* config/mcore/mcore.c: Include config.h before system.h.

2000-10-25  Ray Essick  <essick@ddna.labs.mot.com>

	* config/mcore/mcore.md (return): Force function epilogue to
	always be generated to work around epilogue suppression bug in
	M*Core backend.

2000-10-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): Move warning for qualified void
	return types with -pedantic to when the function type is
	constructed.  At -W, warn in general for qualified function return
	types, except for volatile void.
	* invoke.texi: Document this new warning at -W.

2000-10-25  Neil Booth  <neilb@earthling.net>

	* cpp.texi: Update with implementation-defined behavior and
	internal limits.

2000-10-25  Jakub Jelinek  <jakub@redhat.com>

	* stor-layout.c (layout_type): If TYPE_ALIAS_SET was already set on the
	incomplete type force it into alias set 0.

Wed Oct 25 01:02:44 EDT 2000  John Wehle  (john@feith.com)

	* alias.c: Include basic-block.h.
	(loop_p): New function.
	(mark_constant_function): Use it.
	* Makefile.in (alias.o): Update dependencies.

2000-10-24  Aldy Hernandez  <aldyh@redhat.com>

	* config/mn10300/mn10300.c (secondary_reload_class): Treat pseudos
	like memory.

2000-10-24  Jim Wilson  <wilson@cygnus.com>

	* expmed.c (store_bit_field): Move integer pun code down after
	code that calls emit_move_insn for entire register move.
	* stor-layout.c (compute_record_mode): Revert Mar 25, Aug 18, and
	Oct 20 changes.  Only store mode in TYPE_MODE if RECORD_TYPE.

2000-10-24  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (rtx_unstable_p, rtx_varies_p): Don't consider pic
	register stable if PIC_OFFSET_TABLE_REG_CALL_CLOBBERED.

2000-10-24  Aldy Hernandez  <aldyh@redhat.com>

	* gcse.c (cprop_insn): do not propagate constants into jump_insn
	for machines with CC0 more than once.

2000-10-24  Richard Henderson <rth@cygnus.com>, Aldy <aldyh@cygnus.com>

	* config/mn10300/mn10300.h (PREFERRED_RELOAD_CLASS): Treat
	pseudos just like memory.

2000-10-24  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (distribute_notes): Discard REG_LIBCALL and REG_RETVAL
	when deleting libcall sequence collapsed to a single instruction.

2000-10-24  Andrew Haley  <aph@cygnus.co.uk>

	* expr.c (do_store_flag): Don't crash if either side of a
	comparison is error_mark_node.

2000-10-24  Jakub Jelinek  <jakub@redhat.com>

	* sibcall.c (purge_mem_unchanging_flag): New function.
	(optimize_sibling_and_tail_recursive_calls): Call it.

2000-10-24  Philipp Thomas  <pthomas@suse.de>

	* Makefile.in (check-po): New target for doing checks in the po
	subdir if all languages configured.
	(CHECK_TARGETS): Add @CHECK_PO@, replaced with check-po via
	configure if NLS is enabled.
	* configure.in: If NLS is enabled, substitute CHECK_PO by check-po,
	otherwise leave empty.
	* configure: Regenerate.

2000-10-23  Diego Novillo  <dnovillo@cygnus.com>

	* i386.c (print_operand): Handle new 'A' formatting code.
	387 opcodes need suffixes even with -mintel-syntax.
	Check for explicit size override (codes 'b', 'w' and 'k').
	(print_operand_address): Check if register prefix is needed when
	emitting `ds' segment override.
	* i386.h: Add comment about new 'A' formatting code.
	* i386.md (jump and call patterns): Emit absolute references using %A.

2000-10-23  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (ia64_expand_prologue): Mark extra
	output registers as fixed.
	(ia64_function_epilogue): Undo output fixation.

2000-10-23  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.md: Add names for all unnamed insns; use
	define_insn_and_split in some obvious places.
	(lda): Remove.
	(zero_extendqihi2): Use an expander w/ nonimmediate_operand for BWX.
	(zero_extendqisi2, zero_extendqidi2): Likewise.
	(zero_extendhisi2, zero_extendhidi2): Likewise.
	(abs splitters): Fix match_scratch operand number.
	(bcc_reverse): Swap pc & label instead of non-canonical compare.

2000-10-23  Jim Wilson  <wilson@cygnus.com>

	* ia64.c (ia64_print_operand, case 'r'): Correct comment.  Handle
	CONST_INT.
	* ia64.md (cmpsi_adjusted): Use %r3.
	(cmpdi_adjusted): Likewise.

2000-10-23  Diego Novillo  <dnovillo@cygnus.com>

	* config/i386/att.h (ASM_FILE_START): Define.

2000-10-23  Diego Novillo  <dnovillo@cygnus.com>

	* config/i386/linux.h (ASM_FILE_START): Define.

Wed Oct 18 11:16:40 2000  Donald Lindsay  <dlindsay@cygnus.com>

	* gcc/configure.in: m68k-coff tm_file should not have libgloss.h,
	since this (only) drags in a crt0.o reference that the .ld files
	also introduce.

2000-10-23  Geoff Keating  <geoffk@cygnus.com>

	* reload1.c (reload_reg_reaches_end_p): A RELOAD_OTHER can
	overwrite the value in a RELOAD_FOR_INPUT and other kinds of
	reloads just like an RELOAD_FOR_OUTPUT would.

	* local-alloc.c (update_equiv_regs): Add an abort().  When
	deleting or moving insns, update reg_equiv[regno].init_insns.

2000-10-23  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.texi: Improve documentation for IF_STMTs and related
	conditional statements.

2000-10-22  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (do_preexpand_calls): Remove.
	(same_from_p): Don't use CALL_EXPR_RTL.
	(expand_expr): Don't call preexpand_calls, or use CALL_EXPR_RTL.
	(preexpand_calls): Remove.
	* tree.c (first_rtl_op): Remove CALL_EXPR case.
	(unsave_expr_1): Likewise.
	* tree.def (CALL_EXPR): Give it only two slots.
	* tree.h (CALL_EXPR_RTL): Remove.

2000-10-21  Chandrakala Chavva   <cchavva@redhat.com>

	* libgcc-std.ver (__addvsi3, __addvdi3,  __subvsi3, __subvdi3,
	__mulvsi3, __negvsi2, __negvdi2, __absvsi2, __absvdi2, __mulvdi3):
	New functions.

2000-10-22  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (combine_pending_stack_adjustment_and_call): Don't
	adjust stack when unadjusted_alignment ends up as zero.

2000-10-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* fixinc/genfixes: Remove EGCS reference.
	* install.texi: Remove EGCS reference.
	* INSTALL: Regenerate.

2000-10-22  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (TYPE_IS_SIZETYPE): Add more documentation.

2000-10-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* diagnostic.c: Remove EGCS reference in comment.

Sat Oct 21 08:24:25 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* loop.c (strength_reduce): Fix error in last change.

2000-10-20  David Edelsohn  <edelsohn@gnu.org>

	* Makefile.in (SHLIB_NM_FLAGS): New.
	(libgcc.mk): Pass it.
	* mklibgcc.in (libgcc.map): Use it.

	* rs6000/t-aix43 (SHLIB_EXT, SHLIB_LINK, SHLIB_LIBS,
	SHLIB_MKMAP, SHLIB_MAPFILES, SHLIB_NM_FLAGS): New.

2000-10-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.h (REG_CLASS_FROM_LETTER): Cast array arg to unsigned char.

	* sparc.c (load_pic_register): Delete unused varaible.

	* libgcc2.c (__addvsi3): Delete unused variable.

	* libgcc2.h (__absvsi2, __absvdi2, __addvsi3, __addvdi3,
	__subvsi3, __subvdi3, __mulvsi3, __mulvdi3, __negvsi2,
	__negvdi2): Prototype.

	* ssa.c (apply_delayed_renames): Avoid undefined operation.

	* toplev.c (display_target_options): Make static to match
	prototype.  Delete empty declaration.

2000-10-20  Tom Tromey  <tromey@cygnus.com>

	* cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Added -MF and -MT.
	* gcc.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Added -MF and -MT.

Fri Oct 20 17:05:49 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case SAVE_EXPR): Set RTX_UNCHANGING_P on
	returned MEM.
	(expand_expr_unaligned, case ARRAY_REF): Check that index is
	a constant before comparing it; use tree_low_cst.
	* tree.c (save_expr): Set TREE_READONLY.
	(substitute_expr): Return inside of NON_LVALUE_EXPR.
	(build, build1): Set TREE_READONLY if all operands are.
	(build_index_type): If upper bound is a negative number, lower
	bound is zero and sizetype is unsigned, use upper bound of one and
	lower of zero.

2000-10-20  David Edelsohn  <edelsohn@gnu.org>

	* gcc.c (process_command, main): Use "because" instead of
	"since" in error messages.

Fri Oct 20 13:33:16 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (compute_record_mode): Use tree_low_cst.
	Don't use mode of field for record unless sizes are the same.
	(layout_type, case ARRAY_TYPE): Remove special bounds handling
	previously added for Ada; also change to using host_integerp
	and tree_low_cst.

	* loop.c (strength_reduce): Show when new register made for
	giv is known to be a pointer and its aligment if so and known.
	(loop_dump_aux): Show VERBOSE parameter unused.

	* gcse.c (set_hash_table_size): Now unsigned.
	* sdbout.c (template_name_p): Add "const" to avoid warnings.
	(sdbout_record_type_name, plain_type_1, sdbout_symbol): Likewise.
	(sdbout_one_type, sdbout_parms, sdbout_reg_parms): Likewise.
	(sdbout_end_epilogue): Remove variable NAME.
	* system.h (getopt): Add default definition.
	* config/alpha/alpha.c (print_operand): Don't continue processing
	after issuing error.
	(summarize_insn): Avoid use of UL in constant.

	* function.c (locate_and_pad_parm): Use host_integerp and tree_low_cst.

	* fold-const.c (force_fit_type): Unsigned values can overflow
	if they are sizetype.
	(int_const_binop): Don't use cache if overflows.

2000-10-20  Richard Henderson  <rth@cygnus.com>

	* function.c (locate_and_pad_parm): Zero alignment_pad.

	* regrename.c (rr_replace_reg): Rewrite to use recog_data to
	perform substitutions, and apply_change_group to see if it worked.

Fri Oct 20 13:33:16 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (add_bound_info): Also ignore COND_EXPR.

	* combine.c (struct undo): Change int to unsigned int.
	(do_SUBST_INT): Args are unsigned int.
	(make_extraction, force_to_mode): Use proper type when forming mask.
	(make_field_assignment): Likewise.

2000-10-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_info_recurse): Extract string constant
	initializers from non-volatile constant arrays and check them as
	formats.
	* c-typeck.c (decl_constant_value): Don't check pedantic or check
	for DECL_MODE (decl) != BLKmode.
	(decl_constant_value_for_broken_optimization): New function which
	includes these checks.
	(default_conversion, convert_for_assignment, digest_init): Use
	decl_constant_value_for_broken_optimization instead of
	decl_constant_value.

2000-10-20  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (DECL_ALIGN_UNIT): New macro.

2000-10-14  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr-protos.h (avr_output_bld): New.
	(out_shift_with_cnt): Add t_len argument.
	* config/avr/avr.c (avr_num_arg_regs): Remove -mpack-args.
	(output_movqi, output_movhi, output_movsisf): Optimize loading
	any constant with exactly one bit set to NO_LD_REGS.
	(out_shift_with_cnt): Optimize output code for size or speed,
	depending on optimize_size.  Handle small shift counts as well
	(if not hand-optimized in ?sh??i3_out).  Shifts can be done
	with or without a scratch register, with help of __tmp_reg__
	or __zero_reg__ if necessary.  Add T_LEN argument to pass the
	length of TEMPLATE in words, return total insn length in *LEN.
	(ashlqi3_out, ashrqi3_out, lshrqi3_out): Change all calls to
	out_shift_with_cnt to work with the above change.
	(ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out, lshrhi3_out,
	lshrsi3_out): Likewise.  Optimize more known shift count cases.
	Remove cases already well optimized in out_shift_with_cnt.
	(avr_output_bld): New function.
	* config/avr/avr.h (MASK_PACK_ARGS, TARGET_PACK_ARGS): Remove.
	(TARGET_SWITCHES): Remove -mpack-args backward compatibility.
	* config/avr/avr.md (*reload_inqi, *reload_inhi, *reload_insi):
	Add reload_completed to insn condition - only for peepholes.
	(ashlqi3, ashrqi3, lshrqi3): Correct insn length for shift counts
	in a register or memory.
	(ashlhi3, ashlsi3, ashrhi3, ashrsi3, lshrhi3, lshrsi3): Likewise.
	Do not require a scratch register.
	(*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const,
	*lshrhi3_const, *lshrsi3_const): New insns and matching peepholes.
	Optimize shifts by known count using a scratch register, but only
	if one is still available after register allocation.

2000-10-20  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* t-vax: New file.  Don't build modules from libgcc1.c.

Fri Oct 20 00:57:00 EDT 2000  John Wehle  (john@feith.com)

	* alias.c: (mark_constant_function): Don't check pure functions.
	Initialize and end alias analysis.
	(nonlocal_mentioned_p): Rename from nonlocal_reference_p.
	Don't make a special exception for recursion.  Handle
	UNSPEC_VOLATILE.  Don't assume ASM_OPERANDS is non-local
	unless it's volatile.

	* local-alloc.c (equivalence): New structure.
	(reg_equiv): Define.
	(contains_replace_regs): Remove array and use
	field in reg_equiv.
	(memref_referenced_p): Likewise.
	(no_equiv): Likewise.
	(update_equiv_regs): Likewise.

	(equiv_init_varies_p,
	equiv_init_movable_p): New functions.
	(update_equiv_regs): Use them.  Use rtx_varies_p
	instead of function_invariant_p.  Process insns
	from end to beginning.  Allow a REG_EQUIV insn
	within the same loop as a use to be moved, also
	allow it to be moved out of a loop.  Update
	REG_DEAD notes when substituting into an insn.

2000-10-19  Jim Wilson  <wilson@cygnus.com>

	* c-decl.c (start_decl): Check for error_mark_node type before using
	COMPLETE_TYPE_P.
	(finish_decl): Likewise.  Don't give an error if decl type is
	already error_mark_node.

	* haifa-sched.c (compute_trg_info): Add explanatory comments.
	New local update_blocks.  Use update_blocks to remove duplicates
	when computing update blocks.  Check for bblst_table overflow.
	(schedule_block): Add explanatory comment.  Reduce bblst_size by
	factor of 2.
	* config/ia64/ia64.md (movdi_symbolic): Document loss of REG_LABEL
	notes.

2000-10-19  Chandrakala Chavva   <cchavva@redhat.com>

	* libgcc2.c (_mulvsi3): Change variables u and v to a and b.

2000-10-19  Chandrakala Chavva   <cchavva@redhat.com>

	* expmed.c: Minor corrections in comments.
	* invoke.texi: Added desciption for the new option -ftrapv.

2000-10-19  Chandrakala Chavva   <cchavva@redhat.com>

	* libgcc2.c: Added the missing #endif.

Thu Oct 19 14:25:11 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.h (CONST_OK_FOR_LETTER): Re-add 'N'; document.

2000-10-18  Chandrakala Chavva  <cchavva@redhat.com>

	* expmed.c (expand_mult): Don't do synth_mult optimization for -ftrapv.
	Use smulv_optab for -ftrapv.
	(expand_mult_highpart): Use unsigned multiply.
	(expand_divmod): Special-case division by -1.
	For EXACT_DIV_EXPR, do right shift first, then the multiply.
	For complex divide, use abs with unsigned result.
	* expr.c (force_operand): Use unsigned multiply.
	(expand_expr): Use overflow-trapping optabs for signed types if
	flag_trapv.
	If flag_trapv, don't generate a recursive call with EXPAND_SUM
	if the type is signed and the original call wasn't EXPAND_SUM or
	EXPAND_INITIALIZER.
	* expr.h (addv_optab, subv_optab, smulv_optab, sdivv_optab): Declare.
	(negv_optab, absv_optab): Declare.
	* flags.h (flag_trapv): Declare.
	* genopinit.c (optabs): Add entries for addv_optab, subv_optab,
	smulv_optab, sdivv_optab, negv_optab and absv_optab.
	(gen_insn): Interpret '$P' as requiring an integer mode,
	including partial integer modes.
	* loop.c (emit_iv_add_mult): Use unsigned expand_mult_add.
	(product_cheap_p): Use unsigned expand_mult.
	* optabs.c (addv_optab, subv_optab, smulv_optab, sdivv_optab): Define.
	(negv_optab, absv_optab): Define.
	(expand_binop): Use overflow-trapping optabs for signed types if
	flag_trapv.
	Handle negv_optab libe neg_optab.
	(expand_abs): Take result_unsignedp argument instead of unsignedp one.
	Use overflow-trapping optabs for signed result if flag_trapv.
	(expand_complex_abs): Use overflow-trapping optabs for signed types if
	flag_trapv.
	Don't open-code complex absolute-value operation for flag_trapv.
	(init_optabs): Initialize addv_optab, subv_optab, smulv_optab,
	sdivv_optab, negv_optab and absv_optab.
	* toplev.c (flag_trapv): Define.
	(lang_independent_options f_options): Include flag_trapv.
	* tree.h (TYPE_TRAP_SIGNED): Define.
	* libgcc2.c (__addvsi3, __addvdi3, __subvsi3,__subvsi3, __subvdi3,
	__mulvsi3, __negvsi2, __negvdi2, __absvsi2, __absvdi2, __mulvdi3):
	New functions.
	* Makefile.in: add _absvsi2 _absvdi2 _addvsi3 _addvdi3 _subvsi3
	_subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2.

2000-10-18  Geoffrey Keating  <geoffk@cygnus.com>
	    David V. Henkel-Wallace  <gumby@cygnus.com>

	* config/i386/t-netware: Bring in from the Red Hat tree.
	* config/i386/netware.h: Likewise.
	* config/netware.h: Likewise.
	* config/rs6000/netware.h: Delete.
	* configure.in: Add i[34567]86-*-netware.
	* configure: Hand-edit to match configure.in change.

2000-10-18  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (flag_no_builtin): Declare.
	(flag_no_nonansi_builtin): Likewise.
	(c_common_nodes_and_builtins): Change prototype.
	* c-common.c (flag_no_builtin): New variable.
	(flag_no_nonansi_builtin): Likewise.
	(c_common_nodes_and_builtins): Remove parameters.  Adjust
	accordingly.
	* c-decl.c (flag_no_builtin): Remove.
	(flag_no_nonansi_builtin): Likewise.
	(init_decl_processing): Adjust call to
	c_common_nodes_and_builtins.

2000-10-18  Marc Espie <espie@openbsd.org>

	* tm.texi (LIBGCC_SPEC): Synch with reality.

2000-10-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_types): Check for writing through a
	NULL pointer argument.

2000-10-18  Hans-Peter Nilsson  <hp@axis.com>

	* tm.texi (Exception Region Output): Document
	DWARF_CIE_DATA_ALIGNMENT.
	* dwarf2out.c (DWARF_CIE_DATA_ALIGNMENT): Wrap definition in
	#ifndef.
	[ENABLE_CHECKING] (reg_save): Abort if offset is not a multiple of
	DWARF_CIE_DATA_ALIGNMENT.

2000-10-18  Michael Hayes  <mhayes@cygnus.com>

	* basic-block.h (struct loop): Delete fields pre_header_root
	and pre_header_trace and replace with pre_header_edges
	and num_pre_header_edges.
	* flow.c (flow_loop_dump): Dump pre_header_edges.
	(flow_loops_free): Free pre_header_edges.
	(flow_loop_pre_header_scan): Calculate pre_header_edges.

2000-10-18  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* contrib.texi: Update references to steering committee members
	and Jeff Law's entry.

2000-10-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (CPLUSPLUS_STD_VER, C_STD_VER, C_STD_NAME): Define.
	(maybe_read_dollar_number, check_format_info_main): Use them for
	pedantic warning messages.

2000-10-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_info_main): Minor cleanup: move
	variables into inner scopes; initialize declarations where
	appropriate; don't hardcode "scanf" name on warning for zero
	width.

2000-10-17  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (back_end_hook): New variable.
	* c-common.h (back_end_hook): Declare it.
	* c-lang.c (finish_file): Use it.

	* emit-rtl.c (init_emit_once): Initialize the const_int_htab
	earlier.

2000-10-18  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_comparison_operator, put_condition_code,
	ix86_match_ccmode, ix86_cc_mode): Handle CCRCmode.
	(ix86_expand_strlensi_unroll_1): Use CCRCmode.
	* i386.h (EXTRA_CC_MODES): Add CCRCmode.
	* i386.md (adddi and negdi splitter): Use CCRCmode.
	(add?i_3, add?i_4, add?i_5): Use CCRCmode; swap operands
	(subsi3_carry): add '*'
	(addsi3_carry_rc, subsi3_carry_rc, x86_movsicc_0_m1_rc): New.
	(cmp to add peep2): Use CCRCmode; swap operands.

2000-10-18  Kazu Hirata  <kazu@hxi.com>

	* h8300.c: Fix a comment typo.
	(round_frame_size): New.
	(compute_saved_regs): Likewise.
	(push): Likewise.
	(pop): Likewise.
	(push_order): Remove.
	(pop_order): Likewise.
	(function_prologue): Rearrange code for readability.
	(function_epilogue): Likewise.

	* config/h8300/h8300.md: Remove an unnecessary sign_extend
	expander that is used when not optimizing.  Output a tab after
	each assembly insns.

	* reorg.c: Fix formatting.

2000-10-17  Joern Rennecke <amylaar@redhat.co.uk>

	* reload1.c (move2add_note_store): Check for simple
	auto-inc in destination.

2000-10-17  Michael Chastain  <chastain@redhat.com>

	* config/i386/i386-aout.h: define INT_ASM_OP.

Tue Oct 17 20:11:08 2000  Alan Modra <alan@linuxcare.com.au>

	* pa.c (print_operand): Handle case 'c' for .vtable_inherit

Tue Oct 17 20:05:51 2000  Martin Buchholz <martin@xemacs.org>

	* i370.md: Fix spelling typo.

2000-10-17  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* function.c (locate_and_pad_parm): Don't align stack unconditionally.
	Fixes execute/20001017-1.c on powerpc-linux-gnu.

	* expr.c (store_constructor): Apply MEM_ALIAS_SET to MEMs only.
	* rs6000/rs6000.c (rs6000_hash_constant): Use X0INT to access a
	LABEL_REF.

	* rs6000/rs6000.h (NO_DOLLAR_IN_LABEL, DOLLARS_IN_IDENTIFIERS,
	ENCODE_SECTION_INFO, ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Move from
	here...
	* rs6000/aix.h: ...to here.
	* rs6000/linux.h (ASM_APP_ON, ASM_APP_OFF): Define to Linux-style.

2000-10-17  Jakub Jelinek  <jakub@redhat.com>

	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Reload gp if needed.

	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Always use call, make
	sure linker can relax even the delay slot mov %g1,%o7, fix output
	formating.

2000-10-17  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Remove an unnecessary zero_extend
	expander that is used when not optimizing.  Output a tab after
	each assembly insns.

2000-10-17  Chandrakala Chavva  <cchavva@redhat.com>

	* gcc.c: New options --target-help.
	(process_command): Added code to parse this new option.
	* toplev.c (display_target_options): New function to support the
	above new option.
	* cppinit.c (new_pending_directive) : New option OPT_target__help.
	(cpp_handle_option): Support this new option.
	* invoke.texi: Added notes about --target-help option.

2000-10-17  Graham Stott  <grahams@redhat.com>

	* config/i386/i386.md (testqi_1): Add missing operand prefix
	for operand 0.
	* config/i386/i386-protos.h: Add missing prototype.

2000-10-17  Diego Novillo  <dnovillo@cygnus.com>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Symbol
	_GLOBAL_OFFSET_TABLE should not have a $ prefix when
	using -mintel-syntax.

2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (FMT_FLAG_DOLLAR_MULTIPLE): Define.
	(format_types): Use it for printf.
	(maybe_read_dollar_number): Add parameter for the kind of format
	involved.  Warn for multiple use for arguments if this is
	inappropriate for the kind of format involved.
	(check_format_info_main): Update calls to maybe_read_dollar_number.

2000-10-17  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* inclhack.def (hpux_maxint): Also apply fix to values.h.
	* fixincl.x: Rebuilt.

2000-10-17  Alexandre Oliva  <aoliva@redhat.com>

	* genrecog.c (write_switch): Return the first condition that needs a
	label.

2000-10-17  Bernd Schmidt  <bernds@redhat.co.uk>

	* c-tree.h (warn_sequence_point): Move declaration to...
	* c-common.h (warn_sequence_point): ... here.
	* c-decl.c (warn_sequence_point): Move definition to...
	* c-common.c (warn_sequence_point): ... here.
	(struct reverse_tree): New.
	(reverse_list, reverse_max_depth): New static variables.
	(build_reverse_tree, common_ancestor, modify_ok
	verify_sequence_points): New functions.
	(c_expand_expr_stmt): Call verify_sequence_points if -Wsequence-point.
	* c-typeck.c (check_modify_expr): Delete.
	(build_modify_expr): Don't call it.

2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.h (warn_missing_format_attribute): New variable.
	* c-decl.c (warn_missing_format_attribute): New variable.
	(c_decode_option): Decode -Wmissing-format-attribute and
	-Wno-missing-format-attribute.
	* c-common.c (check_function_format): If
	-Wmissing-format-attribute, give a warning where a vprintf or
	vscanf function is called by a function without its own printf or
	scanf attribute.
	* toplev.c (documented_lang_options): Add
	-Wmissing-format-attribute.
	* invoke.texi: Document -Wmissing-format-attribute.

2000-10-17  Marc Espie <espie@openbsd.org>

	* invoke.texi (-shared): Insist on requiring code generation flags
	to be used along with -shared, and document the subtle failure that
	may occur otherwise.

2000-10-16  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (return_internal): Move `use' after `return'.

2000-10-16 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>

	* machmode.def: Correct comment.

2000-10-16  Rodney Brown  <RodneyBrown@mynd.com>

	* print-rtl.c (print_rtx_head): Constify.
	* rtl.h (print_rtx_head): Similarly.

	* config/pa/pa/pa-protos.h (output_64bit_and, output_64bit_ior):
	Constify char * return value.
	* config/pa/pa/pa.c
	(output_64bit_and, output_64bit_ior): Constify char * return value.
	(pa_can_combine_p): Make static.
	(function_arg): Decorate unused `named' argument. Fix comment typo.
	(function_arg_partial_nregs): Decorate unused `named' argument.

2000-10-16  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (format_check_results): New structure.
	(finish_dollar_format_checking): Adjust to take a
	format_check_results * parameter.
	(check_format_info, check_format_info_recurse,
	check_format_info_main): Split check_format_info into three
	functions, the main checking going in check_format_info_main.
	Recurse when any reduction of the format string argument towards a
	string literal is done; go down both branches of a conditional
	expression.  Don't warn for extra format arguments or empty format
	strings if they only occur in some branches of a conditional
	expression.

2000-10-16  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Remove obstack.  Include ggc.h.

2000-10-16  Jakub Jelinek  <jakub@redhat.com>

	* rtlanal.c (may_trap_p): Check operand modes of COMPARE.

2000-10-15  Diego Novillo  <dnovillo@cygnus.com>

	* i386.md (*movsi_or): Switch operand order for intel syntax.

2000-10-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* PROBLEMS: Remove.

	* gcc.texi (Contributing): Update.

2000-10-13  Diego Novillo  <dnovillo@cygnus.com>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Output final jump using
	appropriate assembler dialect.

2000-10-13  Alexandre Oliva  <aoliva@redhat.com>

	* c-common.c (c_expand_builtin): PARAMS-ize prototype.

2000-10-12  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (output_movhi, output_movsisf): Fix loading
	constants 1 and 2 to NO_LD_REGS.

2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (c-parse.c, tradcif.c): Create atomically.

	* objc/Make-lang.in (objc-parse.c): Likewise.

2000-10-13  Richard Earnshaw <rearnsha@arm.com>

	* arm.c: Include obstack.h
	(minipool_obstack, minipool_startobj): Define.
	(arm_add_gc_roots): Initialize them.
	(create_fix_barrier): Use our new obstack.
	(push_minipool_barrier, push_minipool_fix): Likewise.
	(arm_reorg): Release obstack memory.

2000-10-13  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (nonlocal_goto_receiver): Remove.
	(prologue, exception_receiver, builtin_setjmp_receiver): New
	patterns.
	* config/sparc/sparc.h (FINALIZE_PIC): Remove.
	* config/sparc/sparc-protos.h (finalize_pic): Remove.
	(load_pic_register): New prototype.
	* config/sparc/sparc.c (pic_setup_code): Remove.
	(finalize_pic): Rename to...
	(load_pic_register): ...this function.
	Don't look for nonlocal_goto_receivers and emit pic setup code
	directly.  Don't check current_function_uses_pic_offset_table.

2000-10-13  Richard Earnshaw <rearnsha@arm.com>

	* tree.h (struct obstack): Declare.

2000-10-12  Mark Mitchell  <mark@codesourcery.com>

	Remove obstacks.
	* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

Thu Oct 12 16:02:31 MET DST 2000 Jan Hubicka  <jh@suse.cz>

	* i386.md (adddi3, subdi3 splitters): Update for new pattern.
	(addsi3_cc, addqi3_cc, subsi3_cc): Remove
	(addsi3_carry): Canonicalize.
	(addqi_5): Remove '*'.
	(sbb pattern): Canonicalize.

	* i386.md (cmp to inc/add peep2): New.

2000-10-12  Richard Earnshaw  <rearnsha@arm.com>

	* bb-reorder.c (reorder_basic_blocks): Allocate an aux block for
	the exit block.

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

	* gcc.texi: Merge in contents of README.TRAD and TESTS.FLUNK.
	* README.TRAD, TESTS.FLUNK: Remove.

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

	* c-common.c (decl_attributes): Don't allow strftime formats with
	first_arg_num nonzero.
	(check_format_info): Set wanted_type and wanted_type_name to zero
	before they are possibly assigned and used.

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

	* c-common.c (scanf_flag_specs): Add flags ' and I.
	(strftime_flag_pairs): Disallow any pair of the _, - and 0 flags,
	or the ^ and # flags together.
	(scan_char_table): Handle the ' and I flags.
	(format_types): Add ' and I flags for scanf.

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

	* c-common.c (print_char_table): Use the unpromoted type for
	lengths "h" and "hh" with conversions dioxXu.
	(check_format_types): Apply the default argument promotions where
	the wanted type is not a pointer target.

2000-10-11  Michael Meeks  <mmeeks@gnu.org>
	    Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (check_modify_expr): New function.
	(build_modify_expr): Call it if warn_sequence_point.
	* c-decl.c (warn_sequence_point): New variable.
	(c_decode_option): Handle -Wsequence-point and
	-Wno-sequence-point.  Enable -Wsequence-point as part of -Wall.
	* c-tree.h (warn_sequence_point): Declare.
	* invoke.texi (-Wsequence-point): Document.
	* toplev.c (documented_lang_options): Add -Wsequence-point and
	-Wno-sequence-point.
	Original work by Michael Meeks, 16 Jun 1998.

Wed Oct 11 06:15:41 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (get_narrower): Don't look at precision of field if
	not laid out yet.

Tue Oct 10 23:14:33 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (valid_machine_decl_attribute): Allow `extern'
	declaration for data with "progmem" attribute.

2000-10-09  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (out_shift_with_cnt): Use AS2 macro.
	Correct insn length if shift count is a memory operand.
	* config/avr/avr.md: New define_peephole2 to use *reload_inqi.
	(*iorhi3_clobber): Change lo8 to hi8.
	(zero_extendhisi2): Change %B0 to %A1.
	(ashlhi3, ashrhi3): Correct insn length.
	(andhi3, abssf2, extendqisi2, extendhisi2): Change "cc"
	from "clobber" to "set_n" in some alternatives.

2000-10-10  Jakub Jelinek  <jakub@redhat.com>

	* reload1.c (calculate_needs_all_insns): If deleting an instruction,
	remove its insn_chain structure as well.

2000-10-09  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* dbxout.c (dbxout_source_line): Remove extra tab.

2000-10-09  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/elfos.h (UNIQUE_SECTION): Apply STRIP_NAME_ENCODING on name.

2000-10-09  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (LANG_LIB2FUNCS): Remove.
	(LIB2FUNCS): Remove _pure.
	(LIB2ADD): Remove LANG_LIB2FUNCS.
	(stage_a): Don't set LANG_LIB2FUNCS.
	* libgcc2.c (__terminate): Mark noreturn.
	(__pure_virtual): Remove.
	* mklibgcc.in: Remove LIB2ADD .txt processing.

2000-10-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (push_multi): Revert unintended change.

2000-10-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c: Miscellaneous white space and comment clean-ups.  No
	functional change.
	* arm.md: Likewise.

2000-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (c_expand_builtin_printf): Set the TREE_TYPE of a new
	STRING_CST by calling combine_strings.

2000-10-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_expand_movstrqi): Rewrite to support SSA form.
	(thumb_output_move_mem_multiple): Support new insn format.
	* arm.md (movmem12b): Use SSA compatible format.
	(movmem8b): Likewise.

2000-10-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (predicable): New attribute, default to "no".
	(all patterns): Mark as predicable if appropriate.
	(conditional execution splits): Split using predication format.
	(define_cond_exec): Define.
	* arm.c (arm_print_operand): handle insn predicate.

2000-10-09  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.NS32K: Remove file.

2000-10-09  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README-bugs: Remove file.

2000-10-08  Philipp Thomas  <pthomas@suse.de>
	* aclocal.m4 (AM_GNU_GETTEXT): Fix non portable use of == operator
	for test.
	* configure: Rebuilt.

2000-10-08  Philipp Thomas  <pthomas@suse.de>
	* aclocal.m4 (AM_WITH_NLS): When not using included gettext,
	disable catalog building if no suitable program was found.
	Move warning message from here
	(AM_GNU_GETTEXT): To here.
	* configure: Rebuilt.

2000-10-08  Philipp Thomas  <pthomas@suse.de>
	* aclocal.m4 (GCC_PATH_PROG): New. Like AC_PATH_PROG but uses
	different cache variables.
	(GCC_PATH_PROG_WITH_TEST): New. Like AM_PATH_PROG_WITH_TEST but
	uses different cache variables.
	(AM_WITH_NLS): Use GCC_PATH_PROG and GCC_PATH_PROG_WITH_TEST.
	* configure: Regenerated.

2000-10-08  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (libgcc.mk): Pass SHLIB_EXT, not SHLIB_LIBS.
	* configure.in (sparc*-*-solaris*): Use t-slibgcc{,-sld}.
	* mklibgcc.in: Consider SHLIB_LINK the entire shlib build command.
	Use SHLIB_EXT.

	* config/t-linux (SHLIB_EXT): New.
	(SHLIB_LINK): Use the entire build command, with substitutions.
	(SHLIB_LIBS): Remove.
	* config/alpha/t-osf4: Likewise.
	* config/mips/t-iris6: Likewise.
	* config/sparc/t-sol2: Likewise, but move shlib stuff...
	* config/sparc/t-slibgcc-sld: ...here.
	* config/sparc/t-slibgcc: New file.

2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* tm.texi (INTMAX_TYPE, UINTMAX_TYPE): Define.
	* c-common.h (enum c_tree_index): Add CTI_INTMAX_TYPE and
	CTI_UINTMAX_TYPE.
	(intmax_type_node, uintmax_type_node): Define.
	* c-common.c (decl_attributes): If pedantic, warn if `mode'
	attributes create a type wider than intmax_t.
	(T_IM, T_UIM): Define properly.
	* c-decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
	defined.
	(init_decl_processing): Initialize intmax_type_node and
	uintmax_type_node.
	* c-lex.c (lex_number): When pedantic and warning for integer
	constants that are too large, in C99 mode warn for those that have
	a type wider than long long.

2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (FMT_FLAG_ARG_CONVERT, FMT_FLAG_SCANF_A_KLUDGE,
	FMT_FLAG_FANCY_PERCENT_OK): Define.
	(format_char_info): Add flag "4" to comment.
	(format_flag_spec, format_flag_pair): New structures.
	(format_kind_info): Add additional fields to control format
	checking.
	(printf_flag_specs, printf_flag_pairs, scanf_flag_specs,
	scanf_flag_pairs, strftime_flag_specs, strftime_flag_pairs): New
	arrays.
	(time_char_table): Use "4" flag to handle %Ey.
	(format_types): Add entries for new fields.
	(get_flag_spec): New function.
	(check_format_info): Increase size of flag_chars[] to 256.
	Control format checking using the new fields of a format_kind_info
	and the new tables; remove all conditionals on printf_format_type,
	scanf_format_type or strftime_format_type.  Handle all details of
	bad combinations of flags (including width, precision and strftime
	modifiers) through data rather than ad hoc code.  Handle all
	details of standard versions in which flags appeared through
	data.  Use the "4" flag.

2000-10-07  Will Cohen  <wcohen@redhat.com>, Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Remove the memory alternative and correct
	the insn lengths in the templates for sign extension and zero
	extension.

2000-10-07  Richard Henderson  <rth@cygnus.com>

	* calls.c (expand_call): Disallow sibcalls to noreturn functions.
	* flow.c (make_edges): Revert last change.

	* config/alpha/alpha.h (FUNCTION_OK_FOR_SIBCALL): Don't test
	TREE_THIS_VOLATILE.
	* config/pa/pa.h (FUNCTION_OK_FOR_SIBCALL): Likewise.

2000-10-06  David O'Brien  <obrien@dragon.nuxi.com>

	* config/alpha/elf.h: Standardize the formatting.

2000-10-06  David O'Brien  <obrien@FreeBSD.org>

	* config/alpha/elf.h: Protect the ASM_OUTPUT_IDENT definition with an
	#undef.

2000-10-06  Richard Henderson  <rth@cygnus.com>

	* function.c (diddle_return_value): Examine
	current_function_return_rtx instead of the DECL_RESULT.
	(expand_function_end): Handle reloading DECL_RESULT from memory
	into a hard register.  Query promote_mode for sign of mismatched
	modes.

2000-10-06  Vladimir Makarov  <vmakarov@touchme.toronto.redhat.com>

	* haifa-sched.c (schedule_insns): Fix typo in freeing
	forward_dependency_cache.

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

	* config/sh/sh.md (calli_pcrel, call_valuei_pcrel): Add
	`TARGET_SH2' as a condition.

2000-10-06  Vladimir Makarov  <vmakarov@touchme.toronto.redhat.com>

	* haifa-sched.c (anti_dependency_cache, output_dependency_cache,
	forward_dependency_cache): New variables.
	(add_dependence, remove_dependence): Use anti_dependency_cache and
	output_dependency_cache.
	(compute_block_forward_dependences): Use forward_dependency_cache.
	(schedule_insns): Allocate and free memory for anti/output/forward
	dependencies caches.

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

	* config/sh/sh.md (call, call_value): Use `TARGET_SH2' instead of
	`! TARGET_SH1'.  Reindent.

2000-10-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (is_valid_printf_arglist, expand_builtin_printf):
	Move functions from here ...

	* c-common.c (is_valid_printf_arglist, c_expand_builtin_printf):
	... to here.
	(c_expand_builtin): New function.
	(init_function_format_info): Don't set `check_function_format_ptr'.
	(c_common_nodes_and_builtins): Set built_in_class type for
	printf/__builtin_printf to BUILT_IN_FRONTEND.
	(c_expand_expr): Handle CALL_EXPRs that are front-end builtins.

	* c-common.h (build_function_call): Declare.

	* expr.c (expand_expr): Pass builtins with class BUILT_IN_FRONTEND
	to `lang_expand_expr' rather than `expand_builtin'.

	* tree.c (check_function_format_ptr): Delete.

	* tree.h (check_function_format_ptr): Likewise.

2000-10-06  Hans-Peter Nilsson  <hp@bitrange.com>

	* dwarf2out.c (build_cfa_loc): Correct to use DW_OP_regx or
	DW_OP_bregx when cfa->reg > 31.

	* frame-dwarf2.c (decode_stack_op) [case DW_OP_regx]: Add missing
	break.

2000-10-05  Richard Henderson  <rth@cygnus.com>

	* c-decl.c (warn_missing_noreturn): Remove.
	(c_expand_body): Don't set or check can_reach_end.
	* c-tree.h (warn_missing_noreturn): Move ...
	* flags.h: ... here.
	(can_reach_end): Remove.
	* flow.c (check_function_return_warnings): New.
	(make_edges): No edge to exit for noreturn sibcalls.
	* function.c (expand_function_end): Save the return value
	clobber instruction.
	(mark_function_status): Mark it.
	* function.h (struct function): Add x_clobber_return_insn.
	* jump.c (can_reach_end): Remove.
	(calculate_can_reach_end): Remove.
	(jump_optimize_1): Don't call it.
	* output.h (check_function_return_warnings): Declare.
	* toplev.c (warn_missing_noreturn): Move from c-decl.c
	(rest_of_compilation): Call check_function_return_warnings.

2000-10-05  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (NM_FOR_TARGET): New.
	(libgcc.mk): Pass SHLIB_MKMAP, SHLIB_MAPFILES.
	(libgcc.a, stmp-multilib): Pass NM_FOR_TARGET.
	* mklibgcc.in: If SHLIB_MKMAP, build libgcc.map.  Depend the
	shared library build on that and EXTRA_MULTILIB_PARTS.
	* mkmap-flat.awk: New file.
	* mkmap-symver.awk: New file.
	* libgcc-std.ver: New file.
	* config/libgcc-glibc.ver: New file.
	* config/ia64/libgcc-ia64.ver: New file.
	* config/t-linux (SHLIB_MKMAP, SHLIB_MAPFILES): New.
	(SHLIB_LINK): Add --version-script.
	* config/ia64/t-ia64 (SHLIB_MAPFILES): Add libgcc-ia64.ver.
	* config/mips/t-iris6 (SHLIB_MKMAP, SHLIB_MAPFILES): New.
	* config/sparc/t-sol2 (SHLIB_MKMAP, SHLIB_MAPFILES): New.
	(SHLIB_LINK): Add -M.

2000-10-05  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (LIB2FUNCS): Add _clz.
	* libgcc2.c (__ffsdi2): Use count_trailing_zeros.
	(__clz_tab): Put in its own unit, non-static.
	* libgcc2.h: Always include longlong.h.

	* longlong.h [alpha] (count_leading_zeros): Use cmpbge with
	a zero instead of -1.
	(count_trailing_zeros): Likewise.

2000-10-05  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_emit_setcc): Don't swap GT tests
	when second op1 is const0_rtx.  Validate op0 as a register.
	* config/alpha/alpha.md (setcc_internal): Don't allow constants
	in the first argument of the compare.
	(setcc_swapped_internal): Likewise.
	(setne_internal): Likewise.

2000-10-05  Geoff Keating  <geoffk@cygnus.com>

	* tree.c (tree_size): New function split out of copy_node.
	(make_node): Remove obstack handling.  Use tree_size.
	(copy_node): Use tree_size.
	* tree.h: Prototype tree_size.

2000-10-05  Richard Henderson  <rth@cygnus.com>

	* diagnostic.c (output_format): Add missing break.

2000-10-05  Jim Wilson  <wilson@cygnus.com>

	* function.c (fixup_var_refs_1, case SET): When gen_move_insn returns a
	SEQUENCE, call emit_insn_before, copy PATTERN and REG_NOTES of last
	sequence insn to INSN, and delete last sequence insn.

2000-10-05  Phil Edwards  <pme@gcc.gnu.org>

	* gcc.c (main): Include generated configargs.h header
	and use arguments in '-v' output.

Thu Oct  5 16:16:57 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc.c: Move data on prefixes forward in file and reorganize.
	(md_exec_prefix, md_startfile_prefix, md_startfile_prefix_1):
	Always define, but make null if no value.
	(static_specs): Add "md_exec_prefix", "md_startfile_prefix",
	and "md_startfile_prefix_1".
	(main): Check whether md_exec_prefix and the others are the
	null string rather than whether the macro is defined.

Thu Oct  5 19:04:18 2000  J"orn Rennecke <amylaar@redhat.co.uk>

	* (convert_move): Use zero_extendpsisi2 to do an unsigned extension
	from PSImode to SImode.

2000-10-05  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (gen_lowpart_common) [REAL_ARITHMETICS]: Fix conversion
	from float to integral mode with HOST_BITS_PER_WIDE_INT 64.
	* dwarf2out.c (add_const_value_attribute): Divide by 4, not
	sizeof(long).

Thu Oct  5 09:31:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (fold, case MINUS_EXPR, case EQ_EXPR): Perform
	negation in proper type.a

2000-10-04  Richard Henderson  <rth@cygnus.com>

	* configure.in (enable-shared): New.
	* Makefile.in (LIBGCC_DEPS): Depend on EXTRA_PARTS as well.
	(libgcc.mk): Pass SHLIB_LINK, SHLIB_LIBS, SHLIB_MULTILIB to mklibgcc.
	* mklibgcc.in: Use them to link shared a libgcc.
	* config/t-linux (SHLIB_LINK, SHLIB_LIBS): New.
	* config/alpha/t-ieee (SHLIB_MULTILIB): New.
	* config/mips/t-iris6 (SHLIB_LINK, SHLIB_LIBS): New.
	* config/sparc/t-sol2 (SHLIB_LINK, SHLIB_LIBS): New.

	* configure.in (alpha-osf*): Use t-osf and x-osf.
	* config/alpha/t-osf: New file.
	* config/alpha/t-osf4: New file.
	* config/alpha/x-osf: New file.
	* config/alpha/x-alpha: Remove file.

2000-10-04  Will Cohen  <wcohen@redhat.com>

	* c-typeck.c (process_init_element): Added warning for zero-length
	array.

	* extend.texi (Zero Length): State that static initializers for
	zero-length arrays are not allowed.

Mon Oct  2 14:50:14 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (single_set_1): Do not require USE and CLOBBERs
	to come last.

2000-10-03  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/float-c4x.h: New.
	* configure.in (c4x-*): Set float_format to c4x.
	* configure: Regenerate.

2000-10-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (sparc-*-solaris2*): Disable 32-to-64 cross
	compilation for solaris versions 2.7 and greater.

2000-10-02  Marc Espie <espie@openbsd.org>

	* config/alpha.h (WORD_SWITCH_TAKES_ARG): add -rpath to default,
	instead of redefining from scratch.

2000-10-02  David O'Brien  <obrien@dragon.nuxi.com>

	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Define.

2000-10-01  Mark Mitchell  <mark@codesourcery.com>

	* config/ns32k/genix.h: Remove.
	* config/ns32k/x-genix: Likewise.
	* config/ns32k/xm-genix.h: Likewise.
	* config/fx80: Remove all filee in directory.
	* config/pyr: Likewise.
	* config/tahoe: Likewise.
	* config/gmicro: Likewise.
	* config/spur: Likewise.
	* configure.in: Remove configury bits for above targets.
	* configure: Regenerated.

	* configure.in: Don't configure chill by default.
	* configure: Regenerated.

	* c-decl.c (c_expand_body): Don't generate RTL if flag_syntax_only.
	(lang_mark_false_label_stack): Remove.
	* c-lex.c (init_c_lex): Add file_info_tree as GC root.  Allocate
	<top level> string in GC area.
	(mark_splay_tree_node): New function.
	(mark_splay_tree): Likewise.
	* except.c (mark_eh_status): Only call lang_mark_false_label_stack
	if it exists.
	* ggc-callbacks.c (lang_mark_false_label_stack): Remove.
	* ggc-common.c (lang_mark_false_label_stack): Change type.
	* ggc.h (ggc_alloc_string): Add comment.
	(ggc_strdup): New function.

Sat Sep 23 19:10:20 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.h (BRANCH_COST): Define as 0.

	* config/pdp11/pdp11.c: #include "tree.h" added.

2000-09-30  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (ashlhi3_out, ashlsi3_out, ashrhi3_out,
	ashrsi3_out, lshrhi3_out, lshrsi3_out): Optimize more cases
	with known shift count.
	* config/avr/avr.md (ashlsi3, ashrsi3, lshrsi3):
	New alternative for shift count 2 with no scratch register.
	(ashlhi3, ashlsi3): Change "cc" attribute from "clobber" to
	"set_n" for shift counts 1 and 2.

2000-09-30  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (movsi_to_cr): Remove the USE.  Calculate
	the mask value from the individual SET operations.
	(return_internal_si): Move the USE after the RETURN.
	(return_internal_di): Likewise.
	(return_and_restore_fpregs_si): Likewise.
	(return_and_restore_fpregs_di): Likewise.
	(return_eh_si): Likewise.
	(return_eh_di): Likewise.
	* config/rs6000/rs6000.c (mtcrf_operation): Don't look for,
	or check, the USE.
	(rs6000_emit_prologue): Don't emit the USE for movsi_to_cr.
	Don't generate a PARALLEL around a single operation movsi_to_cr.
	Generate the RETURN first in any PARALLELs.

	* rtlanal.c (single_set_1): Use fatal_insn to display the
	invalid insn.  Check for more cases when a USE or CLOBBER occurs
	before a SET.
	* Makefile.in: Update dependencies for rtlanal.o.

2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>

	* i386.c: Move include of "config.h" to before that of <setjmp.h>.

2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-tree.texi, contrib.texi, gcc.texi, install.texi, invoke.texi:
	Consistently use @email for formatting email addresses.

2000-09-29  Richard Henderson  <rth@cygnus.com>

	* cse.c (notreg_cost): New argument outer.
	(COST): Pass in SET to notreg_cost
	(COST_IN): New.
	(fold_rtx): Use COST_IN.  Prefer constants when costs
	are the same.

2000-09-29  David Edelsohn  <edelsohn@gnu.org>

	* fixinc/inclhack.def (broken_cabs): Generalize regex.
	* fixinc/fixincl.x: Regenerate.

2000-09-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* loop.c (check_final_value): A GIV is not replaceable if used
	before set.

Fri Sep 29 10:04:12 2000  Jeffrey A Law  (law@cygnus.com)

	* version.c: Bump to gcc-2.97.

Frs Sep 29 13:37:59 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* final.c (final_scan_insn): Remove extra extract_insn call;
	Use caching for constrain_operands.
	(cleanup_subreg_operands): Use caching for extract_insn.
	* recog.c (constrain_operands_cached): New.
	* recog.h (constrain_operands_cached): Declare.
	* i386.c (ix86_attr_length_immediate_default,
	ix86_attr_length_address_default, ix86_agi_dependant): Cache
	extract_insn call.

	* recog.c (asm_noperands): Tweak.
	(extract_insn): Do not call asm_noperads for non-asm instructions.

Fri Sep 29 13:20:42 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* recog.c (recog_memoized): Rename to recog_memoized_1.
	* recog.h (recog_memoized): Rename to recog_memoized_1.
	(recog_memoized): New macro.
	* rtl.h (single_set): Rename to single_set_1
	(single_set): New macro.
	* rtlanal.c (single_set): Rename to single_set_1;  expect clobbers
	to be last.

	* i386.md (strmovsi_1, strmovhi_1 strmovqi_1):
	Do not use match_dup of input operands at outputs.
	Use register_operand for memory expression.
	(rep_movsi): Put use last, canonicalize.
	Use register_operand for memory expression.
	(rep_movqi): Put use last.
	Use register_operand for memory expression.
	(strsetsi_1, strset_hi_1, strsetqi_1): Do not use match_dup
	of input operands at outputs.  Use register_operand for memory
	expression.
	(rep_stossi): Put use last; canonicalize; fix match_dup in
	the address expression
	(rep_stosqi): Likewise.
	(memcmp expander): Update calls.
	(cmpstrsi_nz_1, cmpstrsi_1, strlensi_1): Avoid match_dups in
	the clobbers.

	* i386.md (fp_jcc_3, fp_jcc_4, jp_fcc_5): if_then_else operand is
	VOIDmode.
	(fp_jcc_4, fp_jcc_3): Refuse unordered comparisons.

2000-09-28  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/freebsd-aout.h: New, FreeBSD a.out config file.
	Contains the old contents of config/i386/freebsd.h
	* config/i386/freebsd.h: Now the ELF rather than a.out config file.
	Contains the old contents of config/i386/freebsd-elf.h
	* config/i386/freebsd-elf.h: Retire this file -- contents moved to
	config/i386/freebsd.h.
	* configure.in: Adjust for above changes.
	* po/POTFILES.in: Likewise.
	* po/en_GB.po: Likewise.
	* po/gcc.pot: Likewise.
	* configure: Rebuilt.

2000-09-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* doloop.c (doloop_modify): Prevent delete_insn() from
	deleting too much.  Prefer loop->top over loop->start as
	target for the new JUMP insn.
	(doloop_valid_p): Ignore loop with exit_count != 0.

2000-09-28  Philipp Thomas  <pthomas@suse.de>

	* invoke.texi (i386 Options): Add athlon to table of possible
	choices for -mcpu=.

2000-09-28  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (output_clear_message_text): New function.
	(output_message_text): New macro.

	* diagnostic.c (clear_text_info): Rename to
	output_clear_message_text.
	(output_clear): Adjust.
	(output_finish): Rename to output_finalize_message.  Tweek.
	(output_to_stream): Adjust.

2000-09-28  Neil Booth  <neilb@earthling.net>

	* cpperror.c (_cpp_begin_message):  Do the test for suppression
	of warnings and pedantic warnings before the "is a warning an
	error" tests.
	* cppinit.c (cpp_handle_option): Remove surplus \n.
	* cpplex.c (ON_REST_ARG): Delete.
	(skip_block_comment): Initialize prevc.
	(parse_args): Improve error messages.
	(maybe_paste_with_next): Use CONTEXT_VARARGS rather
	than ON_REST_ARG.
	* cpplib.c (cpp_push_buffer): Fix grammar in message.
	* cppmain.c (main): Set callbacks for #ident and #pragma
	only if no_output option is false.
	(do_pragma_implementation): Only call the #pragma handler
	if it is set in the cpp_reader structure.

Wed Sep 27 14:00:07 2000  Donald Lindsay  <dlindsay@cygnus.com>

	* integrate.c (copy_insn_list): if an ignored return value
	is being clobbered, skip cloning that into the inline copy.

2000-09-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi, invoke.texi, gcc.texi, install.texi: Consistently
	use @uref for formatting URLs.

2000-09-27  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (UNIQUE_SECTION): Constify the variables
	name and prefix.

Tue 26-Sep-2000 18:25:38 BST  Neil Booth  <neilb@earthling.net>

	* gcc.c (cpp_options): Add spec for -ftabstop=.
	(invoke_as): New spec that handles invoking as.
	Update specs to handle -save-temps and -traditional.
	* ch/lang-specs.h, f/lang-specs.h, java/lang-specs.h:
	Use invoke_as.
	* cp/lang-specs.h, objc/lang-specs.h: Update to use
	invoke_as, and handle -save-temps and -traditional (if
	appropriate).

2000-09-26  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (sparc_emit_set_const64): Don't abort when
	op0 is a SUBREG.
	(function_arg_slotno): Accept TImode/CTImode.
	* config/sparc/sparc.h (MIN_UNITS_PER_WORD): If IN_LIBGCC2 define
	to UNITS_PER_WORD.

2000-09-26  Michael Hayes  <mhayes@cygnus.com>

	* flow.c (flow_loop_pre_header_scan): Punt if loop enters
	from entry block.

2000-09-25  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (INDEX_REG_CLASS): Define to GENERAL_REGS.
	(REGNO_OK_FOR_INDEX_P): Define to REGNO_OK_FOR_BASE_P.
	(LEGITIMATE_ADDRESS_DISP): Use LEGITIMATE_ADDRESS_REG.
	(REG_OK_FOR_INDEX): Define to REG_OK_FOR_BASE_P.

Tue 26-Sep-2000 00:16:22 BST  Neil Booth  <neilb@earthling.net>

	* cpplex.c (parse_args): Don't set VOID_REST flag.
	(CONTEXT_VARARGS): New flag.
	(maybe_paste_with_next): Set context earlier in loop.  Use
	it.  Do varargs test with CONTEXT_VARARGS flag.
	(push_arg_context): Set CONTEXT_VARARGS flag if we're
	pushing an argument context for a varargs argument.
	* cpplib.h (VOID_REST): Delete.
	* gcc.dg/cpp/vararg1.c: Add test case.

2000-09-25  Branko Cibej  <branko.cibej@hermes.si>

	* flags.h:  Declare warning flag warn_system_headers.
	* toplev.c:  Define it.
	(W_options): Add option -Wsystem-headers.
	* diagnostic.c (count_error): Test warn_system_headers.
	* invoke.texi:  Add description for -Wsystem-headers.
	* cpplib.h (cpp_options): New member warn_system_headers.
	* cpphash.h (CPP_PEDANTIC, CPP_WTRADITIONAL): Don't test
	CPP_IN_SYSTEM_HEADER.
	* cpplib.c (do_import, do_pragma_once): Likewise.
	* cpperror.c (_cpp_begin_message): Test warn_system_headers
	and CPP_IN_SYSTEM_HEADER.
	* cppinit.c (handle_option): Recognize -Wsystem_headers.
	(print_help): Describe -Wsystem_headers.
	* cpplex.c (lex_line): Reorganize condition so that warnings
	about C++ comments in system headers can be enabled. Remove
	label do_line_comment.

Mon 25-Sep-2000 23:38:27 BST  Neil Booth  <neilb@earthling.net>

	* cpplex.c (save_comment): Only store the initial '/'
	now.
	(lex_token): Combine handling of the two comment types.
	Pass everything but the initial '/' to save_comment.

Mon 25-Sep-2000 23:31:45 BST  Neil Booth  <neilb@earthling.net>

	* cpphash.h (_cpp_digraph_spellings, _cpp_process_directive,
	_cpp_can_paste): New library-internal prototypes.
	* cpplex.c (dump_param_spelling, output_line_command,
	output_token, cpp_scan_buffer, cpp_scan_buffer_nooutput,
	cpp_printf, cpp_output_list): Move to cppoutput.c.
	(process_directive, can_paste, digraph_spellings): Add _cpp_ prefix.
	* cppmacro.c (dump_macro_args, cpp_dump_definition) Move to
	cppoutput.c.
	* cppoutput.c (dump_macro_args, cpp_dump_definition, output_token,
	dump_param_spelling, output_line_command, cpp_scan_buffer,
	cpp_scan_buffer_nooutput, cpp_printf, cpp_output_list): Moved
	from elsewhere.
	* Makefile.in: Add cppoutput.c.
	* po/POTFILES.in: Add cppoutput.c.

2000-09-25  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (ia64_print_operand): Define 'e' as 64-n.
	* config/ia64/ia64.md (rotrsi3): Allow variable rotates; don't
	split until after reload.
	(rotlsi3, rotldi3): New.

2000-09-25  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (output_last_position): Define.
	(set_real_maximum_length): Tweek.
	* diagnostic.h (output_last_position): Declare.

2000-09-25  Kazu Hirata  <kazu@hxi.com>

	* config/i386/i386.c: Fix formatting.

2000-09-24  Alan Lehotsky  <alehotsky@cygnus.com>

	* emit-rtl-c (gen_lowpart_common): Accept non-paradoxical SUBREG when
	UNITS_PER_WORD is small.

2000-09-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (format_char_info): Add flags2; update comments.
	(print_char_table, scan_char_table, time_char_table): Split some
	flags out into flags2.
	(check_format_info): Use flags2 for those flags, for identifying
	the initial character of a scanf scanset, and for identifying
	printf formats where the '0' flag is ignored with precision.

2000-09-25  Hans-Peter Nilsson  <hp@axis.com>

	Changes below marked "here" add TABs on either or both sides,
	covering start of line, up to any operand for all noted .*ASM.*_OP
	definitions.  All callers changed.
	* tm.texi: Make documented *_ASM.*_OP:s include spacing
	(TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, SHARED_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP, SHARED_BSS_SECTION_ASM_OP, INIT_SECTION_ASM_OP,
	ASM_BYTE_OP, FINI_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP,
	ASM_STABS_OP, ASM_STABD_OP, ASM_STABN_OP).
	Fix typos in description for LONG_LONG_TYPE_SIZE and
	FINI_SECTION_ASM_OP.
	* crtstuff.c (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Explain
	why these defaults don't have leading spacing.
	* dbxout.c (ASM_STABS_OP, ASM_STABN_OP): Here.
	* dwarf2out.c (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP, SECTION_ASM_OP, ASM_BYTE_OP): Here.
	* dwarfout.c (FILE_ASM_OP, VERSION_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP, ASM_BYTE_OP,
	PUSHSECTION_ASM_OP, POPSECTION_ASM_OP): Here.
	* defaults.h (ASM_STABD_OP, EH_FRAME_SECTION_ASM_OP): Here.
	* varasm.c (ASM_STABS_OP): Here.
	* xcoffout.h (ASM_STABS_OP): Here.
	* config/elfos.h (IDENT_ASM_OP, ASM_BYTE_OP, SET_ASM_OP,
	SKIP_ASM_OP, ALIGN_ASM_OP, COMMON_ASM_OP, LOCAL_ASM_OP,
	INT_ASM_OP, ASCII_DATA_ASM_OP, TYPE_ASM_OP, SIZE_ASM_OP,
	STRING_ASM_OP): Here.
	* config/freebsd.h (IDENT_ASM_OP): Here.
	* config/linux-aout.h (SET_ASM_OP): Here.
	* config/linux.h (SET_ASM_OP): Here.
	* config/lynx.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	INT_ASM_OP): Here.
	* config/netbsd.h (TYPE_ASM_OP, SIZE_ASM_OP, SET_ASM_OP): Here.
	* config/nextstep.h (EH_FRAME_SECTION_ASM_OP, ALIGN_ASM_OP): Here.
	* config/openbsd.h (TYPE_ASM_OP, SIZE_ASM_OP, SET_ASM_OP): Here.
	* config/psos.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	INT_ASM_OP): Here.
	* config/ptx4.h (IDENT_ASM_OP, ASM_BYTE_OP, SET_ASM_OP,
	SKIP_ASM_OP, ALIGN_ASM_OP, COMMON_ASM_OP, LOCAL_ASM_OP,
	INT_ASM_OP, ASCII_DATA_ASM_OP, CONST_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, TYPE_ASM_OP, SIZE_ASM_OP STRING_ASM_OP): Here.
	* config/svr3.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	CONST_SECTION_ASM_OP, ASM_BYTE_OP): Here.
	* config/a29k/udi.h (INT_ASM_OP): Here.
	* config/alpha/alpha-interix.h (CONST_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INT_ASM_OP,
	SET_ASM_OP): Here.
	* config/alpha/alpha.h (TEXT_SECTION_ASM_OP,
	READONLY_DATA_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP, ASM_STABS_OP, ASM_STABN_OP,
	ASM_STABD_OP): Here.
	* config/alpha/elf.h (IDENT_ASM_OP, SKIP_ASM_OP, ALIGN_ASM_OP,
	COMMON_ASM_OP, INT_ASM_OP, ASCII_DATA_ASM_OP,
	CONST_SECTION_ASM_OP, CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP, SBSS_SECTION_ASM_OP, SDATA_SECTION_ASM_OP,
	INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP, TYPE_ASM_OP,
	SIZE_ASM_OP, STRING_ASM_OP): Here.
	* config/alpha/vms.h (LINK_SECTION_ASM_OP,
	READONLY_SECTION_ASM_OP, LITERALS_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, COMMON_ASM_OP): Here.
	* config/arc/arc.h (ASM_BYTE_OP, SET_ASM_OP): Here.
	(PUSHSECTION_ASM_OP): Define this, not PUSHSECTION_FORMAT.
	* config/arm/aof.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP):
	Here.
	* config/arm/aout.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP, SET_ASM_OP): Here.
	* config/arm/coff.h (INT_ASM_OP): Here.
	* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Here.
	* config/arm/elf.h (TYPE_ASM_OP, SIZE_ASM_OP, INT_ASM_OP): Here.
	* config/arm/linux-elf.h (IDENT_ASM_OP, CONST_SECTION_ASM_OP,
	INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Here.
	* config/arm/unknown-elf.h (UNALIGNED_WORD_ASM_OP): Here.
	* config/avr/avr.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	ASM_BYTE_OP, TYPE_ASM_OP, SIZE_ASM_OP, WEAK_ASM_OP,
	STRING_ASM_OP): Here.  Update documentation copy in comments.
	* config/c4x/c4x.h (ASM_STABS_OP, BSS_SECTION_ASM_OP): Here.
	* config/clipper/clipper.h (TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP): Here.
	* config/clipper/clix.h (BSS_SECTION_ASM_OP, INIT_SECTION_ASM_OP):
	Here.
	* config/convex/convex.h (TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP): Here.
	* config/d30v/d30v.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/fr30/fr30.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/fx80/fx80.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/gmicro/gmicro.h (TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP): Here.
	* config/h8300/h8300.h (ASM_WORD_OP): Here.
	* config/i370/i370.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/i386/aix386.h (INIT_SECTION_ASM_OP): Here.
	* config/i386/bsd.h (ASM_BYTE_OP): Here.
	* config/i386/cygwin.h (SET_ASM_OP, INT_ASM_OP): Here.
	* config/i386/dgux.h (CONST_SECTION_ASM_OP): Here.
	* config/i386/djgpp.h (IDENT_ASM_OP, INT_ASM_OP, SET_ASM_OP):
	Here.
	* config/i386/freebsd-elf.h (SET_ASM_OP): Here.
	* config/i386/freebsd.h (TYPE_ASM_OP, SIZE_ASM_OP, INT_ASM_OP):
	Here.
	* config/i386/i386-coff.h (CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INT_ASM_OP): Here.
	* config/i386/i386-interix.h (STRING_ASM_OP, CONST_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INT_ASM_OP,
	SET_ASM_OP): Here.
	* config/i386/i386elf.h (BSS_SECTION_ASM_OP): Here.
	* config/i386/netbsd.h (INT_ASM_OP): Here.
	* config/i386/openbsd.h (INT_ASM_OP): Here.
	* config/i386/osfrose.h (TYPE_ASM_OP, SIZE_ASM_OP, SET_ASM_OP,
	IDENT_ASM_OP): Here.
	* config/i386/sco5.h (ALIGN_ASM_OP, ASCII_DATA_ASM_OP,
	ASM_BYTE_OP, IDENT_ASM_OP, COMMON_ASM_OP, SET_ASM_OP,
	LOCAL_ASM_OP, INT_ASM_OP, TYPE_ASM_OP, SIZE_ASM_OP, STRING_ASM_OP,
	SKIP_ASM_OP, GLOBAL_ASM_OP): Here.
	* config/i386/seq-sysv3.h (SHARED_SECTION_ASM_OP,
	SHARED_BSS_SECTION_ASM_OP): Here.
	* config/i386/sequent.h (SHARED_SECTION_ASM_OP): Here.
	* config/i386/sun386.h (ASM_BYTE_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP): Here.
	* config/i386/svr3gas.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	CONST_SECTION_ASM_OP): Here.
	* config/i386/sysv3.h (INIT_SECTION_ASM_OP): Here.
	* config/i386/unix.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/i860/bsd-gas.h (ASCII_DATA_ASM_OP): Here.
	* config/i860/bsd.h (ASCII_DATA_ASM_OP): Here.
	* config/i860/fx2800.h (ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP,
	BSS_ASM_OP): Here, but use trailing spaces.
	* config/i860/i860.h (ASM_BYTE_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP): Here.
	* config/i860/paragon.h (ASCII_DATA_ASM_OP, BSS_SECTION_ASM_OP):
	Here.
	* config/i860/sysv3.h (ASCII_DATA_ASM_OP, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, TDESC_SECTION_ASM_OP): Here.
	* config/i860/sysv4.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	TDESC_SECTION_ASM_OP): Here.
	* config/i960/i960-coff.h (CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INT_ASM_OP): Here.
	* config/i960/i960.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/ia64/ia64.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Here.
	* config/ia64/sysv4.h (ASM_BYTE_OP, STRING_ASM_OP, SKIP_ASM_OP,
	COMMON_ASM_OP, ASCII_DATA_ASM_OP, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	SDATA_SECTION_ASM_OP, SBSS_SECTION_ASM_OP): Here.
	* config/m32r/m32r.h (SCOMMON_ASM_OP): Here.
	* config/m68hc11/m68hc11.h (GLOBAL_ASM_OP): Here.
	* config/m68k/auxas.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP,
	SPACE_ASM_OP, ALIGN_ASM_OP, GLOBAL_ASM_OP, SWBEG_ASM_OP,
	SET_ASM_OP): Here.
	* config/m68k/coff.h (BSS_SECTION_ASM_OP, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INT_ASM_OP): Here.
	* config/m68k/crds.h (BSS_SECTION_ASM_OP): Here.
	* config/m68k/dpx2.h (ASM_BYTE_OP, GLOBAL_ASM_OP): Here.
	* config/m68k/hp320.h (ASCII_DATA_ASM_OP, GLOBAL_ASM_OP): Here.
	* config/m68k/linux.h (BSS_SECTION_ASM_OP): Here.
	* config/m68k/lynx.h (BSS_SECTION_ASM_OP): Here.
	* config/m68k/m68k.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	GLOBAL_ASM_OP): Here.
	* config/m68k/m68kelf.h (SWBEG_ASM_OP, BSS_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/m68k/m68kv4.h (BSS_ASM_OP): Here.
	* config/m68k/mot3300.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	ASCII_DATA_ASM_OP, SET_ASM_OP, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, GLOBAL_ASM_OP, ASM_BYTE_OP, ALIGN_ASM_OP,
	SKIP_ASM_OP): Here.
	* config/m68k/newsgas.h (SET_ASM_OP): Here.
	* config/m68k/rtemself.h (INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP): Here.
	* config/m68k/sgs.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP,
	SPACE_ASM_OP, ALIGN_ASM_OP, GLOBAL_ASM_OP, SWBEG_ASM_OP,
	SET_ASM_OP, UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Here,
	but use trailing spaces.
	* config/m68k/tower-as.h (TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, GLOBAL_ASM_OP, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, CONST_SECTION_ASM_OP, BSS_SECTION_ASM_OP):
	Here.
	* config/m88k/dgux.h (FINI_SECTION_ASM_OP, INIT_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Here.
	* config/m88k/m88k.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	CONST_SECTION_ASM_OP, TDESC_SECTION_ASM_OP, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	IDENT_ASM_OP, FILE_ASM_OP, SECTION_ASM_OP, SET_ASM_OP,
	GLOBAL_ASM_OP, ALIGN_ASM_OP, SKIP_ASM_OP, COMMON_ASM_OP,
	BSS_ASM_OP, FLOAT_ASM_OP, DOUBLE_ASM_OP, INT_ASM_OP, SHORT_ASM_OP,
	CHAR_ASM_OP, ASCII_DATA_ASM_OP, SBSS_ASM_OP, SCOMM_ASM_OP,
	SDATA_SECTION_ASM_OP, TYPE_ASM_OP, SIZE_ASM_OP, INTERNAL_ASM_OP,
	VERSION_ASM_OP, UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	PUSHSECTION_ASM_OP, POPSECTION_ASM_OP, REQUIRES_88110_ASM_OP,
	ASM_BYTE_OP): Here.
	* config/m88k/openbsd.h (SET_ASM_OP): Here.
	* config/m88k/sysv4.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Here.
	* config/mcore/mcore-elf.h (UNALIGNED_INT_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP): Here.
	* config/mcore/mcore-pe.h (CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INT_ASM_OP): Here.
	* config/mips/elf.h (TYPE_ASM_OP, SIZE_ASM_OP,
	BSS_SECTION_ASM_OP): Here.
	* config/mips/elf64.h (TYPE_ASM_OP, SIZE_ASM_OP): Here.
	* config/mips/iris5.h (ABICALLS_ASM_OP): Here.
	* config/mips/iris6.h (TYPE_ASM_OP, SIZE_ASM_OP,
	POPSECTION_ASM_OP, BSS_SECTION_ASM_OP, CONST_SECTION_ASM_OP_32,
	CONST_SECTION_ASM_OP_64, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, EH_FRAME_SECTION_ASM_OP): Here.
	* config/mips/mips.c (ABICALLS_ASM_OP): Here.
	* config/mips/mips.h (ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP):
	Here.
	* config/mips/netbsd.h (TYPE_ASM_OP, SIZE_ASM_OP, WEAK_ASM_OP):
	Here.
	* config/mips/osfrose.h (SET_ASM_OP): Here.
	* config/mips/sni-svr4.h (ABICALLS_ASM_OP): Here.
	* config/ns32k/encore.h (SHARED_SECTION_ASM_OP): Here.
	* config/ns32k/merlin.h (SHARED_SECTION_ASM_OP): Here.
	* config/ns32k/ns32k.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/ns32k/sequent.h (SHARED_SECTION_ASM_OP): Here.
	* config/ns32k/tek6000.h (SHARED_SECTION_ASM_OP): Here.
	* config/pa/pa-64.h (INT_ASM_OP, TYPE_ASM_OP, SIZE_ASM_OP): Here.
	* config/pa/pa.h (ASM_STABS_OP, ASM_STABN_OP): Here.
	* config/pj/pj.h (SET_ASM_OP, BSS_SECTION_ASM_OP): Here.
	* config/pyr/pyr.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/romp/romp.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/rs6000/rs6000.h (SET_ASM_OP): Here.
	* config/rs6000/sol2.h (ASM_STABN_OP): Here.
	* config/rs6000/sysv4.h (SKIP_ASM_OP, LOCAL_ASM_OP, LCOMM_ASM_OP):
	Here.
	* config/sh/sh.h (SET_ASM_OP, BSS_SECTION_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Here.
	* config/sparc/linux.h (COMMON_ASM_OP): Here.
	* config/sparc/linux64.h (COMMON_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Here.
	* config/sparc/litecoff.h (BSS_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INT_ASM_OP): Here.
	* config/sparc/lynx.h (BSS_SECTION_ASM_OP): Here.
	* config/sparc/pbd.h (ASM_INT_OP): Here.
	* config/sparc/sp64-elf.h (UNALIGNED_LONGLONG_ASM_OP): Here.
	* config/sparc/sparc.h (ASM_BYTE_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, IDENT_ASM_OP): Here.
	* config/sparc/sun4gas.h (UNALIGNED_DOUBLE_INT_ASM_OP,
	UNALIGNED_INT_ASM_OP, UNALIGNED_SHORT_ASM_OP): Here.
	* config/sparc/sysv4.h (STRING_ASM_OP, COMMON_ASM_OP, SKIP_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_SHORT_ASM_OP, PUSHSECTION_ASM_OP, POPSECTION_ASM_OP,
	TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP,
	CONST_SECTION_ASM_OP, INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP,
	EH_FRAME_SECTION_ASM_OP): Here.
	* config/sparc/vxsim.h (COMMON_ASM_OP): Here.
	* config/spur/spur.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/tahoe/tahoe.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/v850/v850.h (SCOMMON_ASM_OP, ZCOMMON_ASM_OP,
	TCOMMON_ASM_OP): Here.
	* config/vax/vax.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP):
	Here.
	* config/we32k/we32k.h (TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	ASM_BYTE_OP): Here.

2000-09-25  Richard Henderson  <rth@cygnus.com>

	* expmed.c (store_bit_field): Adjust last change to not consider
	any word-sized field naturally aligned.

2000-09-24  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
	TFmode unordered compares properly.  Revalidate integer compare
	operands.
	(alpha_emit_setcc): New.
	(alpha_emit_conditional_move): Revalidate integer compare operands.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.md (cmpdi): Allow general operands.
	(sne): Use alpha_emit_setcc.
	(seq, slt, sle, sgt, sge, sltu, sleu, sgtu, sgeu): Likewise.
	(sunordered, sordered): New.

2000-09-24  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.c (call_multiple_values_operation): Remove.
	(ia64_expand_call): New.
	(ia64_expand_prologue): Emit an alloc if we need extra input
	registers.
	(ia64_expand_epilogue): New arg sibcall_p; don't emit the return
	instruction if true.
	(struct reg_flags): Add is_sibcall.
	(rtx_needs_barrier): A sibcall does not use CFM et al.  Ignore USEs.
	(emit_insn_group_barriers): Set flags.is_sibcall.  Remove hacks
	for CODE_FOR_gr_spill_internal/CODE_FOR_gr_restore_internal.
	* config/ia64/ia64.h (PREDICATE_CODES): Update.
	* config/ia64/ia64.md (call): Use ia64_expand_call.
	(call_value): Likewise.
	(sibcall, sibcall_value): New.
	(call patterns): Remove extra expanders; tidy.
	(sibcall_epilogue): New.
	(set_bsp): Remove the extra USE.  Put the operand inside the UNSPEC.

2000-09-24  Richard Henderson  <rth@cygnus.com>

	* emit-rtl.c (gen_lowpart_common): Use trunc_int_for_mode.

	* sibcall.c (skip_pic_restore): New.
	(identify_call_return_value): Use it.

2000-09-24  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.texi: Moved here from cp/ir.texi.  Documented nested
	functions.  Generalize to handle both C and C++.
	* Makefile.in (c-tree.info): New target.
	(info): Add c-tree.info.

Sun Sep 24 09:15:48 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_field): If BITSIZE is negative, use size of type.
	(expand_expr, case COMPONENT_EXPR): Likewise.

Sun 24-Sep-2000 11:40:23 BST  Neil Booth  <NeilB@earthling.net>

	* cpplex.c: Update TODO comment.
	* cpplib.c (do_error, do_warning): Merge common code of
	do_error and do_warning	into do_diagnostic.  Use it.
	(do_diagnostic): New function.
	* cpplib.h: Fix comment typo.

2000-09-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_info): Warn for a wide character string
	used as a non-wide format argument.

2000-09-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* builtins.def (BUILT_IN_LLABS): Add.
	* builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS.
	* c-common.c (c_common_nodes_builtins): Create builtin functions
	__builtin_llabs, and plain llabs unless no_nonansi_builtins
	outside of C99 mode.
	(expand_tree_builtin): Handle BUILT_IN_LLABS.

Sat 23-Sep-2000 22:39:18 BST  Neil Booth  <NeilB@earthling.net>

	* cpphash.h (CPP_RESERVE, CPP_PUTS_Q, CPP_PUTS, CPP_PUTC_Q,
	CPP_PUTC, DUMMY_TOKEN, NO_DUMMY_TOKEN): Delete.
	* cpplex.c (_cpp_expand_token_space, _cpp_init_toklist,
	_cpp_free_toklist): No need to worry about extra dummy token
	at the start of token lists any more.
	(trigraph_ok): Only warn outside comments.
	(skip_block_comment): Set and clear lexing_comment.
	(skip_line_comment): Take a cpp_reader not cpp_buffer.
	Set and clear lexing_comment.
	(parse_number): Handle leading '.' indicated by pfile->seen_dot.
	(check_long_token): Delete.
	(lex_percent, lex_dot): New subroutines of lex_token to
	handle lexing of '.' and '%' without lookback.
	(lex_token): Use lex_dot and lex_percent.
	(lex_line): Don't check for LIST_OFFSET.
	(_cpp_init_input_buffer): Update for new _cpp_init_toklist.
	* cpplib.c (_cpp_parse_assertion): Similarly.
	(cpp_push_buffer): Initialize extra_char.
	* cpplib.h (LIST_OFFSET): Delete.
	(struct cpp_buffer): New member extra_char.
	(struct lexer_state): New members lexing_comment and seen_dot.

2000-09-23  Jason Merrill  <jason@redhat.com>

	* config/rs6000/x-aix41 (CLIB): Define here.
	* config/rs6000/t-aix43: Not here.
	* config/rs6000/t-aix41: Or here.  Remove.
	* configure.in: Don't use it.

2000-09-22  Jason Merrill  <jason@redhat.com>

	* configure.in: Add test for HAVE_LD_DWARF_LINKONCE.
	* toplev.c: Use it to initialize flag_eliminate_dwarf2dups.
	* config.in: Regenerate.

	* configure.in: Fix checks for assembler features when using a
	one-tree assembler that has not yet been built.
	Fix --disable-threads.

2000-09-19  Geoff Keating  <geoffk@cygnus.com>

	* stmt.c (expand_asm_operands): Allow # in constraints.

2000-09-22  Jason Merrill  <jason@redhat.com>

	* c-lex.c (skip_white_space): Just treat CRs as horizontal whitespace.

	* dbxout.c (dbxout_symbol_name): Just use DECL_NAME for
	function-local names.

2000-09-22  Brad Lucier <lucier@math.purdue.edu>
	    Mark Mitchell  <mark@codesourcery.com>

	* toplev.c (warn_disabled_optimization): Declare new warning flag.
	* flags.h (warn_disabled_optimization): Add it here.
	* gcse.c (gcse_main): Add warning when disabled.
	* invoke.texi: Document -Wdisabled-optimization.

2000-09-21  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (add_const_value_attribute): Multiply by length, not 4.

	* dwarf2out.c (tree_add_const_value_attribute): New fn.
	(gen_variable_die): Call it for non-definitions.

	* dwarf2out.c (die_struct): Add die_mark field.
	(mark_dies, unmark_dies): New fns.
	(clear_die_sizes): Remove.
	(print_die): Check die_symbol rather than die_offset.
	(build_abbrev_table, output_pubnames, output_aranges): Check
	die_mark rather than die_offset.
	(output_comp_unit): Move calc_die_sizes after build_abbrev_table.
	Call mark_dies.

Thu 21-Sep-2000 18:19:05 BST  Neil Booth  <NeilB@earthling.net>

	* cppfiles.c (lookup_include_file): Rename to open_file.
	Always create a splay tree value, even on syscall failures.
	Negative entries indicated by fd == -2.
	Re-open files closed in the meantime.
	(_cpp_fake_include): Create a negative splay tree entry.
	(find_include_file, cpp_read_file): Update for function name
	change.
	* gcc.gd/cpp/mi4.c: Testcase.

2000-09-21  Nick Clifton  <nickc@redhat.com>

	* config/arm/t-arm-elf (MULTILIB_DIRNAMES): Enable multilibs for
	ARM and THUMB modes.

	* config/mcore/mcore.c: Fix compile time warnings.
	* config/mcore/mcore-protos.h: Fix compile time warnings.

2000-09-20  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* configure.in: Correct test of gcc_cv_glibc.
	* configure: Rebuilt.
	* config.in: Rebuilt.

2000-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_fputs): Also expand when length!=1.
	(expand_builtin): Handle BUILT_IN_FWRITE.

	* builtins.def (BUILT_IN_FWRITE): New entry.

	* c-common.c (c_common_nodes_and_builtins): Declare __builtin_fwrite.

Wed Sep 20 15:39:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc.c (modify_target): New variable and struct.
	(process_command): Handle MODIFY_TARGET_NAME.
	* tm.texi (MODIFY_TARGET_NAME): Add documentation for new macro.
	* config/pa/pa.h (MODIFY_TARGET_NAME): New macro.

	* c-decl.c (finish_decl): Add else's to avoid referencing
	TYPE_DOMAIN of an ERROR_MARK.

Wed Sep 20 21:44:31 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (adjust_insn_length): Adjust lengths of
	`reload_in*' insns.

2000-09-19  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.md (neghi2): Add alternative for input and output
	operands in different registers, as in negsi2.
	(*negsi2): Remove '*' from the name.  Use "movw" if available.

2000-09-19  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/crtbegin.asm (__dso_handle): Delete use of
	HAVE_GAS_HIDDEN macro.

Tue 19-Sep-2000 22:38:57 BST  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (lex_line): Drop the EOF token for unknown
	directives in assembler.

2000-09-19  David Edelsohn  <edelsohn@gnu.org>

	* configure.in: Allow enable_threads_flag value of "aix".  Define
	thread_file as "aix" for AIX 4.3 and above.
	* configure: Regenerated.

	* gthr-aix.h: New file.

	* rs6000/t-aix43: Replace soft-float multilib with pthread.
	Remove 403 processor multilib match.  Fix rios2 processor multilib
	match.

	* rs6000/aix.h (ASM_DECLARE_FUNCTION_NAME): Use function_section
	to return to appropriate csect.

2000-09-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (is_valid_printf_arglist, expand_builtin_printf): New
	functions.
	(expand_builtin_fputs): Set `target' parameter for `expand_expr'.
	(expand_builtin): Handle BUILT_IN_PUTCHAR, BUILT_IN_PUTS and
	BUILT_IN_PRINTF.

	* builtins.def (BUILT_IN_PUTCHAR, BUILT_IN_PUTS, BUILT_IN_PRINTF):
	New entries.

	* c-common.c (init_function_format_info): Handle __builtin_printf.
	Set `check_function_format_ptr'.
	(c_common_nodes_and_builtins): Set `puts_ftype' and
	`printf_ftype'.  Declare __builtin_putchar, __builtin_puts,
	__builtin_printf and printf.

	* tree.c, tree.h (check_function_format_ptr): Declare.

Tue 19-Sep-2000 18:26:57 BST  Neil Booth  <NeilB@earthling.net>

	* cppfiles.c (read_include_file): Take no special action for
	zero-length files.

2000-09-19  Bernd Schmidt  <bernds@redhat.co.uk>

	* final.c (insn_current_reference_address): Use INSN_SHUID of seq
	rather than that of branch.
	(shorten_branches): Don't increment insn_current_address twice.

	Undo most of the Wed Jan 27 23:39:53 1999 patch:
	* loop.h (struct induction): Delete members derived, ix and last_use.
	(struct loop_ivs): Delete members first_increment_giv and
	last_increment_giv.
	* loop.c (verify_dominator, find_life_end, cmp_recombine_givs_stats,
	recombine_givs): Delete functions.
	(find_and_verify_loops): Don't initialize cont_dominator.
	(strength_reduce): Lose code to try to find bivs that can be
	expressed as givs of another biv, and to convert biv increments
	into givs.
	Lose loop_scan_start variable, always use loop->scan_start.
	Don't call recombine_givs.  Don't handle derived givs.
	(record_giv): Don't initialize derived and last_use fields.
	(biv_eliminiation_giv_has_0_offset): Lose code to handle derived
	givs.
	* unroll.c (derived_regs): Delete static variable.
	(unroll_loop): Don't initialize it.
	(copy_loop_body): Lose code to handle derived givs.
	(find_splittable_givs): Don't check for givs made from biv
	increments.
	Don't set derived_regs.

	Fix misapplied earlier patch:
	* config/sh/sh.md (floatsisf_ie): Reenable.  Remove explicit reference
	to fpul.
	(floatsisf2): Generate floatsisf_ie by default.
	(floatsisf_i4): Conditional on TARGET_SH4.

	(floatsisf2, floatsidf2, extendsfdf2): Also use reg_no_subreg_operand
	predicate for the expanders.

2000-09-19  Richard Henderson  <rth@cygnus.com>

	* config/i386/i386.h (CPP_CPU_SPEC): Define i586 and i686 symbols
	in addition to pentium and pentiumpro symbols.
	(CPP_CPU_DEFAULT_SPEC): Likewise.

	* c-typeck.c (c_expand_asm_operands): Restore the output tree
	after expanding.

	* stmt.c (expand_expr_stmt): Only call warn_if_unused_value
	if the tree has side effects.
	(warn_if_unused_value): Do not warn about void constructs.

	* c-decl.c (poplevel): Invoke warn_about_unused_variables.

	* unroll.c (copy_loop_body): Update LABEL_NUSES before
	calling invert_jump.

2000-09-18  Geoff Keating  <geoffk@cygnus.com>

	* combine.c (can_combine_p): Don't substitute an ASM_OPERANDS
	into anything.

2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (c-common.o): Depend on diagnostic.h.

	* c-common.c: Include diagnostic.h.
	(tfaff): Delete.
	(status_warning): New function.
	(check_format_info, maybe_read_dollar_number, check_format_types,
	finish_dollar_format_checking, check_function_format): Accept a
	`status' parameter.  All callers changed.

	* c-common.h (check_function_format): Accept a `status' parameter.

	* c-typeck.c: Update call to `check_function_format'.

2000-09-18  Richard Henderson  <rth@cygnus.com>

	* c-decl.c (c_expand_body): Call mark_varargs before
	expand_function_start.

2000-09-18  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/eabi-cn.asm: Use /**/ to delimit comments, not #.
	* config/rs6000/eabi-ci.asm: Likewise.

2000-09-18  Richard Henderson  <rth@cygnus.com>

	* emit-rtl.c (init_emit_once): Initialize const_tiny_rtx
	for BImode.

2000-09-18  Jim Wilson  <wilson@cygnus.com>

	* unroll.c (loop_iterations): Pass increment to extend_for_giv_value
	before passing it to fold_rtx_mult_add.

	* unroll.c (final_giv_value): Pass increment through
	extend_value_for_giv before passing it to emit_iv_add_mult.

	* function.c (fixup_var_refs_1, case ZERO_EXTRACT): If we have a
	paradoxical subreg, then directly substitute the replacement and
	return.

Mon 18-Sep-2000 22:12:44 BST  Neil Booth  <NeilB@earthling.net>

	* cpp.texi: Update documentation, including some clarifications,
	the treatment of various newline combinations, and space between
	backslash and newline.

Mon Sep 18 21:00:47 2000  J"orn Rennecke <amylaar@redhat.co.uk>

	* sdbout.c (PUT_SDB_DEF, PUT_SDB_TAG, PUT_SDB_EPILOGUE_END):
	Replace ASM_OUTPUT_LABELREF with assemble_name.

Mon Sep 18 20:26:50 2000  J"orn Rennecke <amylaar@redhat.co.uk>

	* sh.c (addsubcosts): CONST is not cheap.
	(find_barrier): For Sh1, take alignment after jumps into account.

2000-09-15  Andrew Haley  <aph@redhat.com>

	* toplev.c (rest_of_compilation): Call purge_hard_subreg_sets to
	remove all SETs of SUBREGs of hard registers.
	* function.c (purge_hard_subreg_sets): New function.
	(purge_single_hard_subreg_set): New function.
	* rtl.h: (purge_hard_subreg_sets): New function.

2000-09-18  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.c (signed_inequality_operator): New.
	(ia64_expand_compare): New.
	(ia64_register_move_cost): Handle PR_REGS moves.
	(ia64_secondary_reload_class): Require a GR when moving to a PR.
	(struct reg_write_state): Add written_by_and/or.
	(struct reg_flags): Add is_and/or.
	(rws_update): Set them.
	(rws_access_regno): Test them to allow parallel comparisons.
	(rtx_needs_barrier): Recognize parallel comparisons.
	(emit_insn_group_barriers): Set prev_insn after a call stop bit.
	Call recog_memoized; ignore pred_rel_mutex.
	(emit_predicate_relation_info): Don't call find_basic_blocks here.
	(ia64_reorg): Do it here instead.
	* config/ia64/ia64.h: s/CCmode/BImode/g
	(MODES_TIEABLE_P): Don't tie BImode.
	(PREFERRED_RELOAD_CLASS): Do not reload operations into AR regs.
	(CONST_COSTS): Pick sensible values for CONST_INT based on context.
	(RTX_COSTS): Make multiply 4 insns.
	(MEMORY_MOVE_COST): New.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md: s/CCmode/BImode/g
	(movcci, movbi): New.
	(andbi3, andcmbi3, iorbi3, iorcmbi3, one_cmplbi2): New.
	(cmpsi_and_0, cmpsi_and_1, cmpsi_andnot_0, cmpsi_andnot_1): New.
	(cmpdi_and_0, cmpdi_and_1, cmpdi_andnot_0, cmpdi_andnot_1): New.
	(tbit_and_0, tbit_and_1, tbit_and_2, tbit_and_3): New.
	(cmpsi_or_0, cmpsi_or_1, cmpsi_orcm_0, cmpsi_orcm_1): New.
	(cmpdi_or_0, cmpdi_or_1, cmpdi_orcm_0, cmpdi_orcm_1): New.
	(tbit_or_0, tbit_or_1, tbit_or_2, tbit_or_3): New.
	(mulsi, muldi): Use xmpy not xma.
	(cmpbi): New.
	(movcc, movcc_internal): Remove.
	(branch expanders): Use ia64_expand_compare.
	(setcc expanders): Likewise.
	(cmov insns): Use move_operand and ia64_move_ok.
	(pred_rel_mutex): Use unspec not unspec_volatile.  Prevent the
	scheduler from moving it past a use.
	* config/ia64/build.hacks: Remove.

Mon 18-Sep-2000 19:21:35 BST  Neil Booth  <NeilB@earthling.net>

	* cpphash.h (HASHSTEP): Take character rather than pointer
	to character.
	(_cpp_check_directive, _cpp_check_linemarker): Update prototypes.

	* cpphash.c (cpp_loookup): Update for new HASHSTEP.

	* cpplex.c (auto_expand_name_space, trigraph_replace,
	backslash_start, handle_newline, parse_name, INIT_TOKEN_STR,
	IMMED_TOKEN, PREV_TOKEN_TYPE, PUSH_TOKEN, REVISE_TOKEN,
	BACKUP_TOKEN, BACKUP_TRIGRAPH, MIGHT_BE_DIRECTIVE,
	KNOWN_DIRECTIVE): Delete.

	(handle_newline, check_long_token, skip_escaped_newlines,
	unterminated): New functions.
	(ACCEPT_CHAR, SAVE_STATE, RESTORE_STATE): New macros.

	(parse_identifier): Was parse_name, new implementation.
	(skip_line_comment, skip_block_comment, skip_whitespace,
	parse_number, parse_string, trigraph_ok, save_comment,
	adjust_column, _cpp_get_line): New implementations.

	(lex_token): New function.  Lexes a token at a time, looking
	forwards.  Contains most of the guts of the old lex_line.
	(lex_line): New implementation, using lex_token to obtain
	individual tokens.
	(cpp_scan_buffer): Use the token's line, not the list's line.

	* cpplib.c (_cpp_check_directive, _cpp_check_linemarker):
	 New implementations.
	(do_assert): Don't bother setting the answer's list's line.
	(cpp_push_buffer): Initialize new pfile and read_ahead members
	of struct cpp_buffer.

	* cpplib.h (cppchar_t): New typedef.
	(struct cpp_buffer): read_ahead, pfile and col_adjust are
	new members.
	(struct lexer_state): New structure that determines the state
	and behavior of the lexer.
	(IN_DIRECTIVE, KNOWN_DIRECTIVE): New macros.
	(struct cpp_reader): New member "state". Rename
	multiline_string_line and multiline_string_column. Delete
	col_adjust, in_lex_line members.
	(CPP_BUF_COLUMN): Update.

2000-09-18  Richard Henderson  <rth@cygnus.com>

	* combine.c (simplify_comparison): Shift a NOT out of a single
	bit test.

	* combine.c (if_then_else_cond): Canonicalize BImode true to
	STORE_FLAG_VALUE.
	* explow.c (trunc_int_for_mode): Likewise.

	* combine.c (combine_simplify_rtx): Use gen_unary to distribute
	the NOT for De Morgan's rule.
	* simplify-rtx.c (simplify_unary_operation): Simplify a BImode NOT
	of a comparison to the reverse comparison.

	* combine.c (try_combine): Allow split to create a single insn.

	* machmode.def: Add BImode.  Add a column for bitsize.
	* machmode.h (DEF_MACHMODE): Adjust for extra column.
	(GET_MODE_BITSIZE): Use it.
	* rtl.c (DEF_MACHMODE): Adjust for extra column.
	(mode_bitsize): New.
	(mode_mask_array): Use bitsize.
	* combine.c (combine_simplify_rtx): Require inner and outer
	modes to match on nonzero_bits optimizations.

2000-09-18  Bernd Schmidt  <bernds@redhat.co.uk>

	* reload1.c (forget_old_reloads_1): If a hard reg is stored, clear
	its entry in spill_reg_store.
	* config/sh/lib1funcs.ams (movstr_i4 functions): Always compile in.
	* sh.c (reg_no_subreg_operand): New function.
	* sh-protos.h (reg_no_subreg_operand): Declare it.
	* sh.h (PREDICATE_CODES): Add it.
	* sh.md (floatsisf2_i4, floatsidf2_i, extendsfdf2_i4): Use it for
	input operand that needs to be in fpul.
	(fix_truncsfsi2, fix_truncsfsi2_i4): Use register_operand for output.
	* sh.c (find_barrier): Take into account that machine_dependent_reorg
	might add new insns.

2000-09-18  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (sh_expand_prologue): Mark GOTaddr2picreg as
	MAYBE_DEAD.
	(sh_expand_epilogue): Take the PIC register into account when
	computing the frame size.

	* config/sh/sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs.
	* config/sh/sh.md (sym_label2reg, symPLT_label2reg): Protect
	LABEL_REFs with a PIC-safe unspec.

2000-09-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_info): Properly save the argument
	number and parameter for $ operand number formats in case width
	and precision arguments are also used.  Allow printf width and
	precision arguments to have operand numbers even if none was
	specified for the main format, since this is OK for %*.*m.  Only
	object to missing $ operand number if the format used requires an
	argument.

2000-09-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (format_char_info): Add 'W' flag to comment.
	(print_char_table, scan_char_table): Use it.
	(check_format_info): Use the 'W' flag to determine whether a
	format argument is written into.

2000-09-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_types): Reorganize and clean up,
	checking earlier for ERROR_MARKs and making cur_type into its
	TYPE_MAIN_VARIANT where convenient.

2000-09-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.c (cpp_options): Add specs for __STDC_HOSTED__.

2000-09-18  Bernd Schmidt  <bernds@redhat.co.uk>

	* optabs.c (emit_libcall_block): Set CONST_CALL_P for the call.

	* i386-protos.h (ix86_init_builtins, ix86_expand_builtin): Declare.
	* i386.c (struct builtin_description): New.
	(bdesc_comi, bdesc_2arg, bdesc_1arg): New arrays.
	(mmx_reg_operand): Declare MODE arg as unused.
	(ix86_expand_sse_comi, ix86_expand_sse_compare, safe_vector_operand,
	ix86_expand_unop1_builtin, ix86_expand_unop_builtin,
	ix86_expand_binop_builtin, ix86_expand_store_builtin,
	ix86_init_builtins, ix86_expand_builtin): New functions.
	* i386.h (ix86_builtins): New enumeration.
	(MD_INIT_BUILTINS, MD_EXPAND_BUILTIN): New macros.
	* i386.md (attr length_immediate): 0 for mmx/sse types.
	(attr prefix_0f): 1 for mmx/sse types.
	(setcc_2): Remove "*" so we get gen_setcc_2.
	(emms): Account for changed register numbering.  Set "memory" attr
	to unknown.
	(sfence): Set "memory" attr to unknown.

2000-09-18  Andreas Jaeger  <aj@suse.de>

	* configure.in: Define _GNU_SOURCE only when using the GNU C
	Library.
	* configure: Regenerated.
	* config.in: Regenerated.

2000-09-17  Mark Mitchell  <mark@codesourcery.com>

	* cppinit.c (cpp_init): Don't use ANSI prototypes.
	* flow.c (flow_dump_loop): Likewise.
	(flow_loops_dump): Likewise.

	* c-typeck.c (c_start_case): Fix typo.

2000-09-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): Don't give a warning about defaulting
	to int for plain complex which defaults to complex double.  Do
	warn about defaulting to complex double if pedantic.  Warn about
	complex integer types if pedantic.  Warn about complex types if
	pedantic and not in C99 mode.
	* c-typeck.c (build_unary_op): If pedantic, warn about use of ~
	for complex conjugation.

2000-09-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* contrib.texi: Update my entry.

Sun Sep 17 18:48:32 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md (mcu_enhanced): New attribute.
	(mcu_mega): Likewise.
	(extendhisi2): Use mcu_enhanced.
	(zero_extendhisi2): Likewise.
	(call_insn): Use mcu_enhanced and mcu_mega.
	(call_value_insn): Likewise.
	(*sbrx_branch): Use mcu_mega.
	(*sbrx_and_branchsi): Likewise.
	(*sbrx_and_branchhi): Likewise.
	(*tablejump_lib): Likewise.

Sun Sep 17 10:46:17 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (true_dependence): Allow non-unchanging read to conflict
	with unchanging write.

	* expr.c (store_constructor_field): Accept ALIAS_SET arg.
	(store_constructor): Pass alias_set to it.

	* c-decl.c (grokdeclarator): Reorder tests to avoid looking at
	TYPE_MAIN_VARIANT of ERROR_MARK.
	* c-lex.c (readescape): Avoid using printf syntax we don't recognize.

	* simplify-rtx.c (simplify_unary_operation): Add cases
	FLOAT_EXTEND and FLOAT_TRUNCATE to ones that return 0.

2000-09-17  Bernd Schmidt  <bernds@redhat.co.uk>

	* expr.h (emit_library_call, emit_library_call_value): Delete
	declarations.
	* rtl.h (enum libcall_type): New.
	(emit_library_call, emit_library_call_value): Change fn_type arg to
	be of type enum libcall_type.
	* calls.c: Likewise for the function definitions.  Several callers
	throughout changed to use the new enumeration appropriately.
	(emit_library_call_value_1): Likewise.  Put back code to make libcall
	blocks of equal form, but only use it for the two new higher
	enumeration values.

2000-09-16  Mark Mitchell  <mark@codesourcery.com>

	Convert the C front-end to use function-at-a-time mode.
	* c-common.h: Include splay-tree.h.
	(C_DECLARED_LABEL_FLAG): New macro.
	(struct language_function): Add x_scope_stmt_stack and
	x_function_name_declared_p.
	(RECHAIN_STMTS): Move definition.
	(lang_statement_code_p): Likewise.
	(lang_expand_stmt): Likewise.
	(lang_expand_decl_stmt): New variable.
	(lang_expand_function_end): Likewise.
	(current_scope_stmt_stack): New function.
	(add_decl_stmt): Likewise.
	(add_scope_stmt): Likewise.
	(mark_stmt_tree): Likewise.
	(struct c_lang_decl): New structure.
	(DECL_SAVED_TREE): Define.
	(c_mark_lang_decl): New function.
	(c_expand_start_cond): Change prototype.
	(c_finish_then): New function.
	(c_finish_else): Likewise.
	(current_function_name_declared): Remove.
	(set_current_function_name_declared): Likewise.
	(mark_c_language_function): Declare.
	(case_compare): Likewise.
	(c_add_case_label): Likewise.
	(c_expand_expr): Likewise.
	(c_safe_from_p): Likewise.
	* c-common.c (lang_expand_function_end): New variable.
	(struct if_elt): Add if_stmt.
	(c_expand_start_cond): Add the if-statement to the statement-tree,
	rather than generating RTL.
	(c_finish_then): New function.
	(c_expand_start_else): Don't generate RTL.
	(c_finish_else): New function.
	(c_expand_expr_stmt): Don't generate RTL.
	(statement_code_p): Add SCOPE_STMT.
	(case_compare): New function.
	(c_add_case_label): Likewise.
	(mark_stmt_tree): Likewise.
	(c_mark_lang_decl): Likewise.
	(mark_c_language_function): Likewise.
	(c_expand_expr): Likewise.
	(c_safe_from_p): Likewise.
	* c-decl.c (c_stmt_tree): New variable
	(c_scope_stmt_stack): Likewise.
	(c_function_name_declared_p): Likewise.
	(lang_expand_expr_stmt): Remove.
	(poplevel): Don't call output_inline_function for nested
	functions.
	(pushdecl): Don't set DECL_CONTEXT for a local declaration of an
	`extern' function.
	(redeclaration_error_message): Change means of computing whether
	or not a function is nested.
	(lookup_label): Don't call label_rtx.
	(init_decl_processing): Add more GC roots.
	(start_decl): Add DECL_STMTs to the statement-tree, rather than
	calling rest_of_decl_compilation.
	(finish_decl): Don't call expand_decl.
	(store_parm_decls): Begin the statement-tree, but don't generate
	RTL.
	(finish_function): Tie off the statement-tree.  Call c_expand_body
	if appropriate.
	(c_expand_body): New function.
	(push_c_function_context): Save more information.
	(pop_c_function_contxt): Likewise.
	(copy_lang_decl): Now that we use DECL_LANG_SPECIFIC, copy it.
	(lang_mark_tree): Mark it.
	(current_stmt_tree): Adjust.
	(current_scope_stmt_stack): New function.
	(do_case): Remove.
	(set_current_name_declared): Likewise.
	(c_begin_compound_stmt): Define.
	(c_expand_decl_stmt): Likewise.
	* c-lang.c: Include rtl.h and expr.h.
	(lang_init): Set more language-specific hooks.
	* c-lex.c: Include expr.h.
	* c-parse.in: Changes throughout to add statements to the
	statement-tree, rather than generating RTL after every statement.
	* c-semantics.c (lang_expand_decl_stmt): Define.
	(add_decl_stmt): New function.
	(add_scope_stmt): Likewise.
	(finish_stmt_tree): Tweak.
	(genrtl_expr_stmt): Likewise.
	(genrtl_decl_stmt): Handle local labels, and call
	lang_expand_decl_stmt if required.
	(genrtl_for_stmt): Fix line-number handling.
	(genrtl_case_label): Handle cleanups.
	(genrtl_asm_stmt): Don't call combine_strings.
	(genrtl_compound_stmt): Simplify.
	(expand_stmt): Handle SCOPE_STMTs.
	* c-tree.h (struct lang_decl): New structure.
	(C_DECLARED_LABEL_FLAG): Remove.
	(c_begin_compound_stmt): Declare.
	(c_expand_decl_stmt): Likewise.
	(c_expand_start_case): Rename to c_start_case.
	(c_finish_case): New function.
	* c-typeck.c (start_init): Tweak setting of
	constructor_incremental.
	(c_expand_asm_operands): Tweak error-handling.  Add to the
	statement-tree.
	(c_expand_return): Add to the statement-tree.
	(c_expand_start_case): Rename to ...
	(c_start_case): ... this.
	(struct c_switch): New type.
	(switch_stack): New variable.
	(do_case): Simplify.
	(c_finish_case): New function.
	* dependence.c: Include expr.h.
	(enum dependence_type): Change spelling of enumerals.
	(check_node_dependence): Adjust.
	* expr.h (lang_safe_from_p): Declare.
	(safe_from_p): Likewise.
	* expr.c (lang_safe_from_p): New variable.
	(safe_from_p): Give it external linkage.  Use lang_safe_from_p.
	* stmt.c (expand_expr_stmt): Avoid clobberring of last_expr_type.
	* toplev.c (rest_of_decl_compilation): Robustify.
	* tree.c (contains_placeholder_p): Likewise.
	* Makefile.in: Update dependencies.
	* objc/objc-act.h: Adjust calculation of value for dummy_tree_code.
	* objc/objc-act.c: Include rtl.h, expr.h, and c-common.h.
	(objc_expand_function_end): New function.
	(finish_method_def): Use it.
	(init_objc): Initialize more language-specific hooks.
	* objc/Make-lang.in: Update dependencies.

2000-09-16  Geoffrey Keating  <geoffk@cygnus.com>

	* configure.in: Define macros that affect features before
	testing for features.  Don't define _XOPEN_SOURCE.
	* configure: Regenerated.
	* config.in: Regenerated.

Sat Sep 16 19:42:50 EDT 2000  John Wehle  (john@feith.com)

	* rtlanal.c (rtx_varies_p): Volatile asms vary.
	(rtx_unstable_p): Restructure code.  Volatile asms
	are unstable.

Sat Sep 16 14:35:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.h (no_debugging_symbols): New field.
	* integrate.c (save_for_inline): Renamed from save_for_inline_nocopy.
	Initialize no_debugging_symbols.
	(output_inline_function): Save and restore write_symbols and set from
	no_debugging_symbols.
	* toplev.c (rest_of_compilation): Call save_for_inline.
	* tree.h: Update comment.

	* stor-layout.c (place_field): Don't do anything if field or
	its type are ERROR_MARK.

Sat Sep 16 19:14:00 2000  Laurynas Biveinis <lauras@softhome.net>

	* cppfiles.c (purge_cache): Use munmap only if MMAP_THRESHOLD defined.
	(read_include_file): Ensure inc->mmaped is initialized.

2000-09-16  Richard Henderson  <rth@cygnus.com>

	* cppiles.c (purge_cache): Use PTR not caddr_t.

2000-09-16  Hans-Peter Nilsson  <hp@axis.com>

	* gcc.c: In description for %{<S}, say the option removed is -S.
	* invoke.texi (Spec Files): Ditto.

2000-09-16  Andreas Jaeger  <aj@suse.de>

	* configure.in: Always define _GNU_SOURCE to make interfaces
	visible that were hidden by only defining _GNU_SOURCE.
	* configure: Regenerated.

Sat 16-Sep-2000 08:13:45 BST  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (push_macro_context): Set an argument's level after
	calling parse_args.  We could loop infinitely otherwise.

2000-09-15  Tom Tromey  <tromey@cygnus.com>

	* configure, config.in: Rebuilt.
	* configure.in: Check for iconv.h.  Define _XOPEN_SOURCE.

2000-09-15  Greg McGary  <greg@mcgary.org>

	* cppmacro.c (check_trad_stringification): Check token
	text pointers against limit before dereferencing.

2000-09-15  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (format_wanted_type): New structure.
	(check_format_types): New function.
	(check_format_info): Pass all checking of types of format
	arguments, including width and precision arguments, to this new
	function.

2000-09-15  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* BUGS: Remove file.

2000-09-15  Jakub Jelinek  <jakub@redhat.com>

	* config/alpha/alpha.c (override_options): ev6 cache latencies
	from Richard Henderson.  Don't allow -mmemory-latency=L0.

	* config/alpha/alpha.h (TARGET_CPU_EV5, TARGET_CPU_EV6): Define.
	(TARGET_OPTIONS): Add tune=.
	(alpha_tune_string): Declare.
	* config/alpha/alpha.c (override_options): Add cpu_table.
	Use alpha_cpu_string first to set both alpha_cpu and target_flags
	and then alpha_tune_string to set alpha_cpu only.
	Replace tests for PROCESSOR_EV* with TARGET_CPU_EV* tests.
	* config/alpha/elf.h (ASM_FILE_START): Likewise.
	* config/alpha/osf.h (ASM_FILE_START): Likewise.
	* config/alpha/openbsd.h (ASM_FILE_START): Likewise.

Fri Sep 15 19:45:55 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (no_comparison_operator, uno_comparison_operator):
	Remove.
	(ix86_comparison_operator, ix86_cc_mode): Declare
	* i386.h (CCGC, CCGCO): New modes.
	(SELECT_CC_MODE): Move offline to ....
	* i386.c (ix86_cc_mode): .... here; use new modes.
	(ix86_comparison_operator): New.
	(fcmov_comparison_operator): Ensure proper mode.
	(put_condition_mode): More sanity checking.
	(ix86_match_ccmode): Handle new modes.
	(ix86_expand_fp_compare): GEU requires CCmode.
	(ix86_expand_strlensi_unroll_1): Use emit_cmp_and_jump_insn instead of
	doing it by hand.
	* i386.md (cmp?i_ccz_1): Remove
	(cmp?i_ccno_1): Use ix86_match_ccmode.
	(cmp?i_minus_1): New.
	(cmpsi_1): New expander.
	(cmpqi_ext_1): Use match_ccmode
	(cmpqi_ext_3): New expander.
	(cmpqi_ext_3_insn): Rename from cmpqi_ext_3.
	(cmpqi_ext_4): Use match_ccmode.
	(add?i_?): Use match_ccmode.
	(add?i_6): New.
	(test?i_ccz_1): Remove
	(test?i_1): New.
	(testsi_ccno_1, testqi_ccz_1, testqi_ext_ccno_0): New expander.
	(testqi_ext_0): Use ix86_match_ccmode.
	(*xorqi_cc_ext_1): Use ix86_match_ccmode.
	(xorqi_cc_ext_1): New expander.
	(shift patterns): Use CCGOCmode for all shifts except for sar.
	(setcc_?, jcc_?, miv?icc_nic): Use ix86_comparison_operator.
	(setcc_3, jcc_3, miv?icc_c): Remove.

2000-09-15  Will Cohen  <wcohen@redhat.com>

	* dwarf2out.c (add_const_value_attribute): Changed array into a
	xmalloced object, so it exists after function exit.
	(free_AT): Added case for dw_val_class_float to free allocated
	memory.

2000-09-15  Kazu Hirata  <kazu@hxi.com>

	* config/i386/i386.md: Fix a comment typo.
	* gcc.c: Fix formatting.

2000-09-15  Bernd Schmidt  <bernds@redhat.co.uk>

	* optabs.c (emit_libcall_block): If target is a user variable,
	copy to a temporary first.
	* expr.c (convert_move): When generating a libcall, make a libcall
	block.
	* calls.c (emit_library_call_value_1): Don't create a libcall
	sequence here; our caller will in most cases do it.

	* sh.h (SECONDARY_INPUT_RELOAD_CLASS): Handle moving T, MACL or
	MACH into FPUL.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Similar case.
	* sh.md (reload_outsf): Generate recognizable patterns for
	TARGET_SH3E.
	(floatsisf2, floatsisf2_ie, floatsisf2_i4, fix_truncsfsi2,
	fix_truncsfsi2_i4, fixsfsi, floatsidf2, floatsidf2_i, fix_truncdfsi2,
	fix_truncdfsi2_i, extendsfdf2, extendsfdf2_i4, truncdfsf2,
	truncdfsf2_i4): Change not to use explicit references to fpul.
	(floatsisf2_ie): Remove USE of fpscr.
	(floatsisf2): Change default expansion to match this.
	(fix_truncsfsi2_i4_2, fix_truncdfsi2_i4 & splitters): Comment out
	unused patterns.

2000-09-15  Richard Henderson  <rth@cygnus.com>

	* expmed.c (store_bit_field): Consider naturally aligned
	memory for direct reference.

2000-09-15  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_expand_unaligned_load): Force all
	AND addresses into alias set 0.
	(alpha_expand_unaligned_store): Likewise.
	(alpha_expand_unaligned_load_words): Likewise.
	(alpha_expand_unaligned_store_words): Likewise.

2000-09-15  Bernd Schmidt  <bernds@redhat.co.uk>

	* config/sh/sh.h (CPP_SPEC): For -m4-nofpu, define __SH4_NOFPU__.
	* config/sh/lib1funcs.asm (movstr_i4): Also compile if __SH4_NOFPU__
	is defined.
	* config/mips/mips.c (mips_va_arg): Args passed by reference have a
	rsize of UNITS_PER_WORD.

Fri 15-Sep-2000 06:49:07 BST  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (ON_REST_ARG): Correct the test.
	(maybe_paste_with_next): Duplicate a token that fail pasting,
	and clear its PASTE_LEFT flag, so that nested pasting attempts
	do not occur.

2000-09-14  Richard Henderson  <rth@cygnus.com>

	* calls.c (precompute_register_parameters): Use COSTS_N_INSNS, not 2.
	* cse.c (rtx_cost): Likewise.
	* optabls.c (expand_binop): Likewise.
	(expand_twoval_binop, prepare_cmp_insn): Likewise.
	* regclass.c (copy_cost): Likewise.
	* reload1.c (reload_cse_move2add): Likewise.

2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (reswords): Add _Complex.

2000-09-14  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gcc.1: Delete documentation for -undef preprocessor option.

2000-09-14  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	STARTFILE_SPEC, ENDFILE_SPEC): Remove define.
	* config/sh/elf.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP):
	Remove undefine before config/elfos.h.
	* config/sh/t-sh (EXTRA_MULTILIB_PARTS): Comment out.

2000-09-14  Kazu Hirata  <kazu@hxi.com>

	* invoke.texi (H8/300 Options): Add -ms2600.
	* config/h8300.c (h8300_init_once): Output an error when -ms2600
	is used without -ms.
	* config/h8300.h (TARGET_MAC): New.
	(TARGET_SWITCHES): Add -ms2600 and -mno-s2600.
	(CONDITIONA_REGISTER_USAGE): Disable the mac register on any
	machine other than H8S/2600.
	* config/h8300.md: Accept mac instructions on the H8S/2600 instead
	of the H8S/2000.

2000-09-14  Alexandre Oliva  <aoliva@redhat.com>, Bernd Schmidt  <bernds@redhat.co.uk>

	* reload.c (find_reloads_address_1): Generate reloads for auto_inc
	pseudos that refer to the original pseudos, not only to their
	equivalent memory locations.

Thu Sep 14 12:10:16 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_EXPR): Copy memory attributes
	when making new MEM.

	* Makefile.in (LN): Remove duplicate definition.

2000-09-12  Bernd Schmidt  <bernds@redhat.co.uk>

	From Joern Rennecke:
	* local-alloc.c (update_equiv_regs): If there is no REG_EQUAL note
	on an insn and function_invariant_p returns nonzero for the source,
	add a REG_EQUAL note.

Thu Sep 14 00:51:57 EDT 2000  John Wehle  (john@feith.com)

	* alias.c (memrefs_conflict_p): An ADDRESSOF doesn't
	conflict with frame_pointer_rtx.

2000-09-13  Kazu Hirata  <kazu@hxi.com>

	* loop.c: Fix formatting.
	* loop.h: Likewise.

2000-09-13  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (divsf3): New.
	(divsf3_internal_lat, divsf3_internal_thr): New.
	(divdf3, divdf3_internal_lat, divdf3_internal_thr): New.
	(divtf3, divtf3_internal_lat, divtf3_internal_thr): New.
	(adddf3_trunc, subdf3_trunc, muldf3_trunc): New.
	(madddf4_trunc, msubdf4_trunc, nmuldf3_trunc): New.
	(nmadddf4_alts, nmadddf4_trunc): New.
	(addtf3_truncsf, addtf3_truncdf, subtf3_truncsf): New.
	(subtf3_truncdf, multf3_truncsf, multf3_truncdf): New.
	(multf3_truncsf_alts, multf3_truncdf_alts): New.
	(maddtf4_truncsf, maddtf4_truncdf, maddtf4_alts_truncdf): New.
	(msubtf4_truncsf, msubtf4_truncdf, nmultf3_truncsf): New.
	(nmultf3_truncdf, nmaddtf4_truncsf, nmaddtf4_truncdf): New.
	(nmaddtf4_truncdf_alts): New.
	(recip_approx): Don't predicate.

2000-09-13  Richard Henderson  <rth@cygnus.com>

	* config/ia64/lib1funcs.asm (__divsf3): Protect fnorm.s with p6.

2000-09-13  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* flags.h (flag_dump_rtl_in_asm): Declare.
	* toplev.c (flag_dump_rtl_in_asm): Define.
	(decode_d_option): Set flag_dump_rtl_in_asm and flag_print_asm_name
	if -dP is specified.
	* rtl.h (print_rtx_head): Declare.
	* print-rtl.c (print_rtx_head): Define.
	(print_rtx): Print the string pointed to by print_rtx_head
	at beginning of each dump line.
	(print_rtl): Likewise.
	(print_rtl_single): Likewise.
	* final.c (final_scan_insn): Dump the insn in the assembly
	file for debugging.
	* gcc.1: Document -dP option.
	* invoke.texi (Debugging Options): Likewise.

2000-09-13  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* md.texi (Machine Constraints): Document the 68HC11 constraints.
	* install.texi (Configurations): Document the 68HC11&68HC12 port.
	* invoke.texi (Option Summary, M68hc1x Options): Document the options.

Tue Sep 12 13:51:13 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.h (ASSEMBLER_DIALECT): New macro declared.
	* config/avr/avr.md (*movstrqi_insn): Cleanup output template.
	(*clrstrqi): Likewise.
	(xorhi3,xorsi3,absqi2): Likewise.
	(one_cmplhi2,one_cmplsi2): Likewise.
	(addsi3): Two stupid constraint alternatives removed.
	(extendhisi2): Use `movw' for enhanced avr cores.
	(zero_extendhisi2): Likewise.

Wed Sep 13 02:31:23 EDT 2000  John Wehle  (john@feith.com)

	* alias.c (find_base_term): Use frame_pointer_rtx
	when handling an ADDRESSOF.

	* cse.c (canon_hash): Handle USE of BLKmode memory.
	(cse_insn): Outgoing arguments for a libcall don't
	affect any recorded expressions.

2000-09-12  Tom Tromey  <tromey@cygnus.com>

	* configure, config.in: Rebuilt.
	* configure.in: Check for iconv, nl_langinfo, langinfo.h.

2000-09-12  Jakub Jelinek  <jakub@redhat.com>

	* c-lex.c (lex_string): Use charwidth to compute bytemask.
	* expr.c (expand_expr): Don't optimize constant array references
	initialized with wide string constants.

2000-09-13  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (note_set_pseudo_multiple_uses): Correct.

2000-09-12  Jim Wilson  <wilson@cygnus.com>

	* ifcvt.c (noce_process_if_block): If A and B are the same, and no
	else block, and X has side-effects, then fail.

2000-09-12  Greg McGary  <greg@mcgary.org>

	* config/mips/mips-protos.h
	(trap_cmp_op, mips_gen_conditional_trap): New func decls.
	* config/mips/mips.h (ISA_HAS_COND_TRAP): New macro.
	(PREDICATE_CODES): Add "trap_cmp_op".
	* config/mips/mips.c
	(trap_cmp_op, mips_gen_conditional_trap): New functions.
	* config/mips/mips.md (trap, conditional_trap): New patterns.

2000-09-12  Bernd Schmidt  <bernds@redhat.co.uk>

	* flow.c (try_pre_increment_1): Don't do anything to sets of the stack
	pointer.

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

	* builtins.c (built_in_decls): New array.
	(expand_builtin_fputs): New function.
	(expand_builtin): Handle BUILT_IN_FPUTC and BUILT_IN_FPUTS.

	* builtins.def (BUILT_IN_FPUTC, BUILT_IN_FPUTS): New members.

	* c-common.c (c_common_nodes_and_builtins): Handle fputc/fputs.

	* tree.h (built_in_decls): New array.

Tue Sep 12 08:53:57 2000  Jeffrey A Law  (law@cygnus.com)

	* convex.md: Use "+" instead of "=" for outputs wrapped in a
	STRICT_LOW_PART.
	* i370.md, i386.md, ns32k.md, sh.md, vax.md: Likewise.

2000-09-12  Kazu Hirata  <kazu@hxi.com>

	* haifa-sched.c: Fix formatting.

	* genattrtab.c: Fix formatting.

	* unroll.c: Fix formatting.

2000-09-12  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c: make a type for the fix procedure & use it,
	remove obsolete code
	* fixinc/fixincl.c: Use PARAMS, not _P_.  Add no-op default to switch.
	* fixinc/fixincl.tpl: make non-exported arrays static scope
	* fixinc/fixincl.x: regenerate
	* fixinc/fixlib.h: Use PARAMS, not _P_
	* fixinc/fixtests.c: make a type for the test proc & use it
	* fixinc/server.h: Use PARAMS, not _P_

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

	* c-typeck.c (process_init_element): Avoid union init warnings on
	floating point zero.  Don't crash on unions containing structs.

2000-09-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (PREDICATE_CODES): Add CONST_DOUBLE to
	general_movsrc_operand, and remove CONST_INT from
	general_movdst_operand.

2000-09-12  Bernd Schmidt  <bernds@redhat.co.uk>

	* cse.c (approx_reg_cost): If SMALL_REGISTER_CLASSES, return INT_MAX
	if a reference to non-fixed hardreg is seen.  Otherwise, count hard
	regs with a higher cost.
	(preferrable): Deal with cases where either cost or regcost is
	MAX_COST.
	(cse_insn): Use MAX_COST rather than 10000.  Always initialize
	regcost values.
	(COSTS_N_INSNS): Move definition...
	* rtl.h: ...here.
	(MAX_COST): New macro.
	* loop.c (init_loop): Use COSTS_N_INSNS macro instead of hardcoded
	constant.

2000-09-11  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (genrtl_clear_out_block): Remove.
	* c-semantics.c (genrtl_clear_out_block): Remove.
	(genrtl_while_stmt): Don't call it.
	(genrtl_for_stmt): Likewise.

2000-09-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c: Move all default-#defines to top of file.
	(open_include_file): Replace by lookup_include_file.
	(read_with_read, read_file): Merged into read_include_file.
	(stack_include_file, purge_cache): New functions.
	(close_cached_fd): Delete.
	(lookup_include_file, read_include_file, _cpp_pop_file_buffer):
	Cache the in-memory buffer, not the file descriptor.

	* cpphash.h (struct include_file): Add buffer, st, refcnt,
	mapped fields.
	(xcnew): New utility macro.
	(DO_NOT_REREAD, NEVER_REREAD): Move up by struct include_file.
	* cpplib.h (struct cpp_buffer): Remove mapped field.

2000-09-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (parse_string): Accept backslash space newline as a
	line continuation.
	(lex_line): Likewise.
	(_cpp_get_token): Remove hard limit on macro nesting.

2000-09-12  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4 (AM_WITH_NLS): Don't force use of included gettext.
	* configure: Rebuilt.

2000-09-13  Michael Hayes  <mhayes@cygnus.com>

	* flow.c (split_block): Fix update of registers live at
	end of split block.

Tue Sep 12 01:51:38 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (add?i_3, add?i_5): New.
	(add?i_4): Rename from add?i_3;  Fix compare pattern.
	(sub?i_3, xor?i_3, ior?i_3): New.

	* genrecog.c (write_tree): Output code to clear insn_extract cache.
	* genattrtab.c (write_attr_case): Gen call to extract_insn_cache
	instead of extract_insn and extract_constrain_insn_cache instead of
	extract_insn and constrain_operands.
	* recog.c (extract_insn_cached, extract_constrain_insn_cached):
	New functions.
	(extract_insn): Clear which_alternative.
	(constrain_operands): Set which_alternative to -1 when failed.
	* recog.h (extract_constrain_insn_cached, extract_insn_cached):
	Declare.

2000-09-11  Matthew Hiller  <hiller@redhat.com>

	* config/h8300/h8300.md (movstrictqi): Changed constraint modifier
	on operand 0 to '+'.
	(movstricthi): Likewise.

2000-09-12  Michael Hayes  <mhayes@cygnus.com>

	* loop.h (LOOP_IVS): New macro.
	(REG_IV_TYPE, REG_IV_INFO): Add ivs argument.
	(struct loop_ivs): New.
	(struct loop_info): Add ivs field.
	(reg_iv_type, reg_iv_info): Delete prototype.
	(reg_biv_class, loop_iv_list): Likewise.
	* loop.c (record_biv, find_life_end): Pass loop argument.
	(reg_iv_type): Remove global array and use
	field in loop_regs structure within loop_ivs structure.
	(reg_iv_info, reg_biv_class, loop_iv_list): Likewise.
	(first_increment_giv, last_increment_giv): Use entry in
	loop_ivs structure.
	(record_initial): Pass ivs pointer.
	* unroll.c (copy_loop_body, remap_split_bivs): Add loop argument.

2000-09-12  Michael Hayes  <mhayes@cygnus.com>

	* loop.h (LOOP_REGS): New macro.
	(struct loop_regs): New.
	(struct loop_info): Add regs field.
	* loop.c (set_in_loop): Remove global array and store
	in loop_regs structure as part of loop_info structure.
	(n_times_set, may_not_optimize): Likewise.
	(reg_single_usage, moved_once): Likewise.
	(count_one_set): Add regs argument.
	(combine_movables, rtx_equal_for_loop_p, combine_givs): Likewise.
	(set_pseudo_multiple_uses): Pass regs pointer.

2000-09-12  Michael Hayes  <mhayes@cygnus.com>

	* unroll.c (iteration_info): Subsume into loop_iterations.
	* loop.h (loop_info): New field iv.

2000-09-12  Michael Hayes  <mhayes@cygnus.com>

	* basic-block.h (LOOP_TREE, LOOP_PRE_HEADER, LOOP_EDGES): New.
	(LOOP_EXITS_DOMS, LOOP_ALL): Likewise.
	(flow_loops_update): New prototype.
	(flow_loops_find): Add flags to prototype.
	(struct loop): Add `pre_header_root' and `pre_header_trace' fields.
	* flow.c (flow_loop_pre_header_scan): New.
	(flow_loop_dump): Dump pre-header root and trace and exit dominators.
	(flow_loop_free): Free pre-header root and trace and exit dominators.
	(flow_loops_find): New argument flags.
	(flow_loops_update): New function.
	* toplev.c (rest_of_compilation): Add flag argument to flow_loops_find.

2000-09-12  Michael Hayes  <mhayes@cygnus.com>

	* basic-block.h (split_block, update_bb_for_insn): New prototypes.
	* flow.c (split_block, update_bb_for_insn): New functions.

2000-09-11  Richard Henderson  <rth@cygnus.com>

	* cse.c (fold_rtx): Honor NO_FUNCTION_CSE.

2000-09-11  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h (fr_nonimmediate_operand): Declare.
	* config/ia64/ia64.c (fr_nonimmediate_operand): New.
	(ia64_override_options): Prevent optimizing division for both
	latency and throughput.
	(rtx_needs_barrier): Handle frcpa.
	* config/ia64/ia64.h (MASK_INLINE_DIV_LAT): New.
	(MASK_INLINE_DIV_THR, TARGET_INLINE_DIV_LAT): New.
	(TARGET_INLINE_DIV_THR, TARGET_INLINE_DIV): New.
	(TARGET_SWITCHES): Add -minline-divide-min-latency and
	-minline-divide-max-throughput.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md (extendsidi2): Remove * from f case.
	(zero_extendsidi2): Likewise.  Fix typo in f case insn.
	(extendsfdf2): Add cases for gr<->fr and fr<->mem.
	(extendsftf2): Likewise.
	(extenddftf2): Likewise.
	(fix_trunctfdi2_alts): New.
	(fixuns_trunctfdi2_alts): New.
	(madd*4): Rename from madd*3.
	(divsi3, modsi3, udivsi3, umodsi3): New.
	(divsi3_internal): New.
	(divdi3, moddi3, udivdi3, umoddi3): New.
	(divdi3_internal_lat, divdi3_internal_thr): New.
	(multf3_alts, maddtf4_alts, nmaddtf4_alts): New.
	(recip_approx): New.

2000-09-11  Alexandre Oliva  <aoliva@redhat.com>

	* print-rtl.c (debug_call_placeholder_verbose): New variable.
	(print_rtx) [CALL_PLACEHOLDER]: Dump all call sequences if it is
	set.
	* integrate.c (copy_rtx_and_substitute): Don't share
	LEAF_REG_REMAPpable registers with the inlined function.  Don't
	share the function value with calling sequences.

2000-09-11  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (do_case): Fix a typo.

	* combine.c (simplify_if_then_else): Don't convert a == b ? b : a
	to a if the comparison is floating mode and not -ffast-math.
	* simplify-rtx.c (simplify_ternary_operation): Likewise.

Mon Sep 11 20:07:48 2000  J"orn Rennecke <amylaar@redhat.co.uk>

	* sh.h (INITIALIZE_TRAMPOLINE): Remove stray call to
	gen_ic_invalidate_line.

2000-09-11  Philip Blundell  <pb@futuretv.com>

	* config/arm/elf.h (SUBTARGET_CPP_SPEC): Don't define `arm_elf'.

Mon Sep 11 10:48:41 2000  Ulrich Drepper <drepper@redhat.com>

	* install.texi (LANGUAGES): Update to include new languages.
	* INSTALL: Rebuilt.

2000-09-11  DJ Delorie  <dj@redhat.com>

	* gcc.c (main): Don't warn about unused -B prefixes
	(unused_prefix_warnings): remove

2000-09-11  Kazu Hirata  <kazu@hxi.com>

	* final.c: Fix formatting.

	* integrate.c: Fix formatting.

2000-09-11  Geoff Keating  <geoffk@cygnus.com>

	* alias.c (memrefs_conflict_p): An ADDRESSOF does conflict, sorry.

2000-09-11  Bernd Schmidt  <bernds@redhat.co.uk>

	* reload.c (regno_clobbered_p): Fix thinko in previous change.

2000-09-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gcc.1: Document 68hc11 specific options.

2000-09-10  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/sysv4.h (MASK_LONG_DOUBLE_128): Define.
	(TARGET_LONG_DOUBLE_128): Define.
	(SUBTARGET_SWITCHES): Add -mlong-double-64 and -mlong-double-128.
	(LONG_DOUBLE_TYPE_SIZE): Redefine.
	(MAX_LONG_DOUBLE_TYPE_SIZE): Define.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define depending on definition
	of __LONG_DOUBLE_128__.
	(CPP_SYSV_SPEC): Define __LONG_DOUBLE_128__ if -mlong-double-128
	passed.
	(CPP_LONGDOUBLE_DEFAULT_SPEC): Define.
	(CPP_SYSV_DEFAULT_SPEC): Define.
	(SUBTARGET_EXTRA_SPECS): Add cpp_longdouble_default.
	(INIT_TARGET_OPTABS): Define.

	* config/rs6000/aix.h (RS6000_ITRUNC): Moved from rs6000.h.
	(RS6000_UITRUNC): Likewise.
	(INIT_TARGET_OPTABS): New macro.
	* config/rs6000/rs6000.c (rs6000_trunc_used): Delete.
	(trunc_defined): Delete.
	(output_prolog): Don't output .extern definitions for fp->int
	conversion routines, ASM_OUTPUT_EXTERNAL_LIBCALL will do it.
	* config/rs6000/rs6000.h (rs6000_trunc_used): Delete.
	(trunc_defined): Delete.
	(RS6000_ITRUNC): Moved to aix.h.
	(RS6000_UITRUNC): Likewise.
	* config/rs6000/rs6000.md (fix_truncdfsi2): Fail if it would
	only emit a libcall.
	(fixuns_truncdfsi2): Delete.
	(trunc_call): Delete.
	(trunc_call_rtl): Delete.

2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>

	* varasm.c (make_decl_rtl): Restore leading star on
	DECL_ASSEMBLER_NAME set for decls with an asmspec.

2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>

	* c-pragma.c (handle_pragma_pack): Correct parsing logic so it
	won't give a spurious error for '#pragma pack()'.  Simplify
	control flow for readability.  'reset' action is not necessary.

2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>

	* defaults.h: Provide default definitions for: CHAR_TYPE_SIZE,
	SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE,
	LONG_LONG_TYPE_SIZE, WCHAR_TYPE_SIZE, FLOAT_TYPE_SIZE,
	DOUBLE_TYPE_SIZE, LONG_DOUBLE_TYPE_SIZE, and WCHAR_UNSIGNED.

	* cppexp.c, dwarfout.c, dwarf2out.c, emit-rtl.c, final.c, optabs.c,
	profile.c, sdbout.c, tradcif.y, tree.c:
	Include defaults.h if not already included.
	Don't define the above macros.

	* Makefile.in: Update dependencies.

2000-09-10  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (add_stmt): Change prototype.
	(RECHAIN_STMTS): New macro.
	(CASE_LABEL_DECL): Likewise.
	(genrtl_case_label): Change prototype.
	(c_expand_start_case): Remove prototype.
	(build_case_label): Change prototype.
	(decl_constant_value): Declare.
	* c-common.c (check_case_value): Handle C++'s extensions to C
	semantics.
	* c-commnon.def (CASE_LABEL): Add room for the CASE_LABEL_DECL
	field.
	* c-parse.in (stmt): Adjust handling of return statements and case
	laels.
	* c-semantics.c (add_stmt): Return the new statement.
	(genrtl_return_stmt): Take the RETURN_STMT as input, not the
	returned expression.  Directly generate RTL, rather than calling
	c_expand_return.
	(genrtl_switch_stmt): Don't call c_expand_start_case.
	(build_case_label): Take the LABEL_DECL as input, too.
	(genrtl_case_label): Just call add_case_node.
	(expand_stmt): Adjust calls to genrtl_return_stmt and
	genrtl_case_label.
	* c-tree.h (c_expand_start_case): Declare.
	* c-typeck.c (decl_constant_value): Give it external linkage.
	(c_expand_return): Don't call expand_return or expand_null_return;
	use genrtl_return_stmt instead.
	* stmt.c (struct nesting): Remove num_ranges field.
	(add_case_node): Give it external linkage.
	(expand_start_case): Don't set num_ranges.
	(expand_start_case_dummy): Don't clear it.
	(pushcase): Rely on add_case_node to handle `default' labels.
	(add_case_node): Handle `default' labels.
	* tree.c (tree_int_cst_compare): New function.
	* tree.h (tree_int_cst_compare): Declare.
	(add_case_node): Likewise.

2000-09-10  Richard Henderson  <rth@cygnus.com>

	* c-parse.in: Revert last change.
	(init_reswords): Do not enter disabled keywords into the ridpointers
	table, modulo objc weirdness.
	(_yylex): Return the canonical spelling for a keyword.

2000-09-10  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (CPP_ISA_SPEC): Don't define `arm' or `thumb'.
	* config/arm/linux-elf.h (CPP_PREDEFINES): Don't define `__arm__'.

Sun Sep 10 14:30:28 EDT 2000  John Wehle  (john@feith.com)

	* alias.c (find_base_term): Handle ADDRESSOF.
	(memrefs_conflict_p): An ADDRESSOF doesn't conflict.

2000-09-10  Denis Chertykov  <denisc@overta.ru>

	* genoutput.c (output_insn_data): Translate <NEWLINE> to \n\ while
	outputting templates with many lines.

2000-09-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* libgcc2.h: Use LONG_LONG_TYPE_SIZE instead of MIN_UNITS_PER_WORD
	to decide whether 64-bit support must be generated.

2000-09-10  Richard Henderson  <rth@cygnus.com>

	* c-parse.in (asm patterns): Fix volatile check.

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

	* cppmacro.c (check_trad_stringification): New function.
	(save_expansion): If -Wtraditional, warn about stringification of
	macro arguments.

2000-09-11  Michael Hayes  <mhayes@cygnus.com>

	* loop.h (struct loop_mem_info): Move from loop.c
	(struct loop_info): Add fields store_mems, mems, mems_idx,
	mems_allocated, unknown_address_altered,
	unknown_constant_address_altered, num_mem_sets, and
	first_loop_store_insn.

	* loop.c (loop_store_mems): Replace with field in loop_info struct.
	(loop_mems, loop_mems_idx, loop_mems_allocated): Likewise.
	(unknown_address_altered, unknown_constant_address_altered): Likewise.
	(num_mem_sets): Likewise.
	(replace_loop_mems, replace_loop_regs): New.
	(struct loop_replace_args): New.
	(load_mems): Use replace_loop_mems.
	(try_copy_prop): Use replace_loop_regs.
	(replace_loop_reg, replace_loop_mem): Use loop_replace_args structure.

2000-09-09  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* configure.in: Recognize m6811-elf and m6812-elf.
	* configure: Regenerate.

2000-09-09  Geoff Keating  <geoffk@cygnus.com>

	* recog.c (validate_replace_rtx_1): Correct MODE parameter in call
	to operand_subword.

2000-09-10  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (struct movables): New.
	(num_movables): Move into struct movables.
	(the_movables): Change type to struct movables.
	(ignore_some_movables): Change struct movable arg to struct movables.
	(force_movables, combine_movables, regs_match_p): Likewise.
	(rtx_equal_for_loop_p, move_movables): Likewise.
	(scan_loop): Change movables to be of type struct movables.
	Replace last_movable with field in movables structure.

2000-09-08  Zack Weinberg  <zack@wolery.cumb.org>

	* c-pragma.c: Don't elide entire file if !HANDLE_GENERIC_PRAGMAS.
	(init_pragma): Avoid warning if pfile happens to be unused.
	* c-pragma.h: Never define HANDLE_GENERIC_PRAGMAS.  Never
	define init_pragma to nothing.  Always prototype
	init_pragma.  Prototype dispatch_pragma if !USE_CPPLIB.

	* c-lex.c (process_directive): Always call dispatch_pragma.
	Initialize entering_c_header to 0.

2000-09-08  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md: New file, machine description for
	68HC11 & 68HC12.
	* config/m68hc11/m68hc11.h: New file, definitions for 68HC11 & 68HC12.
	* config/m68hc11/m68hc11.c: New file, functions for 68HC11 & 68HC12.
	* config/m68hc11/m68hc12.h: New file, definitions for 68HC12.
	* config/m68hc11/m68hc11-protos.h: New file.
	* config/m68hc11/m68hc11-crt0.S: New file, startup code.
	* config/m68hc11/t-m68hc11-gas: New file, makefile fragment.
	* config/m68hc11/xm-m68hc11.h: New file, target defs.
	* config/m68hc11/larith.asm: New file, libgcc routines.

2000-09-08  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* Makefile.in (DPBIT_FUNCS): Add _usi_to_df.
	(FPBIT_FUNCS): Add _usi_to_sf.
	* config/fp-bit.c (usi_to_float): New function.
	* config/fp-bit.h (L_usi_to_sf, L_usi_to_df): Define.
	(usi_to_float): Add appropriate #define.

2000-09-08  Bernd Schmidt  <bernds@redhat.co.uk>

	* i386-protos.h (sse_comparison_operator, mmx_reg_operand): Declare
	new functions.
	* i386.c (sse_comparison_operator, mmx_reg_operand): New functions.
	* i386.md (attr "type"): Add sse and mmx types.
	(attr "memory"): Handle them without a crash.
	(movsi_1, movdi_2): Allow MMX regs.
	(movdi splits): Don't split moves involving MMX regs.
	(setcc_4): Remove '*' from pattern name so we get a gen_setcc4.
	(movv4sf_internal, movv4si_internal, movv8qi_internal,
	movv4hi_internal, movv2si_internal, movv8qi, movv4hi, movv2si,
	movv4sf, movv4si, pushv4sf, pushv4si, pushv8qi, pushv4hi, pushv2si,
	sse_movaps, sse_movups, sse_movmskps, mmx_pmovmskb, mmx_maskmovq,
	sse_movntv4sf, sse_movntdi, sse_movhlps, sse_movlhps, sse_movhps,
	sse_movlps, sse_loadss, sse_movss, sse_storess, sse_shufps,
	addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, mulv4sf3, vmmulv4sf3,
	divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2, rsqrtv4sf2, vmrsqrtv4sf2,
	sqrtv4sf2, vmsqrtv4sf2, sse_andti3, sse_nandti3, sse_iorti3,
	sse_xorti3, maskcmpv4sf3, maskncmpv4sf3, vmmaskcmpv4sf3,
	vmmaskncmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps,
	smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi,
	cvttps2pi, cvtsi2ss, cvtss2si, cvttss2si, addv8qi3, addv4hi3,
	addv2si3, ssaddv8qi3, ssaddv4hi3, usaddv8qi3, usaddv4hi3, subv8qi3,
	subv4hi3, subv2si3, sssubv8qi3, sssubv4hi3, ussubv8qi3, ussubv4hi3,
	mulv4hi3, smulv4hi3_highpart, umulv4hi3_highpart, mmx_pmaddwd,
	mmx_iordi3, mmx_xordi3, mmx_anddi3, mmx_nanddi3, mmx_uavgv8qi3,
	mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pextrw, mmx_pshufw,
	eqv8qi3, eqv4hi3, eqv2si3, gtv8qi3, gtv4hi3, gtv2si3, umaxv8qi3,
	smaxv4hi3, uminv8qi3, sminv4hi3, ashrv4hi3, ashrv2si3, lshrv4hi3,
	lshrv2si3, mmx_lshrdi3, ashlv4hi3, ashlv2si3, mmx_ashldi3,
	mmx_packsswb, mmx_packssdw, mmx_packuswb, mmx_punpckhbw,
	mmx_punpckhwd, mmx_punpckhdq, mmx_punpcklbw, mmx_punpcklwd,
	mmx_punpckldq, emms, sfence, ldmxcsr, prefetch, stmxcsr, sse_clrti,
	mmx_clrdi): New patterns.

2000-09-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c: Don't include tm.h directly.

Fri Sep  8 14:34:56 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Fix confusion about equality
	testing; simplify subregs of constants and nested subregs.

2000-09-08  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (symPLT_label2reg): Use operand3 for PIC reg.

2000-09-08  Bernd Schmidt  <bernds@redhat.co.uk>

	* combine.c (combine_simplify_rtx): Try to simplify VEC_SELECT of a
	VEC_CONCAT.
	* rtl.texi (description of USE): Add note about possible pitfalls
	with this rtx.
	From Richard Henderson:
	* reload1.c (choose_reload_regs): Compute need_mode properly.

2000-09-07  Richard Henderson  <rth@cygnus.com>

	* config/ia64/lib1funcs.asm (__divsi3): Use .s1 for frcpa.
	(__modsi3, __umodsi3): Likewise.
	(__udivsi3): Likewise.  Normalize the TFmode values.

2000-09-07  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/sol-c0.c (_start): Declare `termfunc' parameter
	with a prototype.
	* config/rs6000/rs6000.h (RS6000_ARG_SIZE): Use cast to suppress
	warning.

Fri Sep  8 03:26:38 2000  J"orn Rennecke <amylaar@redhat.co.uk>

	* sh.md (cmpeqsi_ior_t, cmpeqsi_and_t): Remove.
	(cmpeqdi_t): Add output pattern.
	(cmpeqdi_t+1): Don't split when not optimizing.
	Restore proper splitting operation.

2000-09-07  Richard Henderson  <rth@cygnus.com>

	* c-lex.c (process_directive): If not HANDLE_GENERIC_PRAGMAS,
	do not call dispatch_pragma.

2000-09-07  Jim Wilson  <wilson@cygnus.com>

	* reload.c (push_reload): Use CLASS_CANNOT_CHANGE_MODE_P in addition
	to CLASS_CANNOT_CHANGE_MODE.
	* config/ia64/ia64.h (CLASS_CANNOT_CHANGE_MODE_P): True only if the
	mode classes are different.

2000-09-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (struct cpp_options): Add user_label_prefix member,
	left out of commit which removed cppulp.c.

2000-09-07  Richard Henderson  <rth@cygnus.com>

	* bb-reorder.c (fixup_reorder_chain): Add jump in new block
	after switch for CASE_DROPS_THROUGH.

2000-09-07  Richard Henderson  <rth@cygnus.com>

	* loop.c (strength_reduce): Call check_ext_dependant_givs.
	Properly extend the biv initial value for the giv.
	(record_biv): Zero ext_dependant.
	(record_giv): New argument ext_val.  Update all callers.
	(general_induction_var): Likewise.
	(consec_sets_giv): Likewise.
	(simplify_giv_expr): Likewise.  Fill in ext_val if we find
	a sign-extend, zero-extend, or truncate.
	(combine_givs_p): Make sure modes are compatible.
	(check_ext_dependant_givs): New.
	(extend_value_for_giv): New.
	* loop.h (struct induction): Add ext_dependant.
	* unroll.c (iteration_info): Extend the biv initial value for the giv.
	(find_splittable_givs): Likewise.
	(final_giv_value): Likewise.

2000-09-07  Zack Weinberg  <zack@wolery.cumb.org>

	* c-pragma.h: Define HANDLE_GENERIC_PRAGMAS if
	REGISTER_TARGET_PRAGMAS is defined.  Duplicate some
	definitions from cpplib.h.
	* cpplib.h: Don't typedef struct cpp_reader if c-pragma.h has
	already done it.
	* tm.texi: Document HANDLE_PRAGMA as no longer supported.  Add
	documentation for REGISTER_TARGET_PRAGMAS.

	* c-lex.c: Include cpplib.h before c-pragma.h.  Define a
	default-pragma callback to implement -Wunknown-pragmas if
	USE_CPPLIB.
	* c-parse.in: Move all includes to top of file.
	* c-pragma.c: Include cpplib.h before c-pragma.h.  Include
	tm_p.h.
	(dispatch_pragma): Put the namespace in the -Wunknown-pragmas
	warning.
	(init_pragma): If REGISTER_TARGET_PRAGMAS is defined, call it.

	* arm.h, arm-protos.h, arm.c,
	  c4x.h, c4x-protos.h, c4x.c,
	  h8300.h, h8300-protos.h, h8300.c,
	  i370.h, i370-protos.h, i370.c,
	  i960.h, i960-protos.h, i960.c,
	  sh.h, sh-protos.h, sh.c,
	  v850.h, v850-protos.h, v850.c: Convert HANDLE_PRAGMA-based
	pragmata scheme to use REGISTER_TARGET_PRAGMAS instead.

	* d30v.h: Don't mention HANDLE_PRAGMA in comment.  Add
	multiple include guard.
	* i370.md (untyped_call): Use GEN_CALL.
	(umodsi3): Remove unused variable.
	* sh/elf.h: Don't undef HANDLE_SYSV_PRAGMA.
	* v850.c (output_move_single, output_move_double): Constify
	return value.
	(print_operand): Constify a char *.
	* v850.h (struct small_memory_info): Constify name member.

2000-09-07  Kazu Hirata  <kazu@hxi.com>

	* config/h8300.h: Fix comment typos.
	* config/h8300/h8300.md: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.

Thu 07-Sep-2000 21:29:00 BST  Neil Booth  <NeilB@earthling.net>

	* Makefile.in: Remove references to cppulp.{c,o}.
	* cppinit.c (initialize_builtins, cpp_start_read,
	cpp_handle_option): Update to use cpp_options structure.
	* cppulp.c: Remove.

2000-09-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (time_char_table): Allow %#b and %#h.

2000-09-07 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* reorg.c (find_end_label): If the basic block reorder pass moves the
	return insn to some other place try to locate it again and put our
	end_of_function_label there.
	* reorg.c (relax_delay_slots): Check if find_end_label created a
	new label that invalidates the current optimazation.

2000-09-07  Catherine Moore  <clm@redhat.com>

	* unroll.c (unroll_loop): Check for unconditional jumps
	to loop continuation.  Delete if n_iterations is 1.
	(ujump_to_loop_cont): New routine.

2000-09-07  Bernd Schmidt  <bernds@redhat.co.uk>

	* rtl.c (class_narrowest_mode): Add entries for MODE_VECTOR_INT and
	MODE_VECTOR_FLOAT.
	* reload.c (regno_clobbered_p): Accept new arg, MODE, and use it
	to handle multiword modes correctly.  All callers and the declaration
	changed.

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

	* c-common.h (prep_stmt): Declare.
	(lang_expand_stmt): Likewise.
	* c-decl.c (lang_expand_stmt): Remove.
	* c-semantics.c (lang_expand_stmt): Define.
	(prep_stmt): New function.
	(expand_stmt): Handle common statement types here.

2000-09-07  Niibe Yutaka  <gniibe@m17n.org>, Kaz Kojima  <kkojima@rr.iij4u.or.jp>, Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (sh-*-linux*): Added.
	* configure: Rebuilt.
	* config/sh/t-linux: New file.
	* config/sh/sh.h (USERMODE_BIT): Define.
	(TARGET_USERMODE): Likewise.
	(TARGET_SWITCHES): New switches for the bits above.
	(INITIALIZE_TRAMPOLINE): Call __ic_invalidate in USERMODE.
	* config/sh/linux.h: New file.
	* config/sh/lib1funcs.asm (GLOBAL): Don't prefix symbols with
	underscore on linux.
	(L_sdivsi3, L_udivsi3): Define for linux.
	(L_ic_invalidate): Define.
	* invoke.texi (SH Options): Document -musermode.

2000-09-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (OVERRIDE_OPTIONS): Don't disable function
	CSE unless generating PIC.

	* config/sh/sh.md (symPLT_label2reg): Force the initialization of
	the PIC register.

2000-09-06  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (clean_s1): Depend on stage_b.
	(clean_s2): Depend on stage_d. Don't remove $(VOL_FILES) in
	stage2. They are used for "make compare".

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

	Move statement-tree facilities from C++ to C front-end.
	* c-common.h (c_tree_index): Add CTI_VOID_ZERO.
	(void_zero_node): New macro.
	(struct stmt_tree_s): New type.
	(stmt_tree): New typedef.
	(struct language_function): New type.
	(last_tree): New macro.
	(last_expr_type): Likewise.
	(walk_tree_fn): New typedef.
	(current_stmt_tree): New function.
	(begin_stmt_tree): Likewise.
	(add_stmt): Likewise.
	(finish_stmt_tree): Likewise.
	(statement_code_p): Likewise.
	(lang_statement_code_p): New variable.
	(walk_stmt_tree): New function.
	(STMT_IS_FULL_EXPR_P): New macro.
	* c-common.c (lang_statement_code_p): New variable.
	(c_common_nodes_and_builtins): Initialize void_zero_node.
	(statement_code_p): New function.
	(walk_stmt_tree): Likewise.
	* c-decl.c (language_function): Rename to ...
	(c_language_function): ... this.  Include language_function.
	(push_c_function_context): Adjust accordingly.
	(pop_c_function_context): Likewise.
	(mark_c_function_context): Likewise.
	(current_stmt_tree): Define.
	* c-semantics.c (begin_stmt_tree): New function.
	(add_stmt): Likewise.
	(prune_unused_decls): Likewise.
	(finish_stmt_tree): Likewise.

2000-09-06 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* flow.c (insn_dead_p): Detect dead memory stores with auto increments.

2000-09-06  Kazu Hirata  <kazu@hxi.com>

	* calls.c: Fix formatting.

2000-09-06  Graham Stott  <grahams@cygnus.co.uk>

	* config/i386/i386.h (ADDRESS_COST): Fix typo.

2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>

	Integrated preprocessor.

	* Makefile.in: Remove all references to c-parse.gperf,
	c-gperf.h, and c-parse.h.  Remove -d from yacc command line
	generating c-parse.c.  Update dependencies.
	* c-parse.gperf, c-gperf.h: Delete.

	* c-common.c: Don't define parse_options, cpp_token, yy_cur,
	yy_lim, or yy_get_token.  Don't define get_directive_line if
	USE_CPPLIB.
	* c-common.h: Add multiple include guard.  Define RID values
	for every keyword in C, C++, and Objective-C.  Put all the
	modifiers first.
	(struct c_fileinfo, get_fileinfo, dump_time_statistics): New.
	* c-decl.c (c_decode_option): Handle -lang-objc here.
	(print_lang_identifier): Handle C_IS_RESERVED_WORD case.
	(grokdeclarator): Adjust for new RID scheme.
	(extract_interface_info): New stub.
	* c-lang.c: Don't declare yy_cur or parse_options.
	(lang_init_options): Call cpp_init.  Don't call
	cpp_options_init.
	(lang_init): Don't call check_newline if USE_CPPLIB.

	* c-lex.c: Don't include c-parse.h.  Do include timevar.h.
	Elide lots of unnecessary code if USE_CPPLIB.  Delete code
	rendered unnecessary by new architecture.  Move routines not
	shared with C++ to c-parse.in.  Maintain a local idea of the
	line number.    Handle C++ as well as C.
	[USE_CPPLIB]: Declare and register callbacks for #ident and
	for entering/leaving files.
	(init_c_lex, c_lex): Are now the entry points to this file.
	(check_newline): Break out directive handling to
	process_directive.
	(read_ucs, is_extended_char, utf8_extend_token): Moved here
	from C++ front end.
	(readescape, parse_float): Overhaul.
	(lex_number, lex_string, lex_charconst): Break out of c_lex
	(n'ee yylex).
	(get_fileinfo, update_header_times, dump_one_header,
	dump_time_statistics): New and/or moved here from C++.
	Support per-file data needed by C++ and per-header timing
	statistics (C++ only, at the moment).
	* c-lex.h: Update prototypes.  Add multiple include guard.
	* c-tree.h (struct lang_identifier): Add rid_code field.
	(C_IS_RESERVED_WORD, C_RID_CODE): New.

	* c-parse.in: Include c-pragma.h. Remove unnecesary calls to
	reinit_parse_for_function and/or position_after_white_space.
	(save_filename, save_lineno): Look ahead before saving.
	(label -> identifier ':'): Save file and line before shifting ':'.
	(reservedwords): No need to call get_identifier.
	(init_parse, finish_parse, yyerror, yylex, yyprint,
	make_pointer_declarator): Are now here for C/ObjC.
	(rid_to_yy): Conversion table from RID constants to Yacc codes.

	* c-pragma.c: Rewrite parsing logic to fit with cpplib's
	#pragma registry.  Provide dummy implementation of that
	interface if !USE_CPPLIB.
	* c-pragma.h: Update to match.

	* flags.h: Add multiple include guard.
	(flag_detailed_statistics): Moved here from C++.
	* toplev.c: Define flag_detailed_statistics.

	* gcc.c (C specs): Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* timevar.def (TV_CPP, TV_LEX): New.
	* timevar.h: Add multiple include guard.

	* objc/lang-specs.h: Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* objc/objc-act.c: Don't mention yy_cur or parse_options.
	Initialize cpplib properly.  Force lineno to 0 after first
	call to check_newline.  Don't handle -lang-objc here.
	Move forget_protocol_qualifiers and remember_protocol_qualifiers here.

2000-09-06  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md: Correct function unit definitions for cr_logical and
	mtjmpr.
	(sCOND): Additionally fail for sgt, slt, sge, sle if !TARGET_POWER
	and use portable method for >=0 and floating point >=.  Remove
	associated matchers.

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

	* extend.texi: Mark named return value extension as deprecated.

2000-09-06  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (rs6000_reverse_condition): Return
	the result.

2000-09-06  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.c (display_help): Fix thinko in documentation.

	* diagnostic.h (output_buffer::indent_skip): New fields.
	(output_indentation): New macro.

	* diagnostic.c (output_indent): New function.
	(output_set_prefix, clear_diagnostic_info): Use.
	(output_emit_prefix): Predict future indentation.

2000-09-06  DJ Delorie  <dj@redhat.com>

	* Makefile.in (stage_*): add more dependencies to ensure parallel
	builds build correctly

2000-09-06  Manfred Hollstein  <manfredh@redhat.com>

	* Makefile.in (bootstrap-lean): Depend on bootstrap-lean_g,
	not bootstrap-lean_f.

2000-09-06  Andreas Schwab  <schwab@suse.de>

	* mklibgcc.in: Emit rule for libgcc-stage-start.
	* Makefile.in (stage1-start, stage2-start, stage3-start,
	stage4-start): Don't handle libgcc here, use libgcc.mk instead.

2000-09-06  Bernd Schmidt  <bernds@redhat.co.uk>

	* local-alloc.c (local_alloc): Ignore CLASS_LIKELY_SPILLED.
	(update_equiv_regs): Likewise, except for the mn10200 kludge.
	(combine_regs): Likewise.

	* Makefile.in (cse.o): Depend on $(BASIC_BLOCK_H).
	* cse.c: Include "basic-block.h".
	(struct table_elt): New field REGCOST.
	(CHEAP_REG): Delete macro.
	(COST): Return 0 for REGs.
	(approx_reg_cost_1, approx_reg_cost, preferrable): New functions.
	(notreg_cost): Return 0 for appropriate SUBREGs.
	(COSTS_N_INSNS): Return N * 2.
	(rtx_cost): Return 0 for REGs, and use cost of nested rtx for cheap
	SUBREGs.
	(CHEAPER): Use new function preferrable.
	(insert): Initialize REGCOST member.
	(find_best_addr): Use approx_reg_cost for estimation of register
	usage.
	(cse_insn): Likewise.
	* loop.c (iv_add_mult_cost): New function.
	(add_cost, shift_cost, mult_cost): Delete variables.
	(init_loop): Don't initialize add_cost; reduce copy_cost by half.
	(strength_reduce): Use iv_add_mult_cost instead of fixed add_cost.
	Make code that detects autoinc opportunities slightly less optimistic.
	(simplify_giv_expr): If expression contains other reg that is also a
	giv, only increment benefit if this is the only use of that reg.
	(consec_sets_giv): Take that change into account.
	(combine_givs): Slightly more verbose output.

	* i386.h (RTX_COSTS): For MULT, return true cost of multiplication,
	not the cost of an equivalent shift.
	* sh-protos.h (addsubcosts): Declare.
	* sh.c (addsubcosts): New function.
	* sh.h (CONST_COSTS): If CONST_OK_FOR_I, then return 0.
	(RTX_COSTS): Tweak.  Use addsubcosts.
	(ADDRESS_COST): Return higher cost for reg+reg addressing.

2000-09-06  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (validate_condition_mode): New function.
	(branch_comparison_operator): Call validate_condition_mode to
	abort rather than returning 0.
	(branch_positive_comparison_operator): New function.
	(scc_comparison_operator): Call validate_condition_mode to abort
	rather than returning 0.
	(ccr_bit): Call validate_condition_mode.  Update for
	new branch scheme.
	(print_operand): Delete %C modifier.  Update %E case
	to use EQ bit not SO bit.
	(rs6000_reverse_condition): New function.
	(rs6000_generate_compare): New function.
	(rs6000_emit_sCOND): New function.
	(rs6000_emit_cbranch): New function.
	(output_cbranch): The length of a long branch insn is
	now only 8 bytes.  Add validate_condition_mode.  Use
	rs6000_reverse_condition.  Remove cror generation.

	* config/rs6000/rs6000.h: Update comments.
	(PREDICATE_CODES): Add new predicate.  Update codes used
	by branch_comparison_operator and scc_comparison_operator.
	* config/rs6000/rs6000-protos.h: Add prototypes for
	new external functions.
	* config/rs6000/rs6000.md: Add new scheduling parameters
	for cr_logical instructions.  Change length of branch
	instructions.
	(bCOND patterns): Call rs6000_emit_cbranch.
	(sCOND patterns): Call rs6000_emit_sCOND.
	(branch patterns): Change lengths to 4.
	(cr logical patterns): New.

2000-09-06  Richard Henderson  <rth@cygnus.com>

	* config/i386/i386.md (call_pop): Fix test for setting
	current_function_uses_pic_offset_table.
	(call, call_value_pop, call_value): Likewise.

2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>

	* timevar.c (timevar_add): Delete.
	(timevar_get): Also count time since the selected timer was
	last updated.  Do not examine the timevar stack if the
	selected timer is standalone.

2000-09-05  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gthr-dce.h (__gthread_objc_mutex_deallocate): Free mutex->backend.

2000-09-05  Jason Merrill  <jason@redhat.com>

	* c-decl.c (finish_incomplete_decl): Don't call complete_array_type
	for 'extern' arrays.

2000-09-05  Richard Henderson  <rth@cygnus.com>

	* config/ia64/lib1func.asm (__divtf3): Rebundle for Itanium.
	Eliminate final copy from non-trapping case.
	(__divdf3, __divsf3): Likewise.

2000-09-05  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (mulhi3): Fix typo last change.
	* config/ia64/lib1func.asm (__divdi3, __udivdi3, __umodsi3): Likewise.

2000-09-03  Donn Terry  <donn@interix.com>,  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Restructure bootstrap stages to allow clean
	restart after failure.

2000-09-05  Richard Henderson  <rth@cygnus.com>

	* config/ia64.md (movsi and movdi patterns): Allow moves from
	8-bit constants to AR registers.

2000-09-05  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (mulhi3): New.

2000-09-05  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.h (INIT_TARGET_OPTABS): Remove.
	* config/ia64/lib1funcs.asm (__divdi3): Update from Intel IA-64
	Optimization Guide, minimum latency alternative.
	(__moddi3, __udivdi3, __umoddi3): Likewise.
	(__divsi3, __modsi3, __udivsi3, __umodsi3): Likewise.

2000-09-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixincl.c (load_file): always read header files
	with sizes that are a multiple of the page size.
	& use libiberty's getpagesize for determining that.

2000-09-05  Alexandre Oliva  <aoliva@redhat.com>

	* gcse.c (hash_string_1): Add prototype.
	* cse.c (canon_hash_string): Likewise.

2000-09-04  Craig Newell  <CraigN@ieee.org>

	* gcc.c: Undefine "__WCHAR_TYPE__" before redefining it.

2000-09-04  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (STAGESTUFF): Remove libgcc.
	(stage1-start, stage2-start, stage3-start): Copy the contents of
	the libgcc directory explicitly.
	(mostlyclean): Clean libgcc.

2000-09-04  Andrew Haley  <aph@redhat.com>

	* dwarf2out.c: (stack_adjust_offset): New prototype.

Wed Jan  1 00:23:59 MET 1997  Jan Hubicka  <jh@suse.cz>

	* combine.c (make_extraction): Fix rtx_cost comparison to
	match the comment.

Wed Jan  1 00:17:32 MET 1997  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushsi2, pushhi2, pophi2, swapsf, swapdf,
	umulsi3_highpart, smulsi3_highpart, testqi_ccno_1, xorqi_ext_1):
	Add '*' to insn pattern name.

2000-09-04  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (ON_REST_ARG): Check VAR_ARGS flag of current context,
	use posn - 1 to index into tokens array.
	(maybe_paste_with_next): Adjust caller.

2000-09-03  Geoff Keating  <geoffk@cygnus.com>

	* invoke.texi: Document the -mvxworks option for rs6000 ELF.

	* config/rs6000/rs6000.h: Update various comments about XER_REGNO.
	(REGNO_REG_CLASS): Use symbolic register
	names.

2000-09-03  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (final_prescan_insn): If the form of a jump insn isn't
	recognized, don't try to conditionally execute it.

Sun Sep  3 13:10:56 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md ("*tablejump_lib"): New pattern.
	(call_value_insn): Right length claculation.
	(call_insn): Likewise.

2000-09-02  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr-protos.h, config/avr/avr.c (unique_section,
	gas_output_limited_string, gas_output_ascii, output_movqi,
	output_movhi, out_movqi_r_mr, out_movqi_mr_r, out_movhi_r_mr,
	out_movhi_mr_r, out_movsi_r_mr, out_movsi_mr_r, output_movsisf,
	out_tstsi, out_tsthi, ret_cond_branch, ashlqi3_out, ashlhi3_out,
	ashlsi3_out, ashrqi3_out, ashrhi3_out, ashrsi3_out, lshrqi3_out,
	lshrhi3_out, lshrsi3_out, output_reload_inhi, output_reload_insisf,
	out_shift_with_cnt, ptrreg_to_str, cond_string, encode_section_info):
	Add "const" as needed to remove warnings.

	* config/avr/avr.c (avr_override_options, avr_init_once,
	function_prologue, function_epilogue, frame_pointer_required_p,
	class_likely_spilled_p, order_regs_for_local_alloc,
	avr_address_cost, avr_ret_register): Use K&R style arguments.
	(initial_elimination_offset, gas_output_limited_string):
	Remove ATTRIBUTE_UNUSED from the used arguments.
	(output_mov*, out_mov*_r_mr, out_mov*_mr_r, output_reload_insisf):
	Use local variables src, dest, base to access operands[].
	Rename reg_dest to reg_src if that's what it is.
	(output_movhi, output_movsisf): Optimize loading 8-bit immediate
	constants to LD_REGS if reg_was_0.
	(output_reload_insisf): Change arg 3 to insn length and set it.
	(out_movhi_r_mr, out_movhi_mr_r): Use in/out for more efficient
	access to 16-bit I/O register pairs.
	(avr_address_cost): Lower cost for the above case.
	(out_tsthi): Use "or" (faster) instead of "sbiw" if the operand
	may be clobbered, also for LD_REGS.
	(adjust_insn_length): Correct insn length for iorhi3 and iorsi3
	with a CONST_INT.

	* config/avr/avr.h (PTRDIFF_TYPE): Make signed.

	* config/avr/avr.md: Change all uses of the TEST_HARD_REG_CLASS
	macro to test_hard_reg_class function.
	(*movsi, *movsf): Change "cc" attribute from "clobber" to "none"
	for loading immediate constants to LD_REGS.
	(andsi3, cmphi, cmpsi): Add return statements to avoid warnings.


Sat Sep  2 13:58:23 2000  Marek Michalkiewicz <marekm@linux.org.pl>

	* config/avr/avr.md ("*negsi2"): substitute %@ to __zero_reg__
	* config/avr/libgcc.S: Lost part of the previous patch.

2000-08-31  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gthr-dce.h (__gthread_objc_mutex_allocate): Create a pthread_mutex_t
	object before calling pthread_mutex_init.

2000-09-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/t-elf, config/sh/crt1.asm, config/sh/crti.asm,
	config/sh/crtn.asm: New files.
	* config/sh/t-sh (EXTRA_MULTILIB_PARTS): Set.
	(crt1.o, crti.o, crtn.o): New targets.
	* configure.in [sh-*-elf*, sh-*-rtemself*] (tmake_file): Added
	sh/t-elf.
	* configure: Rebuilt.
	* config/sh/sh.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
	STARTFILE_SPEC, ENDFILE_SPEC, CRT_CALL_STATIC_FUNCTION): Define.
	* config/sh/elf.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP):
	Undefine for config/elfos.h to redefine.
	(STARTFILE_SPEC, ENDFILE_SPEC): Redefine after config/elfos.h.

2000-09-02  Alexandre Oliva  <aoliva@redhat.com>, Niibe Yutaka  <gniibe@m17n.org>, Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* config/sh/sh-protos.h (nonpic_symbol_mentioned_p,
	legitimize_pic_address, output_pic_addr_const): Declare.
	* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Fix PIC register.
	(PREFERGOT_BIT, TARGET_PREFERGOT): Likewise.
	(TARGET_SWITCHES): New switch -mprefergot.
	(OVERRIDE_OPTIONS): Set flag_no_function_cse unless -mprefergot.
	(PIC_OFFSET_TABLE_REGNUM): Define.
	(GOT_SYMBOL_TABLE): Likewise.
	(LEGITIMIZE_ADDRESS): Use legitimize_pic_address.
	(ENCODE_SECTION_INFO): Define.
	(FINALIZE_PIC): New macros.
	(LEGITIMATE_PIC_OPERAND_P, SYMBOLIC_CONST_P): New macro.
	(ASM_OUTPUT_INT, ASM_OUTPUT_SHORT): Use output_pic_addr_const.
	* config/sh/sh.c (print_operand_address): Use output_pic_addr_const.
	(prepare_move_operands): Call emit_pic_move or
	emit_pic_const_move if appropriate.
	(output_far_jump): For PIC, use braf and output long offset.
	(machine_dependent_reorg):
	(sh_expand_prologue): Save and initialize the PIC register.
	(sh_expand_epilogue): Restore it.
	(initial_elimination_offset): Account for it.
	(nonpic_symbol_mentioned_p): New function.
	(legitimize_pic_address): Likewise.
	(output_pic_addr_const): Likewise.
	* config/sh/sh.md (calli_pcrel, call_valuei_pcrel): New insns.
	(call, call_value): Use them.
	(GOTaddr2picreg, sym_label2reg, symGOT2reg, symGOTOFF2reg,
	symPLT_label2reg): New expands.
	* invoke.texi (SH Options): Document -mprefergot.

2000-09-01  Alexandre Oliva  <aoliva@redhat.com>

	* rtl.h (ASM_OPERANDS_INPUT_CONSTRAINT_EXP): New macro.
	* gcse.c (hash_string_1): New function.
	(hash_expr_1) <ASM_OPERANDS>: Disregard filename and line number.
	(expr_equiv_p) <ASM_OPERANDS>: Likewise.
	* cse.c (rtx_cost): Don't increase the cost of ASM_OPERANDS.
	(canon_hash_string): New function.
	(canon_hash) <ASM_OPERANDS>: Disregard filename and line number.
	(exp_equiv_p) <ASM_OPERANDS>: Likewise.
	(fold_rtx): Use ASM_OPERANDS accessor macros.
	* emit-rtl.c (copy_insn_1): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* stmt.c (expand_asm_operands): Likewise.  Give an
	ASM_OPERANDS rtx the mode of the output reg being set from it.

2000-09-01  Fred Fish  <fnf@be.com>

	* fix-header.c (write_rbrac): Add putc and getc to list of
	functions to protect against prior definition as a macro.

2000-09-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.h (enum c_tree_index): Add CTI_C_SIZE_TYPE.
	(c_size_type_node): Define.
	* c-decl.c (init_decl_processing): Initialize c_size_type_node.
	* c-common.c (enum format_lengths, enum format_std_version,
	format_length_info, format_type_detail, BADLEN, NOLENGTHS,
	format_kind_info, printf_length_specs, scanf_length_specs, T89_I,
	T99_I, T89_L, T99_LL, TEX_LL, T89_S, T89_UI, T99_UI, T89_UL,
	T99_ULL, TEX_ULL, T89_US, T89_F, T99_F, T89_D, T99_D, T89_LD,
	T99_LD, T89_C, T99_SC, T99_UC, T89_V, T94_W, TEX_W, T94_WI,
	TEX_WI, T99_ST, T99_SST, T99_PD, T99_UPD, T99_IM, T99_UIM,
	format_types): Define.
	(format_char_info, print_char_table, scan_char_table,
	time_char_table): Rearrange for new organization of information
	about format length modifiers and standard versions.
	(T_ST): Redefine to use c_size_type_node.
	(check_format_info): Obtain information about length modifiers and
	standard versions from tables.  Adjust warning message wordings.
	Use the name from the user's program for `ll' and `hh' length
	modifiers in warning messages.  Use more informative names for
	wanted types where available (for wchar_t, wint_t, size_t, signed
	size_t, ptrdiff_t, unsigned ptrdiff_t, intmax_t and uintmax_t).

2000-09-01  Jim Wilson  <wilson@cygnus.com>

	* calls.c (emit_call_1): Add REG_NORETURN note to call if ECF_NORETURN.
	* combine.c (distribute_notes): Handle REG_NORETURN.
	* rtl.c (reg_note_name): Add REG_NORETURN.
	* rtl.h (enum reg_note): Likewise.

	* config/ia64/ia64-protos.h (emit_safe_across_calls): Renamed from
	ia64_file_start.
	* config/ia64/ia64.c (emit_safe_across_calls): Likewise.
	(rtx_needs_barrier): Handle unspec_volatile 8 and 9.
	(emit_predicate_relation_info): Handle conditional calls with
	REG_NORETURN.
	* config/ia64/ia64.h (ASM_FILE_START): Call emit_safe_across_calls
	instead of ia64_file_start.
	* config/ia64/sysv4.h (ASM_FILE_START): Likewise.
	* config/ia64/ia64.md (safe_across_calls_all,
	save_across_calls_normal): New patterns.

	* loop.c (check_final_value): Check for biv use before checking for
	giv use.  Check for both biv and giv uses.  Always set last_giv_use
	if there is a giv use.

2000-09-01  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (mulsi3): Use grfr_register_operand.
	(madddi3): Likewise.
	(maddsi3): New.

Fri Sep  1 10:59:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (clear_storage): Don't use emit_move_insn unless
	either BLKmode or proper size.
	(store_constructor): Don't call clear_storage if REG of wrong size.

	* flow.c (init_propagate_block_info): Don't mark frame dead at end
	of function if returns wiht stack pointer depressed.

2000-09-01  Andrew Haley  <aph@redhat.com>

	* dwarf2out.c (stack_adjust_offset): New function.
	(dwarf2out_stack_adjust): Break out stack adjust logic into
	new stack_adjust_offset function.  Look inside parallels and
	sequences for stack adjustments.

2000-08-31  Jeff Law <law@cygnus.com>

	* arm.md: Use no_new_pseudos to determine when it is safe
	to create new pseudo registers.

	* arm.c (legitimize_pic_address): Use no_new_pseudos to determine
	when we can safely allocate new registers.

2000-08-31  Geoffrey Keating  <geoffk@cygnus.com>

	* stmt.c (expand_asm_operands): Twiddle generating_concat_p
	so that CONCATs are not generated for ASMs.
	* emit-rtl.c (gen_reg_rtx): Don't generate CONCATs when
	not generating_concat_p.
	* function.c (pop_function_context_from): Reset
	generating_concat_p.
	(prepare_function_start): Likewise.
	* rtl.c (generating_concat_p): Define.
	* rtl.h (generating_concat_p): Declare.
	* toplev.c (rest_of_compilation): No CONCATs after RTL generation.

2000-08-22  Philipp Thomas  <pthomas@suse.de>
	    Masanobu Yuhara <yuhara@flab.fujitsu.co.jp>

	* gmicro.h (TARGET_SWITCHES): Add descriptions and mark them
	for translation.

2000-08-30  Greg McGary  <greg@mcgary.org>

	* Makefile.in (fixinc.sh): Pass CC, CFLAGS and LDFLAGS to mkfixinc.sh
	* fixinc/Makefile.in (fixincl): Pass $(LDFLAGS) to $(CC).
	* fixinc/mkfixinc.sh: Pass $CC, $CFLAGS and $LDFLAGS to $MAKE.

2000-08-30  Greg McGary  <greg@mcgary.org>

	* tree.h (struct tree_int_cst): Wrap low and high in a sub-struct.
	(TREE_INT_CST_LOW, TREE_INT_CST_HIGH): Access through sub-struct.
	(TREE_INT_CST): New macro.
	* varasm.c (const_hash, compare_constant_1, record_constant_1):
	Use new macro TREE_INT_CST.

Wed 30-Aug-2000 23:18:59 BST  Neil Booth  <NeilB@earthling.net>

	* contrib.texi: Add self.

2000-08-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (cmpeqsi_ior_t, cmpeqsi_and_t): New insns.
	(cmpeqdi_t splitter): Use cmpeqsi_and_t instead of emitting jumps
	and labels.

2000-08-30  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* fixinc/gnu-regex.c: Don't define `const'.

Tue Aug 29 22:09:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor): Allow variable bounds of array type.
	(expand_expr): Don't blow up if type is ERROR_MARK.
	* varasm.c (output_constructor): Don't access lower bound of array
	type unless need it if index is supplied (so it can be a variable
	if no index is supplied).
	Use tree_low_cst; use HOST_WIDE_INT for sizes; change BITPOS to POS.
	Other minor cleanups.

2000-08-29  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* Makefile.in: Revamp handling of cflags to allow different WARN_CFLAGS
	for compilations in stage 1 and subsequent stages, respectively.
	* configure.in (vax): Add compiler-dependent CFLAGS for stage 1.
	* configure: Rebuilt.
	* x-vax, x-vax-gcc: Deleted.

2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>

	* c-common.c (declare_function_name): Use func_id_node,
	function_id_node, and pretty_function_id_node.  Do not make
	__func__ visible at file scope.
	* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
	CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
	(function_id_node, pretty_function_id_node, func_id_node): New
	macros.
	* c-decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	(c_make_fname_decl): Correct comment.

	* tree.h (struct tree_identifier): Constify pointer member.

	* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
	* c-pragma.h (struct weak_syms): Constify name and value members.
	(add_weak): Constify arguments.

	* calls.c (special_function_p): Constify a char *.
	(expand_call): Remove variable which is initialized and then
	never used.
	* dependence.c (struct def_use, struct induction, struct subscript):
	Constify 'variable' member.
	(get_low_bound, have_induction_variable): Constify char * argument.
	(find_induction_variable): Add braces to avoid dangling else.
	(classify_dependence): Constify char * arrays.
	* profile.c (output_func_start_profiler): Constify a char *.
	* stor-layout.c (finalize_record_size): Constify a char *.
	* tree.c (is_attribute_p): Constify a char *.
	* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.

	* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
	for comprehensibility.  Do not call get_identifier if we did
	not change the DECL_ASSEMBLER_NAME of the decl.  Use alloca to
	create temporary string constants, not ggc_alloc_string.  No
	need to copy result of ASM_FORMAT_PRIVATE_NAME.  Use const
	char * to hold IDENTIFIER_POINTERs.

2000-08-29  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (muldi3): Use grfr_register_operand
	for the inputs.

2000-08-29  Richard Henderson  <rth@cygnus.com>

	* reload.c (push_secondary_reload): Allow class == reload_class
	if we're using a reload_in/out pattern.

	* config/ia64/ia64.md (reload_inti): Use a TImode scratch.  Use
	the half that does not conflict with the reload register.
	(reload_outti): Likewise.

2000-08-29  Kazu Hirata  <kazu@hxi.com>

	* reload.c: Fix formatting.

	* stmt.c: Fix formatting.

	* gcc.c: Fix formatting.

2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>

	* flags.h (time_report, mem_report): New global flags.
	* toplev.c: Define time_report and mem_report.
	(f_options): Add -ftime-report and -fmem-report.
	(compile_file): Turn on time_report if quiet_flag is off.
	Call ggc_print_statistics at very end if mem_report is on.
	* timevar.c (TIMEVAR_ENABLE): Examine time_report, not quiet_flag.

	* ggc-common.c (ggc_print_statistics): Rename to
	ggc_print_common_statistics; all callers changed.  Scale
	quantities above 10K to kilobytes and above 10M to megabytes.
	* ggc-page.c (ggc_page_print_statistics): Rename to
	ggc_print_statistics.  Report memory consumed by internal data
	structures for each allocation bucket.  Scale quantities above
	10K to kilobytes and above 10M to megabytes.
	* ggc-simple.c: Prototype debug_ggc_tree to avoid warning.
	Cast PTR_KEY(p) to unsigned long in fprintf call to avoid warning.
	Define tally_leaves always.
	(ggc_print_statistics): New function.
	* ggc.h: Adjust for renamed functions.

Wed Aug 30 00:11:42 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md ("*movsf","*movsi"): Pass NULL to
	output_movsisf instead of which_alternative.

	* config/avr/avr.c (output_reload_inhi): Check for NULL ponter.

Tue Aug 29 22:29:58 2000  Denis Chertykov  <denisc@overta.ru> & Marek Michalkiewicz <marekm@linux.org.pl>

	* config/avr/avr-protos.h: (avr_output_ascii) Removed.
	(avr_progmem_p): New prototype.
	(output_movsisf): Prototype declaration changed.
	(output_movqi): New prototype.
	(output_movhi): New prototype.
	(call_insn_operand): Likewise.
	(final_prescan_insn): Likewise.
	(avr_simplify_comparision_p): Likewise.
	(avr_normalize_condition): Likewise.
	(compare_eq_p): Likewise.
	(out_shift_with_cnt): Likewise.
	(const_int_pow2_p): Likewise.
	(output_reload_inhi): Prototype declaration changed.

	* config/avr/avr.c: (debug_hard_reg_set): Prototype declared.
	(ldi_reg_rtx): New. rtx for r31.
	(avr_init_stack): Initialize as "__stack".
	(function_prologue): Use it.
	Replace all TARGET_ENHANCED with AVR_ENHANCED.
	(avr_mcu_name): Initialize as "avr2".
	(avr_enhanced_p, avr_mega_p): New variables.
	(mcu_types, avr_override_options): Handle all known MCU types.
	Also handle avr1 (only preprocess, assemble and link).
	(print_operand): Using of `%K' in output template removed.
	(out_movqi_r_mr): Optimized.
	(out_movhi_r_mr): Likewise.
	(output_movqi): New function.
	(output_movhi): Likewise.
	(out_movsi_r_mr): Optimized.
	(output_movsisf): Compute insn length for `adjust_insn_length'
	(out_movqi_mr_r): Optimized.
	(out_movhi_mr_r): Optimized.
	(adjust_insn_length): Use output_movsisf, output_movqi,
	output_movhi for insn length adjusting.
	(reg_unused_after): Use dead_or_set_p.
	(preferred_reload_class): Now haven't any restriction.
	(reg_was_0): New function.
	(io_address_p): Likewise.
	(const_int_pow2_p): Likewise.
	(output_reload_inhi): Likewise.
	(output_reload_insisf): Likewise.

	* config/avr/avr.h (MULTILIB_DEFAULTS): Define.
	(LIB_SPEC): Use -lc for all supported devices.
	(LIBGCC_SPEC): Use -lgcc for all supported devices.
	(AVR_MEGA): Define as avr_mega_p.
	(AVR_ENHANCED): New, define as avr_enhanced_p.
	(TARGET_SWITCHES): Remove -menhanced, now handled by -mmcu=...
	(CPP_SPEC, LINK_SPEC): Handle all known MCU types.
	(CRT_BINUTILS_SPECS): Handle all known MCU types.
	Rename gcrt1-*.o to make file names unique on 8.3 filesystems.
	(EXTRA_SPECS): Add CPP_AVR[1-5]_SPEC.
	(ASM_SPEC): Pass -mmcu=... to the assembler.
	Change all -DAVR_* to -D__AVR_*__.
	(INIT_TARGET_OPTABS), config/avr/libgcc.S:
	Rename library functions to start with two underscores.
	(ASM_OUTPUT_COMMON): Outputs `.comm VAR,VAR-SIZE,1' to avoid
	alignment.
	(ASM_WEAKEN_LABEL): Declared for __attribute__((weak)).
	(SUPPORTS_WEAK): Likewise.
	(LDI_REG_REGNO): New. Register r31 will be used as temporary
	register for loading constants to r0-r14.

	* config/avr/avr.md: Replace all TARGET_ENHANCED with
	AVR_ENHANCED.
	(*mov_r_sp): Removed. Handled by output_movhi.
	(*mov_sp_r): Likewise.
	(*mov_sp_r_no_interrupts): Likewise
	(*mov_sp_r_tiny): Likewise.
	(*movqi): Use output_movqi.
	(*reload_inqi): New.
	(*movhi): Use output_movhi.
	(*reload_inhi): New.
	(*negsi2): Optimized.
	(*negsf2): Likewise.
	Added peepholes (define_peephole2) for loading constants to r0-r14
	and for using `cpse' command.

	* config/avr/libgcc.S: Rename library functions to start with two
	underscores.
	Add support for enhanced core.
	(_moqhi3): Fix typo, now _modqi3.
	(__divsi_raw): Use __zero_reg__ as loop counter, smaller by 1 word.
	(__prologue_saves__): Remove test for stack adjust by 0.
	(__tablejump__): New.

	* config/avr/t-avr: Build libgcc2 with -mcall-prologues.
	Add multilib support.

Tue Aug 29 15:17:54 EDT 2000  John Wehle  (john@feith.com)

	* loop.c (prescan_loop): Don't check unknown_address_altered
	when deciding if insert_loop_mem is safe.  Add BLKmode MEMs
	to loop_store_mems as necessary.
	(loop_invariant_p): Don't check unknown_address_altered
	or unknown_constant_address_altered.

2000-08-29  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.md (sltu, sgeu): Delete sltu and sgeu insn patterns.

2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpperror.c (print_file_and_line): If line is (unsigned int)-1,
	print just the filename.
	* cpplex.c (_cpp_run_directive): Add additional argument, the
	name to give the synthetic buffer.  This defaults to
	translated "<command line>".
	* cpplib.c (cpp_define, cpp_undef, cpp_assert, cpp_unassert):
	Adjust to match.
	(_cpp_define_builtin): New function.
	* cppinit.c (initialize_builtins): Use _cpp_define_builtin.
	* cpphash.h: Update prototypes.

	* tradcpp.c (main): Process -D and -U simultaneously, in the
	order they appeared on the command line.

2000-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-decl.c (define_label): Call warning_with_file_and_line and
	error_with_file_and_line instead of plain warning or error.

	* c-parse.in (label): Use save_filename/save_lineno to ensure
	correct values for calls to define_label.

2000-08-29  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (expand_call): Don't create a VAR_DECL just to throw it
	away.
	* expr.c (expand_expr, case TARGET_EXPR): Don't call
	mark_addressable.
	* tree.h (get_file_function_name): Remove two duplicate
	declarations.

2000-08-28  Kazu Hirata  <kazu@hxi.com>

	* tree.c: Fix formatting.

	* xcoffout.c: Fix formatting.

2000-08-28  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (attr_checksum): Also ignore DW_AT_producer.

2000-08-28  Daniel Berlin  <dberlin@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't bother calling
	break_out_includes if it won't do anything.

2000-08-28  Richard Henderson  <rth@cygnus.com>

	* reload.c (push_secondary_reload): Revert 2000-08-16 change.
	(find_reloads): Likewise.
	* config/alpha/alpha.md (reload_inqi): Revert 2000-08-11 change.
	(reload_inhi): Likewise.

2000-08-28  Richard Henderson  <rth@cygnus.com>

	* config/i386/i386.c: Don't error on EXTRA_CONSTRAINT defined.
	(call_insn_operand): Don't expect a surrounding mem.
	(constant_call_address_operand): Likewise.
	* config/i386/i386.h (PREDICATE_CODES): Update.
	* config/i386/i386.md (call patterns): Move the match_operand
	for the call destination inside the mem.

2000-08-28  Richard Henderson  <rth@cygnus.com>

	* local-alloc.c (requires_inout): Don't use reserved range for
	EXTRA_CONSTRAINTS; use anything not matched by REG_CLASS_FROM_LETTER.
	* recog.c (asm_operand_ok): Likewise.
	(preprocess_constraints, constrain_operands): Likewise.
	* regclass.c (record_reg_classes): Likewise.
	* reload.c (find_reloads): Likewise.
	* reload1.c (maybe_fix_stack_asms): Likewise.
	(reload_cse_simplify_operands): Likewise.
	* stmt.c (expand_asm_operands): Likewise.

	* md.texi: Update constraints documentation.
	* tm.texi (EXTRA_CONSTRAINT): Update.

2000-08-28  Daniel Berlin  <dberlin@redhat.com>

	* dwarf2out.c (DIE_LABEL_PREFIX): Remove leading "__".
	(print_die): If we don't know the offset of the
	target die, try the symbol.  Add a trailing newline.
	(reverse_all_dies): New fn.
	(dwarf2out_finish): Call it.
	(break_out_includes): Reorganize for clarity.
	(add_sibling_attributes): Don't call reverse_die_lists.
	(output_comp_unit): Rename from output_comdat_comp_unit.  Use for
	primary CU, too.
	* flags.h: Add flag_eliminate_dwarf2_dups.
	* toplev.c (f_options): Support -feliminate-dwarf2-dups.

2000-08-28  Jason Merrill  <jason@redhat.com>

	* dwarf2.h (DW_TAG_GNU_BINCL, DW_TAG_GNU_EINCL): New tags.
	* dwarf2out.c: #include "md5.h".
	(DIE_LABEL_PREFIX): New macro.
	(dw_val_struct): Add 'external' flag to val_die_ref.
	(add_AT_die_ref, AT_ref): Adjust.
	(AT_ref_external, set_AT_ref_external): New fns.
	(build_abbrev_table): Call set_AT_ref_external.
	(value_format): Call AT_ref_external.
	(die_struct): Add die_symbol field.
	(new_die): Clear it.
	(dwarf_tag_name): Handle BINCL/EINCL.
	(dwarf2out_start_source_file): Add BINCL DIE.
	(dwarf2out_end_source_file): Add EINCL DIE.
	(push_new_compile_unit, pop_compile_unit, clear_die_sizes): New fns.
	(loc_checksum, attr_checksum, die_checksum): New fns.
	(is_type_die, is_comdat_die, is_symbol_die): New fns.
	(compute_section_prefix, assign_symbol_names): New fns.
	(gen_internal_sym, output_die_symbol, output_symbolic_ref): New fns.
	(output_die): Call output_die_symbol and AT_ref_external.
	(output_comdat_comp_unit): New fn, split out from...
	(dwarf2out_finish): ...here.  Also call add_sibling_attributes for
	secondary CUs.
	(output_pubnames, output_aranges): Abort if we see entries from
	secondary CUs.
	* toplev.h: Declare file_name_nondirectory.
	* toplev.c (file_name_nondirectory): New fn, moved from C++ frontend.
	(rest_of_type_compilation): Call dwarf2out_decl if at toplevel.
	(debug_start_source_file): Call dwarf2out_start_source_file
	regardless of debug verbosity.
	(debug_end_source_file): Similarly.
	* tree.h: Declare clean_symbol_name.
	* tree.c (clean_symbol_name): Split out from...
	(get_file_function_name_long): ...here.

	* dwarf2out.c (new_loc_descr): Use calloc.
	(splice_child_die): Remove the die from the right parent.
	(gen_struct_or_union_die): Don't add AT_name to a specification DIE.

Mon Aug 28 19:02:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (decode_g_option): Don't give warning for unknown -g
	option; return 0 instead.
	(main): If -g option is not recognized by front end or
	language-independent code, give warning.

2000-08-28  Greg McGary  <greg@mcgary.org>

	* config/i386/i386-protos.h (ix86_expand_compare): Add extern decl.
	* config/i386/i386.c (ix86_expand_compare): Remove `static'.
	* config/i386/i386.md (trap, conditional_trap): New insn & expand.

2000-08-27  Greg McGary  <greg@mcgary.org>

	* cpplex.c (parse_string): Don't look for backslash
	before first char in `namebuf'.
	* loop.c (strength_reduce): Skip NOTEs.

2000-08-27  Jason Merrill  <jason@redhat.com>

	* c-decl.c (duplicate_decls): Don't set TREE_STATIC or clear
	DECL_EXTERNAL on a local extern.  Don't set DECL_IGNORED_P or
	TREE_ASM_WRITTEN, either.
	(finish_decl): Adjust.

2000-08-28  Philipp Thomas  <pthomas@suse.de>

	* ABOUT-GCC-NLS: Remove gettext patches from Paul Eggert as
	they have been incorporated into the gettext CVS. Change the text to
	reflect the current status of NLS. Add instructions for accessing
	the gettext CVS and add the patch from Martin v. Löwis.

2000-08-27  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (movdi_internal64+5): Make SUBREG-safe
	by using gen_lowpart_common.
	(movdi_internal64+6): Likewise.

2000-08-26  Alexandre Oliva  <aoliva@redhat.com>

	* tm.texi (FINI_SECTION_ASM_OP, CRT_CALL_STATIC_FUNCTION):
	Document.

	* config/mn10300/mn10300.h (DBX_REGISTER_NUMBER): Remap register
	numbers to the ranges used by GDB.

2000-08-25  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.h (struct machine_function): Add n_varargs.
	* config/ia64/ia64.c (ia64_compute_frame_size): Use it.
	(ia64_expand_prologue): Likewise.
	(ia64_setup_incoming_varargs): Set it.  Properly skip the current
	argument for stdargs.

2000-08-25  Jason Merrill  <jason@redhat.com>

	* integrate.c (expand_inline_function): Pull out the original decl.

2000-08-25  Jim Wilson  <wilson@cygnus.com>

	* cse.c (cse_insn): Don't pass label subtraction to force_const_mem.

	* function.c (gen_mem_addressof): Clear MEM_ALIAS_SET if no decl.

2000-08-25  Greg McGary  <greg@mcgary.org>

	* flow.c (dump_edge_info): Use ARRAY_SIZE.
	* config/alpha/alpha.c (alpha_expand_block_move): Likewise.

2000-08-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (STRUCT_VALUE): Define to 0, not NULL.

Fri Aug 25 12:52:49 EDT 2000  John Wehle  (john@feith.com)

	* i386.c (ix86_find_base_term): New.
	* i386-protos.h (ix86_find_base_term): Prototype.
	* i386.h (FIND_BASE_TERM): Define.
	* alias.c (find_base_term): Use it.
	* tm.texi (FIND_BASE_TERM): Document it.

	* alias.c (true_dependence, write_dependence_p): Unchanging
	memory can't conflict with non-unchanging memory.

	* alias.c (memrefs_conflict_p): A BLKmode reference
	to a symbol (or CONST_INT address) always conflicts
	with a reference to another symbol.

2000-08-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (time_char_table): Don't allow width and flags with
	"z" format.

2000-08-25  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_expand_branch): Treat GE and GEU the same
	way as LT and LTU when the second operand has 0 in low word.

2000-08-26  Michael Hayes  <mhayes@cygnus.com>

	* basic-block.h (struct loop): Rename `exits' field to
	`exit_edges'.  Add `entry_edges' and `num_entries' fields.

	* flow.c (flow_loop_exit_edges_find): Rename from flow_loop_exits_find.
	(flow_loop_entry_edges_find): Add.
	(flow_edge_list_print): Rename from flow_exits_print.
	(flow_loops_find): Call flow_loop_entry_edges_find.
	(flow_loop_dump): Dump entry_edges list.
	(flow_loops_free): Free entry_edges.

2000-08-26  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (loop_dump_aux, debug_loop): New functions.
	(LOOP_BLOCK_NUM_1, LOOP_BLOCK_NUM, LOOP_INSN_UID): New macros.

	* flow.c (flow_loops_dump): Add callback parameter.
	(flow_loop_dump): Add callback parameter and call it.  Move
	loop note debugging code to loop_dump_aux.

	* basic-block.h (flow_loop_dump): Add callback parameter
	(flow_loops_dump): Likewise.

	* toplev.c (rest_of_compilation): Add NULL callback function pointer
	to call to flow_loops_dump.

2000-08-26  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (count_loop_regs_set): Replace start and end arguments
	with loop argument.  All callers udated.

2000-08-26  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (constant_high_bytes): Delete.

2000-08-26  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (prescan_loop): Move checks for NOTE_INSN_LOOP_CONT
	and NOTE_INSN_LOOP_VTOP to...
	(find_and_verify_loops) ...here.

Fri Aug 25 04:21:13 2000  Alexandre Oliva  <aoliva@redhat.com>

	* crtstuff.c (CRT_CALL_STATIC_FUNCTION): Define default.
	(fini_dummy, init_dummy): Use it.

Fri 25-Aug-2000 08:03:27 BST  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (is_macro_disabled): Caller has already checked
	that we're not a preprocessed file.

2000-08-24  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (C_AND_OBJC_OBJS): Remove c-iterate.o.
	(c-iterate.o): Remove target.
	* gcc/c-common.h (enum rid): Remove RID_ITERATOR.
	* gcc/c-decl.c (init_decl_processing): Remove call to init_iterators.
	(finish_decl): Don't handle iterators.
	(grokdeclarator): Likewise.
	* gcc/c-parse.gperf: Remove __iterator and __iterator__ keywords.
	* gcc/c-gperf.h: Regenerated.
	* gcc/c-iterate.c: Removed.
	* gcc/c-lex.c (init_lex): Don't handle iterators.
	* gcc/c-parse.in (primary): Remove pop_iterator_stack call.
	(compstmt_primary_start): Remove push_iterator_stack call.
	(stmt): Don't allow iterator statements.  Replace iterator_expand
	with expand_expr_stmt.
	(all_iter_stmt): Remove.
	(all_iter_stmt_simple): Likewise.
	(all_iter_stmt_with_decl): Likewise.
	* gcc/c-tree.h (ITERATOR_P): Remove.
	(ITERATOR_BOUND_P): Likewise.
	(init_iterators): Remove declaration.
	(iterator_expand): Likewise.
	(iterator_for_loop_start): Likewise.
	(iterator_for_loop_end): Likewise.
	(iterator_for_loop_record): Likewise.
	(push_iterator_stack): Likewise.
	(pop_iterator_stack): Likewise.
	* gcc/c-typeck.c (decl_constant_value): Don't check ITERATOR_P.
	(readonly_warning): Likewise.
	* gcc/tree.h (ITERATOR_BOUND_P): Don't mention it.

2000-08-24  Jim Wilson  <wilson@cygnus.com>

	* c-common.c (decl_attributes, case A_ALIGN): Revert last change.
	Copy type in a TYPE_DECL, just like pushdecl does.

2000-08-24  Richard Henderson  <rth@cygnus.com>

	* toplev.c (main): Enable flag_reorder_blocks at -O2.

2000-08-24  Zack Weinberg  <zack@wolery.cumb.org>

	* ggc-page.c (alloc_page): If HAVE_MMAP_ANYWHERE and we're
	asked for one page, allocate GGC_QUIRE_SIZE of them and put
	the extras on the free list.
	(release_pages): Clean up.
	(ggc_set_mark): Don't adjust G.allocated here...
	(sweep_pages): ... do it here.

2000-08-24  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (read_include_file): Rearrange initializations.

2000-08-24  Richard Henderson  <rth@cygnus.com>

	* stmt.c (expand_asm_operands): Treat EXTRA_CONSTRAINT like g or X.

	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.c (gr_register_operand): New.
	(fr_register_operand, grfr_register_operand): New.
	(gr_nonimmediate_operand, grfr_nonimmediate_operand): New.
	(grfr_reg_or_8bit_operand): New.
	(gr_reg_or_0_operand): Rename from reg_or_0_operand and
	use gr_register_operand.
	(gr_reg_or_5bit_operand, gr_reg_or_6bit_operand): Likewise.
	(gr_reg_or_8bit_operand, gr_reg_or_8bit_adjusted_operand): Likewise.
	(gr_reg_or_8bit_and_adjusted_operand): Likewise.
	(gr_reg_or_14bit_operand, gr_reg_or_22bit_operand): Likewise.
	(fr_reg_or_fp01_operand): Likewise.
	(not_postinc_memory_operand): New.
	(ia64_split_timode): Remove unused variables.
	(rtx_needs_barrier): Check arguments to cmpxchg.
	(builtin_description): Remove.
	(bdesc_2argsi, bdesc_2argdi): Remove.
	(ia64_init_builtins): Declare all builtins directly.
	(ia64_expand_fetch_and_op): Rewrite to be called from
	ia64_expand_builtin directly.  Use expand_binop and co.
	(ia64_expand_op_and_fetch): Likewise.
	(ia64_expand_compare_and_swap): Likewise.
	(ia64_expand_binop_builtin): Remove.
	(ia64_expand_lock_test_and_set): New.
	(ia64_expand_lock_release): New.
	(ia64_expand_builtin): Use them.
	* config/ia64/ia64.h (CONSTRAINT_OK_FOR_S): New.
	(EXTRA_CONSTRAINT): Use it.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md (*): Use gr_register_operand and co.
	(mf): Indicate that we set memory as well as use it.
	(fetchadd_acq_si): Show memory being modified as well.
	(fetchadd_acq_di, cmpxchg_acq_si, cmpxchg_acq_di): Likewise.
	(val_compare_and_swap_si, val_compare_and_swap_di): Remove.
	(lock_test_and_set_si, lock_test_and_set_di): Remove.
	(fetch_and_add_si, fetch_and_sub_si, fetch_and_or_si): Remove.
	(fetch_and_and_si, fetch_and_xor_si, fetch_and_nand_si): Remove.
	(fetch_and_add_di, fetch_and_sub_di, fetch_and_or_di): Remove.
	(fetch_and_and_di, fetch_and_xor_di, fetch_and_nand_di): Remove.
	(add_and_fetch_di, sub_and_fetch_di, or_and_fetch_di): Remove.
	(and_and_fetch_di, xor_and_fetch_di, nand_and_fetch_di): Remove.
	(add_and_fetch_si, sub_and_fetch_si, or_and_fetch_si): Remove.
	(and_and_fetch_si, xor_and_fetch_si, nand_and_fetch_si): Remove.
	* config/ia64/ia64intrin.h (*): Cast result to the appropriate
	return type.  Pretty print definitions.

2000-08-24  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.md (movdi): Don't call gen_movdi_symbolic if
	we have a SYMBOL_REF with SYMBOL_REF_FLAG set.

2000-08-24  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (AT_flag, AT_int, AT_unsigned, AT_string, AT_ref,
	AT_loc, AT_addr, AT_lbl): Abort on unsuitable input.
	(get_AT_low_pc, get_AT_hi_pc, get_AT_string, get_AT_flag,
	get_AT_unsigned, get_AT_ref): Don't call them if get_AT fails.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* optabs.c (init_optabs): Initialize fixtab, fixtrunctab, floattab,
	and extendtab within their proper array boundaries.
	* emit-rtl.c (init_emit_once): Pass `const_tiny_rtx' with bounds
	for the entire array.

	* config/arm/arm.c (arm_override_options): Use ARRAY_SIZE.
	* config/alpha/alpha.c (alpha_lookup_xfloating_lib_func): Likewise.
	* config/avr/avr.c (order_regs_for_local_alloc): Likewise.
	* config/fr30/fr30.c (fr30_print_operand): Likewise.
	* config/i386/dgux.c (output_options): Likewise.
	* config/i386/dgux.h (ASM_FILE_START): Likewise.
	* config/m88k/m88k.c (output_options): Likewise.
	* config/m88k/m88k.h (ASM_FILE_START): Likewise.
	* config/mcore/mcore.c (mcore_output_inline_const_forced,
	layout_mcore_frame, handle_structs_in_regs): Likewise.
	* config/mips/mips.c (output_block_move): Likewise.
	* config/rs6000/rs6000.c (rs6000_override_options,
	rs6000_file_start): Likewise.
	* config/sparc/sparc.c (sparc_add_gc_roots): Likewise.
	* fixinc/fixfixes.c (FIX_TABLE_CT): Likewise.
	* fixinc/fixtests.c (TEST_TABLE_CT): Likewise.
	* builtins.c (expand_builtin_setjmp): Likewise.
	* expr.c (safe_from_p): Likewise.
	* flow.c (life_analysis): Likewise.
	* fold-const.c (size_int_type_wide): Likewise.
	* gcc.c (translate_options, init_spec, set_spec, main): Likewise.
	* genattrtab.c (make_length_attrs): Likewise.
	* genopinit.c (gen_insn): Likewise.
	* genrecog.c (NUM_KNOWN_PREDS, NUM_SPECIAL_MODE_PREDS): Likewise.
	* global.c (global_alloc): Likewise.
	* local-alloc.c (find_free_reg): Likewise.
	* mips-tdump.c (print_symbol): Likewise.
	* mips-tfile.c (parse_def, parse_input): Likewise.
	* reload1.c (NUM_ELIMINABLE_REGS): Likewise.
	* stmt.c (expand_nl_goto_receiver): Likewise.
	* stor-layout.c (set_sizetype): Likewise.
	* varasm.c (decode_reg_name): Likewise.
	* toplev.c (decode_f_option, decode_W_option,
	set_target_switch, print_switch_values): Likewise.
	(NUM_ELEM): Remove macro.
	(display_help, main): s/NUM_ELEM/ARRAY_SIZE/

2000-08-24  Greg McGary  <greg@mcgary.org>

	* tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
	(MAIN_NAME_P, main_identifier_node): New macros.
	* c-common.c (c_common_nodes_and_builtins): Init main_identifier_node.
	* c-decl.c (start_decl, grokdeclarator, start_function,
	store_parm_decls, finish_function): Use MAIN_NAME_P.
	* config/avr/avr.c (function_prologue, function_epilogue): Likewise.
	* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
	* config/pdp11/pdp11.c (output_function_prologue): Likewise.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* cppfiles.c (actual_directory): Don't write beyond `dir'
	when it contains "".
	* real.c (asctoeg): Stay within bounds of etens[][].

2000-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dependence.c (dependence_string, direction_string,
	dump_one_node, dump_node_dependence): Hide unused identifiers.
	(get_low_bound, normalize_coefficients): Match definition to
	static prototype.
	(get_one_coefficient): Initialize variables `value0_is_idx' and
	`value1_is_idx'.
	(ziv_test, gcd_test): Mark parameters with ATTRIBUTE_UNUSED.
	(ziv_test): Delete variable `idx', use parameter `sub' instead.
	(direction_merge): Avoid automatic aggregate initialization.
	(have_dependence_p): Use `src' not `dest' to set `src_idx'.
	Initialize variables `dest_idx' and `src_idx'.
	(end_dependence_analysis): Avoid C89 style function definition.

2000-08-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (time_char_table): Don't allow width with %F.
	(check_format_info): Don't allow "Z" length with scanf.

2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (finish_diagnostic): Define.
	(output_do_printf): Use wrap_text instead of output_add_string.
	(default_print_error_function): Avoid embedded '\n'.

	* diagnostic.h (flush_diagnostic_buffer): Declare.

2000-08-23  Alexandre Oliva  <aoliva@redhat.com>

	* dependence.c: Replace `[][]' with `[][MAX_SUBSCRIPTS]'.

2000-08-23  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (GCC_PASSES): Add specs.

2000-08-23  Jim Wilson  <wilson@cygnus.com>

	* frame.h (IA64_UNW_EHANDLER, IA64_UNW_UHANDLER): New.
	* config/ia64/frame-ia64.c (__get_personality): Return zero if neither
	EHANDLER nor UHANDLER bit is set.
	(__get_except_table): Likewise.

2000-08-23  Nick Clifton  <nickc@redhat.com>

	* config/arm/lib1funcs.asm: Replace upper case condition codes
	with lower case versions.

	* config/arm/arm.h (STRUCT_VALUE): Define.
	(STRUCT_VALUE_REGNUM): Delete.

2000-08-23  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h (IN_I): New flag for directive table.
	* cpplib.c (DIRECTIVE_TABLE): Mark #define, #undef, #ident, and
	#pragma with IN_I.
	(_cpp_check_directive): If -fpreprocessed, execute directives
	marked with IN_I.  Issue no warnings in this case.
	* cpplex.c (_cpp_get_token): Expand no macros if -fpreprocessed.

2000-08-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (print_char_table): Allow 'I' flag with %d, %i and
	%u.
	(check_format_info): Support printf 'I' flag; warn about it with
	-pedantic.

2000-08-23  Richard Earnshaw  (rearnsha@arm.com)

	* arm.c (arm_expand_prologue): Ensure that the stack-adjustment
	barrier can't be ignored by the alias analysis code.

2000-08-12  Eli Zaretskii  <eliz@is.elta.co.il>

	* fixinc/inclhack.def (sysv68_string): Fix the Sed script so it
	works inside fixincl.

Wed Aug 23 04:55:48 2000  Alexandre Oliva  <aoliva@redhat.com>

	* simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to
	simplify_relational_operation() unless both operands are of
	VOIDmode.
	* cse.c (fold_rtx): Likewise.

Tue Aug 22 23:53:27 EDT 2000  John Wehle  (john@feith.com)

	* rtlanal.c (rtx_unstable_p): The pic register is stable
	(within one function) and the actual rtx should be used
	when checking the registers.
	(rtx_addr_can_trap_p): Pic memory addresses can't trap.

	* alias.c (true_dependence, write_dependence_p): Fix
	bug in previous patch.

	* i386.c (ix86_GOT_alias_set): New.
	(legitimize_pic_address): Use it.

	* rtlanal.c (rtx_unstable_p): An unchanging MEM is
	only stable if its address is stable.
	(rtx_varies_p): An unchanging MEM can't vary if
	its address doesn't vary.

2000-08-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-parse.in (unop +): Restrict -Wtraditional warnings to user code.

2000-08-22  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (ASM_SPEC): Pass `-J' to assembler.
	* x-vax-gcc: New file for bootstrapping with gcc.
	* x-vax: Use X_CFLAGS rather than X_CPPFLAGS to pass `-J'.
	* configure.in: Use x-vax-gcc with gcc.
	* configure: Rebuilt.

Tue Aug 22 21:21:05 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* toplev.c (rest_of_compilation): Rebuild label notes after
	post-reload splitting pass if new labels have been created.

2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (output_buffer_state): New macro.
	* diagnostic.c (diagnostic_for_decl, sorry,
	default_print_error_function, output_do_verbatim,
	report_diagnostic, report_problematic_module): Use it.
	(wrap_text): Tweak.
	(output_format): Use wrap_text instead of maybe_wrap_text.

2000-08-22  Nick Clifton  <nickc@redhat.com>

	* config/arm/lib1funcs.asm (ARM_DIV_MOD_BODY): New macro.
	Common code for ARM divide and modulus functions.
	(THUMB_DIV_MOD_BODY): New macro. Thumb equivalent of
	ARM_DIV_MOD_BODY.
	(FUNC_END): New macro: Common code at the end of the division and
	modulo functions.
	(THUMB_FUNCTION_START): New macro:  Common code at the start of
	Thumb functions.
	(__divsi3, __udivsi3, __modsi3, __umodsi3): Use new macros.

Tue Aug 22 20:34:52 2000  Kaz Kojima <kkojima@rr.iij4u.or.jp>

	* config/sh/sh.md (cmpeqdi_t splitter): Fix a reverse testing.

	* config/sh/sh.c (prepare_scc_operands): Apply force_reg to
	sh_compare_op1 when the mode is DImode and sh_compare_op1 isn't
	const0_rtx.

2000-08-22  Nick Clifton  <nickc@redhat.com>

	* config/arm/lib1funcs.asm (__umodsi3): Before performing any
	restorative additions, test for bottom bits of IP being set,
	rather than relying upon the RORs not matching.
	(__modsi3): Ditto.

2000-08-22  David Edelsohn  <edelsohn@gnu.org>

	* aix.h (ASM_DECLARE_FUNCTION_NAME): Call named_section() or
	text_section() as appropriate instead of emitting text csect
	pseudo-op directly.
	(TEXT_SECTION_ASM_OP): Only require default 32-bit alignment.
	(UNIQUE_SECTION): Define macro.
	(ASM_OUTPUT_SECTION_NAME): Define macro.
	* rs6000.c (rs6000_override_options): Disable -ffunction-sections
	on AIX if debugging and -fdata-sections always.

2000-08-22  Steven King  <sxking@uswest.net>

	* config/float-i386.h (LDBL_EPSILON): Remove __convert_long_double
	machinery.
	(LDBL_MAX): Same here.

2000-08-22  Richard Henderson  <rth@cygnus.com>

	* flow.c (tidy_fallthru_edge): Update b->end properly.

2000-08-22  Stan Cox  <scox@redhat.com>

	* Makefile.in (OBJS): Add dependence.o.
	* dependence.c: New file.

2000-08-22  Alexandre Oliva  <aoliva@redhat.com>, John David Anglin  <dave.anglin@nrc.ca>

	* calls.c (check_sibcall_argument_overlap_1): Adjust for
	ARGS_GROW_DOWNWARD.
	(check_sibcall_argument_overlap): Likewise.

2000-08-22  Alexandre Oliva  <aoliva@redhat.com>

	* invoke.texi (SH Options): Document -m4-nofpu,
	-m4-single-only, -m4-single, -m4, -mbigtable, -mfmovd,
	-mhitachi, -mnomacsave, -misize, -mpadstruct, -mspace.

2000-08-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (check_format_info): Give the 'some locales' warning
	for strftime %Ey rather than the unconditional 'only last 2 digits
	of year' one.

2000-08-22  Richard Henderson  <rth@cygnus.com>

	* alias.c (init_alias_analysis): Do not register
	struct_value_incoming_rtx or static_chain_rtx as pointing
	to stack memory.

Tue Aug 22 01:44:43 2000  Jeffrey A Law  (law@cygnus.com)

	* protoize.c (munge_compile_params): Fix typo and formatting buglets.

2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (report_problematic_module): Declare.
	* diagnostic.c (report_problematic_module): New function.
	(report_error_function): Tweak.

Tue Aug 22 02:31:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (expand_goto_internal, fixup_gotos): Only check
	TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.

2000-08-21  Richard Henderson  <rth@cygnus.com>

	* flow.c (calculate_global_regs_live): Mark frame pointer live
	everywhere before reload.

2000-08-21  Jim Wilson  <wilson@cygnus.com>

	* real.c (ereal_from_int, ereal_from_uint, significand_size): Handle
	INTEL_EXTENDED_IEEE_FORMAT.
	(toe64): Delete INTEL_EXTENDED_IEEE_FORMAT support.  Unconditionally
	clear last two bytes of output FP value.

2000-08-21  Graham Stott  <grahams@cygnus.co.uk>

	* config/ia64/ia64.h (REDO_SECTION_INFO_P): Change decl to DECL.

2000-08-21  Jakub Jelinek  <jakub@redhat.com>

	* unroll.c (loop_find_equiv_value): If ret is modified between
	insn and loop_start, ret might not be equivalent to reg.

2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (init_dollar_format_checking,
	maybe_read_dollar_number, finish_dollar_format_checking): New
	functions.
	(dollar_arguments_used, dollar_arguments_count,
	dollar_first_arg_num, dollar_max_arg_used, dollar_format_warned):
	New variables.
	(check_format_info): Support $ formats for scanf and printf width
	and precision.  Always increment format_chars to advance past the
	'*' of precision, not just when the format parameters are
	available to check.

2000-08-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.c (block_move_loop, expand_block_move,
	function_arg_partial_nregs, save_restore_insns, function_prologue,
	mips_expand_prologue, RA_MASK): Avoid using the `U' integer
	constant suffix.
	(function_arg_advance, function_arg): Match argument to format
	specifier `%p'.

2000-08-21  Nix  <nix@esperi.demon.co.uk>

	* gcc.c (do_spec_1): Implement %j spec flag.
	Remove dead comment.

	* gcc.texi (The Configuration File): Document HOST_BIT_BUCKET.
	* system.h (HOST_BIT_BUCKET): Default to "/dev/null".
	* config/i386/xm-dos.h (HOST_BIT_BUCKET): Define as "NUL".
	* config/i386/xm-os2.h, config/winnt/winnt.h: Likewise.

	* protoize.c (munge_compile_params): Use HOST_BIT_BUCKET (if
	writable) instead of hardcoded value.

	* toplev.c (compile_file): Output to a file even if -fsyntax-only.

	* gcc.c, config/i386/xm-dos.h, config/i386/xm-os2.h: Kill
	MKTEMP_EACH_FILE.

	* gcc.c (cc1_options): Do not process -o or run the assembler if
	-fsyntax-only.
	* objc/lang-spec.h: Likewise.

2000-08-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* fixinc/fixincl.c (fix_with_system): Pipe the output of
	"external" fixes through `cat', to avoid truncating the input
	file by redirection.

2000-08-21  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (lea_general_1): Copy insn condition to split
	condition.
	(lea_general_2, lea_general_3): Likewise.

2000-08-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-decl.c (duplicate_decls, define_label): Restrict -Wtraditional
	warnings to user code.

	* c-lex.c (readescape, yylex): Likewise.

	* c-typeck.c (store_init_value, process_init_element): Likewise
	(c_expand_start_case): Format.

2000-08-18  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* mips/linux.h (LINK_SPEC): Use %(endian_spec).

	* mips/mips.h: Change LINKER_ENDIAN_SPEC to ENDIAN_SPEC
	and linker_endian_spec to endian_spec.
	(ENDIAN_SPEC): Add %{EB} and %{EL}.
	(LINK_SPEC): Remove %{EB} and %{EL}.
	(ASM_SPEC): Likewise.  Use %(endian_spec).

2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-tree.h (flag_hosted): Move declaration from here...
	* c-common.h (flag_hosted): ... to here.
	(flag_noniso_default_format_attributes): New declaration.
	* c-decl.c (flag_noniso_default_format_attributes): New variable.
	(c_decode_option): Set it appropriately for options choosing
	language standard variant.
	* c-common.c (init_function_format_info): Only provide default
	format attributes if flag_hosted.  Only provide the gettext
	formats if flag_noniso_default_format_attributes.  Update
	comments.
	(check_format_info): Disable treatment of %a as a scanf flag in
	C99 mode.

2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (scan_char_table): Add 'w' to flags for all formats
	except 'n'.
	(check_format_info): Set 'wide' for scanf format widths.  Warn for
	a zero scanf width.  Make the check for writing into a constant
	object at the first level of indirection; at later levels, warn if
	any type qualifiers are encountered.

Mon Aug 21 07:41:12 2000  Jeffrey A Law  (law@cygnus.com)

	* reload.c (reload_inner_reg_of_subreg): New function broken out of
	push_reload.
	(push_reload): Use reload_inner_reg_of_subreg.
	(combine_reloads): Do not combine reloads if the input reload
	is a SUBREG in which the inner part will need reloading.

	* global.c (global_alloc): Avoid passing dumpfile argument to
	reload routines.
	* toplev.c (rest_of_compilation): Likewise.
	* reload.h (reload): Remove dumpfile argument.  Callers changed.
	(debug_reload, debug_reload_to_stream): Move prototypes here.
	* rtl.h  (reload): Remove dumpfile argument.
	* reload.c (debug_reload): Remove prototype.
	(debug_reload_to_stream): Likewise.
	* reload1.c: Avoid passing dumpfile around, rely on rtl_dump_file
	instead.

2000-08-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (context_as_prefix): Export.
	(need_error_newline): Remove.
	(lang_diagnostic_starter, lang_diagnostic_finalizer): New objects.
	(error_module_changed, record_last_error_module,
	error_function_changed, record_last_error_function): New functions.
	(initialize_diagnostics): Default initialize
	lang_diagnostic_starter, lang_diagnostic_finalizer.
	(init_output_buffer): Tweak.
	(file_name_as_prefix): New function.
	(announce_function, default_print_error_function,
	report_error_function, set_diagnostic_context): Tweak.

2000-08-21  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (init_propagate_block_info): Handle SUBREG in a jump
	condition expression.

2000-08-20  Richard Henderson  <rth@cygnus.com>

	* flow.c (merge_blocks_nomove): Don't seek back past the bb note.

2000-08-20  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_init): Set global flag when called.
	(cpp_reader_init): Bomb out if cpp_init hasn't been called.

Sun Aug 20 01:41:35 2000  Dennis Chernoivanov  <cdi@sparc.spb.su>

	* cpplex.c (cpp_scan_buffer): Move `output_line_command' just
	before `process_directive' so that newlines won't be missed
	for directives.
	(cpp_printf): Increment `print->lineno' when newline is emitted.

	* cppmain.c (cb_ident): Likewise.
	(cb_define): Likewise.
	(cb_undef): Likewise.
	(cb_include): Likewise.
	(cb_def_pragma): Likewise.
	(dump_macros_helper): Likewise.

2000-08-20  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (emit_insn_group_barriers): Stop if ar.lc
	assigned before a loop.

	* config/ia64/ia64.md (ashlsi3): Zero extend the shift count.
	(ashrsi3, lshrsi3): Likewise.

2000-08-20  Gabriel Dos Reis  <gdr@codesourcery.com>

	* c-lang.c: #include diagnostic.h
	(c_tree_printer): New function.
	(lang_init): Initialize lang_printer.

	* Makefile.in (c-lang.o): Depends on diagnostic.h

2000-08-20  Gabriel Dos Reis  <gdr@codesourcery.com>

	* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic.

	* diagnostic.c (default_diagnostic_starter,
	default_diagnostic_finalizer): New functions.
	(diagnostic_for_asm, diagnostic_for_decl): Tweak.
	(pedwarn, pedwarn_with_file_and_line, error,
	error_with_file_and_line, fatal, warning,
	warning_with_file_and_line): Adjust call to report_diagnostic.
	(report_diagnostic): Rework.
	(set_diagnostic_context): New function.

	* diagnostic.h (struct diagnostic_context): New data structure.
	(diagnostic_message, diagnostic_argument_list,
	diagnostic_file_location, diagnostic_line_location,
	diagnostic_is_warning, diagnostic_starter, diagnostic_finalizer,
	diagnostic_finalizer, diagnostic_auxiliary_data): New macros.
	(set_diagnostic_context): Declare.
	(report_diagnostic): Change prototype.

Sun 20-Aug-2000 09:25:45 BST  Neil Booth  <NeilB@earthling.net>

	* fix-header.c (main): Initialize cpplib.

2000-08-19  Michael Meissner  <meissner@redhat.com>

	* ifcvt.c (find_if_block): Do not assume that a THEN block has any
	instructions in it before checking for indirect jumps.

	* ifcvt.c (find_if_block): Do not consider a THEN block that ends
	in an indirect jump as a potential for conditional execution.

	* d30v.h (d30v_init_expanders): Don't declare here.
	* d30v-protos.h (d30v_init_expanders): Declare here with a valid
	prototype.

Sat 19-Aug-2000 21:11:45 BST  Neil Booth  <NeilB@earthling.net>

	* cpp.texi: Add @section for assertions.

Sat Aug 19 12:37:08 EDT 2000  John Wehle  (john@feith.com)

	* loop.c (scan_loop): Use CONST_CALL_P instead of
	checking for REG_LIBCALL / REG_RETVAL.

Sat Aug 19 09:18:47 2000  Jeffrey A Law  (law@cygnus.com)

	* reload1.c (reload_as_needed): Accept dumpfile argument,
	pass it to emit_reload_insns.
	(emit_reload_insns): Add new dumpfile argument.  If non-null
	then dump the reloads for each insn into the dumpfile.
	(reload): Pass dumpfile to reload_as_needed.

	* invoke.texi: Clean up linux-gnu vs linux comments.

2000-08-19  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (reg_or_5bit_operand): New.
	(ia64_depz_field_mask): New.
	* config/ia64/ia64.h (CONSTRAINT_OK_FOR_R): New.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md: Update commentary.
	(depz_internal): New.
	(ashlsi3): Implement directly.
	(ashrsi3, lshrsi3): Simplify; rely on extv and extzv for constants.
	(ashldi3): Use shladd.
	* config/ia64/ia64-protos.h: Update.

2000-08-18  Zack Weinberg  <zack@wolery.cumb.org>

	* toplev.c (independent_decode_option): Always process -g.
	Remove third argument, now unused.  Adjust caller to match.

2000-08-18  Richard Henderson  <rth@cygnus.com>

	* combine.c (make_compound_operation): Break after creating
	the extraction.

2000-08-18  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (cpp_register_pragma_space): Just return if the
	namespace is already registered.

2000-08-18  Ray Essick <essick@ddna.labs.mot.com> & Nick Clifton  <nickc@redhat.com>

	* config/mcore/mcore.md (rotlsi3): Allow allow rotations by a
	constant amount.  Do not generate ROTL instruction.

Fri Aug 18 16:22:20 2000  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/elf.h: Do not include sh/sh.h.
	* config/sh/rtems.h: Likewise.
	* config/sh/rtemself.h: Do not include sh/elf.h.
	* configure.in: Get them included with `tm_file's.
	* configure: Rebuilt.

	* config/sh/sh.md (fpu_switch0, fpu_switch1): Simplify.
	* config/sh/sh.c (fpscr_set_from_mem): Use them.

Fri Aug 18 14:23:18 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (compute_record_type): Don't use mode of single
	field as mode of record if not integer mode of same type.

	* regmove.c (perhaps_ends_bb_p): New function.
	(optimize_reg_copy_1, optimize_reg_copy_2): Call it.
	(optimize_reg_copy_3, fixup_match_2, regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	(fixup_match_1, combine_stack_adjustments_for_block): Add casts to
	avoid signed/unsigned warnings.

	* function.c (fixup_var_refs_1, case MEM): Update CODE after
	updating X.

Fri 18-Aug-2000 18:33:45 BST  Neil Booth  <NeilB@earthling.net>

	* cpphash.h: Use HAVE_DESIGNATED_INITIALIZERS.
	(_cpp_trigraph_map): Declaration moved from cpplex.c

	* cppinit.c: Define _cpp_trigraph_map.  Use UCHAR_MAX + 1
	instead	of 256.  Use consistent test for designated initializers.
	(cpp_init): Initialize trigraph_map.
	(initialize_standard_includes, parse_option):  Use memcmp
	instead of strncmp.

	* cpplex.c (init_trigraph_map): Remove.
	(trigraph_ok, trigraph_replace, lex_line): Refer to
	_cpp_trigraph_map.

	* cpplib.c (str_match, WARNING, ERROR, ICE): Delete.
	(do_unassert): Remove unused "next" local.

	* system.h (HAVE_DESIGNATED_INITIALIZERS): New prototype.

2000-08-18  Emmanuel Marty  <emarty@suntech.fr>

	* arm/lib1funcs.asm (_umodsi3 THUMB VARIANT): Restore deleted return
	insn.

2000-08-17  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (spill_restore_mem): Handle emitting
	the first insn in a sequence.

Thu Aug 17 22:40:05 EDT 2000  John Wehle  (john@feith.com)

	* alias.c (true_dependence, write_dependence_p): A read
	involving a label_ref or the constant pool doesn't create
	a dependency.

	* rtl.h (unchanging): Improve documentation.

2000-08-17  Rodney Brown  <RodneyBrown@mynd.com>

	* cse.c (insert_regs): Remove unused `regno'.

2000-08-17  Neil Booth  <NeilB@earthling.net>

	* (cppinit.c) merge_include_chains: Use remove_dup_dir,
	remove_dup_dirs.  If qtail == brack, remove brack not
	qtail.
	(remove_dup_dir, remove_dup_dirs): New functions.

2000-08-17  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (cpp_cleanup): Free include dir chains.
	* cpplib.c (do_undef): Let _cpp_free_definition make the node void.
	(do_unassert): Free the assert with _cpp_free_definition.
	* cppmacro.c (_cpp_free_definition): Free memory allocated for
	assertions.  Make the node a T_VOID node.

2000-08-17  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (path_include, append_include_chain):
	Remove 2nd parameter (struct cpp_pending *).
	(path_include, initialize_standard_includes, cpp_handle_option):
	Update callers appropriately.
	(cpp_handle_option): Use pend.

2000-08-17  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (sort_options): Remove, put functionality in
	cpp_init.
	(cpp_init): New.
	(initialize_builtins): Free memory.
	(cpp_start_read): Move init_IStable to cpp_init.

	* cpplib.h (cpp_init): New prototype.
	* cppmain.c (main): Call cpp_init.

Thu Aug 17 13:20:32 EDT 2000  John Wehle  (john@feith.com)

	* rtlanal.c (rtx_unstable_p): Use CONSTANT_P.
	(rtx_unstable_p, rtx_varies_p): Process vectors.

2000-08-16  Niibe Yutaka  <gniibe@m17n.org>, Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* config/sh/lib1funcs.asm (GLOBAL): Define.  Use for all
	references to GLOBAL symbols.  Use LOCAL where appropriate.

2000-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (*-ibm-aix4.[12]*): Delete test for gnu ld.  Always
	use t-aix41 when host == target.

2000-08-16  Richard Henderson  <rth@cygnus.com>

	* reload.c (push_secondary_reload): Revert last change.
	If we use a reload_in/out pattern, make the when the same
	as the primary reload.
	(find_reloads): Likewise.

2000-08-16  Manfred Hollstein  <manfredh@redhat.com>

	* configure.in (libstdcxx-v3): Fix test.
	* configure: Regenerate.

Wed Aug 16 08:10:32 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (calls_function_1, expand_call): Only test
	TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.

2000-08-16  Richard Henderson  <rth@cygnus.com>

	* combine.c (simplify_shift_const): Revert previous two
	changes.  If SHIFT_COUNT_TRUNCATED, crop the shift count
	before the main loop.

2000-08-15  Richard Henderson  <rth@cygnus.com>

	* combine.c (simplify_shift_const): Bound shift count when
	combining shifts.

Tue Aug 15 17:33:05 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (ECF_SP_DEPRESSED): New macro.
	(calls_function_1): Treat calling sp-depressed function as alloca.
	(emit_call_1): Don't adjust SP if calling sp-depressed function.
	(expand_call): Set ECF_SP_DEPRESSED if TYPE_RETURNS_STACK_DEPRESSED.
	If sp-depressed, ensure block saves and restores SP.
	* fold-const.c (extract_muldiv): Only check TYPE_IS_SIZETYPE
	for INTEGER_TYPE.
	* function.c (keep_stack_depressed): New function.
	(thread_prologue_and_epilogue_insns): Call it.
	* print-tree.c (print_node): Use HOST_WIDE_INT_PRINT_UNSIGNED
	to print DECL_OFFSET_ALIGN.
	Print no-force-blk and transparent-union flags properly.
	* stmt.c (expand_goto_internal): Don't restore stack if last block
	and function returns with sp depressed.
	(fixup_gotos): Likewise.
	(save_stack_pointer): New function, from code in expand_decl.
	(expand_decl): Call new function.
	* tree.h (TYPE_IS_SIZETYPE): Call INTEGER_TYPE_CHECK.
	(TYPE_RETURNS_STACK_DEPRESSED): New macro.
	(save_stack_pointer): New declaration.

	* diagnostic.c (fatal_function): New variable.
	(set_fatal_function): New function.
	(fatal): Call it.
	* diagnostic.h (set_fatal_function): New declaration.

2000-08-15  William Cohen  <wcohen@redhat.com>

	* config/sh/elf.h (DWARF2_DEBUGGING_INFO): Defined.
	(PREFERRED_DEBUGGING_TYPE): Set to dwarf2 info.
	(DWARF2_ASM_LINE_DEBUG_INFO): Defined.

2000-08-15  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_used_reg): Set reg_cond_reg appropriately.

2000-08-15  Richard Earnshaw <rearnsha@arm.com>

	* arm.c (arm_function_ok_for_sibcall): New function.
	* arm.h (FUNCTION_OK_FOR_SIBCALL): Define.
	* arm.md (call expanders): Don't check here for calls that can't
	be sibling calls.

2000-08-15  Richard Earnshaw <rearnsha@arm.com>

	* arm.md (splits generating cond_exec): Disable.

2000-08-15  Richard Earnshaw <rearnsha@arm.com>

	* arm/linux-elf.h (text_section): Delete declaration.

2000-08-15  Richard Earnshaw <rearnsha@arm.com>

	ARM support for unordered FP operations.
	* arm-protos.h (arm_comparison_operator): Declare.
	* arm.c (arm_comparison_operator): New function.
	(arm_select_cc_mode): Add unordered comparison codes.
	(get_arm_condition_code): Likewise.
	(arm_final_prescan_insn): Can't handle unordered jumps that can't
	be done in one insn.
	* arm.h (PREDICATE_CODES): Add arm_comparison_operator.
	* arm.md (all uses of comparison_operator): Replace with
	arm_comparison_operator.
	(bunordered, bordered, bugt, bunlt, bunge, bunle, buneq, bltgt): New
	expands.
	(arm_buneq, arm_bltgt, arm_buneq_reversed, arm_bltgt_reveresed): New
	patterns.

Tue Aug 15 00:36:36 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* gthr-posix.h: Conditionally include <sched.h>; include
	<config.h> from libobjc/.

2000-08-14  Richard Henderson  <rth@cygnus.com>

	* config/i386/i386.c (legitimize_pic_address): Use Pmode
	for all CONSTs.

2000-08-14  Richard Henderson  <rth@cygnus.com>

	* configure.in (ia64-*): Set float_format for i386 long double.

	* real.c (GET_REAL): Treat 128-bit INTEL_EXTENDED_IEEE_FORMAT
	as we would for i386 XFmode.
	(PUT_REAL): Likewise.
	(endian, ereal_atof, real_value_truncate): Likewise.
	(ereal_isneg, toe64, etens, make_nan): Likewise.
	* real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Likewise.

	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.c (general_tfmode_operand): New.
	(destination_tfmode_operand): New.
	(tfreg_or_fp01_operand): New.
	(ia64_split_timode): New.
	(spill_tfmode_operand): New.
	(ia64_expand_prologue): Use TFmode not XFmode.
	(ia64_expand_epilogue): Likewise.
	(ia64_function_arg): Likewise.
	(ia64_function_arg_advance): Likewise.
	(ia64_return_in_memory): Likewise.
	(ia64_function_value): Likewise.
	(ia64_print_operand): Likewise.
	(ia64_register_move_cost): Set GR<->FR to 5.
	(ia64_secondary_reload_class): Get GR for TImode memory op.
	* config/ia64/ia64.h (ROUND_TYPE_SIZE): Remove.
	(ROUND_TYPE_ALIGN): Remove.
	(LONG_DOUBLE_TYPE_SIZE): Set to 128.
	(INTEL_EXTENDED_IEEE_FORMAT): Define.
	(HARD_REGNO_NREGS): Use TFmode, not XFmode.
	(HARD_REGNO_MODE_OK): Likewise.  Disallow TImode in FRs.
	(MODES_TIEABLE_P): Use TFmode, not XFmode.
	(CLASS_MAX_NREGS): Likewise.
	(ASM_OUTPUT_LONG_DOUBLE): Output by 4 byte hunks.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md (movti): New.
	(movti_internal): Use a clobber for memory alternatives.
	(reload_inti, reload_outti): New.
	(movsfcc_astep): Predicate properly.
	(movdfcc_astep): Likewise.
	(movxf): Remove.
	(movtf): New.
	(extendsftf2, extenddftf2): New.
	(trunctfsf2, trunctfdf2): New.
	(floatditf2, fix_trunctfdi2): New.
	(floatunsditf2, fixuns_trunctfdi2): New.
	(addtf3, subtf3, multf3, abstf2): New.
	(negtf2, nabstf2, mintf3, maxtf3): New.
	(maddtf3, msubtf3, nmultf3, nmaddtf3): New.
	(cmptf): New.
	(fr_spill): Use TFmode, not XFmode.
	(fr_restore): Likewise.
	* config/ia64/lib1funcs.asm (__divtf3): New.
	* config/ia64/t-ia64 (LIB1ASMFUNCS): Add it.

2000-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cse.c (fold_rtx): Avoid empty body in an if-statement.

	* doloop.c (doloop_iterations_max, doloop_modify): Avoid using the
	`U' integer constant suffix.

	* dwarf2out.c (add_subscript_info): Avoid empty body in an
	else-statement.

	* sparc/sol2.h (__enable_execute_stack): Prototype.

2000-08-14  David Edelsohn  <edelsohn@gnu.org>

	* collect2.c: Remove use of AIX import file.

	* longlong.h: Test ARCH_PWR not ARCH_POWER.

	* rs6000.c (print_operand, case 'E'): Add else.

2000-08-14  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (movdi): Delay calling ia64_expand_load_address.
	(movdi_symbolic): New.

2000-08-14  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (ASM_SPEC): Pass -mconstant-gp and -mauto-pic
	to GNU as.  For Intel as, pass -M const_gp and -M no_plabel.
	* config/ia64/linux.h (ASM_SPEC): Pass -mconstant-gp and -mauto-pic
	to GNU as.

2000-08-14  Richard Henderson  <rth@cygnus.com>

	* expr.c (emit_group_load): Don't force constants into registers.
	Special case source already in the correct mode.

2000-08-14  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in: Accept *-*-linux* not just *-*-linux-gnu*.
	* fixinc/inclhack.def: Likewise.
	* fixinc/mkfixinc.sh: Likewise.
	* configure: Regenerate.
	* fixinc/fixincl.x: Regenerate.
	* install.texi: Document equivalence of linux and linux-gnu.

Mon Aug 14 18:51:44 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* cse.c (insert_regs): Also in REG case: When finding an invalid
	value, and we make a new quantity, make sure that it won't be
	mistaken by for a valid one by mention_regs.

2000-08-13  Ralf Gütlein <ralf.guetlein@aranea.de>

	* h8300.md: Remove obsolete peepholes.

2000-08-13  Kazu Hirata  <kazu@hxi.com>

	* invoke.texi (H8/300 Options): Fix typos.
	* config/h8300.c: Fix formatting.
	* config/h8300.h: Fix comment typos.
	(OVERRIDE_OPTIONS): Fix formatting.

	* function.c: Fix formatting.

	* cse.c: Fix formatting.

2000-08-13  Geoff Keating  <geoffk@cygnus.com>

	* flow.c (attempt_auto_inc): Remove unused variable `bb'.
	(attempt_auto_inc): Suppress parentheses warning.
	* function.c (put_reg_into_stack): Remove unused variable `unsigned_p'.
	* loop.c (load_mems): Remove `u' suffix in two places.
	* config/rs6000/rs6000.c: Remove unnecessary `u' suffixes from
	hex constants.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/sol-c0.c: Prototype some functions.  Remove the
	__eabi dummy routine.
	* config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Remove unused
	variable `buf_ptr'.

	* config/rs6000/rs6000.c (rs6000_select_section): Rewrite to
	not put stuff in .sdata unnecessarily.
	(rs6000_unique_section): New function.
	* config/rs6000/rs6000-protos.h: Add rs6000_unique_section.
	* config/rs6000/sysv4.h (UNIQUE_SECTION): Define.

	* c-typeck.c (build_array_ref): Don't complain about non-lvalue
	arrays in C99.  Don't try to look at DECL_REGISTER of a
	COMPONENT_REF.  Don't complain twice about the same error.

	* fixinc/inclhack.def (aix_pthread): New fix.
	(aix_sysmachine): New fix.
	* fixinc/fixincl.x: Regenerate.

	* expr.c (expand_expr): Call convert_modes when turning a large
	multiply into a small one.

2000-08-12  Geoff Keating  <geoffk@cygnus.com>

	* tree.h (DECL_OFFSET_ALIGN): Make the off_align field of
	the tree structure an exponent rather than an explicit alignment
	so it doesn't overflow.
	(SET_DECL_OFFSET_ALIGN): New macro.
	* stor-layout.c (place_union_field): Use SET_DECL_OFFSET_ALIGN
	rather than DECL_OFFSET_ALIGN.
	(place_field): Likewise.
	* expmed.c (store_bit_field): Abort on align==0 to avoid
	antisocial machine behavior.

2000-08-12  Richard Henderson  <rth@cygnus.com>

	* sibcall.c (uses_addressof): Accept both addressof and
	current_function_internal_arg_pointer inside a mem.
	(optimize_sibling_and_tail_recursive_call): Fail tail recursion
	if current_function_uses_addressof.
	* stmt.c (expand_return): Kill tail recursion and HAVE_return
	optimizations.

2000-08-11  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (addsi3): Remove expander.
	(subsi3, mulsi3, negsi2, one_cmplsi2): Likewise.
	(*addsi3_shladd): New.

2000-08-11  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (do_spill): Pass cfa offset to move expander.
	(do_restore): Likewise.
	(gen_movdi_x, gen_fr_spill_x, gen_fr_restore_x): New.
	(ia64_expand_prologue, ia64_expand_epilogue): Use them.
	(rtx_needs_barrier): Track actual bit manipulation for
	ar.unat moves, gr_spill, and gr_restore.
	(emit_insn_group_barriers): Special case gr_spill/gr_restore.
	(process_set): Don't handle varargs spills.
	* config/ia64/ia64.md (gr_spill): Accept cfa offset.  Emit
	.mem.offset here instead of in process_set.
	(gr_restore): Likewise.

2000-08-11  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.h (PROMOTE_MODE): Only extend to SImode.

2000-08-11  Mark Elbrecht  <snowball3@bigfoot.com>

	* gcc.texi (The Configuration File): Document
	COLLECT2_HOST_INITIALIZATION, GCC_DRIVER_HOST_INITIALIZATION, and
	UPDATE_PATH_HOST_CANONICALIZATION.

2000-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-parse.in (cast_expr): Avoid -Wstrict-prototype warnings for
	unprototyped function pointer casts on integer constants.

2000-08-11 Laurynas Biveinis <lauras@softhome.net>

	* fixproto: Recognize DOS paths with drive letters as absolute paths.

2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>

	* extend.texi (Volatiles): Fix typos.

2000-08-11  Kazu Hirata  <kazu@hxi.com>

	* flow.c: Fix formatting.

2000-08-11  Richard Henderson  <rth@cygnus.com>

	* reload.c (push_secondary_reload): When invoking a reload_{in,out}
	pattern, always allocate a tertiary scratch register.

	* config/alpha/alpha.md (reload_inqi): Use a DImode scratch.
	(reload_inhi): Likewise.

2000-08-11  Richard Henderson  <rth@cygnus.com>

	* function.c (put_reg_into_stack): Allow type to be NULL.
	(schedule_fixup_var_refs): Likewise.
	(gen_mem_addressof): Allow decl to be NULL.
	(put_addressof_into_stack): Likewise.

	* flow.c (merge_blocks_nomove): Be more careful about
	locating the beginning of block A.

	* combine.c (simplify_shift_const): Obey SHIFT_COUNT_TRUNCATED.

Thu Aug 10 22:47:09 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* configure.in:
	* configure:
	* gthr-posix.h:
	* config.in: Reverted the check for <sched.h>.

2000-08-10  Chris Demetriou  <cgd@sibyte.com>

	* mips/elf.h (CTOR_SECTION_NAME, DTOR_SECTION_NAME): New
	macros define the name of CTOR and DTOR sections.
	(CTOR_LIST_BEGIN, CTOR_LIST_END, DTOR_LIST_BEGIN,
	DTOR_LIST_END): Change to use attributes to specify
	sections.
	* mips/elf64.h (CTOR_SECTION_NAME, DTOR_SECTION_NAME,
	(CTOR_LIST_BEGIN, CTOR_LIST_END, DTOR_LIST_BEGIN,
	DTOR_LIST_END): Same as in mips/elf.h.

2000-08-10  Drew Moseley  <dmoseley@redhat.com>

	* config/mn10300/mn10300.h: Added no-crt0 option for explicitly
	disabling just crt0.o.

2000-08-10  Richard Earnshaw <rearnshaw@arm.com> & Nick Clifton  <nickc@cygnus.com>

	* arm.h (CPP_SPEC): Use sub-spec cpp_interwork.
	(CPP_INTERWORK_SPEC, CPP_INTERWORK_DEFAULT_SPEC): New sub-specs.
	(EXTRA_SPECS): Add them.
	* arm/lib1funcs.asm: Support builds for interworking.
	Use macros to eliminate duplicated pieces of code.

2000-08-10  Kazu Hirata  <kazu@hxi.com>

	* h8300.c (expand_a_rotate): New.
	(emit_a_rotate): Likewise.
	(h8300_adjust_insn_length): Add support for the rotate insns.
	* h8300.md (rotlqi3): New.
	(*rotlqi3_1): Likewise.
	(rotlhi3): Likewise.
	(*rotlhi3_1): Likewise.
	(rotlhi3): Likewise.
	(*rotlhi3_1): Likewise.
	* h8300-proto.h: Add prototypes for expand_a_rotate and
	emit_a_rotate.

	* h8300.c: Fix comment typos.
	(dosize): Declare the variable amount as unsigned.
	(get_shift_alg): Fix a comparison between signed and unsigned.
	(emit_a_shift): Likewise.
	(h8300_adjust_insn_length): Simplify the code.

	* c-decl.c: Fix formatting.

2000-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-lex.c (parse_float, yylex): For -Wtraditional, issue a
	warning about non-traditional numeric constant suffixes.

	* cppexp.c (parse_number): Likewise.

	* invoke.texi: (-Wtraditional): Document new behavior.

Thu Aug 10 00:11:04 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* gthr-posix.h: Include auto-host.h. Conditionally include
	<sched.h>.
	* configure.in: Check for the <sched.h> header file.
	* config.in: Added define for HAVE_SCHED_H.

2000-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-typeck.c (process_init_element): For -Wtraditional, warn about
	initialization of unions.

	* invoke.texi (-Wtraditional): Document new behavior.

2000-08-09  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in (--enable-c-cpplib): Uncomment.  Use AC_DEFINE
	instead of extra_c_flags.
	(--enable-c-mbchar): Use AC_DEFINE instead of extra_c_flags.
	* configure: Regenerate.
	* config.in: Regenerate.

	* cpperror.c (cpp_type2name): New function.
	* cpplex.c (lex_line): If we issued an error for an invalid
	preprocessing directive, discard that logical line.
	* cpplib.c (do_line): Call a hook function if the current file
	is renamed by #line.
	(do_ident): Pass the contents of the string, not the entire
	token, to the callback function.
	* cpplib.h (CPP_LAST_PUNCTUATOR): New #define.
	(cb.rename_file): New hook function.
	(cb.ident): Adjust prototype.
	(cpp_type2name): Prototype.
	* cppmacro.c (dump_macro_args): Correct precedence lossage.

	* cppmain.c (cb_ident): Update for changed interface.
	(cb_rename_file): New function.
	(main): Set rename callback.

2000-08-09  Alexandre Oliva  <aoliva@redhat.com>

	* caller-save.c (mark_referenced_regs): Mark partially-overwritten
	multi-word registers.

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

	* c-common.c (combine_strings, check_format_info): Refer to ISO C
	or ISO C89 instead of ANSI C.
	* c-decl.c (grokdeclarator, xref_tag, finish_struct,
	build_enumerator, do_case): Likewise.
	* c-lex.c (parse_float, yylex): Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c (common_type, build_array_ref, build_binary_op,
	build_unary_op, pedantic_lvalue_warning, build_conditional_expr,
	build_c_cast, convert_for_assignment, set_init_index,
	set_init_label, c_expand_start_case): Likewise.
	* toplev.c (documented_lang_options, display_help): Likewise.

2000-08-08  Kazu Hirata  <kazu@hxi.com>

	* h8300.c: Fix formatting.
	* h8300.h: Likewise.
	* h8300.md: Likewise.
	(movsi_h8300hs): Fix formatting of the resulting assembly code.

	* reload1.c: Fix formatting.

2000-08-08  Rodney Brown  <RodneyBrown@mynd.com>

	* alpha/alpha.c (alpha_emit_xfloating_libcall):
	Use GEN_CALL_VALUE define.
	* alpha/alpha.md (untyped_call): Use GEN_CALL define.
	* clipper/clipper.md (untyped_call): Likewise.
	* dsp16xx/dsp16xx.md (untyped_call): Likewise.
	* fx80/fx80.md (untyped_call): Likewise.
	* mips/mips.md (untyped_call): Likewise.
	* ns32k/ns32k.md (untyped_call): Likewise.
	* pa/pa.md (untyped_call): Likewise.
	* romp/romp.md (untyped_call): Likewise.
	* sparc/sparc.md (untyped_call): Likewise.

2000-08-08  Jason Eckhardt  <jle@cygnus.com>

	* config/i860/i860.c (singlemove_string): Do not generate assembler
	pseudo instructions that must be expanded (that is, with signed
	constants larger than 16 bits).

2000-08-08  Richard Henderson  <rth@cygnus.com>

	* flow.c (life_analysis): Only turn off PROP_LOG_LINKS and
	PROP_AUTOINC at -O0.  Don't collect alias info at -O0.
	(init_propagate_block_info): Don't kill memory stores at -O0.
	(mark_set_1, mark_used_regs): Likewise.

2000-08-08  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (optimization_options): Decorate 'level' as
	ATTRIBUTE_UNUSED.
	(mask64_operand): Remove sign-extend thinko.
	(rldic_operand): New function.
	(load_multiple_operation): regno's are unsigned ints.
	(store_multiple_operation): Likewise.
	(lmw_operation): Likewise.
	(stmw_operation): Likewise.
	(includes_lshift_p): shift_mask is unsigned int.
	(includes_lshift64_p): New function.
	(addrs_ok_for_quad_peep): unsigned int reg1.
	(print_operand): Consistently add "else" after
	output_operand_lossage().
	(print_operand, case 'b'): Fold in case 'W'.
	(print_operand, case 'W'): Print rldic MB value.
	(output_epilogue): Update Objective-C language string.
	(output_toc): unsigned HOST_WIDE_INT low, compare unsigned.
	* rs6000.h (PREDICATE_CODES): Add rldic_operand.
	* rs6000.md (ashldi3): Add rldic instruction.
	(iordi3, xordi3): Remove redundant "else if CONST_DOUBLE".
	(cmpsi_internal2, cmpdi_interal2): Use 'b' output template
	modifier.

2000-08-08  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h: Remove duplicates.  Update
	for massive code rearrangements.
	* config/ia64/ia64.c (ia64_arpfs_regno): Remove.
	(ia64_rp_regno, ia64_fp_regno, ia64_input_regs): Remove.
	(ia64_local_regs, ia64_need_regstk): Remove.
	(ar_ccv_reg_operand): New.
	(ia64_gp_save_reg): New.
	(struct ia64_frame_info): Combine most of the size elements;
	add new gr save elements.
	(find_gr_spill): New.
	(next_scratch_gr_reg): New.
	(mark_reg_gr_used_mask): New.
	(ia64_compute_frame_size): Rewrite.  Allocate special AR regs
	to GR backing store regs when possible.
	(ia64_initial_elimination_offset): New.
	(ia64_rap_fp_offset): Remove.
	(save_restore_insns): Remove.
	(setup_spill_pointers): New.
	(finish_spill_pointers): New.
	(spill_restore_mem): New.
	(do_spill, do_restore): New.
	(ia64_expand_prologue): Rewrite to use them.
	(ia64_expand_epilogue): Likewise.
	(ia64_direct_return): Update for current_frame_info changes.
	(ia64_function_prologue): Simplify .prologue emission.  Emit
	.spill when needed.
	(ia64_setup_incoming_varargs): Don't ever emit rtl.
	(ia64_dbx_register_number): New.
	(ia64_initialize_trampoline): New.
	(ia64_secondary_reload_class): Request GR_REGS for integer
	arithmetic destined for FR_REGS.
	(ia64_init_machine_status): Don't reset return_address_pointer_rtx.
	(ia64_mark_machine_status): Mark ia64_gp_save.
	(rws_access_regno): Rename from rws_access_reg; don't treat
	predicates specially.
	(rws_access_reg): New.  Update all callers.
	(rtx_needs_barrier): Remove dead unspecs.
	(ia64_epilogue_uses): Mark ar.pfs and ar.unat live on exit.
	(ia64_encode_section_info): Silence signed/unsigned warnings.
	(spill_offset, sp_offset, spill_offset_emitted): Remove.
	(tmp_reg, tmp_saved): Remove.
	(process_set): Rewrite to expect complicated bits via
	REG_FRAME_RELATED_EXPR.
	(ia64_expand_fetch_and_op): Use emit_move_insn; be explicit
	in the use of ar.ccv; never set RTX_UNCHANGING_P.
	(ia64_expand_op_and_fetch): Likewise.
	(ia64_expand_compare_and_swap): Likewise.
	(ia64_expand_builtin): Likewise.
	* config/ia64/ia64.h (AR_UNAT_REGNUM): New.
	(FIRST_PSEUDO_REGISTER): Update.
	(AR_M_REGNO_P): Update.
	(FIXED_REGS): Don't mark three local registers as used.
	(EXTRA_CC_MODES): New.
	(SELECT_CC_MODE): New.
	(HARD_REGNO_NREGS): Allow DImode in p0; handle CCImode.
	(HARD_REGNO_MODE_OK): Disallow CCImode from non-predicates.
	(FRAME_GROWS_DOWNWARD): Unset.
	(STARTING_FRAME_OFFSET): Zero.
	(ELIMINABLE_REGS): Eliminate from the soft to hard frame pointer.
	(INITIAL_ELIMINATION_OFFSET): Defer to out of line function.
	(HARD_FRAME_POINTER_REGNUM): New.
	(CAN_DEBUG_WITHOUT_FP): Define.
	(TRAMPOLINE_TEMPLATE): Remove.
	(TRAMPOLINE_SIZE): Lower to 32.
	(TRAMPOLINE_ALIGNMENT): Lower to 64.
	(INITIALIZE_TRAMPOLINE): Defer to out of line function.
	(PREDICATE_CODES): Update.
	(struct machine_function): Add ia64_gp_save.
	* config/ia64/ia64.md: Purge unused unspecs.
	(movsi patterns): Allow moves to/from AR_M_REGS.
	(movdi patterns): Allow moves to/from p0.
	(call patterns): Move most setjmp hackery to ia64_gp_save_reg.
	(gr_spill, gr_restore): Indicate ar.unat read/written.
	(nonlocal_goto): Don't pass old frame_pointer.
	(nonlocal_goto_receiver): Remove.
	(exception_receiver): New.
	(builtin_setjmp_setup): New.
	(builtin_setjmp_receiver): New.
	* config/ia64/lib1funcs.asm (__ia64_save_stack_nonlocal): Bundle.
	(__ia64_nonlocal_goto): Bundle.  Don't kill r7.
	(__ia64_restore_stack_nonlocal): Likewise.
	(__ia64_trampoline): New.
	* config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Defer to out of line
	function.
	* config/ia64/t-ia64 (LIB1ASMFUNCS): Add __trampoline.

2000-08-08  Richard Henderson  <rth@cygnus.com>

	* frame.h (ia64_frame_state): Add my_psp.
	* libgcc2.c (ia64_throw_helper): Add throw_sp argument.
	(__throw): Pass it in.  Don't clobber r7.
	* config/ia64/frame-ia64.c (init_ia64_reg_loc): Mark inline.
	(execute_one_ia64_descriptor) [mem_stack_v]: Sets psp.when
	and nothing to do with sp.
	(normalize_reg_loc): Use frame->my_psp.
	(frame_translate): Handle frame-pointer-less functions.  Set
	spill_base correctly, in absence of being told.
	(__build_ia64_frame_state): New sp argument.  Fill in frame->my_sp.
	(__ia64_backtrace_helper): New sp argument.  Use
	builtin_return_address instead of label addresses.
	(print_record) [mem_stack_v]: No size member.

2000-08-08  Richard Henderson  <rth@cygnus.com>

	* regclass.c (choose_hard_reg_mode): Iterate over all CC modes.

2000-08-08  Richard Henderson  <rth@cygnus.com>

	* tm.texi (LOCAL_REGNO): Document.
	* flow.c (LOCAL_REGNO, EPILOGUE_USES): Provide default.
	(mark_regs_live_at_end): Don't mark LOCAL_REGNO registers.
	* reload1.c (reload): Likewise when considering nonlocal labels.

	* config/ia64/ia64.h (LOCAL_REGNO): New.
	* config/sparc/sparc.h (LOCAL_REGNO): New.

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

	* c-lex.c (yylex): Don't allow integer suffixes 'LUL', 'Ll', 'lL'.

2000-08-07  Nick Clifton  <nickc@redhat.com>

	* config/mips/mips.c: Fix compile time warning messages.
	* config/mips/mips-protos.h: Add prototype for equality_op.

	* mn10300.h (TARGET_SWITCHES): Document `-mam33'.

2000-08-07  Graham Stott  <grahams@cygnus.co.uk>

	* mn10300.md: Use nonimmediate_operand instead of general_operand
	on output operands.

	* mn10300.h (PREFERRED_RELOAD_CLASS): Limit memory reloads.

2000-08-07  Alexandre Oliva  <aoliva@redhat.com>

	* sh.h (EXTRA_CONSTRAINT_Q): Adjust to GNU Coding Standards.
	* sh.c (expand_block_move): Break long lines.
	(expand_ashiftrt, fpscr_set_from_mem): Likewise.
	* sh.md (mulsi3): Likewise.
	(movdi): Adjust spacing.

2000-08-07  Richard Henderson  <rth@cygnus.com>

	* expmed.c (store_bit_field): Don't require MEM_IN_STRUCT_P.
	* expr.c (emit_group_store): Don't set it.

2000-08-07  Kazu Hirata  <kazu@hxi.com>

	* invoke.texi (Options for Debugging Your Program or GCC): Remove
	duplicate entries for 'w' and 'z'.

	* flow.c: Fix a comment typo.

Sun Aug  6 23:47:35 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* c-parse.in: Changed the language string for Objective-C to "GNU
	Objective-C".

Sun Aug  6 11:54:03 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* gthr-posix.h: Integrated Chris Ball's <cball@fmco.com> changes
	to improve the Posix thread support for Objective-C.

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

	* c-common.h (enum c_tree_index): Add CTI_SIGNED_SIZE_TYPE and
	CTI_UNSIGNED_PTRDIFF_TYPE.
	(signed_size_type_node): Define.
	(unsigned_ptrdiff_type_node): Define.
	* c-decl.c (init_decl_processing): Create the
	signed_size_type_node and unsigned_ptrdiff_type_node types.
	* c-common.c (T_SC): Define.
	(T_SST): Define.
	(T_UPD): Define.
	(print_char_table): Use T_SST for %zd, %zi, %zn.  Use T_UPD for
	%to, %tu, %tx, %tX.  Allow %hhn (T_SC).  Add "c" to the flags for
	%s and %p.
	(scan_char_table): Use T_SC for %hhd, %hhi, %hhn.  Use T_SST for
	%zd, %zi, %zn.  Use T_UPD for %to, %tu, %tx, %tX.  Add "c" to the
	flags for %c, %s and %[.
	(check_format_info): Only allow leniency for signedness of targets
	of character pointers (when pedantic) for formats flagged with
	"c", so for strings but not for %hh formats.  When pedantic, don't
	allow character pointers to substitute for void pointers if a
	second level of indirection is present.

2000-08-06  Kazu Hirata  <kazu@hxi.com>

	* invoke.texi (Options for Debugging Your Program or GCC): Update
	the names of dump files.

	* h8300.c (dosize): Rearrange code for conciseness.
	(split_adds_subs): Likewise.

	* loop.c: Fix formatting.

	* dwarf2out.c: Fix formatting.

	* tm.texi (FUNCTION_ARG_PARTIAL_NREGS): Fix a typo.

	* expr.c: Fix formatting.

2000-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rs6000.c (rs6000_maybe_dead): Prototype.

2000-08-06  Richard Henderson  <rth@cygnus.com>

	* stmt.c (expand_goto): Do virtual_stack_vars_rtx replacement for
	HAVE_nonlocal_goto as well.
	* config/i960/i960.md (nonlocal_goto): Don't do it here.
	* config/pj/pj.md (nonlocal_goto): Likewise.

2000-08-07  Michael Hayes  <mhayes@cygnus.com>

	* loop.c (try_swap_copy_prop): New function.
	(load_mems): Rename copies to load_copies and add new regset
	store_copies.  Check for sets of shadow registers and mark
	in store_copies.   Call try_swap_copy_prop for registers
	marked in store_copies.

Sun Aug  6 00:54:42 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* objc/objc-act.c: New command line option -fconstant-string-class
	to allow specifying a user defined constant string class,
	different from NXConstantString.

	* toplev.c: Moved the Objective-C specific options to
	objc/lang-options.h.

	* objc/lang-options.h: Moved the Objective-C specific options from
	toplev.c. Added -fconstant-string-class.

2000-08-05  Chris Demetriou  <cgd@sibyte.com>

	* mips/elf.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
	DTOR_LIST_BEGIN, DTOR_LIST_END): change type of
	__CTOR_LIST__ from func_ptr array to just func_ptr, to
	avoid extra alignment imposed on arrays.
	* mips/elf64.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
	DTOR_LIST_BEGIN, DTOR_LIST_END): Likewise.

	* mips.h: Clean up comments and spacing near MASKs.
	(TARGET_UNIX_ASM): Delete.
	(MASK_MIPS16, MASK_NO_CHECK_ZERO_DIV, MASK_CHECK_RANGE_DIV,
	MASK_UNINIT_CONST_IN_RODATA): Change values to make mask
	values contiguous.

2000-08-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (print_char_table): Add entries for the X/Open '
	format flag (print decimals with locale's thousands grouping
	character).  Make %C expect wint_t.
	(check_format_info): If pedantic, warn when the %n$ operand
	number form is used.  Allow for the ' flag; warn about it if
	pedantic.

2000-08-05  Zack Weinberg  <zack@wolery.cumb.org>

	* i386.h (FUNCTION_OK_FOR_SIBCALL):  Not OK if DECL's return
	type is a float mode, cfun->decl's return type is not, and
	TARGET_FLOAT_RETURNS_IN_80387.

2000-08-04  Andreas Schwab  <schwab@suse.de>

	* cppmain.c (cb_def_pragma): Skip the first two tokens from the
	token list, which are always `#' and `pragma'.

2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>

	* tree.c (tree_expr_nonnegative_p): Move to...
	* fold-const.c: ... here.  Also handle BIND_EXPR and RTL_EXPR.
	(rtl_expr_nonnegative_p): New.
	* tree.h: Add prototype for rtl_expr_nonnegative_p.

	* real.h (CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH, CONST_DOUBLE_MEM,
	CONST_DOUBLE_CHAIN: Move to...
	* rtl.h: ...here.  Use XCINT/XCEXP.

	* Makefile.in: Remove toplev.o from OBJS.  Add rule to make
	libbackend.a; add libbackend.a to STAGESTUFF.  Add BACKEND
	variable.  Use BACKEND when linking cc1, not OBJS.  Add BACKEND
	to VOL_FILES.

	* objc/Make-lang.in (cc1obj): Link with $(BACKEND).

2000-08-05  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* config/c4x/c4x.md (return_indirect_internal): New.
	* config/c4x/c4x.c (c4x_expand_epilogue): Use it.

2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (time_char_table): Mark up formats added in C99 and
	make other corrections.  %D and %g were added in C99.  %Og is an
	extension.  %EX is permitted.  %R, %T, %n, %r, %t were added in
	C99.  %e was added in C99.  %Oj is an extension.  %G and %z are in
	C99 rather than GNU extensions, but %OG and %Oz are extensions.
	%h was added in C99.  %C was added in C99.  %OY and %OC are
	extensions.  Add the C99 format %F.
	(check_format_info): If pedantic and not in C99 mode, warn for C99
	formats, %E and %O.

Fri Aug  4 23:01:58 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* function.c (schedule_fixup_var_refs): New function, broken out
	of put_reg_into_stack.
	(put_reg_into_stack): Use it.
	(put_var_into_stack): In CONCAT case, fixup up references for
	components only after fixing up references to the whole concat.

2000-08-04  Rodney Brown  <RodneyBrown@pmsc.com>

	* alias.c (mark_constant_function): Use INSN_P.
	(init_alias_analysis): Likewise.
	* combine.c (combine_instructions): Use INSN_P.
	(can_combine_p): Likewise.
	(try_combine): Likewise.
	(distribute_notes): Likewise.
	(distribute_links): Likewise.
	* cse.c (cse_around_loop): Use INSN_P.
	(invalidate_skipped_block): Likewise.
	(cse_set_around_loop): Likewise.
	(cse_end_of_basic_block): Likewise.
	(delete_trivially_dead_insns): Likewise.
	* emit-rtl.c (unshare_all_rtl_again): Use INSN_P.
	(unshare_all_rtl_1): Likewise.
	(next_cc0_user): Likewise.
	(try_split make_insn_raw): Likewise.
	(remove_unnecessary_notes): Likewise.
	* final.c (shorten_branches): Use INSN_P.
	(leaf_renumber_regs): Likewise.
	(leaf_renumber_regs_insn): Likewise.
	* flow.c (find_label_refs): Use INSN_P.
	(verify_wide_reg): Likewise.
	(notice_stack_pointer_modification): Likewise.
	(count_or_remove_death_notes): Likewise.
	(verify_flow_info): Likewise.
	(clear_log_links): Likewise.
	* function.c (fixup_var_refs_insns): Use INSN_P.
	(compute_insns_for_mem): Likewise.
	* gcse.c (alloc_gcse_mem): Use INSN_P.
	(compute_sets): Likewise.
	(compute_hash_table): Likewise.
	(classic_gcse): Likewise.
	(cprop): Likewise.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks_1): Likewise.
	* global.c (expand_preferences): Use INSN_P.
	(build_insn_chain): Likewise.
	* graph.c (node_data): Use INSN_P.
	* haifa-sched.c (priority): Use INSN_P.
	(rm_line_notes): Likewise.
	(rm_other_notes): Likewise.
	(find_insn_reg_weight): Likewise.
	(init_target_units): Likewise.
	(schedule_block): Likewise.
	(compute_block_forward_dependences): Likewise.
	(debug_dependencies): Likewise.
	(set_priorities): Likewise.
	* integrate.c (function_cannot_inline_p): Use INSN_P.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	* jump.c (mark_all_labels): Use INSN_P.
	(never_reached_warning): Likewise.
	* lcm.c (optimize_mode_switching): Use INSN_P.
	* local-alloc.c (validate_equiv_mem): Use INSN_P.
	(memref_used_between_p): Likewise.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	(no_conflict_p): Likewise.
	* loop.c (scan_loop): Use INSN_P.
	(find_and_verify_loops): Likewise.
	(count_loop_regs_set): Likewise.
	(loop_reg_used_before_p): Likewise.
	(strength_reduce): Likewise.
	(recombine_givs): Likewise.
	(check_dbra_loop): Likewise.
	(load_mems): Likewise.
	(try_copy_prop): Likewise.
	* print-rtl.c (print_rtx): Use INSN_P.
	* recog.c (find_single_use): Use INSN_P.
	* reg-stack.c (stack_regs_mentioned): Use INSN_P.
	(next_flags_user): Likewise.
	(swap_rtx_condition): Likewise.
	* regmove.c (mark_flags_life_zones): Use INSN_P.
	(optimize_reg_copy_1): Likewise.
	(optimize_reg_copy_2): Likewise.
	(optimize_reg_copy_3): Likewise.
	(reg_is_remote_constant_p): Likewise.
	(fixup_match_2): Likewise.
	(regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* regrename.c (build_def_use): Use INSN_P.
	(replace_reg_in_block): Likewise.
	(consider_use): Likewise.
	* reload.c (find_equiv_reg): Use INSN_P.
	* reload1.c (reload): Use INSN_P.
	(maybe_fix_stack_asms): Likewise.
	(calculate_needs_all_insns): Likewise.
	(reload_as_needed): Likewise.
	(emit_output_reload_insns): Likewise.
	(delete_address_reloads_1): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_combine): Likewise.
	(reload_cse_move2add): Likewise.
	* reorg.c (redundant_insn): Use INSN_P.
	(dbr_schedule): Likewise.
	* resource.c (find_dead_or_set_registers): Use INSN_P.
	(mark_target_live_regs): Likewise.
	* rtlanal.c (reg_used_between_p): Use INSN_P.
	(reg_referenced_between_p): Likewise.
	(reg_set_between_p): Likewise.
	(reg_set_p): Likewise.
	(single_set): Likewise.
	(multiple_sets): Likewise.
	(find_last_value): Likewise.
	(reg_set_last): Likewise.
	(find_reg_note): Likewise.
	(find_regno_note): Likewise.
	* sibcall.c (sequence_uses_addressof): Use INSN_P.
	* simplify-rtx.c (cselib_process_insn): Use INSN_P.
	* ssa.c (find_evaluations): Use INSN_P.
	(rename_block): Likewise.
	(rename_equivalent_regs): Likewise.
	* unroll.c (loop_find_equiv_value): Use INSN_P.
	(set_dominates_use): Likewise.
	* varasm.c (mark_constant_pool): Use INSN_P.
	(mark_constants): Likewise.
	* config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P.
	(alphaev4_next_group): Likewise.
	(alphaev5_next_group): Likewise.
	* config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P.
	(c4x_rptb_rpts_p): Likewise.
	* config/mips/mips.c (mips16_optimize_gp): Use INSN_P.
	* config/rs6000/rs6000.c (uses_TOC): Use INSN_P.
	(rs6000_adjust_priority): Likewise.
	* config/sh/sh.c (sh_loop_align): Use INSN_P.
	(machine_dependent_reorg): Likewise.
	(split_branches): Likewise.
	* config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P.

Fri Aug  4 11:43:49 2000  John Wehle  (john@feith.com)

	* combine.c (recog_for_combine): Remove the old notes
	prior to attempting to recognize the new pattern.
	(distribute_notes): Ignore REG_NONNEG notes.

2000-08-04  Chandrakala Chavva  <cchavva@redhat.com>

	* varasm.c (output_constructor): Add .align 0 for packed vars.

2000-08-04  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* configure.in: Use default thread_file even when enable_threads is
	yes or dce because hpux10.20 pa port uses MULTILIB implementation.
	* configure: Rebuilt.

	* gthr-dce.h (__gthread_objc_condition_allocate): Fix typo.

2000-08-04  Donn Terry (donnte@microsoft.com)

	* prefix.c (translate_name): Don't strip trailing DIR_SEPARATOR.

2000-08-04  Mark Elbrecht  <snowball3@bigfoot.com>

	* i386/x-djgpp: Delete code that conditionally modifies target_alias.
	Delete code that conditionally modifies 'version'.
	Delete X_CPPFLAGS. Add comment for SYSTEM_HEADER_DIR.
	* i386/xm-djgpp.h (GCC_DRIVER_HOST_INITIALIZATION): New macro.
	* gcc.c (main): Use it.
	* config/i386/xm-djgpp.h (UPDATE_PATH_HOST_CANONICALIZE): New macro.
	* prefix.c (update_path): Use it.
	* i386/djgpp.h (STANDARD_INCLUDE_DIR): Define.
	(MD_EXEC_PREFIX): Set to '/dev/env/DJDIR/bin/'.
	(ASM_OUTPUT_SECTION_NAME): Add code attribute to sections containing
	code.
	(SUPPORTS_WEAK, SUPPORTS_ONE_ONLY): Default to true.
	(SUBTARGET_SWITCHES): Adjust.
	(WCHAR_UNSIGNED, WCHAR_TYPE_SIZE, WCHAR_TYPE): Undefine before
	defining.
	(WINT_TYPE, SIZE_TYPE, PTRDIFF_TYPE): Define.

2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.h (flag_isoc94): Declare.
	* c-decl.c (flag_isoc94): Define.
	(c_decode_option): Set flag_isoc94 as appropriate.
	* c-common.c (T_PD, T_IM, T_UIM): Define.
	(format_char_info): Add tlen and jlen.
	(print_char_table): Add entries for %t and %j.  Allow %zn.  Allow
	%F.  Allow %lf.
	(scan_char_table): Add entries for %t and %j.  Allow %F.  Allow
	%l[.
	(time_char_table): Add NULL entries for %t and %j.
	(check_format_info): Allow for %t and %j.  Warn for %F if pedantic
	and not C99.  Warn for %lc, %ls and %l[ if pedantic and not C94.
	Warn for printf %lf if pedantic and not C99.  Don't warn for empty
	precision.  Allow precision argument to be unsigned int.  If
	pedantic, warn for %p passed an argument not a pointer to possibly
	qualified void or a possibly qualified character type, and for
	pointer targets of the wrong sign, except for character pointers.

2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* ginclude/stddef.h: Don't declare wint_t unless __need_wint_t.
	* c-common.h (enum c_tree_index): Add CTI_WINT_TYPE.
	(wint_type_node): Define.
	* c-decl.c (WINT_TYPE): Define.
	(init_decl_processing): Create the wint_type_node type.
	* c-common.c (T_WI): Define.
	(print_char_table): Use T_WI for %lc format.

2000-08-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/:  Verified that the MSDOS patch does not break
	the UNIX functionality and applied the next three patches
	from July:

2000-07-28  Eli Zaretskii  <eliz@is.elta.co.il>

	* fixinc/fixfixes.c (main) [__MSDOS__]: Avoid overwriting the
	output file with the temporary one by appending ".X" to generate
	the temporary fuile's name.  If the output file already has an
	extension, replace it with ".X".

	* fixinc/fixincl.c (fix_with_system) [__MSDOS__]: Use $ORIGDIR,
	not $DESTDIR, to find applyfix.  Use sprintf instead of snprintf;
	reallocate the command buffer while copying the command-line
	argument.  Redirect the output directly to the temporary file,
	instead of going through another temporary file.
	(process): Close the temporary file before unlinking it.
	(machine_matches) [__MSDOS__]: If the machine doesn't match, set
	the FD_SKIP_TEST flag.  Pay attention to the FD_MACH_IFNOT flag.
	(run_compiles): Pass p_fixd argument to machine_matches, as it
	expects.

	* fixinc/fixincl.sh: Export ORIGDIR.  If $DJDIR is set in the
	environment, assume there are no symlinks in the include
	directory.  When cleaning up the DONE files, look for them
	case-insensitively.  Don't try to remove symlinks if they aren't
	there.

	* fixinc/fixlib.c (make_raw_shell_str): Accept new argument smax;
	all callers changed.  Declare pz "const char *", to avoid compiler
	warnings.

	* fixinc/fixlib.h (ENV_TABLE): Get ORIGDIR from the environment.
	Change prototype of make_raw_shell_str.

2000-07-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* fixinc/fixincl.c [__MSDOS__]: Don't include "server.h".
	(initialize) [__MSDOS__]: Use tempnam.
	(initialize): Don't use SIGPIPE if it is not defined.

	* fixinc/fixfixes.c (main) [__MSDOS__]: freopen for stdout should
	return stdout.

2000-07-25  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fix*.[ch]: substantially reworked to make it possible
	to run this program without using fork(2) or pipe(2) (i.e. in
	a DOS environment).

2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* cppdefault.h (WINT_TYPE): Define.
	* cppinit.c (builtin_array): Define __WINT_TYPE__.
	* tradcpp.c (initialize_builtins): Define __WINT_TYPE__.
	* tm.texi (NO_BUILTIN_WINT_TYPE, WINT_TYPE): Document.

Fri Aug  4 06:53:46 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* (mips_legitimate_address_p): Don't allow register+offset
	if the offset is large and negative, and we are compiling
	for 64 bit registers.

2000-08-04 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* gencodes.c (main): Define CODE_FOR_nothing as the last possible
	insn_code_number + 1.

2000-08-04  Kazu Hirata  <kazu@hxi.com>

	* h8300.c (function_prologue): Rearrange code for conciseness.
	(function_epilogue): Likewise.
	* h8300.h (OK_FOR_U): Fix formatting.

	* cse.c: Fix a comment typo. Fix formatting.

2000-08-03  Richard Henderson  <rth@cygnus.com>

	* config/i386/i386.md (return_indirect_internal): New.
	* config/i386/i386.c (ix86_expand_epilogue): Use it.

2000-08-03  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (parse_name): Might have to glue a CPP_OTHER token
	before the name.
	(lex_line): Glue @ onto the beginning of identifiers and
	string constants, in Objective-C mode.
	(output_token, spell_token): Handle CPP_OSTRING.
	(can_paste, maybe_paste_with_next): Handle pasting @ onto the
	beginning of a NAME or a STRING, in objc mode.

	* cpplib.c (get_define_node): Do not permit identifiers that
	begin with @ to be #defined.
	* cppmacro.c (CAN_PASTE_AFTER): Add CPP_OTHER.
	* cpplib.h (TTYPE_TABLE): Add CPP_OSTRING.

	* c-lang.c, objc/objc-act.c (build_objc_string): Delete.
	* c-tree.h (build_objc_string): Delete prototype.
	* objc/objc-tree.def: Delete OBJC_STRING_CST.
	* c-lex.c (yylex): Use build_string for all three kinds of strings.

	* c-parse.in, objc/objc-act.c: Update commentary.

2000-08-03  Mark Mitchell  <mark@codesourcery.com>

	* extend.texi: Fix typo in last change.

	* extend.texi: Add commentary on statement-expressions and their
	interactions with C++.

2000-08-03  Nick Clifton  <nickc@cygnus.com>

	* dwarf2.h (DW_LANG_Java): Change value to 0x000b.
	* dwarf.h (LANG_JAVA): Change value to 0x000b.

2000-08-03  Anthony Green  <green@cygnus.com>

	* dwarf2out.c (gen_compile_unit_die): Add java language support.
	(add_bound_info): Check for java language.
	(is_java): New function.
	* dwarfout.c (output_compile_unit_die): Ditto.
	* dwarf.h (dwarf_source_language): Add java source language type.
	* dwarf2.h (dwarf_source_language): Ditto.

Thu Aug  3 20:32:25 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (subst_stack_regs_pat):  Use replace_reg to swap
	operands.

	* i386.c (ix86_expand_branch): Mode of comparison in
	IF_THEN_ELSE is VOIDmode.

Thu Aug  3 10:05:53 2000  Akiko Matsushita <matusita@sra.co.jp>

	* gengenrtl.c, rtl.c: Avoid #elif.

2000-08-03  Michael Poole  <poole@troilus.org>

	* tm.texi (Register Classes): Clarify order of sub-initializers
	in REG_CLASS_CONTENTS.

Thu Aug  3 15:53:03 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	From SAITOH Masanobu:
	* sh.h (ASM_OUTPUT_REG_PUSH): Fix syntax.

2000-08-03  David Billinghurst  <David.Billinghurst@riotinto.com.au>

	* config/i386/cygwin.h: Remove -remap from CPP_SPEC since this option
	is not supported by tradcpp and isn't actually needed for cygwin.

2000-08-03  Kazu Hirata  <kazu@hxi.com>

	* h8300.c: Fix a comment typo.
	* h8300.h (OK_FOR_U): Accept a 32-bit constant address on H8S.

	* jump.c: Fix formatting.

	* toplev.c: Fix formatting.

Thu Aug  3 01:05:32 2000  Jeffrey A Law  (law@cygnus.com)

	* flow.c (find_auto_inc): Verify that we've got a REG before
	peeking at its regno.  Fail, don't abort if we can't find
	the increment of the desired register.

	* pa.md (shadd height reduction patterns/splitters): Remove.

2000-08-02  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64-protos.h (flag_ssa): Declare.
	* config/ia64/ia64.md (movti_internal, movti_internal+1): New.

2000-08-02  Mark Mitchell  <mark@codesourcery.com>

	* dce.c: Remove all uses of assert.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* ssa.c: Likewise.

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.h (lang_specific_driver): Constify second argument.
	* gcc.c (translate_options, process_command, main): Likewise.
	Constify variables to match.  Cast second argument to
	pexecute.

	* cppspec.c, gccspec.c: Adjust type of second argument to
	lang_specific_driver, and update code as necessary.

2000-08-02  Jakub Jelinek  <jakub@redhat.com>

	* loop.c (scan_loop): Ensure update_end label does not
	go away until reg_scan_update is run.

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* c-common.h: Prototype min_precision and c_build_qualified_type here...
	* c-tree.h: ... not here.
	* errors.h: Prototype fancy_abort.

	* emit-rtl.c (gen_lowpart_common): Move variable 'c' into
	HOST_BITS_PER_WIDE_INT == 64 ifdef block.
	* regrename.c (regrename_optimize): Make control flow explicit.
	(replace_reg_in_block): Initialize reg_use to 0.

	* i386.c (legitimate_address_p): Rename error label to
	report_error to avoid namespace clash.

2000-08-02  Kazu Hirata  <kazu@hxi.com>

	* fold-const.c: Fix formatting.

Wed Aug  2 16:26:15 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.c (legitimate_address_p): Accept other bases than
	pic_offset_table_rtx for GOTOFF constructs.

Wed Aug  2 15:59:34 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (shift to lea splitter): Use const_int_operand.

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c, cppinit.c, cpplex.c, cpplib.c, cppmacro.c,
	cppspec.c: Do not use 'legal' or 'illegal' in error messages
	and comments.

	* cppmain.c (cb_define, cb_undef): Don't generate any output
	if not done_initializing.
	* cpplex.c (maybe_paste_with_next): When the token after a ##
	is an omitted rest argument, only delete the token before it
	if that token is a comma.  Do not warn about bogus token
	pastes for , ## rest_arg.

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

2000-08-02  Fred Fish  <fnf@be.com>

	* config/i386/beos-elf.h (STARTFILE_SPEC): Add i386-mcount.o
	when user gives -p option.  Add init_term_dyn.o for BeOS 5.0
	and later.

	* config/i386/beos-elf.h (INCLUDE_DEFAULTS): Add additional
	Be directories to search path.

	Remove support for __declspec(dllimport) and __declspec(dllexport).
	This is leftover cruft from the earlier BeOS gcc port when BeOS
	used Microsoft's PE object file format.
	* configure.in (i*86-*-beoself): Remove extra_objs=winnt.o.
	* config/i386/t-beos (winnt.o): Remove Makefile frag.
	* config/i386/beos-elf.h (TARGET_NOP_FUN_DLLIMPORT): Remove.
	(VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	(VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	(MERGE_MACHINE_DECL_ATTRIBUTES): Remove.
	(REDO_SECTION_INFO_P): Remove.
	(ASM_EXPORT_DECL): Remove.
	(ASM_DECLARE_FUNCTION_NAME): Remove.
	(ASM_DECLARE_OBJECT_NAME): Remove.
	(ASM_OUTPUT_ALIGNED_COMMON): Remove.
	(ASM_OUTPUT_ALIGNED_DECL_COMMON): Remove.
	(ASM_OUTPUT_ALIGNED_LOCAL): Remove.
	(STRIP_NAME_ENCODING): Remove.

	Remove support for obsolete version of BeOS that is no longer
	supported by Be.
	* configure.in (i*86-*-beospe*): Remove.
	* config/i386/beos-pe.h: Remove.

2000-08-01  Jeffrey Oldham  <oldham@codesourcery.com>
	    Mark Mitchell <mark@codesourcery.com>

	* Makefile.in (OBJS): Added dce.o.
	(ssa.o): Updated target to include ssa.h.
	(flow.o): Likewise.
	(toplev.o): Likewise.
	(dce.o): Created target.
	* basic-block.h: Added comments.
	(INVALID_BLOCK): Added definition.
	(connect_infinite_loops_to_exit): Added declaration.
	Moved SSA declarations to ssa.h.
	* flow.c: Added inclusion of ssa.h.
	(struct depth_first_search_dsS, depth_first_search_ds):
	Added definitions.
	(compute_immediate_postdominators): Added definition.
	(connect_infinite_loops_to_exit): Likewise.
	(flow_dfs_compute_reverse_init): Likewise.
	(flow_dfs_compute_reverse_add_bb): Likewise.
	(flow_dfs_compute_reverse_execute): Likewise.
	(flow_dfs_compute_reverse_finish): Likewise.
	* rtl.h (rtx/in_struct): Added use to determine insn necessity.
	(LABEL_P): Added definition.
	(JUMP_P): Likewise.
	(NOTE_P): Likewise.
	(BARRIER_P): Likewise.
	(JUMP_TABLE_DATA_P): Likewise.
	(INSN_DEAD_CODE_P): Likewise.
	* ssa.c: Replaced inclusions with ssa.h inclusion.
	(CONVERT_HARD_REGISTER_TO_SSA_P): Moved to ssa.h.
	(rename_registers): Removed unnecessary variables.
	* ssa.h: Created by moving declarations from ssa.c and
	basic-block.h.
	* timevar.def: Defined TV_DEAD_CODE_ELIM.
	* toplev.c: Added ssa.h inclusion.
	(dump_file_index): Added DFI_dce.
	(dump_file): Added "dce" entry.
	Defined flag_ssa.
	(f_options): Added dce entry.
	* invoke.texi: Document -fdce.  Emphasize experimental status of
	-fssa.
	* dce.c: New file.

2000-08-01  Zack Weinberg  <zack@wolery.cumb.org>

	* cpperror.c (v_message): Split into _cpp_begin_message and
	v_message macro.  All callers updated.
	(_cpp_begin_message): Do inhibit_errors/inhibit_warnings
	checks here.

	* cppfiles.c (cpp_syshdr_flags): New function.
	(read_include_file): Don't call cpp_output_tokens.  Call
	enter_file hook.
	* cppinit.c (dump_macros_helper): Moved to cppmain.c.
	(cpp_reader_init): Don't initialize token_buffer.  Call
	_cpp_init_internal_pragmas.
	(cpp_cleanup): Don't clear token_buffer.
	(cpp_start_read): Don't worry about output from -D processing.
	Don't call cpp_output_tokens.
	(cpp_finish): Don't dump macros here.  Don't call
	cpp_output_tokens.
	* cppmacro.c (_cpp_dump_definition): Rename
	cpp_dump_definition.  Write directly to a FILE *.
	(dump_funlike_macro): Delete.
	(dump_macro_args): New.

	* cpplex.c (TOKEN_LEN): Convert to inline function.
	(_cpp_grow_token_buffer, safe_fwrite, cpp_output_tokens,
	cpp_scan_line, _cpp_dump_list): Delete.
	(cpp_printf, cpp_output_list): New.
	(output_line_command): Don't worry about entering or leaving files.
	(cpp_scan_buffer): Just output each token as we hit it.
	(process_directive): Don't call cpp_output_tokens.
	(_cpp_glue_header_name): Don't use token_buffer.
	(output_token, dump_param_spelling): Write directly to a FILE *.

	* cpplib.c (pass_thru_directive, dump_macro_name,
	pragma_dispatch, do_pragma_gcc): Delete.
	(do_define, do_undef, parse_include, do_line, do_ident, do_pragma,
	do_pragma_poison, cpp_pop_buffer): Call the appropriate hook
	functions.
	(do_error, do_warning, pragma_dependency): Call
	_cpp_begin_message, then cpp_output_list.
	(cpp_register_pragma, cpp_register_pragma_space,
	_cpp_init_internal_pragmas): New.
	(do_pragma): Walk the pragmas table here.
	(do_pragma_once, do_pragma_poison, do_pragma_system_header,
	do_pragma_dependency): Return void.
	(do_pragma_implementation): Moved to cppmain.c.

	* cpplib.h: Update prototypes.
	 (struct cpp_reader): Remove printer, token_buffer,
	token_buffer_size, and limit.  Add struct cb, and pragmas.
	(struct cpp_printer): Remove last_id and written.
	(CPP_WRITTEN, CPP_PWRITTEN, CPP_SET_WRITTEN,
	CPP_ADJUST_WRITTEN): Delete.
	* cpphash.h: Update prototypes.
	(ufputs): New wrapper.

	* cppmain.c (cb_define, cb_undef, cb_include, cb_ident,
	cb_enter_file, cb_leave_file, cb_def_pragma): New functions.
	(main): Set up callbacks.  Register #pragma implementation.
	Dump macros from here.

2000-08-01  Geoff Keating  <geoffk@cygnus.com>

	* rtl.h (enum reg_note): Add REG_MAYBE_DEAD.
	* rtl.c (reg_note_name): Add REG_MAYBE_DEAD.
	* flow.c (propagate_one_insn): Allow deletion of prologue/epilogue
	insns if they have a REG_MAYBE_DEAD note attached.
	* config/rs6000/rs6000.c (rs6000_maybe_dead): New function.
	(rs6000_emit_load_toc_table): TOC loads may go dead.

2000-08-01  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (ia64_function_arg): Fix last change.  Verify
	type exists before using it.  Use number of words as alignment
	otherwise.
	(ia64_function_arg_partial_nregs, ia64_function_arg_advance,
	ia64_va_arg): Propagate ia64_function_args changes here.

2000-08-01  Richard Henderson  <rth@cygnus.com>

	* config/elfos.h (ASM_DECLARE_OBJECT_NAME): Care for null DECL.
	* config/ia64/sysv4.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.

2000-08-01  Bernd Schmidt  <bernds@cygnus.co.uk>

	From Joern Rennecke:
	* sh.h (CPP_SPEC, TARGET_SWITCHES): Add m4-nofpu.
	* sh.md (udivsi3, divsi3): Don't use libcalls that use the FPU
	unless TARGET_SH3E is set.
	* t-sh (MULTILIB_MATCHES): Add m2=m4-nofpu.

	* sh.md (ashlsi3_d, ashlsi3_k): Remove, replace with
	(ashlsi3_std): New pattern.
	(ashlsi3 expander): Use it for TARGET_SH3.
	* sh.c (gen_ashift): Use it instead of ashlsi3_k.

Tue Aug  1 12:34:21 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (canonicalize_condition):  Use destination, not source to
	determine SET's mode.

2000-07-31  Mark Mitchell  <mark@codesourcery.com>

	* flow.c (clear_log_links): Fix typo.

Mon Jul 31 22:19:24 2000  Jeffrey A Law  (law@cygnus.com)

	* loop.c (check_dbra_loop): Make change from July 17, 2000 work
	on targets which need more than one insn for a compare/cbranch
	operation.

2000-07-31  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (ia64_function_arg): Use alignment not size
	when computing offset.

Mon Jul 31 20:35:50 2000  Denis Chertykov  <denisc@overta.ru>

	* genpeep.c (main): Handle DEFINE_PEEPHOLE2.

2000-07-31  Geoff Keating  <geoffk@cygnus.com>

	* flow.c (clear_log_links): Nuke global_live_at_start and
	global_live_at_end data, since if the log_links stuff is invalid
	so is global_live_at_*.

2000-07-31  Richard Henderson  <rth@cygnus.com>

	* tm.texi (Addressing Modes): Clarify PRE/POST_MODIFY descriptions.

2000-07-31  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (_cpp_get_line): If index is 0, return line 0 col 0.
	(_cpp_get_token): Don't macro expand a just pasted token if it
	was pasted at no_expand_level.

2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>

	* cppmacro.c (find_param, count_params, save_expansion):
	Permit 'defined' as a macro parameter name.

2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in: Rename cpp to cpp0, tradcpp to tradcpp0, and
	xcpp to cpp throughout.
	(native): Remove unnecessary dependency on cpp.

	* gcc.c (trad_capable_cpp, C specs): Rename cpp to cpp,
	tradcpp to tradcpp0.
	(.i spec): Add missing output-file spec to cc1 command line.
	* objc/lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.

2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>

	* c-decl.c (mesg_implicit_function_declaration): Init to -1.
	(implicit_decl_warning): New function.
	(implicitly_declare): Use it.
	* c-typeck.c (build_external_ref): Use implicit_decl_warning
	to complain about implicit decls of builtins.

	* c-lang.c (lang_init): Set mesg_implicit_function_declaration
	based on pedantic && flag_isoc99, if not already set.
	* c-tree.h: Declare mesg_implicit_function_declaration.
	Prototype implicit_decl_warning.

2000-07-30  Jeffrey D. Oldham  <oldham@codesourcery.com>

	* Makefile.in (ssa.o): Updated header files in dependences.
	* basic-block.h: Added compute_immediate_postdominators declaration.
	* config/i386/i386.h (CONVERT_HARD_REGISTER_TO_SSA_P): Added
	definition.
	* flow.c (compute_immediate_dominators): Updated comment.
	(compute_immediate_postdominators): Added definition.
	* rtl.h (HARD_REGISTER_P): Added definition.
	* ssa.c: Include additional header files.
	(assert): Added definition.
	(ssa_rename_to_lookup): Added to reimplement ssa_rename_to to
	include select hard registers.
	(ssa_rename_to_insert): Likewise.
	(ssa_rename_from_initialize): Likewise.
	(ssa_rename_from_lookup): Likewise.
	(original_register): Likewise.
	(ssa_rename_from_insert): Added to reimplement ssa_rename_from to
	include select hard reigsters.
	(ssa_rename_from_traverse): Likewise.
	(ssa_rename_from_free): Likewise.
	(ssa_rename_from_print): Likewise.
	(ssa_rename_from_print_1): Likewise.
	(ssa_rename_from_hash_function): Likewise.
	(ssa_rename_from_equal): Likewise.
	(ssa_rename_from_delete): Likewise.
	(simplify_to_immediate_dominators): Removed in favor of
	flow.c:compute_immediate_dominators.
	(find_evaluations_1): Modified to work with hard registers.
	(insert_phi_node): Likewise.
	(insert_phi_nodes): Likewise.
	(struct rename_set_data): Updated prev_reg comment.
	(create_delayed_rename): Modified to work with hard registers.
	(RENAME_NO_RTX): Updated comment.
	(apply_delayed_renames): Modified to work with hard registers.
	(rename_insn_1): Likewise and added handling of CLOBBER rtls.
	(rename_block): Updated to use revised ssa_rename_to interface.
	(rename_registers): Updated to use revised ssa_rename_to and
	ssa_rename_from interface.
	(convert_to_ssa): Revised to use compute_immediate_dominators and
	deal with hard registers.
	(make_regs_equivalent_over_bad_edges): Modified to work with hard
	registers.  Added check for illegal unification of hard register.
	(make_equivalent_phi_alternatives_equivalent): Modified to work
	with hard registers.
	(compute_conservative_reg_partition): Likewise.
	(coalesce_if_unconflicting): Modified to work with hard registers
	and check for conflicting hard registers.
	(mark_phi_and_copy_regs): Revised loop to work only on pseudo
	registers.
	(rename_equivalent_regs_in_insn): Modified to work with hard
	registers.
	(record_canonical_element_1): Added definition.
	(check_hard_regs_in_partition): Added definition.
	(convert_from_ssa): Added data structure deallocation and check
	for illegal hard register unification.
	(conflict_hard_regs_p): Added definition.
	* toplev.c (rest_of_compilation): Added comment.

2000-07-31  Anthony Green  <green@redhat.com>

	* config/ia64/crtbegin.asm (__EH_FRAME_BEGIN__): Align correctly.

2000-07-31  Jason McMullan  <jmcmullan@linuxcare.com>

	* builtins.c (expand_builtin_apply): Don't defer pop during
	argument setup.

2000-07-31 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* calls.c (combine_pending_stack_adjustment_and_call): Only use
	preferred_unit_stack_boundary when it is > 1.

2000-07-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (init_function_format_info): Add C99 format functions
	in C99 mode.

	* c-decl.c (get_parm_info): Don't treat 'const void', 'volatile
	void' or 'register void' as being the special case of 'void' alone
	in a parameter list.

	* c-typeck.c (build_c_cast): Change -Wcast-qual pedwarn for
	discarding qualifiers into a plain warning.

2000-07-31  Kazu Hirata  <kazu@hxi.com>

	* combine.c: Fix formatting.

	* h8300.md: Fix formatting.

	* local-alloc.c: Fix formatting.

	* h8300.c (get_shift_alg): Remove the variable alg.
	(emit_a_shift): Rearrange code to improve readability.

	* h8300.md (movsi_h8300hs): Rearrange code to improve readability.

	* h8300.h (MODES_TIEABLE_P): Accept a combination of QImode and
	HImode on all architectures and a combination of HImode and SImode
	on H8/300H and H8S.

	* h8300.c (split_adds_subs): Rearrange code for conciseness.

Mon Jul 31 12:27:55 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (addsi to lea splitter, ashlqi3_1_lea): Fix bugs
	in my last checkin.

Mon Jul 31 10:41:01 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* recog.c (extract_insn): Set operand_mode according to
	operand if match_operand is VOIDmode.

Mon Jul 31 10:36:38 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Do not abort for (nil) expression.

2000-07-31  Geoff Keating  <geoffk@cygnus.com>

	* c-parse.in (extdefs): Call ggc_collect between external
	definitions.

2000-07-30  Michael Hayes  <mhayes@cygnus.com>
	    Richard Henderson  <rth@cygnus.com>

	* Makefile.in (OBJS): Add doloop.o.
	* doloop.c: New file.

	* final.c (insn_current_reference_address): Return 0 before final.
	* flags.h (flag_branch_on_count_reg): Fix typos in commentary.
	* jump.c (any_uncondjump_p): Likewise.
	* loop.c (indirect_jump_in_function): Make static.
	(strength_reduce): Call doloop_optimize.
	(insert_bct, instrument_loop_bct): Remove.
	* loop.h (doloop_optimize): Prototype.
	* recog.c (split_all_insns): Split all INSN_P.
	* toplev.c (flag_branch_on_count_reg): Default on.

	* config/c4x/c4x.c (c4x_optimization_options): Don't set
	flag_branch_on_count_reg.
	* config/i386/i386.c (override_options): Likewise.
	* config/rs6000/rs6000.c (optimization_options): Likewise.

	* config/i386/i386.md (decrement_and_branch_on_count): Remove.
	(doloop_end): New.
	(dbra_ge): Remove, as well as all it's splitters.

	* config/rs6000/rs6000.md (decrement_and_branch_on_count): Remove.
	(doloop_end): New.

	* config/ia64/ia64-protos.h (ar_lc_reg_operand): Declare.
	(ia64_register_move_cost): Declare.
	* config/ia64/ia64.c (ar_lc_reg_operand): New.
	(struct ia64_frame_info): Add ar_size.
	(ia64_compute_frame_size): Set it.
	(save_restore_insns): Save and restore ar.lc.
	(ia64_register_move_cost): New, moved from header file.  Handle
	application registers.
	(REG_AR_PFS, REG_AR_EC): Remove.  Replace with AR_*_REGNUM numbers.
	(emit_insn_group_barriers): Special case doloop_end_internal.
	(ia64_epilogue_uses): Mark ar.lc live at end.
	* config/ia64/ia64.h (AR_CCV_REGNUM, AR_LC_REGNUM): New registers.
	(AR_EC_REGNUM, AR_PFS_REGNUM): New registers.
	(FIRST_PSEUDO_REGISTER): Make room.
	(AR_M_REGNO_P, AR_I_REGNO_P, AR_REGNO_P): New.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Update.
	(REG_ALLOC_ORDER): Update.
	(HARD_REGNO_MODE_OK): Update.
	(REGISTER_NAMES): Update.
	(enum reg_class): Add AR_M_REGS and AR_I_REGS.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update.
	(REGNO_REG_CLASS): Update.
	(LEGITIMATE_ADDRESS_DISP): Displacement range is 9 bits, not 10.
	(REGISTER_MOVE_COST): Move out of line.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md (movdi patterns): Handle ar register classes.
	(addsi3_plus1_alt, adddi3_plus1_alt): New.
	(shladd_elim splitter): Allow constants in the predicate.
	(doloop_end, doloop_end_internal): New.

2000-07-30  Richard Henderson  <rth@cygnus.com>

	* genattrtab.c (struct insn_def): Add lineno member.
	(struct insn_ent): Likewise.
	(struct attr_desc): Likewise.
	(struct delay_desc): Likewise.
	(struct function_unit_op): Likewise.
	(struct function_unit): Likewise.
	(check_attr_value): Use message_with_line.
	(check_defs): Likewise.
	(expand_units): Likewise.
	(check_attr_test): Take a lineno argument.
	(gen_attr): Likewise.
	(gen_insn): Likewise.
	(gen_delay): Likewise.
	(gen_unit): Likewise.
	(main): Give it to them.
	(convert_set_attr_alternative): Take an insn_def argument
	instead of num_alt and insn_index.
	(convert_set_attr): Likewise.
	(write_test_expr): Protect INSN_ADDRESSES load
	with INSN_ADDRESSES_SET_P.

2000-07-30  Richard Henderson  <rth@cygnus.com>

	* flow.c (init_propagate_block_info): Use pc_set.

Sun Jul 30 20:58:34 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (*lea_general_[123]) New insns and splits.
	(addsi3 to lea splitter): Handle other modes too.
	(shlsi3 to lea splitter): Likewise.
	(addhi_1_lea, shlhi_1_lea): New patterns.
	(addhi_1, shlhi_1): Conditionize by PARTIAL_REG_STALL.

Sun Jul 30 20:51:25 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* recog.c (general_operand, nonimmediate_operand): Accept
	any mode for VOIDmode CONSTANT_P operands.

Sun Jul 30 20:42:21 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* gcse.c (try_replace_reg): Use validate_replace_rtx_subexp
	instead of replace_rtx.
	* recog.c (validate_replace_rtx_subexp): New function.
	* recog.h (validate_replace_rtx_subexp): Declare.

Sun Jul 30 20:38:26 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* combine.c (simplify_set, make_extraction, make_compound_operation
	make_field_assignment): Use full mask instead of GET_MODE_MASK (mode)
	as force_to_mode argument.

Sun Jul 30 20:30:41 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* combine.c (if_then_else_cond): Be sure that mode fits in
	HOST_WIDE_INT.

Sun Jul 30 20:27:36 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* combine.c (record_promoted_value):  Allow bitsize of mode
	to be equivalent to HOST_BITS_PER_WISE_INT.

Sun Jul 30 20:25:21 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* function.c (assign_stack_local_1, assign_stack_temp_for_type):
	Do not call gen_mode_alignment when mode is BLKmode.

Sun Jul 30 20:21:54 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (express_from_1): Fix call of simplify_gen_binary.

Sun Jul 30 20:08:37 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_relational_operation): Verify that mode ==
	VOIDmode implies both operands to be VOIDmode.
	(simplify_ternary_operation): Compute properly the mode of comparison.
	* combine.c (combine_simplify_rtx): Likewise.

2000-07-25  Michael Hayes  <mph@paradise.net.nz>

	* basic-block.h (struct loops): New field rc_order.
	* flow.c (flow_loops_cfg_dump): Dump rc_order if computed.
	(flow_loops_free): Free rc_order.
	(flow_depth_first_order_compute): New parameter rc_order.
	(flow_loops_find): Allocate rc_order and swap usage with
	dfs_order.

2000-07-30 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
	   Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (set_ldp_prologue): Add for RTL prologue/epilogue.
	(push_st, push_dp, pop_st, pop_dp, popqi_unspec): Likewise.
	(nodb_call, return_from_epilogue): Likewise.
	(return_from_interrupt_epilogue, prologue, epilogue): Likewise.
	* config/c4x/c4x.c (c4x_expand_prologue, c4x_expand_eplilogue): Add.
	* config/c4x/c4x-protos.h (c4x_interrupt_function_p): Add.
	(c4x_expand_prologue, c4x_expand_epilogue): Likewise.
	(c4x_valid_type_attribute_p): Likewise.
	* config/c4x/c4x.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Delete.
	(FUNCTION_BLOCK_PROFILER_EXIT): Convert to emit RTL.

2000-07-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_emit_move_sequence): Use loadqi_big_constant
	and loadhi_big_constant if applicable.
	* config/c4x/c4x.md (loadqi_big_constant, loadhi_big_constant): Tweak
	and add new splitter.s

2000-07-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_rptb_insert): Make more robust.

2000-07-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (ASM_FORMAT_PRIVATE_NAME): Output $ in label.

2000-07-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (IS_XXX_REGNO): Rewrite to avoid unsigned warnings.

2000-07-30  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/libgcc.S (divqf3): Improve accuracy.

2000-07-27  Mark Mitchell  <mark@codesourcery.com>

	Put phi nodes after NOTE_INSN_BASIC_BLOCK.
	* rtl.h (NOTE_INSN_BASIC_BLOCK_P): New macro.
	* bb-reorder.c (get_next_bb_note): Use NOTE_INSN_BASIC_BLOCK_P.
	(get_prev_bb_note): Likewise.
	(remove_scope_notes): Likewise.
	* flow.c (commit_one_edge_insertion): Likewise.
	(merge_blocks_nomove): Likewise.
	(verify_flow_info): Likewise.
	* gcse.c (insert_insn_end_bb): Likewise.
	* reg-stack.c (emit_swap_insn): Likewise.
	* ssa.c (first_insn_after_basic_block_note): New function.
	(insert_phi_node): Use it.
	(rename_block): Likewise.
	(eliminate_phi): Likewise.
	(make_regs_equivalent_over_bad_edges): Likewise.
	(make_equivalent_phi_alternatives_equivalent): Likewise.
	(for_each_successor_phi): Likewise.
	(convert_from_ssa): Modify phi-node deletion algorithm.

2000-07-29  Andreas Jaeger  <aj@suse.de>

	* configure.in (mips*-*-linux*): Use mips*el to check for little
	endian MIPS, add tmake_file.

	* config/mips/linux.h (TARGET_VERSION): Use GNU/Linux.
	(SUBTARGET_CPP_SPEC): Default MIPS_ISA is 1.
	Patches by Maciej W. Rozycki <macro@ds2.pg.gda.pl>.

2000-07-28  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (ia64_print_operand): Fix typos.
	Sign extend mode size before negating.

2000-07-28  Richard Henderson  <rth@cygnus.com>

	* emit-rtl.c (gen_lowpart_common): Add missing 'c' variable.

2000-07-28  Bernd Schmidt  <bernds@cygnus.co.uk>

	* cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.
	(cse_insn): Likewise.
	(addr_affects_sp_p): Likewise.
	* expr.c (move_by_pieces): Likewise.
	(clear_by_pieces): Likewise.
	* gcse.c (oprs_unchanged_p): Likewise.
	* haifa-sched.c (sched_analyze_2): Likewise.
	* recog.c (offsettable_address_p): Likewise.
	* regclass.c (record_address_regs): Likewise.
	* reload.c (find_reusable_reload): Likewise.
	(push_reload): Likewise.
	(operands_match_p): Likewise.
	(decompose): Likewise.
	(find_reloads_address_1): Likewise.
	(find_inc_amount): Likewise.
	* reload1.c (elimination_effects): Likewise.
	* resource.c (mark_set_resources): Likewise.
	* flow.c (attempt_auto_inc): New function; mostly broken out
	of find_auto_inc.
	(find_auto_inc): Split into two functions and enhanced to
	generate POST_MODIFY.
	* rtl.def (PRE_MODIFY, POST_MODIFY): Adjust comment.
	* rtl.h (count_all_occurrences):  Declare.
	(HAVE_{PRE,POST}_MODIFY_{DISP,REG}): Provide default of 0 if not
	defined.
	* rtlanal.c (count_all_occurrences): New function.
	* tm.texi (HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_DISP,
	HAVE_POST_MODIFY_REG, HAVE_PRE_MODIFY_REG): Document.

	* config/ia64/ia64-protos.h (destination_operand): Declare.
	* config/ia64/ia64.c (destination_operand): New function.
	(ia64_print_operand): Handle POST_MODIFY.
	(rtx_needs_barrier): Likewise.
	* config/ia64/ia64.h (HAVE_POST_MODIFY_DISP): Define to 1.
	(HAVE_POST_MODIFY_REG): Define to 1.
	(MAX_REGS_PER_ADDRESS): Change to 2.
	(GO_IF_LEGITIMATE_ADDRESS): Accept POST_MODIFY too.
	(LEGITIMATE_ADDRESS_REG): New helper macro.
	(LEGITIMATE_ADDRESS_DISP): Likewise.
	(PREDICATE_CODES): Add entry for destination_operand.
	* config/ia64/ia64.md (all mov patterns): Use destination_operand
	predicate for operand 0.

2000-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2out.c: Indent #error directive.

	* gbl-ctors.h: Fix typo in comment.
	(__do_global_ctors): Prototype.

	* gcse.c (record_one_set, pre_delete): Remove unused variables.

	* rs6000.c (rs6000_maybe_dead): Delete unused prototype.
	(print_operand): Initialize variable `t'.

2000-07-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/arm/arm.md ("call_value"): removed constraints.
	Constraints are ignored in expanders.
	(*call_value_reg): split =rf into various constraints.
	(*call_value_mem): same
	(*call_value_symbol): same
	(*sibcall_value_insn): same

2000-07-28  Philipp Thomas  <pthomas@suse.de>

	* install.texi (--enable-nls): Change the description of the NLS
	related configure options to match the current state.
	(--with-included-gettext): Likewise.
	(--enable-maintainer-mode): New description added.
	* extend.texi (-fstrict-prototype): Add missing '.'.

2000-07-27  Jim Wilson  <wilson@cygnus.com>

	* dwarf2out.c (gen_decl_die): Don't call gen_abstract_function if
	DECL_INITIAL (decl) == NULL_TREE.

2000-07-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (INSN_ATTR_H): New macro.  Replace all dependencies
	on insn-attr.h with it.
	* genattr.c: Generate `#include "insn-addr.h"' if HAVE_ATTR_length.
	* insn-addr.h: New header.
	(insn_addresses_): Renamed from insn_addresses.
	(INSN_ADDRESSES_DEFN, INSN_ADDRESSES, INSN_ADDRESSES_ALLOC,
	INSN_ADDRESSES_FREE, INSN_ADDRESSES_SET_P, INSN_ADDRESSES_SIZE,
	INSN_ADDRESSES_NEW): New macros.
	* genattrtab.c (write_test_expr): Use new macros.
	* final.c (insn_addresses, init_insn_lengths): Likewise.
	(align_fuzz, shorten_branches): Likewise.
	(final): Likewise.  Do not reject new insns if their addresses
	have been added to INSN_ADDRESSES.
	* config/arm/arm.c, config/avr/avr.c: Use new macros.
	* config/h8300/h8300.c, config/i370/i370.c: Likewise.
	* config/m88k/m88k.c, config/pa/pa.c, config/pa/pa.md: Likewise.
	* config/sparc/sparc.c, config/sparc/sparc.md: Likewise.
	* config/sh/sh.c: Likewise.
	(output_branchy_insn): Use INSN_ADDRESSES_NEW.

	* Makefile.in (bootstrap): Move -BstageN/ back to the beginning.

2000-07-27  Andrew Cagney  <cagney@b1.cygnus.com>

	* gcc.c (struct prefix_list): Add member priority.
	(enum path_prefix_priority): Declare.
	(add_prefix): Replace ``first'' with ``priority''.  Append new
	entry but keep list in priority order.
	(process_command): Update.  Pass PREFIX_PRIORITY_B_OPT or
	PREFIX_PRIORITY_LAST to add_prefix.
	(process_command): Move include kludge - foo/stageN - to before
	foo/include.

2000-07-27  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (gen_typedef_die): Abort if we get identical
	TREE_TYPE and DECL_ORIGINAL_TYPE on a typedef.

2000-07-27  RodneyBrown  <RodneyBrown@pmsc.com>

	* expr.h (get_alias_set, lang_get_alias_set): Delete prototypes.
	* tree.h (get_alias_set, lang_get_alias_set): Prototype.

2000-07-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (finish_function): Don't treat 'main' specially unless
	flag_hosted.  In C99 mode, return 0 from 'main' unless
	DEFAULT_MAIN_RETURN is otherwise defined.

	* c-decl.c (store_parm_decls): In C99 mode, pedwarn for function
	parameters defaulting to int in an old-style function definition.

2000-07-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-parse.in (string): For -Wtraditional, warn about string
	concatenation only once per line.

Thu Jul 27 09:25:17 2000  Akiko Matsushita  <matusita@sra.co.jp>

	* pa/x-pa-hpux: Add -D_HIUX_SOURCE to FIXPROTO_DEFINES
	for HI-UX/WE2 systems.

2000-07-24  Bruce Korb  <bkorb@gnu.org>

	* fixincl/fixfixes.c(emit_gnu_type): rewrote to *rely* on GCC
	defining the __xxx_TYPE__ macros.
	* fixincl/fixincl.tpl(gnu_type_map): now obsolete
	* fixincl/fixlib.h: don't need to include "tm.h" anymore
	* fixincl/inclhack.def(type_map): now obsolete

Thu Jul 27 11:54:17 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* cpp.texi: Append a trailing full-stop to xrefs where needed.

2000-07-26  Dave Pitts  <dpitts@cozx.com>

	* i370.c: Remove LONGEXTERNAL ifdef from alias_number. Added hash
	routine constants.
	(mvs_hash_alias): New function.
	(mvs_add_alias): Change argument spacing.
	(mvs_need_alias): Change aliasing criteria. Added documentation.
	(mvs_get_alias): Change to use hashed name. The hashed name prevents
	CSECT name collisions.
	(mvs_check_alias): Likewise.
	(handle_pragma): Change documentation.
	* i370.md (mulsi3, divsi3, udivsi3, modsi3, umodsi3): Changed gen_rtx
	mode from SImode to DImode.
	(iorhi3): Changed LTORG size for insn.

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.

2000-07-26  Kazu Hirata  <kazu@hxi.com>

	* h8300.c (print_operand): Print ":8" when the 'R' operand is
	suitable for 8-bit absolute.
	* h8300.h (EIGHTBIT_CONSTANT_ADDRESS_P): New.
	(OK_FOR_U): Add a case for the 8-bit constant address on the
	H8/300H.

Wed Jul 26 19:26:21 2000  Hans-Peter Nilsson  <hp@axis.com>

	* varasm.c (assemble_variable) [! defined(ASM_OUTPUT_ALIGNED_COMMON)
	&& ! defined (ASM_OUTPUT_ALIGNED_BSS]): Also test
	! defined(ASM_OUTPUT_ALIGNED_DECL_COMMON) before complaining about
	lack of implemented alignment.

2000-07-26  Geoffrey Keating  <geoffk@cygnus.com>

	* emit-rtl.c (gen_lowpart_common) [REAL_ARITHMETIC]: Handle
	cross-compiling between 64-bit and 32-bit machines.

2000-07-27  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (movqicc_astep, movqi_internal_astep): New.
	(movhicc_astep, movhi_internal_astep): New.
	(movsicc_astep, movsi_internal_astep): New.
	(movdicc_astep, movdi_internal_astep): New.
	(movsfcc_astep, movsf_internal_astep): New.
	(movdfcc_astep, movdf_internal_astep): New.
	(movxfcc_astep, movxf_internal_astep): New.
	(cmovdi_internal_astep, cmovsi_internal_astep): New.
	Unify the cmov[ds]i splitters.

2000-07-27  Rodney Brown  <RodneyBrown@pmsc.com>

	* real.c (asctoeg): Rename `error' label to unexpected_char_error

2000-07-26  Nick Clifton  <nickc@cygnus.com>

	* config/arm/vxarm.h (CPP_PREDEFINES): Remove definition of
	__arm__.  Allow it to be defined by CPP_ISA_SPEC in arm.h

	* dwarf2out.c (dwarf2out_frame_debug_expr): Accept SEQUENCE as
	well as PARALLEL blocks in FRAME_RELATED_EXPR notes.

2000-07-26  Alexandre Oliva  <aoliva@redhat.com>

	* c-decl.c (finish_enum): Convert enumerations that fit in an
	`int' to `int'.
	(build_enumerator): In pedantic mode, cast to `int' those that
	don't.

2000-07-25  Rodney Brown  <RodneyBrown@pmsc.com>

	* config/alpha/osf.h (SIZE_TYPE, PTRDIFF_TYPE): New.

Tue Jul 25 23:08:33 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.md (cmpgtdi_t): Must be split.
	(cmpgtdi_t+1): New splitter.

2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (_cpp_check_directive): Issue -Wtraditional
	warnings for indented directives even if we are skipping.

2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>

	* invoke.texi (strict-prototypes): Remove.
	* extend.texi (Deprecated Features): Add strict-prototypes.
	(Backwards Compatibility): New node.

2000-07-25  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (andsi_1+1): Allow HImode.
	(andsi_1+2): Require q_regs_operand.

2000-07-25  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (call_pop): Check operands[0],
	not operands[1]. Only check SYMBOL_REF_FLAG for a SYMBOL_REF.
	(call): Likewise.
	(call_value_pop): Only check SYMBOL_REF_FLAG for a SYMBOL_REF.
	(call_value): Likewise.

2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>

	* toplev.c (pipe_closed): Delete.
	(crash_signal): New.  Generate ICE for a fatal signal.
	(float_signal): Call crash_signal outside a float-handler
	block, not abort.
	(main): Install crash_signal as handler for core-dumping signals.

2000-07-25  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (print_operand, case 'T'): New case.

	* rs6000.md (call_indirect_aix32): Convert to expander of
	scheduled instructions.
	(call_indirect_aix64): Likewise.
	(call_value_indirect_aix{32,64}): Likewise.
	(call, call_value): Invoke expanders for AIX.  Fall through to
	matchers for SysV.
	(call_indirect_nonlocal_aix{32,64}): New patterns (ctr and lr).
	(call_value_indirect_nonlocal_aix{32,64}): New patterns.
	(call_nonlocal_aix32): Remove CALL_LONG alternative.  Operand 1
	only "g" constraint.
	(call_nonlocal_aix64): Likewise.
	(call_value_nonlocal_aix{32,64}): Likewise.
	(call_nonlocal_sysv): New pattern for ctr, lr, and symbolic
	operands.
	(call_value_nonlocal_sysv): New pattern.
	(indirect_jump{si,di}): Use new 'T' modifier.
	(tablejump{si,di} matchers): Likewise.
	(return_internal_{si,di}): Likewise.
	(return_eh_{si,di}): Likewise.

2000-07-24  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (ia64_print_operand): Handle "%,".
	* config/ia64/ia64.h (PRINT_OPERAND_PUNCT_VALID_P): Likewise.
	* config/ia64/ia64.md (movdi_internal): Use it.

2000-07-24  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c: Warn about unary + if -Wtraditional.
	* cpplex.c (lex_line): Always set BOL on the first token of a line.

2000-07-24  Michael Meissner  <meissner@redhat.com>

	* d30v.h (FUNCTION_ARG_KEEP_AS_REFERENCE): Delete references to
	unsupported macro.

2000-07-24  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (emit_multi_reg_push): Generate a
	REG_FRAME_RELEATED_NOTE that is compatible with the code in
	dwarf2out_debug_frame_expr.

2000-07-24  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c: Complain if DWARF2_DEBUGGING_INFO is defined without
	UNALIGNED_INT_ASM_OP.
	(def_cfa_1): Don't emit def_cfa_register or def_cfa_offset to adjust
	a location expression.
	(dwarf2out_frame_debug_expr): Lose cfa_old_reg stuff.  Don't
	assume indirect access if we're saving the CFA address exactly.

	* Makefile.in (bootstrap): Move -BstageN/ to the end.

2000-07-24  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (main): Update max_include_len for cpp_include_defaults
	as well.

2000-07-24  Michael Meissner  <meissner@redhat.com>

	* invoke.texi (D30V Options): Add d30v options.

Mon Jul 24 02:04:52 2000  Jeffrey A Law  (law@cygnus.com)

	* gcse.c (alloc_pre_mem): Do not alloc TRANSPOUT, it is not
	needed by our gcse pass anymore.
	(free_pre_mem): Corresponding changes.
	(compute_pre_data): Do not call compute_transpout anymore.

	* gcse.c (alloc_avail_expr_mem): Kill unused 'u_bitmap'.
	(free_avail_expr_mem, alloc_pre_mem, free_pre_mem): Corresponding
	changes.

	* gcse.c (free_pre_mem): Do not free ANTLOC and AE_KILL here.
	(compute_pre_data): Do it here instead.

	* gcse.c (alloc_pre_mem, free_pre_mem): Delete unused bitmap
	'temp_bitmap'.
	(pre_delete): Corresponding changes.

2000-07-23  Mark Mitchell  <mark@codesourcery.com>

	* c-semantics.c (make_rtl_for_local_static): Use TREE_ASM_WRITTEN
	to figure out whether or not a variable has already been emitted.

Sun Jul 23 14:49:12 2000  Jason Eckhardt  <jle@cygnus.com>

	* config/i860/i860.md (untyped_call expander): Use GEN_CALL
	instead of gen_call.

Sun Jul 23 11:52:03 2000  George Helffrich (george@gly.bris.ac.uk)

	* dbxout.c (dbxout_type, case COMPLEX_TYPE): Fix length field in stab.

2000-07-23  Kazu Hirata  <kazu@hxi.com>

	* h8300.c: Fix formatting.

2000-07-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (c_expand_start_case): Change -Wtraditional pedwarn
	for `long' switch expression into a plain warning.

	* c-lex.c (init_lex): Keep the "inline" keyword in C99 mode.
	(yylex): Don't pedwarn for "inline" in C99 mode.

	* bitmap.c (debug_bitmap_file): Cast pointers to PTR for printing
	with %p.
	* ggc-page.c (debug_print_page_list, alloc_page, free_page,
	ggc_alloc): Likewise.
	* bb-reorder.c (dump_scope_forest_1): Likewise.

2000-07-22  Aldy Hernandez  <aldyh@redhat.com>

	* reload.c (find_reloads_toplev): Add new parameter
	"address_reloaded".
	(find_reloads): Add new parameter to find_reloads_toplev calls.

2000-07-22  Jeffrey Oldham  <oldham@codesourcery.com>

	* collect2.c (main): Typo fixed.
	* diagnostic.c: Typo fixed.
	* dwarf2out.c (dwarf2out_frame_debug_expr): Typo fixed.
	* eh-common.h: Typo fixed.
	* emit-rtl.c (start_sequence): Typo fixed.
	* flow.c (find_label_refs): Typo fixed.
	(calculate_global_regs_live): Typo fixed.
	(mark_regno_cond_dead): Typo fixed.
	(create_edge_list): Typos fixed.
	(verify_edge_list): Typo fixed.
	* ggc-common.c (ggc_mark_rtx_children): Typo fixed.
	* loop.c (strength_reduce): Typo in function name fixed.
	* rtl.h: Added comments.  Typo in function name fixed.
	* rtlanal.c: Typo in function name fixed.
	(insn_dependant_p): Rename to ...
	(insn_dependent_p): ... this.
	(computed_jumo_p): Typo fixed.

2000-07-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (__FUNCTION__): Wrap definition in #ifndef.

2000-07-21  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.h (SIZE_TYPE): Define.

2000-07-21  Mark Mitchell  <mark@codesourcery.com>

	* ssa.c (rename_insn_1): Don't rename registers that are
	CLOBBERed.

2000-07-21  Zack Weinberg  <zack@wolery.cumb.org>

	* diagnostic.c (trim_filename, fancy_abort): Moved here from
	rtl.c.
	(fatal_function, set_fatal_function): Removed.
	(fatal): Don't prepare for or call the fatal_function.
	(diagnostic_lock, error_recursion): New.
	(diagnostic_for_decl, report_diagnostic): Guard against
	re-entering the error reporting routines.
	(fancy_abort): Assume function is not NULL.

	* errors.c (fancy_abort): New.  Assume function is not NULL.
	* tradcpp.c (fancy_abort): Assume function is not NULL.

	* system.h: Provide default definition of __FUNCTION__.
	* rtl.h: Use __FUNCTION__ not __PRETTY_FUNCTION__ throughout.
	Always use __FUNCTION__ in definition of abort.
	* tree.h: Likewise.
	* varray.h: Likewise.
	* toplev.h: Likewise.  Don't prototype set_fatal_function.

2000-07-20  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/aix43.h (CPP_SPEC): Define __LONG_MAX__ correctly
	in 64-bit mode.
	* glimits.h: Don't do #if defined for ARCH_PPC.

	* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): All
	constants of size no larger than a pointer should go in the TOC.
	Add 'MODE' parameter.
	(LEGITIMIZE_RELOAD_ADDRESS): Add MODE parameter to
	ASM_OUTPUT_SPECIAL_POOL_ENTRY_P.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY): Likewise.
	* config/rs6000/aix.h (SELECT_RTX_SECTION): Likewise.
	* config/rs6000/netware.h (SELECT_RTX_SECTION): Likewise.
	* config/rs6000/rs6000.c (constant_pool_expr_1): Likewise.
	(rs6000_legitimize_address): Likewise.
	(rs6000_emit_move): Likewise.
	(rs6000_select_rtx_section): Likewise.
	(output_toc): Deal properly with outputting small constants like
	HImode, and SFmode in 32-bit mode, and DFmode in 64-bit mode.
	* config/rs6000/sysv4.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Add
	MODE parameter.  Put small constants in the TOC.

	* config/rs6000/rs6000.c (easy_fp_constant_p): All constants are
	easy in SImode.
	(rs6000_emit_move): When reload calls us with an illegitimate
	address, exit early.  Move the change_address calls to one place
	at the end of the routine.  Merge the SImode and DImode expanders.
	When called by reload to put an integer into a FP register, force
	it to memory.

	* config/rs6000/rs6000.c (struct toc_hash_struct): Add 'key_mode'
	field.
	(rs6000_hash_constant): Hash mode too.
	(toc_hash_function): Allow for key_mode.
	(toc_hash_eq): Structures are different if key_mode differs.
	(output_toc): Add 'mode' parameter.  Save key_mode.
	* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY):
	Pass 'mode' parameter.
	* config/rs6000/rs6000-protos.h (output_toc): Add 'mode' param.

	* config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
	for vtable references.

	* config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): If we have a
	choice, don't put integer values in FP regs.

Thu Jul 20 18:13:52 2000  Jeffrey A Law  (law@cygnus.com)

	* flow.c (verify_flow_info): Revamp code to verify that the
	head and end of each basic block are in the insn chain.

Thu Jul 20 18:02:35 2000  Michael Matz <matzmich@cs.tu-berlin.de>

	* gcse.c (record_one_set): Prepend instead of append onto
	reg_set_table, making it O(n) instead O(n^2).
	* lcm.c (compute_antinout_edge,compute_laterin,compute_available):
	Use a queue instead of a stack as worklist.

2000-07-20  Kazu Hirata  <kazu@hxi.com>

	* h8300.c (two_insn_adds_subs_operand): Fix a typo.
	* h8300.h (OK_FOR_T): New.
	(EXTRA_CONSTRAINT): Support OK_FOR_T.
	* h8300.md: Use inc/dec.[wl] for increment/decrement
	by 1 and 2 in HI and SI modes.

2000-07-20  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (ASM_OUTPUT_MI_THUNK): Handle DELTA values
	larger than 14 bits.

2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>

	* cppmacro.c (CAN_PASTE_AFTER): New macro.
	(count_params): Don't set GNU_REST_ARGS on anything.
	(save_expansion): Set PASTE_LEFT only on tokens for which
	CAN_PASTE_AFTER is true, or which are named operators.

	* cpplex.c (parse_args): Distinguish between a rest argument
	given one empty argument, and a rest argument given zero arguments.
	(maybe_paste_with_next): Look for VOID_REST tag, and trigger
	deletion of previous token based on that.
	(get_raw_token): Flatten some control structure.

	* cpplib.h (CPP_LAST_EQ): Correct.
	(VOID_REST): New token flag.
	(GNU_REST_ARGS): Delete.

	* tradcpp.c (main): Don't munge -D options.
	(make_definition): Bring -D handling in line with cpplib.
	(do_define): Strip all leading whitespace from macro definitions.

2000-07-20  David Billinghurst <David.Billinghurst@riotinto.com.au>

	* Makefile.in (tradcpp): Depend on intl.o and version.o.

2000-07-20  Bruce Korb  <bkorb@gnu.org>

	* fixincl/check.tpl: strip the platform specific types before testing
	* fixincl/fixfixes.c(gnu_type_fix): use platform specific types
	* fixincl/fixincl.tpl: use platform specific types
	* fixincl/fixlib.h: include the platform specific types
	* fixincl/inclhack.def(gnu_types): don't supply the types
	* fixincl/fixincl.x: regen

2000-07-19  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (HARD_REGNO_MODE_OK): Don't allow XFmode in
	GR_REGS.

2000-07-19  Zack Weinberg  <zack@wolery.cumb.org>

	* tradcpp.c (rescan): Do not recognize directives when the #
	is indented.

2000-07-19  Zack Weinberg  <zack@wolery.cumb.org>

	Implement C++ named operators.

	* cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block
	of operators allowed in #if and having an _EQ variant.  Add
	CPP_MIN_EQ, CPP_MAX_EQ, and CPP_DEFINED.
	(cpp_token flags): Add NAMED_OP.
	(enum node_type): Add T_OPERATOR.
	(struct cpp_hashnode): Add code slot to value union.
	* cpphash.h (spec_nodes): Remove n_defined.

	* cpplex.c (lex_line): Convert T_OPERATOR nodes to their proper types.
	(spell_token, can_paste, maybe_paste_with_next): Handle named operators.
	(is_macro_disabled): Tweak error messages.

	* cpplib.c (get_define_node): Disallow all named operators as
	macro names.  Tweak error messages.
	(_cpp_init_stacks): Don't set up spec_nodes->n_defined.

	* cppinit.c (builtin_array): Add entries for the named operators.
	* cppexp.c (lex): Check for CPP_DEFINED token.
	(priority table): Add entries for CPP_MIN and CPP_MAX.
	(_cpp_parse_expr): Handle CPP_MIN and CPP_MAX.

2000-07-19  Bernd Schmidt  <bernds@cygnus.co.uk>

	* gcse.c (INSN_CUID): If ENABLE_CHECKING, abort if the uid is
	larger than the array of cuids.
	(alloc_gcse_mem): Use uid_cuid rather than INSN_CUID when computing
	cuids.

2000-07-19  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixincl.c:  Convert to using a table of environment variables
	and activate the auto-edit marker on the fixed output files.
	* fixinc/fixlib.h:  Define the environment table
	* fixinc/fixincl.sh: export the ${INPUT} dir
	* fixinc/check.tpl: likewise

2000-07-18  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.c (.h spec): Fix typo.

Wed Jul 19 01:22:15 CEST 2000  Marc Espie  <espie@cvs.openbsd.org>

	* Makefile.in: Fix tradcif.c path.

2000-07-18  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (TTYPE_TABLE): Rearrange to use only two per-entry
	  macros, not five.

	* cpphash.h (TOKEN_NAME): New macro.
	(_cpp_spell_operator): Deleted.
	(token_spellings): Now _cpp_token_spellings.

	* cppexp.c: Use TOKEN_NAME or TYPE_NAME, not _cpp_spell_operator.
	* cpplex.c: Use OP and TK macros when expanding the
	TTYPE_TABLE.  Eliminate token_names.  For non-OPERATOR tokens,
	store the stringification of the enumeration name (CPP_CHAR,
	etc.) in the name slot of token_spellings.
	Use TOKEN_NAME and/or TOKEN_SPELL, do not reference
	token_spellings directly.
	* cpplib.c: Use TOKEN_SPELL.

	* cpplex.c (_cpp_push_token): If the token being pushed back
	is the previous token in this context, just subtract one from
	context->posn.
	* cppmacro.c (save_expansion): Clear aux field when storing a
	placemarker.

2000-07-18  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (cpp_scan_buffer): Output line command even at the stop
	buffer, provided it is not NULL.

2000-07-18  Alexandre Oliva  <aoliva@redhat.com>

	* c-decl.c (duplicate_decls): Do not call make_var_volatile() in
	case of invalid volatile re-declaration.

2000-07-18  Jakub Jelinek  <jakub@redhat.com>

	* calls.c (store_arg): Return nonzero if sibcall_failure is desired.
	(expand_call): Adjust caller.

2000-07-17  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (report_diagnostic): Change prototype.

	* diagnostic.c (output_do_verbatim, diagnostic_for_asm,
	diagnostic_for_decl):  Change prototype.
	(error_with_decl, warning_with_decl, pedwarn_with_decl, warning,
	error, warning, error_with_file_and_line,
	warning_with_file_and_line, pedwarn_with_file_and_line, fatal):
	Adjust call to report_diagnostic, diagnostic_for_decl.
	(error_for_asm, warning_for_asm): Adjust call to diagnostic_for_asm.
	(output_verbatim, verbatim): Adjust call to output_do_verbatim.

	* c-errors.c (pedwarn_c99): Adjust call to report_diagnostic. End
	varaible argument list.

2000-07-17  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c: Don't include hashtab.h.  Most macro-handling code
	moved to cppmacro.c.
	(hash_HASHNODE, eq_HASHNODE, _cpp_dump_macro_hash,
	dump_hash_helper): Delete.
	(expand_hash, higher_prime_number, _cpp_lookup_with_hash,
	cpp_forall_identifiers): New. Implement specialized version of
	Vlad's expandable hash table.
	(cpp_lookup): Use new functions.
	(_cpp_init_macros, _cpp_cleanup_macros): Adjust for new
	implementation.
	* cppmacro.c: New file.
	* cppinit.c (dump_macros_helper): New.
	(cpp_finish): Iterate over the identifier table directly.
	* cpplex.c (parse_name): Calculate the hash of the identifier
	while we scan it.  Use _cpp_lookup_with_hash when we can.

	* cpphash.h: Update prototypes.
	(xcnewvec, HASHSTEP): New helper macros.
	* cpplib.h: Update prototypes.
	* Makefile.in (LIBCPP_OBJS): Add cppmacro.o.
	(cppmacro.o): New rule.
	(cpphash.o): Update deps.

	* cppmain.c: Do not set pfile->printer if no_output is on.

2000-07-15  Neil Booth  <neilb@earthling.net>

	* cpplib.c: Change all directive-handler functions to return
	void, not int.
	* cpphash.h: Update typedefs.

2000-07-17  Geoffrey Keating  <geoffk@cygnus.com>

	* configure: Regenerate.

	* extend.texi (Extended Asm): Mention that a memory clobber
	does not count as a side-effect.

	* unroll.c (copy_loop_body): Fix one instance of using host
	arithmetic on the target; fixes loop-4 on a 32-bit -> 64-bit
	cross-compile.

	* tlink.c (scan_linker_output): Tweak for output of AIX ld.

2000-07-17  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (movdi): Split out load address code.
	New post-reload splitter for symbolic operands.
	(movdi_internal): Abort if we didn't split symbolic operands
	when we should have.
	* config/ia64/ia64.c (ia64_expand_load_address): New, from movdi bits.
	(ia64_reorg): Split insns when not optimizing.
	* config/ia64/ia64-protos.h (ia64_expand_load_address): Declare.

Mon Jul 17 23:43:26 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use LONG_DOUBLE_TYPE_SIZE
	instead of MAX_LONG_DOUBLE_TYPE_SIZE to decide output format.

2000-07-17  Chandrakala Chavva   <cchavva@cygnus.com>

	* loop.c (check_dbra_loop) : Changed loop_continue to loop->cont.

2000-07-17  Jason Merrill  <jason@redhat.com>

	* Makefile.in (clean): Remove libgcc directory.

	* configure.in (-Wno-long-long check): Use higher-level macros.

2000-07-17  Zack Weinberg  <zack@wolery.cumb.org>

	* simplify-rtx.c (simplify_binary_operation): Recognize
	   (compare (gt[u] (cc) 0) (lt[u] (cc) 0)).
	(simplify_ternary_operation):  Do not examine MODE_BITSIZE of
	   a CONST_INT, it will always be zero.

2000-07-17  Chandrakala Chavva   <cchavva@cygnus.com>

	* loop.c (check_dbra_loop) : Return if more than one condition is
	present to control the loop.

Mon Jul 17 08:26:35 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* mips.c (mips_expand_prologue): Don't calculate the last argument
	register unless we need it.  When we are calculating this, make
	sure FUNCTION_ARG is giving us a REG.

2000-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* flow.c (libcall_dead_p): Use single_set to verify the insn
	has only one set and get for analysis.
	(propagate_one_insn): Don't pass the PATTERN of the insn.

2000-07-17  Mark Klein <mklein@dis.com>

	 * pa.c (emit_hpdiv_const): Update to match new pattern for udivsi3.

2000-07-17  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* Makefile.in (TARGET_GETGROUPS_T): New configuration variable.
	* configure.in (TARGET_GETGROUPS_T): Evaluate.
	* sys-protos.h (getgroups): Use TARGET_GETGROUPS_T for array type
	of second argument of getgroups.
	* configure, config.in: Rebuilt.

2000-07-17  Geoffrey Keating  <geoffk@cygnus.com>

	* simplify-rtx.c (simplify_relational_operation): Two signed
	values with equal high words are less/greater than each other if
	their low words are less/greater when considered as unsigned.

Mon Jul 17 02:37:06 2000  Marc Espie <espie@openbsd.org>

	* configure.in (vax-*-openbsd):  Change to new style configuration,
	add collect2/float_format information.
	* configure:  Rebuilt.
	* config/vax/openbsd1.h:  New.
	* config/vax/openbsd.h:  New.
	* config/vax/t-openbsd:  New.

2000-07-17  Chip Salzenberg  <chip@valinux.com>

	* c-common.c (shorten_compare): Quiet warnings about unsigned
	comparisons with zero when they occur in a system header.

2000-07-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi (-pedantic): Refer to ISO C instead of ANSI C, and
	update to describe current practice.

	* glimits.h (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Define for C99.

	* contrib.texi, cpp.texi, extend.texi, invoke.texi: Update
	references to C9X.  Change references to -fstd and -flang-isoc9x
	to refer to -std.

	* c-common.c (scan_char_table): Allow "z" length modifiers on
	diouxXn formats.
	(check_format_info): Use TYPE_DOMAIN on the type matched against
	for "z" formats, to retrieve the language size_t rather than the
	internal one.

	* c-common.c (check_format_info): Do not make a pedantic objection
	to the 'L' length modifier if used with a floating point type
	character.

	* c-lex.c (yylex): Don't pedwarn for hexadecimal floating point
	constants in C99 mode.

2000-07-17  Kazu Hirata  <kazu@hxi.com>

	* h8300.md: Fix the format of mac.
	(movsi_h8300hs): Output a tab after stmac instead of a space.

	* h8300.c (two_insn_adds_subs_operand): Improve code for detecting
	profitable adds/subs sequences.

	* fold-const.c: Fix comment typos.

2000-07-16  Laurynas Biveinis  <lauras@softhome.net>

	* cppfiles.c (read_name_map): Set map_list_ptr->map_list_map to NULL.

2000-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/fixfixes.c (emit_gnu_type): Avoid string concatenation.

2000-07-16  Neil Booth  <NeilB@earthling.net>

	* cpplex.c: Update comments.
	* README.Portability: Small update.

2000-07-16  Neil Booth  <NeilB@earthling.net>

	* README.Portability:  Small update.

2000-07-15  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h (ia64_move_ok): Prototype.
	* config/ia64/ia64.c (ia64_move_ok): New function.
	* config/ia64/ia64.md (movqi, movqi_internal): Use it.
	(movhi, movsi, movdi, movsf, movdf, movxf): Likewise.

2000-07-15  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (save_expansion): Clear PREV_WHITE on tokens
	immediately following a paste operator.
	* cppinit.c (sort_options): New function (only for HOST_EBCDIC).
	(cpp_reader_init): Call it, if HOST_EBCDIC.
	(cpp_handle_options): Do not sort option list here.
	(handle_option): Rename to cpp_handle_option and export.
	* cpplex.c (cpp_scan_buffer_nooutput, cpp_scan_buffer): Use
	_cpp_get_token directly.
	(cpp_scan_line): Return 0 at EOF, 1 otherwise.
	* cpplib.c (cpp_push_buffer): Don't set new->lineno to 1.
	* cpplib.h: Prototype cpp_handle_option.  Update prototype of
	cpp_scan_line.

2000-07-15  Richard Henderson  <rth@cygnus.com>

	* fold-const.c (extract_muldiv): Don't optimize past an unsigned
	cast around an expression.  Tidy other unsigned tests.

2000-07-15  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (doing_line_wrapping, line_wrapper_printf, notice,
	v_error_with_decl, v_warning_with_decl, v_pedwarn_with_decl): Remove.
	(v_message_with_decl): Rename to ...
	(format_with_decl): ... this. Tweak
	(diagnostic_for_decl): New function.
	(fatal_io_error): Use verbatim in lieu of notice.
	(announce_function): Use verbatim.
	(default_print_error_function): Likewise.
	(error_with_decl, warning_with_decl, pedwarn_with_decl): Use new
	infratructure.

2000-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.c (function_arg_pass_by_reference): Don't do automatic
	aggregate initialization.
	(machine_dependent_reorg): Initialize variable `mode'.

	* mips.md (absdi2): Change variable `regno1' to unsigned int.
	(reload_indi): Rename loword/hiword to lo_word/hi_word to avoid
	conflicts with sys/param.h macro of the same name.
	(reload_outdi): Likewise.

2000-07-15  Michael Meissner  <meissner@redhat.com>

	* fold-const.c (fold): When optimizing FOO++ == CONST into ++FOO
	== CONST + INCREMENT, don't overwrite the tree node for FOO++,
	create a new node instead.

2000-07-15  Neil Booth  <NeilB@earthling.net>

	* README.Portability: Correct example about calling a function
	through a pointer to function.  Format wide paragraphs.

2000-07-15  Michael Meissner  <meissner@redhat.com>

	* README.Portability: Update integer suffixes and function
	prototype sections.

2000-07-15  Neil Booth  <NeilB@earthling.net>

	* README.Portability: Small update.

2000-07-15  Neil Booth  <NeilB@earthling.net>

	* README.Portability: New file.

Fri Jul 14 18:13:53 2000  Mark P Mitchell  <mark@codesourcery.com>

	* INSTALL: Give special instructions for building GCC on Irix 6.
	* config/mips/x-iris6 (CC): Don't set it.
	(OLDCC): Likewise.

2000-07-14  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (dwarf2out_frame_debug_expr): If we store the CFA
	register in the stack and later in another register, use the new
	register.

Fri Jul 14 10:25:53 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.md: (absdi2): Handle sign_extend for
	second operand.

2000-07-14  Nathan Sidwell  <nathan@codesourcery.com>

	* cpplib.c (do_pragma_dependency): Tidy warning messages.

2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>

	* .cvsignore: Correct typo.

2000-07-13  Mark Mitchell  <mark@codesourcery.com>

	* .cvsignore: Add generated YACC files.
	* objc/.cvsignore: New file.

2000-07-14  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (adjust_column): New function.
	(skip_whitespace): Use it.
	(skip_block_comment): Use it, and warn about /*/* with
	-Wcomments.

2000-07-14  Neil Booth  <NeilB@earthling.net>

	* cpphash.c (struct macro_info): Add new members.
	(_cpp_free_definition): Delete the macro directly.
	(count_params): Return void, with first token of
	expansion in struct macro_info on success.
	(parse_define): Return int.  Hoist syntax checking from
	save_macro_expansion.  Leave call to save_expansion to
	_cpp_create_definition.
	(alloc_macro): Needs just 2 arguments.
	(free_macro): Delete.
	(save_expansion): Don't perform syntax check.
	(_cpp_create_definition): Call save_expansion.

2000-07-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genrecog.c (write_header): Split long string.

	* cpphash.c (macro_info): Don't use the `signed' keyword.

	* system.h (alloca): Prototype if __GNUC__ && __SIZE_TYPE__.

2000-07-13  Jakub Jelinek  <jakub@redhat.com>

	* calls.c (stored_args_map): New variable.
	(check_sibcall_argument_overlap_1): New.
	(check_sibcall_argument_overlap): New.
	(expand_call): Initialize stored_args_map.
	Call check_sibcall_argument_overlap.

2000-07-13  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c: move EXIT_BROKEN to header, add sub-expr max count
	(emit_gnu_type): utility procedure for gnu_type_fix
	(gnu_type_fix): implement various pre-processor guards around
	standard types so these types can be defined over and over
	* fixinc/fixincl.tpl: add a "gnu_type_map" that forces the standard
	types alluded to above will have GNU-compliant base types
	* fixinc/fixlib.h: add EXIT_BROKEN define and the gnu_type_map struct
	* fixinc/inclhack.def: add test_text entries and utilize the new
	"gnu_types" fix for the ptrdiff_t, size_t and wchar_t types.
	* fixinc/fixincl.x: regenerate

2000-07-12  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (vline_wrapper_message_with_location,
	v_message_with_file_and_line, v_error_with_file_and_file,
	v_error_for_asm, v_warning_for_asm, vfatal,
	v_warning_with_file_and_line, v_pedwarn_with_file_and_line,
	vsorry, verror, vwarning, vpedwarn): Remove.
	(diagnostic_for_asm): New function.
	(pedwarn, error, warning, pedwarn_with_file_and_line,
	error_with_file_and_line, warning_with_file_and_line, sorry,
	error_for_asm, warning_for_asm, fatal): Reimplement.
	(finish_diagnostic): Clear diagnostic info as well.

2000-07-13  Neil Booth  <NeilB@earthling.net>

	* c-common.h (flag_digraphs): New.
	* c-decl.c (c_decode_option): Set flag_digraphs as appropriate.
	* c-lex.c (yylex): Use flag_digraphs to decide whether to
	honor digraphs.

2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.c (do_spec_1): Add new %B operator.
	(set_input): Prepare for %B.

	(link_command_spec): Move up with the other tm.h-
	overrideable specs.  Factor out the portion conditional on
	LINK_LIBGCC_SPECIAL into a new spec, %(link_libgcc).
	(struct compiler): Just have a single spec string.  All users
	updated.
	(default_compilers): Remove unnecessary braces.
	(static_specs): Update.

	(trad_capable_cpp, cpp_options, cc1_options, asm_options): New
	named specs.
	(C and assembly specs): Use the new named specs, as appropriate.

	* objc/lang-specs.h: Use the new named specs.
	Remove unnecessary braces.

2000-07-12  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.c (execute): If a subprocess gets a fatal signal, report
	strsignal() of the signal number, and ask for a bug report.
	Do not do this for SIGPIPE if there's already been an error.

	* tradcpp.c: Don't include signal.h.  Don't catch SIGPIPE.
	Delete pipe_closed.

	* tradcif.c: Remove.

2000-07-12  Zack Weinberg  <zack@wolery.cumb.org>

	* final.c (profile_function): Do not emit profile counters in
	the data section, if NO_PROFILE_COUNTERS is defined.
	* tm.texi: Document NO_PROFILE_COUNTERS.  Update doc for
	FUNCTION_PROFILER.

	* config/i386/linux.h (NO_PROFILE_COUNTERS): Define.
	(FUNCTION_PROFILER): Just emit a call to mcount.

2000-07-12  Zack Weinberg  <zack@wolery.cumb.org>

	* tradcpp.c (main): Rename 'perror' label to 'sys_error'.

	* cppexp.c, cpphash.c, cpphash.h, cppinit.c, cpplex.c,
	cpplib.c, cpplib.h: Eradicate all traces of code dependent on
	traditional, lang_chill, or lang_fortran.

	* cppfiles.c: #undef strcmp to suppress warning about macros
	used without arguments.
	(_cpp_execute_include): Use f, not fname, in "No include path"
	error.
	(_cpp_pop_file_buffer): New function.
	* cpplib.c: Don't include <sys/mman.h>.
	(cpp_push_buffer): Set line_base and lineno in new buffer.
	(cpp_pop_buffer): Use _cpp_pop_file_buffer.

	* cpplex.c: Move all prototypes and structure declarations to the
	top of the file.  Properly parenthesize some macro arguments.
	(cpp_scan_line): New function.
	(special_symbol [case T_INCLUDE_DEPTH]): Use pfile->include_depth,
	don't need to walk up the stack counting.

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

	* c-common.c (combine_strings): Emit a pedantic warning when a
	string length is greater than the minimum ANSI C is required
	to support.

Wed Jul 12 13:24:30 2000  Jeffrey A Law  (law@cygnus.com)

	* pa/xm-pa64.h (NO_SYS_SIGLIST): Kill.
	* d30v/xm-d30v.h (NO_SYS_SIGLIST): Kill.

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

	* c-decl.c (define_label): Warn about identifier conflicts with
	labels in traditional C.

	* c-parse.in (unop +): Warn about the unary plus operator for
	traditional C.

	* c-typeck.c (store_init_value): Warn about automatic aggregate
	initialization for traditional C.

	* invoke.texi (-Wtraditional): Document new warnings.

2000-07-12  Gabriel Dos Reis  <gdr@codesourcery.com>

	* Makefile.in (c-errors.o): Fix thinko in dependency.

2000-07-12  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.c (C specs [!USE_CPPLIB]): Invoke tradcpp if any of
	-traditional, -ftraditional, or -traditional-cpp was given.
	Do not pass -traditional to the preprocessor.
	(.S spec): Likewise.  Don't bother defining __ASSEMBLER__, the
	preprocessor does it automatically.
	* objc/lang-specs.h: Likewise.  Don't bother defining __OBJC__.

	* ch/lang-specs.h: Always use tradcpp.  Do not pass
	-traditional, -trigraphs, or -pedantic to the preprocessor.
	* f/lang-specs.h (.F spec): Likewise.  Don't bother defining
	_LANGUAGE_FORTRAN.

2000-07-12  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c (LOGICAL): Delete macro.
	(_cpp_parse_expr): Do not use UNARY for unary +.  Implement ||
	and && directly.

	* cpphash.c (HASHSIZE): Increase to 4096.
	(struct hashdummy): Add hash field.
	(eq_HASHNODE): Compare unreduced hashes, then lengths, then
	the string values using memcmp.
	(cpp_lookup): Set dummy.hash.

Wed Jul 12 13:15:16 2000  Marc Espie <espie@openbsd.org>

	* configure.in (m88k-openbsd): Express configuration using new fragment
	style.
	* configure: Rebuilt.
	* m88k/aout-dbx.h: New.
	* m88k/openbsd.h: New.
	* m88k/xm-openbsd.h: New.

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

	* expr.c (expand_expr): Return const0_rtx, not error_mark_node.

2000-07-12  Richard Henderson  <rth@cygnus.com>

	* reload.c (push_secondary_reload): Make sure to add the new
	reload at the end, after acquiring secondary memory.

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

	* cpplex.c (is_macro_disabled): Use CPP_WTRADITIONAL.

	* c-decl.c (set_current_function_name_declared, anon_aggr_type_p,
	lang_expand_stmt): Mark parameters with ATTRIBUTE_UNUSED.

	* c-parse.in (stmt): Delete unused variables.

	* convert.c (convert_to_vector): Likewise.

	* gensupport.c (process_rtx): Declare attr as `rtvec' not `rtx'.

	* tree.c (finish_vector_type): Prototype.

2000-07-12  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c: use xmalloc
	* fixinc/fixincl.c(initialize): set program name for xmalloc
	* fixinc/fixlib.c(must_malloc): obsolete
	(is_cxx_header): no longer used - disabled
	(skip_quote): inserted and disabled for future use
	* fixinc/fixlib.h: reflects above
	* fixinc/fixtests.c: removed dinkleberries

2000-07-12  Neil Booth  <NeilB@earthling.net>

	* cpphash.h: (TOKEN_SPELL) Pulled from cpplex.c.
	* cpplex.c (TOKEN_SPELL) Move to cpphash.h.

	* cpphash.c: (struct macro_info, alloc_macro, free_macro,
	struct toklist_dummy): New.
	(cpp_free_definition): Free macros with free_macro.
	(count_params): Don't save parameter spellings.  Save macro
	information in a struct macro_info.
	(parse_define): Don't allocate a token list.
	(save_expansion): Allocate the macro's token list, and
	save parameter spellings if necessary.  Use TOKEN_SPELL.
	(cpp_create_definition): Make list const.

2000-07-12  Gabriel Dos Reis  <gdr@codesourcery.com>

	* c-typeck.c (pedwarn_c99): Move to
	* c-errors.c: ... Here.
	* toplev.h (verror, vwarning, vpedwarn): Remove prototypes.
	* diagnostic.c (verror, vwarning, vpedwarn): Make static.
	* Makefile.in (C_AND_OBJC_OBJS): Include c-errors.o
	(c-errors.o): List dependency.

2000-07-12  Mark Mitchell  <mark@codesourcery.com>

	* c-parse.c: Remove.
	* c-parse.h: Likewise.
	* c-parse.y: Likewise.
	* objc/objc-parse.c: Likewise.
	* objc/objc-pasre.y: Likewise.

2000-07-11  Rodney Brown  <RodneyBrown@pmsc.com>

	* gcc.texi: Fix minor typos
	* extend.texi: Fix minor typos

2000-07-11  Marc Espie <espie@openbsd.org>

	* collect2.c (main): Recognize .lo as object files.

2000-07-11  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (hppa_encode_label): Store labels in gc memory when ggc_p is
	true.

	* aclocal.m4 (AC_FUNC_MMAP_ANYWHERE): Extend test to detect systems
	with MAP_ANONYMOUS and MAP_ANON.
	* configure, config.in: Rebuilt.

2000-07-12  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (save_output_state): Remove.
	(restore_output_state): Likewise.
	(clear_text_info): New function.
	(clear_diagnostic_info): Likewise.
	(output_text_length, is_starting_newline, output_prefix,
	line_wrap_cutoff, ideal_line_wrap_cutoff, prefix_was_emitted_for,
	prefixing_policy, output_buffer_ptr_to_format_args): New macros
	(set_real_maximum_length, output_set_maximum_length,
	output_set_prefix, output_get_prefix, output_set_maximum_length,
	output_destroy_prefix, init_output_buffer,
	reshape_diagnostic_buffer, output_space_left, output_emit_prefix,
	output_add_newline, output_add_character, output_add_space,
	output_append_r, output_append, wrap_text, output_format,
	output_do_printf, output_printf, output_do_verbatim,
	output_verbatim, verbatim): Use them.
	(output_clear): Split into cleat_text_info and
	clear_diagnostic_info.
	(struct output_state): Move to...

	* diagnostic.h: ...Here
	(struct output_buffer): Adjust.

2000-07-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (parse_name): No longer inline (premature optimization).
	(do_pop_context): Fold into pop_context.
	(pop_context): Returns int.
	(lex_next): Hoist test for end of directive into pop_context.
	(push_macro_context): Returns int; takes just reader and token.
	Hoist test for excessive nesting to caller.
	(push_arg_context): Returns void; takes just reader and token.
	Do not call stringify_arg or get_raw_token.
	(get_raw_token): Convert tail recursion through	push_arg_context
	to a loop at this level.  Call stringify_arg here if appropriate.
	(maybe_paste_with_next): Convert tail recursion to a while loop.
	Hoist test of paste_level to caller.

	(stringify_arg): Push arg context at beginning.
	(cpp_get_token): Split out core into _cpp_get_token.  Call
	process_directive here.  Throw away CPP_PLACEMARKER tokens.
	(_cpp_get_token): Convert tail recursion through
	push_macro_context to a loop at this level.
	(_cpp_glue_header_name, is_macro_disabled, stringify_arg,
	_cpp_get_raw_token): Use _cpp_get_token.
	(_cpp_skip_rest_of_line): Drop the context stack directly; do
	not call pop_context.
	(_cpp_run_directive): Call lex_next directly.

	* cpphash.h: Prototype _cpp_get_token.
	* cppexp.c (lex): Use it.
	* cpphash.c (parse_define): Use it.
	* cpplib.c (get_define_node, do_undef, parse_include,
	read_line_number, do_line, do_ident, do_pragma, do_pragma_gcc,
	do_pragma_implementation, do_pragma_poison, do_pragma_dependency,
	parse_ifdef, validate_else): Use it.
	(cpp_push_buffer): Tweak error message; abort if anyone tries
	to push a buffer while macro expansions are stacked.

2000-07-11  Donn Terry  <donnte@microsoft.com>

	* cpplex.c (free_macro_args, save_token): Cast arg of free
	and/or xrealloc to PTR.
	(_cpp_init_input_buffer): Clear all fields of the base context.

Tue Jul 11 15:28:21 CDT 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* gensupport.c (process_rtx): Make rtl checking stop
	complaining about the define_insn while it is being
	converted from a define_insn_and_split.

Tue Jul 11 16:26:17 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.c (simple_memory_operand): Access the
	INTVAL of the address, not it's containing MEM.

2000-07-11  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixtests.c(double_slash): obsolete
	(else_endif_label): likewise
	* fixinc/inclhack.def(irix_multiline_cmnt): obsolete
	(libc1_ifdefd_memx): correct initial comment
	and omit the #if/#endif pair from the memxxx declarations
	* fixinc/fixincl.x: regen

2000-07-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpplex.c (T, I, S, C, N): Avoid non-constant initializers.

2000-07-11  Neil Booth  <NeilB@earthling.net>

	* cpp.texi: Update.

2000-07-11  Neil Booth  <NeilB@earthling.net>

	* cppinit.c: (cpp_reader_init): Allow digraphs by default.
	(handle_option): Set digraphs according to standard.
	Merge OPT_lang_c89 handler with OPT_std_c89.

	* cpplex.c: (lex_line, can_paste): Honor digraphs in
	accordance with	the digraphs flag.

	* cpplib.h: (struct cpp_options): New option digraphs.

2000-07-10  Hans-Peter Nilsson  <hp@axis.com>
	    Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (libc1_ifdefd_memx): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/testing.h: Add testcase.

2000-07-10  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (got_symbolic_operand): New.
	(symbolic_operand, move_operand): Revert 0701 change.
	* config/ia64/ia64.h (PREDICATE_CODES): Update.
	* config/ia64/ia64-protos.h (got_symbolic_operand): Declare.
	* config/ia64/ia64.md (movdi): Revert 0701 wrt symbolic_operand;
	split the offset into a 14-bit low part instead of a 13-bit low part.
	(load_fptr): Mark the mem as unchanging.
	(load_symptr): Use got_symbolic_operand.

2000-07-10  Nick Clifton  <nickc@cygnus.com>

	* libgcc2.c (next_stack_level): Cast result of computation to
	(void **) so that the assignment does not generate a warning.

2000-07-10  Chandrakala Chavva  <cchavva@redhat.com>

	* flags.h : Add new variable flag_single_precision_constant.
	* toplev.c (display_help) : Add -fsingle-precision-constant option.
	(flag_single_precision_constant): New.
	* c-lex.c (yylex): Convert floating point constant to single
	precision constant.
	* invoke.texi : Add documentation for this new option.

2000-07-10  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (output_octal): Second parameter is unsigned.
	(output_long_octal): Likewise.
	(output_hexadecimal): Likewise.
	(output_long_hexadecimal): Likewise.
	(output_format): Adjust arguments extraction. Tweak.
	(output_verbatim, verbatim): End variable argument list.
	(report_diagnostic): Improve documentation.

2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>

	* c-common.h (build_stmt): Declare.
	(build_continue_stmt): Likewise.
	(build_break_stmt): Likewise.
	(build_return_stmt): Likewise.

	* c-decl.c (do_case): Rewrite to do what previously done in
	c-parse.in.

	* c-semantics.c (build_stmt): Define.
	(build_return_stmt): Likewise.
	(build_break_stmt): Likewise.
	(build_continue_stmt): Likewise.
	(build_case_label): Likewise.

	* c-parse.in (BREAK): Change to build tree, then generate RTL.
	(CONTINUE): Likewise.
	(RETURN): Likewise.
	(CASE): Likewise.
	(DEFAULT): Likewise.

	* c-parse.y: Regenerate.
	* c-pasre.c: Likewise.

2000-07-09  Jason Merrill  <jason@redhat.com>

	* expr.c (expand_expr): Bail earlier if we get an error_mark_node.

	* tree.h (STRIP_NOPS): Check for error_mark_node.
	(STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Likewise.
	(dwarf2out_*): Remove duplicate declarations.

	* c-decl.c (duplicate_decls): Copy DECL_ABSTRACT_ORIGIN from
	DECL_ABSTRACT_ORIGIN, not DECL_ORIGIN.

2000-07-10  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (wrap_text): New function.
	(maybe_wrap_text): Likewise.
	(output_add_string): Use it.
	(output_format): Likewise.
	(count_error): Use verbatim instead of notice.
	(report_error_function): Likewise. Don't use plain fprintf.
	(finish_diagnostic): New function.
	(output_do_verbatim): Tweak.  Commonalize functionalities in
	output_verbatim and verbatim.
	(output_verbatim): Adjust.
	(verbatim): Likewise.
	(report_diagnostic): Define.

	* diagnostic.h (report_diagnostic): Prototype.

2000-07-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c (_cpp_parse_expr): Don't use unary plus.

2000-07-09  Neil Booth  <NeilB@earthling.net>

	* cpphash.h: ISvspace, is_vspace, is_nvspace: New.
	IShspace, ISspace: Update.

	* cppinit.c: ISTABLE: Update.
	V: New.

	* cpplex.c (IS_HSPACE, S_NEWLINE): Remove.
	(IS_DIRECTIVE): Rename KNOWN_DIRECTIVE.
	(skip_block_comment, skip_line_comment,	parse_string,
	lex_line): Use is_vspace rather than IS_NEWLINE.
	(skip_whitespace, lex_line): Clean up to use is_nvspace.
	(lex_line): Use KNOWN_DIRECTIVE.  Any kind of directive
	gets a BOL flag.
	(lex_next): Unconditionally stop if within a directive.
	Treat directives within macro invocations as directives
	(after parse_args emits error), not as the argument.

2000-07-09  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (diagnostic_args): New macro.
	(diagnostic_msg): Likewise.
	(output_formatted_integer): Likewise.
	(output_state): New data type.
	(digit_buffer): Make global.
	(output_add_integer): Rename to output_decimal. Squeeze
	digit_buffer.
	(output_long_decimal, output_unsigned_decimal,
	output_long_unsigned_decimal, output_octal, output_long_octal,
	output_hexadecimal, output_long_hexadecimal): New functions.
	(output_append_r): New function.
	(output_append): Tweak.
	(output_flush_on): Rename to output_to_stream.
	(output_format): Change prototype.  Improve documentation. Handle
	more format specifiers.
	(build_location_prefix): Rename to context_as_prefix.
	(output_notice): Rename to output_do_printf.
	(output_printf): Tweak.
	(line_wrapper_printf): Likewise.
	(vline_wrapper_message_with_location): Adjust call to renamed
	functions.
	(v_message_with_decl): Likewise.
	(default_print_error_function): Likewise.
	(save_output_state): New function.
	(restore_output_state): Likewise.
	(output_do_verbatim): Likewise.
	(output_verbatim): Define.
	(verbatim): Likewise.

	* diagnostic.h (printer_fn): Change return type from void to int.
	Improve documentation.
	(output_add_integer): Rename to output_decimal.
	(output_flush_on, output_format): Don't export.
	(output_verbatim, verbatim): Declare.

2000-07-08  Toon Moene  <toon@moene.indiv.nluug.nl>

	* fold-const.c (extract_muldiv) case PLUS_EXPR, MINUS_EXPR:
	Check whether c divides op1 exactly if operation is not
	multiplication.

2000-07-08  Richard Henderson  <rth@cygnus.com>

	* final.c (final): Do not abort when reg-stack introduces
	a new insn.

2000-07-08  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (struct cpp_name): Now struct cpp_string.
	(CPP_INT, CPP_FLOAT, CPP_NUMBER, CPP_COMMENT,
	CPP_HEADER_NAME): Change to type S.
	(struct cpp_token): Rename 'name' field to 'str'.  Add 'node'
	field, a cpp_hashnode *.  All references to val.name updated
	to use val.str or val.node as appropriate.
	(struct cpp_reader): Add spec_nodes field.
	(cpp_idcmp): Now cpp_ideq; takes a token * and a char *.

	* cpphash.h (struct spec_nodes): New.
	(enum spell_type): Reorder.  Only SPELL_STRING tokens use
	val.str.  All references to 'spelling > SPELL_NONE' updated to
	match.

	(CPP_IN_SYSTEM_HEADER): Check pfile->buffer and
	pfile->buffer->inc are not NULL before dereferencing them.

	* cpplex.c (parse_name): Take a pointer to the current token,
	plus current position and limit as args; return the new
	position; don't copy the text of a name into the string
	buffer, instead call cpp_lookup and store the node pointer.
	If extending a token, copy out the text of the old into a
	scratch buffer, append the new, look that up and store the new
	node pointer.  Inline.
	(maybe_paste_with_next): If the result of paste is a NAME,
	then look up the pasted text and store its node pointer.
	(lex_line): Adjust for new parse_name interface.
	Check for L"str", L'str' using spec_nodes->n_L.
	(spell_token): SPELL_IDENT tokens have their spelling in
	val.node->name.  Handle SPELL_STRING tokens that don't have
	string delimiters.
	(_cpp_expand_name_space,
	(can_paste): Check for L ## "str" using spec_nodes->n_L.
	(cpp_get_token, special_symbol): No need to call cpp_lookup.
	(cpp_idcmp): Now cpp_ideq; take a token * and a const char *;
	return 1=equal 0=not, not a tristate.

	* cpphash.c (var_args_str): Delete.
	(find_param): Compare node fields directly.
	(is__va_args__): Use CPP_PEDANTIC.  Just compare
	token->val.node with spec_nodes->n__VA_ARGS__.
	(dump_funlike_macro): Don't use var_args_str.

	* cpplib.c (_cpp_check_directive): Just walk through
	spec_nodes->dirs comparing pointers.
	(get_define_node, do_pragma_poison, detect_if_not_defined,
	parse_ifdef): The identifier has already been looked up.
	(do_ifdef, do_ifndef): parse_ifdef won't return a poisoned
	node.
	(do_if): Only call detect_if_not_defined at beginning of file.
	(_cpp_parse_assertion): Only copy string pointers for
	SPELL_STRING tokens.
	(pragma_dispatch): Take a node pointer and examine its name
	field.
	(_cpp_init_stacks): Also initialize the spec_nodes structure.

	* cppinit.c (cpp_reader_init): Call _cpp_init_stacks after
	_cpp_init_macros.
	(cpp_cleanup): Free pfile->spec_nodes.  Call _cpp_cleanup_* in
	reverse order from the corresponding _cpp_init_* routines.

	* cppexp.c (parse_number, parse_charconst, parse_defined,
	lex): Check val.node->type instead of calling cpp_defined.
	Use spec_nodes entries where appropriate.

	* fix-header.c, scan-decls.c: Update for interface changes.

2000-07-08  Geoffrey Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Fix conditions for
	emitting aux_truncdfsf2.

2000-07-03  Donn Terry  (donnte@microsoft.com)

	* cppinit.c (print_help): split overlong line into ISO C89
	maximum chunks.

2000-07-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c: Update all code for new lexer interface.
	(op_t, operator codes, struct token, tokentab2, op_to_str): Remove.
	(struct suffix, vsuf_1, vsuf_2, vsuf_3, op_to_prio): New.
	* cpplex.c (token_names): Trim leading CPP_ from names; make
	the strings unsigned.
	(_cpp_spell_operator): New.
	(is_macro_disabled): Disable all macros if rescanning
	preprocessed text.
	(_cpp_get_directive_token): Remove.

	* cppinit.c: Don't set no_macro_expand.
	* cpplib.c (read_line_number, do_line): Check only for EOF,
	not VSPACE.
	* cpphash.h: Update prototypes.
	* cpplib.h (CPP_VSPACE): Remove.
	(struct cpp_reader): Remove no_macro_expand.

2000-07-08  Neil Booth  <NeilB@earthling.net>

	* cpphash.c (is__va_args__): New function.
	(count_params): Fix line reported in error messages.  Use
	is__va_args__.  Don't return ')' on error.  Flag GNU style
	rest args macro definitions.
	(parse_define): Check macro name is not __VA_ARGS__.
	(save_expansion): Check identifier in non-varargs-macro is
	not __VA_ARGS__.  Don't flag GNU_VARARGS.
	* cpplex.c (parse_args): Accept no argument iff GNU_REST_ARGS.
	(maybe_paste_with_next): Use per-macro GNU_REST_ARGS rather
	 than per-token GNU_VARARGS.
	* cpplib.h (GNU_VARARGS): Remove.
	(GNU_REST_ARGS): New.

Sat Jul  8 01:38:25 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (call_pop, call, call_value_pop): Do not set
	current_function_uses_pic_offset_table for calls to static
	functions or indirect calls.

2000-07-07  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (rws_access_reg): New local write_count.  If
	is_predicate_reg, then take max write_count of register pair.

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

	* tradcpp.c (main): Rename label `include' to `add_include' to
	avoid conflicts with variable `include' in traditional C.

2000-07-07  Jakub Jelinek  <jakub@redhat.com>

	* integrate.c (copy_insn_list): Remove REG_LABEL notes.

2000-07-07  Jakub Jelinek  <jakub@redhat.com>

	* sibcall.c (uses_addressof): Add INMEM argument, check for
	current_function_internal_arg_pointer outside of MEM rtxs in addition
	to ADDRESSOFs.
	(sequence_uses_addressof): Update caller.

2000-07-07  Zack Weinberg  <zack@wolery.cumb.org>

	* tradcpp.c (initialize_builtins): Honor NO_BUILTIN_SIZE_TYPE
	and friends.

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

	* system.h (UNION_INIT_ZERO): New macro for initializing union
	members in structs.

	* cpplex.c (placemarker_token, eof_token): Use UNION_INIT_ZERO.

2000-07-07  Neil Booth  <NeilB@earthling.net>

	* cpp.texi: Update.

Fri Jul  7 07:47:35 2000  Jeffrey A Law  (law@cygnus.com)

	* final.c (final): Detect out of bounds array access to
	the insn_lengths array.

2000-07-07  Kazu Hirata  <kazu@hxi.com>

	* fold-const.c (fold): Fix a comment typo.

2000-07-07  Neil Booth  <NeilB@earthling.net>

	* cpp.texi: Update to new lexer.

2000-07-06  Zack Weinberg  <zack@wolery.cumb.org>

	* tradcpp.c: New file.
	* tradcif.y: New file.
	* tradcif.c: New generated file.

	* Makefile.in: Add rules to build tradcpp.o, tradcif.o,
	$(srcdir)/tradcif.c.  Add tradcpp to STAGESTUFF and
	dependencies of C.  Install tradcpp from install-common, in
	$(libsubdir).

2000-07-06  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c: Include cppdefault.h.  Refer to
	cpp_GCC_INCLUDE_DIR and cpp_GCC_INCLUDE_DIR_len, not directly
	to GCC_INCLUDE_DIR and its length.
	(SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE,
	USER_LABEL_PREFIX, REGISTER_PREFIX, struct default_include,
	STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT):  Move to
	cppdefault.h.
	(include_defaults_array): Move to cppdefault.c.

	* cppdefault.h: New file.
	* cppdefault.c: New file.

	* Makefile.in (LIBCPP_OBJS): Add cppdefault.o.
	(cppinit.o): Don't apply $(PREPROCESSOR_DEFINES) to this file.
	(cppdefault.o): New rule; apply $(PREPROCESSOR_DEFINES) to
	this file.

Thu Jul  6 18:30:36 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (push_reload): When seeing if can reuse a register,
	check extra registers against widest of INMODE and OUTMODE.

2000-07-06  Neil Booth  <NeilB@earthling.net>

	* cpplib.c: (_cpp_parse_assertion):  Perform hash lookups
	based on full length of predicate.

2000-07-06  Hans-Peter Nilsson  <hp@axis.com>

	* timevar.c: [HAVE_SYS_RESOURCE_H]: Include <sys/resource.h>.
	[NEED_DECLARATION_GETRUSAGE]: Declare getrusage.

2000-07-05  Kazu Hirata  <kazu@hxi.com>

	* h8300-proto.h: Fix formatting.
	* h8300.c: Likewise.
	* h8300.h: Likewise.

2000-07-05  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (HARD_REGNO_MODE_OK): If FR_REGNO_P, disallow
	CCmode.

2000-07-05  Rodney Brown  <RodneyBrown@pmsc.com>

	* invoke.texi: Fix minor typos
	* md.texi: Fix minor typos

2000-07-05  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (_cpp_parse_assertion): Fix buffer overrun.

2000-07-04  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c: Don't include sys/mman.h.
	(cpp_push_buffer, cpp_pop_buffer): Moved to cpplib.c.

	* cpplib.c: Include sys/mman.h and obstack.h.
	(cpp_push_buffer): Moved from cpplex.c; allocate buffers on an
	obstack.
	(cpp_pop_buffer): Moved from cpplex.c; free buffers from an obstack.
	(_cpp_unwind_if_stack): Now static, unwind_if_stack.  Don't
	bother freeing if stack entries (they will be freed with their buffer).
	(do_endif): Free if stack entries from the buffer obstack.
	(push_conditional): Allocate if stack entries from the buffer obstack.

	(find_answer): Rename to _cpp_find_answer.
	(do_assert, do_unassert): Update.

	* cpphash.h: Update prototypes.
	(xobnew): New convenience macro.
	* cpplib.h (struct cpp_reader): Add hash_ob and buffer_ob fields.
	Update comments.
	(struct cpp_hashnode): Remove disabled field.

	* cppinit.c: Don't include hashtab.h or splay-tree.h.
	(report_missing_guard): Moved to cppfiles.c.
	(cpp_reader_init): Call cpp_init_stacks, cpp_init_macros,
	cpp_init_includes.
	(cpp_cleanup): Call cpp_cleanup_stacks, cpp_cleanup_macros,
	cpp_cleanup_includes.  Don't destroy hashtab or
	all_include_files here.
	(cpp_finish): Use _cpp_report_missing_guards.

	* cppfiles.c (report_missing_guard): Moved from cppinit.c.
	(_cpp_init_include_table): Rename _cpp_init_includes.
	(_cpp_cleanup_includes, _cpp_report_missing_guards): New.

	* cppexp.c (parse_assertion): Update for new name of
	find_answer.

	* Makefile.in (cpplib.o, cpphash.o, cppinit.o): Update deps.

2000-07-04  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_ident): s/VSPACE/EOF/

2000-07-05  Neil Booth  <NeilB@earthling.net>

	* cpplex.c: Fix trigraph replacement within strings.

2000-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rs6000/aix.h (ASM_GENERATE_INTERNAL_LABEL): Fix format specifier.

	* xcoffout.c (assign_type_number): Constify.
	(xcoffout_source_file): Add static prototype.  Don't needlessly
	cast away const-ness.

2000-07-04  Jason Merrill  <jason@redhat.com>

	* frame.h (frame_state): Move base_offset to end.

Mon Jul  3 21:31:43 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* calls.c (emit_library_call_value_1): Revert previous change.

2000-07-03  Zack Weinberg  <zack@wolery.cumb.org>

	* fix-header.c (struct partial_proto): Remove unnecessary fields.
	(recognized_extern, recognized_function, read_scan_file):
	Update for new scheme.
	(check_protection): It's still a multiple include guard even
	if it doesn't always trigger.
	* scan-decls.c (skip_to_closing_brace, scan_decls): Update for
	new scheme.
	* scan.h: Declare struct cpp_token.  Update prototypes.

2000-07-03  Neil Booth  <neilb@earthling.net>
	    Zack Weinberg  <zack@wolery.cumb.org>

	Complete overhaul of the lexer and macro expander.

	* cpphash.c (object_defn, funct_defn, push_macro_expansion,
	arg, arglist, argdata, reflist, collect_objlike_expansion,
	collect_funlike_expansion, collect_params,
	warn_trad_stringify, trad_stringify, duplicate_arg_p, add_pat,
	unsafe_chars, macarg, compare_defs, special_symbol,
	scan_arguments, stringify, funlike_macroexpand,
	_cpp_quote_string, monthnames): Delete.
	(cpp_lookup, _cpp_free_definition, dump_funlike_macro,
	_cpp_create_definition, _cpp_dump_definition,
	dump_hash_helper): Adjust.
	(find_param, count_params, parse_define, var_args_str,
	check_macro_redefinition, save_expansion): New.

	* cpplex.c (skip_block_comment, skip_line_comment, parse_name,
	parse_string, output_line_command, trigraph_replace,
	lex_line, cpp_push_buffer, cpp_pop_buffer, cpp_output_tokens,
	cpp_scan_buffer_nooutput, cpp_scan_buffer, cpp_free_toklist,
	cpp_idcmp, _cpp_get_directive_token, _cpp_init_input_buffer,
	_cpp_skip_rest_of_line): Modify.

	(maybe_macroexpand, skip_comment, copy_comment, skip_string,
	find_position, null_warning, bump_column, expand_name_space,
	pedantic_whitespace, _cpp_output_list, _cpp_slice_toklist,
	_cpp_squeeze_toklist, _cpp_scan_until, _cpp_skip_hspace,
	_cpp_parse_name, _cpp_lex_token, cpp_get_non_space_token,
	_cpp_prescan): Delete.

	(dump_param_spelling, process_directive, lex_next,
	is_macro_disabled, stringify_arg, expand_context_stack,
	output_token, make_string_token, alloc_number_token,
	special_symbol, duplicate_token, maybe_paste_with_next,
	can_paste, prevent_macro_expansion, restore_macro_expansion,
	get_temp_token, release_temp_tokens, quote_string,
	token_names, token_spellings, _cpp_expand_name_space,
	_cpp_glue_header_name, _cpp_reserve_name_space,
	digraph_spellings, trigraph_ok, skip_whitespace, save_comment,
	placemarker_token, eof_token, cpp_context, macro_args,
	get_raw_token, parse_arg, parse_args, save_token,
	push_arg_context, push_macro_context, pop_context,
	do_pop_context, free_macro_args, _cpp_get_line,
	_cpp_run_directive): New.

	* cpplib.c (validate_else, parse_include, push_conditional,
	pass_thru_directive, read_line_number, parse_ifdef,
	detect_if_not_defined, _cpp_check_directive, do_define,
	do_undef, do_include, do_import, do_include_next, do_error,
	do_warning, do_ident, do_pragma, pragma_dispatch, gcc_pragmas,
	top_pragmas, do_pragma_gcc, do_pragma_implementation,
	do_pragma_poison, do_pragma_system_header,
	do_pragma_dependency, do_sccs, do_ifdef, do_ifndef, do_else,
	dl_elif, do_endif, _cpp_unwind_if_stack, do_assert,
	do_unassert, cpp_define, cpp_undef, cpp_assert, cpp_unassert,
	cpp_defined): Update for new scheme.
	(strtoul_for_line, get_define_node, dump_macro_name,
	_cpp_check_linemarker, _cpp_parse_assertion): New.
	(_cpp_handle_directive, do_pragma_default): Delete.

	* cpphash.h (struct predicate): Now struct answer.
	(enum spell_type, struct token_spelling, struct directive,
	directive_handler): New.
	Update prototypes.  Remove unused macros.
	* cpplib.h: Update prototypes.  Remove unused macros,
	structure definitions, and fields.

	* cpperror.c (print_containing_files, v_message): Adjust.
	* cppexp.c (parse_assertion, lex, parse_escape,
	_cpp_parse_expr): Adjust.
	* cppfiles.c (open_include_file, _cpp_execute_include,
	_cpp_compare_file_date, cpp_read_file, read_include_file):
	Adjust.
	* cppinit.c (dump_special_to_buffer): Delete.
	(append_include_chain, merge_include_chains, cpp_reader_init,
	cpp_cleanup, initialize_builtins, builtin_array, cpp_start_read,
	cpp_finish, handle_option, print_help): Adjust.
	* cppmain.c (main): Adjust.

2000-07-03  Zack Weinberg  <zack@wolery.cumb.org>

	* cppspec.c (lang_specific_driver): Use double quotes in error
	message.

Mon Jul  3 16:53:43 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* calls.c (emit_library_call_value_1): Use valreg instead
	of hard_libcall_value.

2000-07-03  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): New function.
	* config/rs6000/rs6000-proto.h: Prototype rs6000_emit_move.
	* config/rs6000/rs6000.md (movsi): Use rs6000_emit_move.
	(movhi): Likewise.
	(movqi): Likewise.
	(movdf): Likewise.
	(movsf): Likewise.
	(movdi): Likewise.
	(movti): Likewise.

	* expmed.c (expand_mult_highpart): Use op1 instead of wide_op1 when
	mode instead of wider_mode is being used.

2000-07-03  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (movstrictqi_xor): Use 'q' constraint instead
	of 'r'. Use q_regs_operand.
	(andsi_1+2): Use q_regs_operand.

2000-07-03  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (get_memory_rtx): Always put into alias set 0.

2000-07-03  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.md: Fix post increment and pre increment
	peepholes so that they do not generate UNPREDICATBLE opcodes.
	(ie ones where the increment clobbers the source/destination).

2000-07-01  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.c (out_adj_frame_ptr): Make "frame pointer
	change too big for -mtiny-stack" a warning, if larger than 63.
	(out_set_stack_ptr): Change the logic so -mno-interrupts is
	always safe to use on possible future devices.
	(function_prologue): Write SPH before SPL, for consistency.
	If interrupt_func_p true, we know we have enabled interrupts.
	(avr_num_arg_regs): New function.  Round up to even number of
	bytes if no -mpack-args or if calling a libgcc function.
	(function_arg, function_arg_advance): Use it.
	(output_movsisf, ashlsi3_out, ashrsi3_out, lshrsi3_out):
	Output "movw" if available.
	(out_tsthi, out_tstsi, ashlqi3_out, lshrqi3_out): Change uses
	of TEST_HARD_REG_CLASS macro to test_hard_reg_class function.
	(asm_output_section_name): Add blanks for consistent output.
	(encode_section_info): Set TREE_READONLY for progmem data to
	avoid gas warnings about changed section attributes.
	(avr_hard_regno_mode_ok): Force non-QImode data to start in
	even numbered registers on devices with "movw".
	* config/avr/avr.h (MASK_*): Define bits for target_flags.
	(TARGET_SWITCHES): Mark help strings for translation.
	Add new -mpack-args and -menhanced switches.
	(TARGET_OPTIONS): Mark help strings for translation.
	(progmem_section): Add section attributes.
	* config/avr/avr.md (*movhi, call_insn, call_value_insn):
	Output "movw" if available.
	(mulqi3, mulqihi3, umulqihi3, mulhi3, *tablejump_enh):
	New patterns.
	* config/avr/libgcc.S (_mulqi3, _divqi3): Update to the new
	call convention (arguments aligned on even registers).
	(_cleanup, _exit): Make weak symbols libc can override.

2000-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fp-bit.h: New file.

	* fp-bit.c: Move common code, prototypes, etc into fp-bit.h.
	Comment #endif statements.
	(__thenan_sf, __thenan_df): Add missing braces around initializer.

Mon Jul  3 00:32:47 2000  Jeffrey A Law  (law@cygnus.com)

	* gcse.c (compute_pre_data): Compute ae_kill using other local
	properties instead of calling compute_ae_kill.

	* alias.c (init_alias_analysis): Do not call
	prologue_epilogue_contains until after reload has completed.

2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>

	* c-common.h (genrtl_begin_compound_stmt): Remove declaration.
	(genrtl_finish_compound_stmt): Likewise.
	(genrtl_compound_stmt): Change to return void.

	* c-semantics.c (genrtl_begin_compound_stmt): Remove function and
	move code from here to ...
	(genrtl_compound_stmt): ... here.
	(genrtl_finish_compound_stmt): Remove.
	(expand_stmt): Add comment.

2000-07-02  Zack Weinberg  <zack@wolery.cumb.org>

	* c-typeck.c (build_indirect_ref): Use COMPLETE_OR_VOID_TYPE_P
	and VOID_TYPE_P.

2000-07-02  Jakub Jelinek  <jakub@redhat.com>

	* cpplib.h (struct cpp_reader): New field include_depth.
	(struct cpp_printer): Rename last_bsd to last_id.
	* cppfiles.c (read_include_file): Bump include_depth.
	* cpplex.c (cpp_pop_buffer): Decrement include_depth.
	(output_line_command): Output correct #line if a header
	is including itself and is not protected against multiple inclusion.
	Use include_depth instead of buffer_stack_depth, last_id instead of
	last_bsd.
	* cppinit.c (cpp_start_read): Initialize last_id instead of
	last_bsd.

2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>

	* Makefile.in (C_AND_OBJC_OBJS): Added c-semantics.o.
	(c-semantics.o): New target.

	* c-common.h (TREE_LANG_FLAG_?): Added documentation.
	(genrtl_do_pushlevel): Moved from cp/cp-tree.h.
	(genrtl_clear_out_block): Likewise.
	(genrtl_goto_stmt): Likewise.
	(genrtl_expr_stmt): Likewise.
	(genrtl_decl_stmt): Likewise.
	(genrtl_if_stmt): Likewise.
	(genrtl_while_stmt): Likewise.
	(genrtl_do_stmt): Likewise.
	(genrtl_return_stmt): Likewise.
	(genrtl_for_stmt): Likewise.
	(genrtl_break_stmt): Likewise.
	(genrtl_continue_stmt): Likewise.
	(genrtl_scope_stmt): Likewise.
	(genrtl_switch_stmt): Likewise.
	(genrtl_case_label): Likewise.
	(genrtl_begin_compound_stmt): Likewise.
	(gerntl_finish_compound_stmt): Likewise.
	(genrtl_compound_stmt): Likewise.
	(genrtl_asm_stmt): Likewise.
	(genrtl_decl_cleanup): Likewise.
	(DECL_ANON_UNION_ELEMS): Likewise.
	(emit_local_var): Likewise.
	(make_rtl_for_local_static): Likewise.
	(expand_cond): Likewise.
	(expand_stmt): Likewise.
	(c_expand_return): Likewise.
	(c_expand_start_case): Likewise.
	(do_case): Likewise.
	(COMPOUND_STMT_NO_SCOPE): Likewise.
	(c_expand_asm_operands): Likewise.
	(NEW_FOR_SCOPE_P): New macro.
	(expand_expr_stmt_fn): New type.

	(set_current_function_name_declared): Likewise.
	(current_function_name_declared): Likewise.
	(lang_expand_stmt): Likewise.
	(stmts_are_full_exprs_p): Likewise.
	(anon_aggr_type_p): Likewise.
	(lang_expand_expr_stmt): Likewise.
	(build_case_label): Likewise.

	* c-decl.c (lang_expand_expr_stmt): Initialize.
	(stmts_are_full_exprs_p): Define.
	(current_function_name_declared): Likewise.
	(do_case): Likewise.
	(lang_expand_stmt): Likewise.
	(set_current_function_name_declared): Likewise.
	(anon_aggr_type_p): Likewise.

	* c-semantics.c: New file.
	(expand_cond): Moved from cp/semantics.c.
	(genrtl_do_pushlevel): Likewise.
	(genrtl_clear_out_block): Likewise.
	(genrtl_goto_stmt): Likewise.
	(genrtl_expr_stmt): Likewise.
	(genrtl_decl_stmt): Likewise.
	(genrtl_if_stmt): Likewise.
	(genrtl_while_stmt): Likewise.
	(genrtl_do_stmt): Likewise.
	(genrtl_return_stmt): Likewise.
	(genrtl_for_stmt): Likewise.
	(genrtl_break_stmt): Likewise.
	(genrtl_continue_stmt): Likewise.
	(genrtl_scope_stmt): Likewise.
	(genrtl_switch_stmt): Likewise.
	(genrtl_case_label): Likewise.
	(genrtl_begin_compound_stmt): Likewise.
	(genrtl_finish_compound_stmt): Likewise.
	(genrtl_compound_stmt): Likewise.
	(genrtl_asm_stmt): Likewise.
	(genrtl_decl_cleanup): Likewise.
	(make_rtl_for_local_static): Moved from cp/decl.c.
	(emit_local_var): Likewise.
	(expand_stmt): Define.

	* c-tree.h: (c_expand_asm_operands): Moved to c-common.h.
	(c_expand_return): Likewise.
	(c_expand_start_case): Likewise.

2000-07-01  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (symbolic_operand): Reject CONST expressions
	with the low 13 bits set.
	(move_operand): Check for CONST|SYMBOL_REF|LABEL_REF directly.
	* config/ia64/ia64.md (movdi): Likewise.  Expand a CONST with one
	of the low 13 bits into a CONST plus an adddi3.
	(load_symptr): Set RTX_UNCHANGING_P.

2000-06-30  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (c-common.o): Don't depend on c-tree.h or c-lex.h.
	* c-common.c (ridpointers): Declare.
	* c-common.h (enum rid): Declare.
	(NORID): Likewise.
	(ridpointers): Likewise.
	* c-lex.c (ridpointers): Don't declare.
	(init_lex): Initialize ridpointers.
	* c-lex.h (enum rid): Don't declare.
	(NORID): Likewise.
	(RID_FIRST_MODIFIER): Likewise.
	(ridpointers): Likewise.

2000-06-30  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/som.h (ASM_WEAKEN_LABEL): Export weak data symbols so that they
	have global scope.

2000-06-30  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* invoke.texi (-Wreturn-type): In C++, a missing return type is
	always an error.

2000-06-30  Catherine Moore  <clm@cygnus.com>

	* c-common.c (decl_attributes):  Differentiate between
	types and type decls for alignment.

2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>

	* cpp.texi: Document #pragma GCC dependency
	* cppfiles.c (open_include_file): Set date to unknown.
	(_cpp_compare_file_date): New function.
	(read_include_file): Set file date.
	* cpphash.h (struct include_file): Add date member.
	(_cpp_compare_file_date): Prototype.
	* cpplib.c (parse_include): Add trail parameter. Adjust.
	(do_include): Adjust parse_include call.
	(do_import): Likewise.
	(do_include_next): Likewise.
	(gcc_pragmas): Add dependency pragma.
	(do_pragma_dependency): New pragma.

2000-06-29  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (output_loc_operands): Don't abort on codes that have
	no operands.

2000-06-29  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Return NO_REGS for
	a volatile mem and FR_REGS.

2000-06-29  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c: Include c-common.h, not c-lex.h or c-tree.h.
	* c-common.h (flag_const_strings): Declare.
	(warn_format): Likewise.
	(flag_traditional): Likewise.
	(flag_isoc99): Likewise.
	(warn_parentheses): Likewise.
	(warn_conversion): Likewise.
	(C_TYPE_OBJECT_P): Likewise.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(C_EXP_ORIGINAL_CODE): Likewise.
	(build_unary_op): Likewise.
	(build_binary_op): Likewise.
	(lvalue_p): Likewise.
	(default_conversion): Likewise.
	(common_type): Likewise.
	* c-tree.h (C_TYPE_OBJECT_P): Remove.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(C_EXP_ORIGINAL_CODE): Likewise.
	(common_type): Likewise.
	(default_conversion): Likewise.
	(build_binary_op): Likewise.
	(build_unary_op): Likewise.
	(lvalue_p): Likewise.
	(flag_const_strings): Likewise.
	(warn_format): Likewise.
	(warn_conversion): Likewise.
	(flag_traditional): Likewise.
	(flag_isoc99): Likewise.
	(warn_parentheses): Likewise.

2000-06-29  James E. Wilson  <wilson@cygnus.com>

	* config/ia64/linux.h (LINK_SPEC): Change so.1 to so.2.

	* config/ia64/ia64.h (MODES_TIEABLE_P): Only tie if mode class is the
	same.  Only tie XFmode with XFmode.

2000-06-29  Zack Weinberg  <zack@wolery.cumb.org>

	* c-decl.c, timevar.c, tlink.c: Include intl.h.
	* Makefile.in: Update deps.

2000-06-29  Andrew Haley  <aph@cygnus.com>

	* toplev.c (main): On an IA-64, make flag_unwind_tables defauit
	to true.

2000-06-29  Andrew Haley  <aph@cygnus.com>

	* config/ia64/linux.h (JMP_BUF_SIZE): Size is in Pmode units, not
	bytes: remove the multiply by 8.

2000-06-29  Philipp Thomas  <pthomas@suse.de>

	* rtl.c : Revert NLS changes.
	* gcc.c : Fix bug in display_help introced by my last changes.

Wed Jun 28 21:09:33 2000   Raja R Harinath <harinath@cs.umn.edu>

	* dbxout.c (dbxout_symbol, case RESULT_DECL, VAR_DECL): Use
	DECL_CONTEXT, not DECL_FIELD_CONTEXT.

2000-06-29  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* flow.c (flow_depth_first_order_compute): Fix algorithm.

2000-06-28  Philipp Thomas  <pthomas@suse.de>

	* c-decl.c : Mark strings for translation.
	(parmlist_tags_warning): Use distinct messages instead
	of conditional expressions.
	* diagnostic.c (v_message_with_decl): Mark string for translation.
	* gcc.c: Mark messages for translation.
	(display_help): Combine messages into one string where necessary.
	* mips-tfile: Add intl.h. Mark messages for translation.
	* rtl.c (fatal_with_file_and_line): Modify function for NLS. Mark
	messages for translation.
	* timevar.c: Mark messages for translation.
	* tlink.c: Likewise.
	* toplev.c: Likewise.

Wed Jun 28 15:39:26 2000  Donn Terry (donnte@microsoft.com)

	* i386-interix.h (STRIP_NAME_ENCODING): Declare _new_name properly.

	* alpha/alpha-interix.h: Delete redundant -Asystem(interix),
	use -isystem instead of -idirafter.
	* i386/i386-interix.h: Likewise.

2000-06-28  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (output_loc_operands): Don't support >1 byte output
	unless DWARF2_DEBUGGING_INFO is defined.
	(ASM_OUTPUT_DWARF_*): Wrap normal output defs with #ifndefs.

2000-06-28  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (summarize_insn): Ignore SCRATCH.

2000-06-28  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (output_line_command): Output correct #line if a header
	is including itself and is not protected against multiple inclusion.

2000-06-28  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (open_include_file): If open(2) returns EMFILE or
	ENFILE, close all cached file descriptors and try again.
	(_cpp_execute_include): Keep a count of the number of times
	each header is included.
	(close_cached_fd): New function.
	* cpphash.h (struct include_file): Rename before to
	include_count; all users updated.  Make include_count and sysp
	unsigned short.
	* cppinit.c (cpp_finish): If -H, report headers that could use
	reinclude guards.
	(report_missing_guard): New function.

Wed Jun 28 14:46:58 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (prologue_set_got): Set length_immediate field.
	(testqi_ccno_1):  Add missing '@' character.

2000-06-27  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Use
	DWARF_FRAME_REGNUM.

2000-06-27  Andrew Macleod <amacleod@cygnus.com>

	* dwarf2out.c (ASM_OUTPUT_DWARF_DATA2): Provide default when no
	unsigned macros available.

2000-06-27  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (emit_insn_group_barriers): Special case
	epilogue_deallocate_stack.

	* config/ia64/ia64.c (ia64_print_operand) [case D]: Emit
	completers for UNORDERED and ORDERED as well.
	* config/ia64/ia64.md (bunordered, bordered): New.
	(sunordered, sordered): New.

Tue Jun 27 12:14:12 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* genattrtab.c (write_attr_value): Do not abort for CONST_INT operands.
	* i386.c (ix86_attr_length_default): Kill.
	(ix86_attr_length_immediate_default, ix86_attr_length_address_default):
	New.
	* i386-protos.h (ix86_attr_length_default): Kill
	(ix86_attr_length_immediate_default, ix86_attr_length_address_default):
	Add prototype
	* i386.md (attribute type): Add "test".
	(attribute length_prefix): Kill.
	(attribute length_opcode): Kill.
	(attribute i387, mode, length_immediate, length_address, prefix_data16,
	prefix_rep, prefix_0f, modrm): New.
	(attribute length): Compute using the new attributes.
	(attribute pent_prefix): New.
	(attribute pent_pair): Compute using pent_prefix.
	(all insn patterns): Set mode,modrm and immediate_length attributes where
	needed.
	(cmpsi patterns): Compute sizes properly for test instruction.
	(movsi, movhi patterns): Compute sizes properly for eax shortcuts.
	(movstricthi_xor, movstrictqi_xor): New patterns.
	(andsi/andhi): Use splitters to generate xor instructions.
	(xorqi_ext_1): New pattern.
	(movstricthi->movstricthi_xor peep2): New.

Tue Jun 27 12:03:03 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (addqi_low_1): Remove.

2000-06-27  Philipp Thomas  <pthomas@suse.de>

	* 1750a.h: Mark help strings for options/switches for translation.
	* a29k.h: Likewise.
	* alpha.h: Likewise.
	* arm.h: Likewise.
	* pe.h: Likewise.
	* riscix.h: Likewise.
	* c4x.h: Likewise.
	* clipper.h: Likewise.
	* convex.h: Likewise.
	* elxsi.h: Likewise.
	* fr30.h: Likewise.
	* fx80.h: Likewise.
	* h8300.h: Likewise.
	* i370.h: Likewise.
	* cygwin.h: Likewise.
	* dgux.h: Likewise.
	* djgpp.h: Likewise.
	* i386.h: Likewise.
	* osf1elf.h: Likewise.
	* osfrose.h: Likewise.
	* sco5.h: Likewise.
	* win32.h: Likewise.
	* i860.h: Likewise.
	* paragon.h: Likewise.
	* i960.h: Likewise.
	* ia64.h: Likewise.
	* m32r.h: Likewise.
	* mcore.h: Likewise.
	* mips.h: Likewise.
	* mn10300.h: Likewise.
	* ns32k.h: Likewise.
	* pdp11.h: Likewise.
	* pj.h: Likewise.
	* aix.h: Likewise.
	* aix41.h: Likewise.
	* aix43.h: Likewise.
	* beos.h: Likewise.
	* rs6000.h: Likewise.
	* sysv4.h: Likewise.
	* linux.h: Likewise.
	* linux64.h: Likewise.
	* sp64-elf.h: Likewise.
	* sparc.h: Likewise.
	* splet.h: Likewise.
	* v850.h: Likewise.
	* convex.h (TARGET_SWITCHES): Provide descriptions and mark them
	for translation.
	* sp86x-aout.h: Remove bogus first definition of SUBTARGET_SWITCHES.
	Properly document option and mark for translation.
	* sp86x-elf.h: Likewise.

2000-06-27  Bernd Schmidt  <bernds@cygnus.co.uk>

	Add MMX and SSE registers to i386 machine description.
	* i386-protos.h (ix86_constant_alignment, ix86_data_alignment,
	ix86_local_alignment): Declare.

	* i386.h (TARGET_MMX, TARGET_SSE): New.
	(FIRST_PSEUDO_REGISTER, FIXED_REGISTERS, CALL_USED_REGISTERS,
	REG_ALLOC_ORDER, HARD_REGNO_NREGS, HARD_REGNO_MODE_OK,
	REG_CLASS_NAMES, REG_CLASS_CONTENTS,REG_CLASS_FROM_LETTER,
	enum reg_class, HI_REGISTER_NAMES): Added MMX/SSE registers.
	(FIRST_SSE_REG, LAST_SSE_REG, SSE_REGNO_P): New.
	(FIRST_MMX_REG, LAST_MMX_REG, MMX_REGNO_P, MMX_REG_P): New macros.
	(RETURN_IN_MEMORY): Handle MMX/SSE.
	(REG_PARM_STACK_SPACE): Added so the first three TImode parameters
	also get stack space.
	(MUST_PASS_IN_STACK): Added TImode to the default definition.
	(CUMULATIVE_ARGS): Added sse_nregs, sse_regno and sse_words.
	(MMX_REGISTER_NAMES): New.
	(ALIGN_MODE_128): New macro.
	(CONSTANT_ALIGNMENT): Code moved out-of-line; just call the function.
	(DATA_ALIGNMENT): Likewise.
	(LOCAL_ALIGNMENT): Likewise.
	(CONDITIONAL_REGISTER_USAGE): Make MMX/SSE regs fixed if not
	TARGET_MMX/TARGET_SSE.
	(VALID_SSE_REG_MODE, VALID_MMX_REG_MODE): New macros.
	(REG_CLASS_FROM_LETTER): 'y' for MMX regs.
	(SECONDARY_MEMORY_NEEDED): Be conservative about copying between
	SSE/MMX regs and something else.
	(CLASS_MAX_NREGS): 1 for SSE and MMX regs.
	(REGISTER_MOVE_COST): 10 if trying to move between MMX and SSE regs,
	3 if moving between MMX regs and something else.

	* i386.c (reg_class): Add SSE_REGS, MMX_REGS.
	(regclass_map): Add MMX/SSE registers.
	(print_operand): Add code to print XMMWORD as appropriate.
	(ix86_split_movdi): Abort for MMX regs.
	(init_cumulative_args): Also allow SSE_REGS
	(function_arg_advance, function_arg): Likewise
	(print_reg): Support 'm'.  Add case for TImode.
	(override_options): TARGET_SSE implies TARGET_MMX.
	(ix86_constant_alignment, ix86_data_alignment, ix86_local_alignment):
	New functions.

	* config/i386/unix.h (VALUE_REGNO): VECTOR_MODE values go to
	FIRST_SSE_REG.
	* config/i386/ptx4-i.h (RETURN_IN_MEMORY): Return MMX values in
	memory.
	* config/i386/sysv4.h (RETURN_IN_MEMORY): Likewise.
	* config/i386/i386elf.h (RETURN_IN_MEMORY): Likewise.

2000-06-26  Geoff Keating  <geoffk@cygnus.com>

	* ssa.c (struct rename_set_data): Change the name of field
	'set_dest' to 'old_reg'.  Add comments.
	(struct rename_context): Change the name of 'set_data' to
	'new_renames'.  Add new field 'done_renames'.
	(create_delayed_rename): New function.
	(apply_delayed_renames): New function.
	(rename_insn_1): Use the new functions.  Handle CLOBBERS.  Handle
	SUBREGs and similar by emitting a move.
	(new_registers_for_updates): Delete, functionality moved to
	apply_delayed_renames.
	(rename_block): Handle moves emitted by rename_insn_1 by putting
	them into a SEQUENCE with the original insn.  Add sanity checks
	and comments.
	(rename_equivalent_regs_in_insn): Don't handle SUBREGs specially.
	(rename_equivalent_regs): Expand SEQUENCEs out to individual insns.

2000-06-26  Andrew Macleod <amacleod@cygnus.com>
	    Jason Merrill <jason@redhat.com>

	* dwarf2.h (enum dwarf_call_frame_info): Add
	DW_CFA_def_cfa_expression.
	* dwarf2out.c (union dw_cfi_oprnd_struct): Add a pointer to a
	dw_loc_descr_struct entry.
	(struct cfa_loc): New structure to track a CFA location.
	(lookup_cfa): Take a cfa_loc parameter instead of a reg and an offset.
	(lookup_cfa_1): Take a cfa_loc parameter instead of a reg and an
	offset, plus handle DW_CFA_def_cfa_expression.
	(def_cfa_1): Use to be dwarf2out_def_cfa, only now it uses a
	cfa_loc record.
	(dwarf2out_def_cfa): Entry point maintained for compatibility.
	(dwarf_cfi_name): Add DW_CFA_def_cfa_expression.
	(cfa_reg, cfa_offset): Replace with cfa_loc record 'cfa'.
	(cfa_store_reg, cfa_store_offset): Replace with cfa_loc 'cfa_store'.
	(initial_return_save, dwarf2out_stack_adjust): Use cfa.reg, not
	cfa_reg.
	(dwarf2out_frame_debug_expr): Use new cfa_loc records. Recognize rtl
	sequences for the new DW_CFA_def_cfa_expression record.
	(dwarf2out_frame_debug): Use new variables/fields.A
	(output_cfi): Handle DW_CFA_def_cfa_expression.
	(output_cfa_loc): New function to generate a CFI record for
	DW_CFA_def_cfa_expression.
	(get_cfa_from_loc_descr): New function to get a cfa_loc record from
	a dw_loc_descr sequeunce.
	(build_loc_descr): Build a dw_loc_descr from a cfa_loc record.
	(dwarf_stack_op_name, new_loc_descr, add_loc_descr, size_of_loc_descr,
	size_of_locs, output_loc_operands, output_loc_sequence): Move into
	unwind info section.
	* frame.h (frame_state): Add base_offset and indirect fields.
	* frame-dwarf2.c (decode_stack_op): New function to interpret a
	dw_loc_descr operation.
	(execute_cfa_insn): Add support for DW_CFA_def_cfa_expression.
	(struct frame_state): Add base offset and indirect fields.
	* libgcc2.c (next_stack_level): Support indirect loading for CFA.

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

	* c-decl.c (grokdeclarator): Don't warn about `long long' in C99.
	Make warnings about implicit int be pedwarns in C99.  Don't warn
	about duplicate type qualifiers in C99.
	(start_function): Make warning about implict int return type be a
	pedwarn in C99.
	* c-lex.c (yylex): Don't warn about `long long' in C99.
	* c-typeck.c (c_expand_return): In C99, always pedwarn about
	`return' with no value in function returning non-void.

2000-06-26  Richard Henderson  <rth@cygnus.com>

	* c-typeck.c (pedwarn_c99): New.
	* diagnostic.c (verror, vwarning, vpedwarn): Export.
	* toplev.h: Prototype them.

2000-06-26  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* c-typeck.c (digest_init): Return error_mark_node node when
	TREE_TYPE (init)  == error_mark_node.

2000-06-26  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4 (AM_WITH_NLS): Don't set MSGFMT or GMSGFMT to no,
	test for msgfmt without path instead.
	* configure: Rebuilt.

2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>

	* gengenrtl.c (special_rtx): Fix typo in comment.

2000-06-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* mklibgcc.in (LIB2FUNCS): Add missing space.

2000-06-24  Bernd Schmidt  <bernds@cygnus.co.uk>

	* tree.h (enum tree_index): Add vector type nodes.
	Add accessor macros for them.
	(TYPE_REPRESENATION_TYPE): New macro.
	* tree.c (build_common_tree_nodes_2): Build these nodes.
	(finish_vector_type): New function.
	* c-common.c (type_for_mode): Handle vector modes.
	* tm.texi (VECTOR_MODE_SUPPORTED_P): Document.

	* dbxout.c (dbxout_type): Handle VECTOR_TYPEs.
	* dwarf.h (enum dwarf_fundamental_type): Add 128 bit integers.
	* dwarf2out.c (lookup_type_die): Handle VECTOR_TYPEs.
	(gen_type_die): Likewise.
	* dwarfout.c (dwarf_fund_type_name): Handle 128 bit integers.
	(fundamental_type_code): Likewise.
	(type_is_fundamental): VECTOR_TYPEs aren't.
	(output_type): Handle VECTOR_TYPEs.

2000-06-25  Kazu Hirata  <kazu@hxi.com>

	* config/arm.c: Fix a comment typo.
	* config/arm.h: Likewise.

2000-06-25  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4 (AM_WITH_NLS): Set create_catalogs=no if no catalog
	compiler found.
	AM_GNU_GETTEXT: Don't set CATALOGS if create_catalogs=no.
	* configure: Rebuilt.

2000-06-25  John David Anglin  <dave.anglin@nrc.ca>

	* config/vax/vax.h (TARGET_SWITCHES): Provide descriptions.

2000-06-25 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* mklibgcc.in: Prefer LIB1ASMFUNCS over LIB2FUNCS when generating
	libgcc.a.

2000-06-24  Marc Espie <espie@cvs.openbsd.org>

	* collect2.c (resolve_lib_name): Move '/' check out of loop.

2000-06-24  Dirk Duellmann  <Dirk.Duellmann@cern.ch>

	* ginclude/stddef.h (NULL): define for non-gnu C++ parsers as 0.

2000-06-24  Jakub Jelinek  <jakub@redhat.com>

	* stmt.c (expand_decl_cleanup): Emit a dummy insn after
	last_unconditional_cleanup.

2000-06-24  Bernd Schmidt  <bernds@cygnus.co.uk>

	* tree.def (VECTOR_TYPE): New node type.
	* tree.h: Adjust some comments to reflect addition of vector types.
	(TYPE_VECTOR_SUBPARTS): New macro.
	* stor-layout.c (layout_type): Handle VECTOR_TYPE.
	* c-convert.c (convert): Likewise.
	* convert.c (convert_to_integer): Handle vector modes.
	(convert_to_vector): New function.
	* convert.h (convert_to_vector): Declare.
	* expr.c (convert_move): Handle vector modes.
	* expmed.c (extract_bit_field): Don't abort for vector modes.

2000-06-24  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr-protos.h (avr_hard_regno_mode_ok): New prototype.
	* config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr):
	New functions, common code moved from function_{prologue,epilogue}
	and extended to support the -mtiny-stack option.
	(function_prologue, function_epilogue): Use them.
	Use lo8/hi8 consistently for asm output readability.
	(avr_hard_regno_mode_ok): New function.
	* config/avr/avr.h (TARGET_SWITCHES): Fix typo.  Add -mtiny-stack.
	(UNITS_PER_WORD): Define as 4 (not 1) when compiling libgcc2.c.
	(HARD_REGNO_MODE_OK): Call the avr_hard_regno_mode_ok function.
	* config/avr/avr.md (*mov_sp_r): Add support for -mtiny-stack.
	Write SPH before SPL.
	(*movqi): No need to disable interrupts for just one "out"
	in alternative 5.  Change length attribute from 4 to 1.
	* config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__):
	Write SPH before SPL.

2000-06-24  Bernd Schmidt  <bernds@cygnus.co.uk>

	* rtl.texi (Vector Operations): New node.
	(Arithmetic): Add ss_plus, us_plus, ss_minus, us_minus.
	(Conversions): Add ss_truncate, us_truncate.
	* rtl.def (VEC_MERGE, VEC_SELECT, VEC_CONCAT, VEC_REORDER,
	VEC_CONST, VEC_DUPLICATE, SS_PLUS, SS_MINUS, SS_TRUNCATE,
	US_TRUNCATE): New rtx codes.
	* machmode.def: Add vector modes.
	* machmode.h (enum mode_class): Add MODE_VECTOR_INT and
	MODE_VECTOR_FLOAT.
	(INTEGER_MODE_P): Check for MODE_VECTOR_INT.
	(FLOAT_MODE_P): Check for MODE_VECTOR_FLOAT.
	(VECTOR_MODE_P): New.

2000-06-24  Nathan Sidwell  <nathan@codesourcery.com>

	* cpp.texi: Clarify #pragma GCC namespace.

2000-06-24  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4(AM_GNU_GETTEXT): If LINGUAS isn't set, build
	all catalogs specified in ALL_LINGUAS.
	* configure: Rebuilt.

2000-06-23  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (reload_outdi+1): Handle
	HOST_BITS_PER_WIDE_INT == 64 case correctly.
	(adddi3_insn_sp32+1, adddi3_insn_sp32+2, andsi3+2): Likewise.

2000-06-23  Geoffrey Keating  <geoffk@cygnus.com>

	* alias.c (fixed_scalar_and_varying_struct_p): Don't examine
	struct vs. scalar-ness when -fno-strict-aliasing.

2000-06-23  Nathan Sidwell  <nathan@codesourcery.com>

	* cpplib.c (struct pragma_entry): New structure.
	(pragma_dispatch): Pragma dispatcher.
	(top_pragmas, gcc_pragmas): New static variables.
	(do_pragma): Use pragma_dispatch.
	(do_pragma_gcc): New pragma handler.
	* cpp.texi: Update.

2000-06-23  Jakub Jelinek  <jakub@redhat.com>

	* calls.c (compute_argument_addresses): Force stack slots into
	alias set 0.
	* expr.c (emit_push_insn): Force pushes into alias set 0.

2000-06-23  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.md (pred_rel_mutex): Only take one register.
	* config/ia64/ia64.c (emit_predicate_relation_info): Adjust to match.

2000-06-22  Jason Merrill  <jason@redhat.com>

	* toplev.c (compile_file): Always call timevar_print.
	* Makefile.in (calls.o): Depend on TIMEVAR_H.

2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>

	* varasm.c (constant_descriptor): Make contents unsigned char.
	(mark_const_hash_entry): Adjust.
	(const_hash): Just hash the code of unknown nodes.
	(compare_constant_1): Adjust for unsigned char.
	Use language specific expander on unknown nodes.
	(record_constant_1): Likewise.

2000-06-21  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (cpp_make_system_header): New function.
	* cpplib.h: Prototype it.
	* cpplib.c (do_line, do_pragma_system_header): Use it.
	* fix-header.c (read_scan_file): Use it.

	* fix-header.c (check_macro_names): Cast second arg of
	cpp_defined to const unsigned char *.
	(read_scan_file): Make getchar_call const unsigned char.

2000-06-21  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c: Include splay-tree.h, not hashtab.h.
	(redundant_include_p, make_IHASH, hash_IHASH, eq_IHASH): Delete.
	(destroy_include_file_node): New.
	(_cpp_init_include_hash): Rename _cpp_init_include_table.
	Create a splay tree, not a hash table.
	(open_include_file): Look up the path in the include table,
	do the multiple include optimization here, etc.
	(cpp_included): Walk the path.
	(find_include_file): Just walk the path calling
	open_include_file, or call it directly for an absolute path.
	(_cpp_fake_ihash): Rename _cpp_fake_include and update for new
	scheme.
	(read_include_file): Update for new scheme.  Don't close the
	file unless reading fails.
	(_cpp_execute_include, cpp_read_file): Tweak for new scheme.

	* cpphash.h (struct ihash, NEVER_REINCLUDE): Delete.
	(struct include_file): New.
	(NEVER_REREAD, DO_NOT_REREAD, CPP_IN_SYSTEM_HEADER): New
	macros.
	(CPP_PEDANTIC, CPP_WTRADITIONAL): Update.
	Update prototypes.

	* cppinit.c: Include splay-tree.h.
	(cpp_reader_init, cpp_cleanup): Update.

	* cpplib.h (struct cpp_buffer): Change ihash field to
	'struct include_file *inc'.  Remove system_header_p.
	(struct cpp_reader): Change all_include_files to a
	struct splay_tree_s *.

	* cpplex.c: Update all references to cpp_buffer->ihash and/or
	cpp_buffer->system_header_p.
	(cpp_pop_buffer): Close file here, only if DO_NOT_REREAD.

	* Makefile.in (SPLAY_TREE_H): New macro.
	(cppfiles.o, cppinit.o): Update dependencies.

Wed Jun 21 11:05:48 2000  Martin Buchholz <martin@xemacs.org>

	* invoke.texi (g++): "g++" is not a script anymore.

2000-06-20  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* function.c (round_down): Delete obsolete prototype.

	* pa.h (CPP_SPEC): Add whitespace after -D__STDC_EXT__.

2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in: Use 'test a = b' not 'test a == b'.
	* configure: Regen.

	* Makefile.in (fix-header): Link with $(LIBS) not $(HOST_LIBS).

	* Makefile.in: Remove all references to HOST_INTLLIBS.

	* cpplex.c (parse_name): Don't warn about $ in identifiers if
	skipping.

2000-06-20  Philipp Thomas  <pthomas@suse.de>

	* config/pa/pa.h(TARGET_SWITCHES): Require binutils 2.10 or later
	for PA 2.0.

Mon Jun 19 23:26:40 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* Take REG_INC notes into account.

2000-06-19  Zack Weinberg  <zack@wolery.cumb.org>

	* c-parse.in (undeclared_variable_notice): Moved to c-typeck.c.
	(primary: IDENTIFIER): Just call build_external_ref.
	* c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
	Regenerate.
	* c-lex.c (lastiddecl): Remove.
	(yylex): Replace all instances of lastiddecl with local
	variables.

	* c-typeck.c (build_external_ref): New function.  Treat decls
	with C_DECL_ANTICIPATED mostly the same as nonexistent decls.
	Look up the decl from the id here.  Call lookup_objc_ivar.
	* c-lang.c (lookup_objc_ivar): Stub.
	* objc/objc-act.c (lookup_objc_ivar): New function.

	* c-tree.h: Prototype lookup_objc_ivar and build_external_ref.
	* c-lex.h: Don't declare lastiddecl.

2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>

	* c-common.h (IF_COND): Added documentation.
	(THEN_CLAUSE): Likewise.
	(ELSE_CLAUSE): Likewise.
	(WHILE_COND): Likewise.
	(WHILE_BODY): Likewise.
	(DO_COND): Likewise.
	(DO_BODY): Likewise.
	(RETURN_EXPR): Likewise.
	(EXPR_STMT_EXPR): Likewise.
	(FOR_INIT_STMT): Likewise.
	(FOR_COND): Likewise.
	(FOR_EXPR): Likewise.
	(FOR_BODY): Likewise.
	(SWITCH_COND): Likewise.
	(SWITCH_BODY): Likewise.
	(CASE_LOW): Likewise.
	(CASE_HIGH): Likewise.
	(GOTO_DESTINATION): Likewise.
	(COMPOUND_BODY): Likewise.
	(ASM_CV_QUAL): Likewise.
	(ASM_STRING): Likewise.
	(ASM_OUTPUTS): Likewise.
	(ASM_INPUTS): Likewise.
	(ASM_CLOBBERS): Likewise.
	(DECL_STMT_DECL): Likewise.
	(STMT_EXPR_STMT): Likewise.
	(LABEL_STMT_LABEL): Likewise.

	* c-common.def: Added documenetion for SRCLOC, EXPR_STMT,
	COMPOUND_STMT, DECL_STMT, IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT,
	RETURN_STMT, BREAK_STMT, CONTINUE_STMT, SWITCH_STMT, GOTO_STMT,
	LABEL_STMT, ASM_STMT, SCOPE_STMT, CASE_LABEL, STMT_EXPR.

2000-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (--enable-checking): Update --help doc to reflect
	new defaults.  Ensure $ac_save_IFS is set before $IFS is changed.

Sun Jun 18 21:42:15 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (insert_insn_end_bb): Always put after NOTE_INSN_BASIC_BLOCK.

	* function.c (put_var_into_stack): Don't reference DECL_ fields
	if input is a SAVE_EXPR.
	Use set_mem_attributes in COMPLEX case.

2000-06-18  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h (process_for_unwind_directive): Declare.
	(ia64_file_start): Declare.
	* config/ia64/ia64.h (ADDL_REGNO_P): Don't compare unsigned against 0.
	(GR_REGNO_P): Likewise.
	* config/ia64/ia64.c: Many prototypes.
	(ia64_reg_numbers): Constify.
	(ia64_input_reg_names, ia64_local_reg_names): Likewise.
	(ia64_section_threshold): Make unsigned.
	(ia64_print_operand): Constify.
	(fix_range): Constify.
	(ia64_init_builtins): Don't compare signed vs unsigned.
	(ia64_expand_builtin): Likewise.

	* config/ia64/ia64.h (EXTRA_CONSTRAINT): New.
	(CONSTRAINT_OK_FOR_Q): New.
	* config/ia64/ia64.md (movdi_internal): Use Q for fp<->mem.
	(movsf_internal, movdf_internal): Likewise.
	(cmovdi_internal): Rewrite so that constraints and predicates match;
	simplify splitters.
	(cmovsi_internal): Likewise.

	* config/ia64/ia64.h (ASM_SPEC): Add -x for gas.
	(ASM_FILE_START): New.
	* config/ia64/ia64.c (ia64_file_start): New.
	(rtx_needs_barrier): Handle pred.rel.mutex.
	(emit_predicate_relation_info): New.
	* config/ia64/ia64.md (pred_rel_mutex): New.
	* config/ia64/linux.h (ASM_SPEC): Define.
	* config/ia64/sysv4.h (ASM_FILE_START): Define.

	* config/ia64/ia64.c (ia64_encode_section_info): Fix thinko
	filtering global register variables.

2000-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (add_c_tree_codes): Fix definition for traditional C.

2000-06-17  Michael Meissner  <meissner@redhat.com>

	* gcc.c (do_spec_1, '%v3' case): Do not abort if patch level is
	not present and there is a field after a '-'.

2000-06-17  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl:  finish the implementation of multiple tests
	for a single fix
	* fixinc/inclhack.def(ctrl_quotes_def): add a second test
	(io_quotes_def): add a second test
	(various): reorder `files' so that "limits.h" is never first
	* fixinc/tests/base/*: update the testing output

Sat Jun 17 10:33:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc.texi: Remove reference to stupid.c.

2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>

	* c-common.c (c_tree_code_type): New array.
	(c_tree_code_length): Likewise.
	(c_tree_code_name): Likewise.
	(add_c_tree_codes): New function.

	* c-common.h (add_c_tree_codes): Declare.
	(enum c_tree_code): New enum.

	* c-lex.c (init_parse): Added call to add_c_tree_codes.

2000-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/inclhack.def (ctrl_quotes_def, io_quotes_def): Modify
	select pattern to also match macro defs with only one argument.

Thu Jun 15 18:56:12 2000  Jeffrey A Law  (law@cygnus.com)

	* i386.md: Create new [right,left] rotate and right shift
	patterns to optimize shift by 1 bit for certain ia32 processors.
	Update patterns which perform left shifts to optimize shift by
	1 bit for certain ia32 processors.
	* i386.c (const_int_1_operand): New predicate.
	* i386.h (PREDICATE_CODES): Handle const_int_1_operand.
	* i386-protos.h (const_int_1_operand): Prototype.

Wed Jun 14 23:46:26 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* mips.c (machine_dependent_reorg): Fix braces for nested if.

2000-06-14  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (toc_hash_eq): Use CODE_LABEL_NUMBER to compare
	LABEL_REFs.

2000-06-14  Richard Henderson  <rth@cygnus.com>

	* conflict.c (conflict_graph_compute): Don't look for REG_INC.

	* config/ia64/ia64.c (ia64_setup_incoming_varargs): Don't emit
	auto-inc code.

	* print-rtl.c (print_rtx): Emit space before mem alias set.

2000-06-14  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (expand_block_move): Fix typo in earlier change.
	(print_operand): Remove unused variables neg and op.
	(toc_hash_mark_entry): Fix prototype.

2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>

	* c-common.h (IF_COND): Moved here from cp/cp-tree.h.
	(THEN_CLAUSE): Likewise.
	(ELSE_CLAUSE): Likewise.
	(WHILE_COND): Likewise.
	(WHILE_BODY): Likewise.
	(DO_COND): Likewise.
	(DO_BODY): Likewise.
	(RETURN_EXPR): Likewise.
	(EXPR_STMT_EXPR): Likewise.
	(FOR_INIT_STMT): Likewise.
	(FOR_COND): Likewise.
	(FOR_EXPR): Likewise.
	(FOR_BODY): Likewise.
	(SWITCH_COND): Likewise.
	(SWITCH_BODY): Likewise.
	(CASE_LOW): Likewise.
	(CASE_HIGH): Likewise.
	(GOTO_DESTINATION): Likewise.
	(COMPOUND_BODY): Likewise.
	(ASM_CV_QUAL): Likewise.
	(ASM_STRING): Likewise.
	(ASM_OUTPUTS): Likewise.
	(ASM_INPUTS): Likewise.
	(ASM_CLOBBERS): Likewise.
	(DECL_STMT_DECL): Likewise.
	(STMT_EXPR_STMT): Likewise.
	(LABEL_STMT_LABEL): Likewise.
	(SCOPE_BEGIN_P): Likewise.
	(SCOPE_END_P): Likewise.
	(SCOPE_STMT_BLOCK): Likewise.
	(SCOPE_NULLIFIED_P): Likewise.
	(SCOPE_NO_CLEANUPS_P): Likewise.
	(SCOPE_PARTIAL_P): Likewise.
	(ASM_VOLATILE_P): Likewise.
	(STMT_LINENO): Likewise.
	(STMT_LINENO_FOR_FN_P): Likewise.

	* c-common.def: New file. Added SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
	ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
	FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
	CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
	SCOPE_STMT, CASE_LABEL, STMT_EXPR.

	* gencheck.c (tree_codes[]): Added '#include "c-common.def"'.

2000-06-14  David O'Brien  <obrien@FreeBSD.org>

	* gcc.c (main): Quiet compiler warnings.  argv is assumed to be
	writable in parts of the GCC code.

	* config/elfos.h (ASM_GENERATE_INTERNAL_LABEL): Make printf
	specification match cast.

Wed Jun 14 09:25:57 2000  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Revert AC_TYPE_GETGROUPS patch from June 13.
	* configure, config.in: Rebuilt.
	* sys-protos.h: Similarly.

Wed Jun 14 03:39:58 EDT 2000  John Wehle  (john@feith.com)

	* ifcvt.c (EDGE_COMPLEX): Move definition ...
	* basic-block.h (EDGE_COMPLEX): ... here.

	* loop.c (check_dbra_loop): Specify the register when
	generating REG_NONNEG notes and don't generate duplicates.

2000-06-13  Jakub Jelinek  <jakub@redhat.com>

	* tree.h (TYPE_USER_ALIGN, DECL_USER_ALIGN): Define.
	(struct tree_type, struct tree_decl): Add user_align member.
	* stor-layout.c (layout_decl): Set DECL_USER_ALIGN.
	(place_union_field): If BIGGEST_FIELD_ALIGNMENT is defined
	and DECL_USER_ALIGN 0, cap alignment to this value.
	(place_field): Likewise.
	(finalize_type_size): Set TYPE_USER_ALIGN.
	(layout_type): Likewise.
	(initialize_sizetypes): Likewise.
	* c-common.c (decl_attributes): Set TYPE_USER_ALIGN resp.
	DECL_USER_ALIGN to 1.
	* c-decl.c (duplicate_decls): Set DECL_USER_ALIGN.
	(xfer_tag): Set TYPE_USER_ALIGN.
	(finish_struct): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(finish_enum): Likewise.
	* stmt.c (expand_decl): Set DECL_USER_ALIGN.
	(expand_anon_union_decl): Likewise.
	* tree.c (make_node): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(build_index_type): Set TYPE_USER_ALIGN.
	(build_range_type): Likewise.
	(build_common_tree_nodes_2): Likewise.
	* tm.texi (BIGGEST_FIELD_ALIGNMENT): Document the changed meaning.

2000-06-13  Andreas Jaeger  <aj@suse.de>

	* configure.in: Use --enable-checking=misc,tree,gc by default if
	no --enable-checking option is given and for
	--enable-checking=yes.
	* configure: Rebuilt.

2000-06-13  Richard Henderson  <rth@cygnus.com>

	* libgcc2.c (ia64_throw_helper): Use __builtin_return_address.
	(__throw): Don't pass the address of a label.

	* config/ia64/ia64.c (ia64_compute_frame_size): Use
	current_function_is_leaf.
	(ia64_expand_prologue): Likewise.  Modify return_address_pointer_rtx
	instead of reg_names[RETURN_ADDRESS_REGNUM].
	(ia64_init_machine_status): Reset return_address_pointer_rtx.
	* config/ia64/ia64.h (RETURN_ADDRESS_POINTER_REGNUM): Rename
	from RETURN_ADDRESS_REGNUM.  Update all uses.
	(RETURN_ADDR_RTX): Use return_address_pointer_rtx; return
	zero instead of null on failure.
	(ELIMINABLE_REGS): Add ra->b0 elimination.
	(CAN_ELIMINATE): Update accordingly.
	(INITIAL_ELIMINATION_OFFSET): Likewise.
	(REGISTER_NAMES): Use an illegal assembler name for
	RETURN_ADDRESS_POINTER_REGNUM.

2000-06-13  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.h (enum reg_class): Remove FR_INT_REGS, FR_FP_REGS,
	GR_AND_FR_INT_REGS, GR_AND_FR_FP_REGS.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(FR_FP_REGNO_P, FR_INT_REGNO_P): Remove.
	(HARD_REGNO_MODE_OK): Remove references to them.
	(REGNO_REG_CLASS): Likewise.
	(REG_CLASS_FROM_LETTER): Likewise.
	(CLASS_MAX_NREGS): Likewise.
	(REGISTER_MOVE_COST): Likewise.
	* config/ia64/ia64.c (ia64_secondary_reload_class): Likewise.
	* config/ia64/ia64.md (*): Replace "e" constraints with "f".
	(movqi_internal): Special case moves from zero.
	(movhi_internal, movsi_internal): Likewise.
	(movdi_internal): Likewise.  Fill out "f" constraints.
	(movsf_internal): Fill out "r" constraints.
	(movdf_internal): Likewise.

2000-06-13  Richard Henderson  <rth@cygnus.com>

	* flow.c (insn_dead_p): Keep sets to PIC_OFFSET_TABLE_REGNUM
	alive before reload.

	* haifa-sched.c (struct deps): Add in_post_call_group_p.
	(add_dependence): Handle notes between SCHED_GROUP_P insns.
	(remove_dependence): Always define.
	(set_sched_group_p): New.
	(sched_analyze_2): Use it.
	(sched_analyze_insn): Don't special-case naked uses.  Look for
	and extend in_post_call_group_p.
	(sched_analyze): Clear stale SCHED_GROUP_P.  Set in_post_call_group_p.
	(init_deps): Clear in_post_call_group_p.

2000-06-13  Richard Henderson  <rth@cygnus.com>

	* combine.c (subst): Use CLASS_CANNOT_CHANGE_MODE and
	CLASS_CANNOT_CHANGE_MODE_P instead of CLASS_CANNOT_CHANGE_SIZE
	and hard-coded tests.
	(simplify_set): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* emit-rtl.c (gen_lowpart_common): Likewise.
	* global.c (find_reg): Likewise.
	* local-alloc.c (find_free_reg): Likewise.
	* recog.c (register_operand): Likewise.
	* regclass.c (init_reg_sets_1): Likewise.
	(record_operand_costs, regclass): Likewise.
	* reload.c (push_reload): Likewise.
	* reload1.c (choose_reload_regs): Likewise.
	* flow.c (mark_used_regs): Conditionally set REG_CHANGES_MODE.
	* local-alloc.c (struct qty): Rename changes_size to changes_mode.
	Update all references.
	* regs.h (struct reg_info_def): Likewise.
	(REG_CHANGES_MODE): Rename from REG_CHANGES_SIZE.
	* tm.texi (CLASS_CANNOT_CHANGE_MODE): Document.
	(CLASS_CANNOT_CHANGE_MODE_P): Likewise.

	* config/alpha/alpha.h (CLASS_CANNOT_CHANGE_MODE): Rename.
	(CLASS_CANNOT_CHANGE_MODE_P): New.
	* config/mips/mips.h: Likewise.
	* config/pa/pa32-regs.h: Likewise.
	* config/pa/pa64-regs.h: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/sh/sh.h: Likewise.
	* config/ia64/ia64.h (CLASS_CANNOT_CHANGE_MODE): New.
	(CLASS_CANNOT_CHANGE_MODE_P): New.
	* config/avr/avr.h (CLASS_CANNOT_CHANGE_SIZE): Remove dead code.
	* config/d30v/d30v.h: Likewise.

2000-06-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* configure.in: Add AC_TYPE_GETGROUPS test.
	* sys-protos.h: Use GETGROUPS_T * for second arg of getgroups.
	* configure: Rebuilt.
	* config.in: Rebuilt.

2000-06-13  Richard Henderson  <rth@cygnus.com>

	* explow.c (set_mem_attributes): Do nothing for NULL type.

Tue Jun 13 14:45:10 2000  Jeffrey A Law  (law@cygnus.com)

	* config/m68k/openbsd.h (ASM_SPEC): pass down options to assembler
	correctly.

2000-06-13  James E. Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.md (movxf_internal): Add missing "e" to ldf/stf.

Tue Jun 13 14:05:35 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (gensupport.o): Remove bogus $(HOST_PREFIX) reference.

2000-06-13  Philipp Thomas  <pthomas@suse.de>

	* configure.in(ALL_LINGUAS): Changed en_UK to en_GB.
	* configure: Rebuilt.

2000-06-07  David O'Brien  <obrien@FreeBSD.org>

	* configure.in:  Adjust FreeBSD bits to match changes to config.guess.
	We now default to ELF for the i386, and a.out is the special case.
	* configure:  Rebuilt.

Tue Jun 13 10:05:30 2000  Hans-Peter Nilsson  <hp@axis.com>

	* final.c (final_scan_insn): Delete notes between cc0 setter and
	user when restarting from setter.

2000-06-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (INDEX_TERM_P): Define evaluation order of &&'s in || and
	cast to squelch signed/unsigned warnings.

2000-06-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (handle_directive): Print non-NUL-terminated string
	with %.*s.

2000-06-12  Michael Meissner  <meissner@redhat.com>

	* ifcvt.c (dead_or_predicable): Don't do conditional execution
	path if the machine needs extra support to do conditional
	execution.

Mon Jun 12 17:04:17 2000  Jeffrey A Law  (law@cygnus.com)

	* print-rtl.c (print_rtx, case MEM): Use HOST_WIDE_INT_PRINT_DEC
	to print the alias set.
	* print-tree.c (print_node, DECL_* nodes and case 't'): Similarly.

2000-06-12  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* config/float-vax.h: Add GFLOAT defines.

Mon Jun  12  9:44:00 2000  Mark Klein  <mklein@dis.com>

	* configure.in: Update tm dependencies for MPE.
	* configure: Rebuilt.

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

	* gengenrtl.c (obstack_alloc_rtx): Correct the allocated size.

2000-06-12  David Edelsohn  <edelsohn@gnu.org>

	* aix41.h (SUBTARGET_SWITCHES): Delete threads.
	(CPP_SPEC): Change mthreads to pthread.
	(LIB_SPEC): Likewise.
	(STARTFILE_SPEC): Likewise.
	* aix43.h (SUBTARGET_SWITCHES): Delete threads.
	(CPP_SPEC): Change mthreads to pthread.
	(LIB_SPEC): Likewise.
	(STARTFILE_SPEC): Likewise.
	* rs6000-protos.h (reg_or_arith_cint_operand): New.
	* rs6000.c (reg_or_arith_cint_operand): New.
	(num_insns_constant_wide): Decorate unsigned constant.
	* rs6000.h (PREDICATE_CODES): Add reg_or_arith_cint_operand.
	* rs6000.md (addsi3): Use new predicate.
	(subsi3, adddi3, subdi3): Likewise.

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

	* c-common.c (lang_get_alias_set): Fix typo.

2000-06-12  Richard Earnshaw <rearnsha@arm.com>

	* flow.c (mark_used_regs): Revert last change.
	(life_analysis): Remove PROP_AUTOINC if running after reload.
	(propagate_one_insn): PROP_AUTOINC is always off after reload.

2000-06-11  Richard Earnshaw <rearnsha@arm.com>

	* flow.c (mark_used_regs): Don't call find_auto_inc after reload
	has run.

2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bb-reorder.c (build_scope_forest): Initialize variable
	`curr_scope'.

	* calls.c (expand_call): Likewise for variables
	`save_pending_stack_adjust' and `save_stack_pointer_delta'.

	* i386.c (function_arg_advance, function_arg): Cast to avoid
	signed/unsigned warnings.

	* i386.h (MEMORY_MOVE_COST): Likewise.

	* ifcvt.c (cond_exec_process_if_block): Initialize variables
	`else_start' and `else_end'.

	* libgcc2.h (__eh_alloc, __eh_free): Prototype.

	* regrename.c (rr_replace_reg): Initialize variable `dest_subregno'.

2000-06-10  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (libintl.a): Depend on intl.all.

2000-06-09  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (c-parse.o): Also depend on output.h.

2000-06-09  Rodney Brown  <RodneyBrown@mynd.com>

	* mcore-protos.h: discards const warning removal.
	* mcore.c: discards const warning removal.

2000-06-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/lib1funcs.asm: Declare the machine architecture at
	the beginning of the file.

2000-06-09  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* real.h:  Add prototype for ldexp.

2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>

	* ggc-none.c, ggc-simple.c, ggc-page.c (ggc_alloc_obj): Rename
	it ggc_alloc, drop second argument, never clear returned memory.
	* ggc-common.c (ggc_alloc_string): Use ggc_alloc.
	(ggc_alloc_cleared): New.
	* ggc.h: Prototype ggc_alloc and ggc_alloc_cleared, not
	ggc_alloc_obj.  Remove ggc_alloc macro.
	(ggc_alloc_rtx, ggc_alloc_rtvec, ggc_alloc_tree): Use ggc_alloc.

	* rtl.c (rtvec_alloc): Clear the vector always.
	(rtx_alloc): Clear the first word always.  Remove dirty
	obstack tricks (this routine is no longer a bottleneck).
	* tree.c (make_node): Clear the new node always.
	(make_tree_vec): Likewise.
	(tree_cons): Clear the common structure always.
	(build1): Likewise; also, clear TREE_COMPLEXITY.
	* gengenrtl.c: Use puts wherever possible.  Remove extra
	newlines.
	(gendef): Clear the first word of an RTX in the generator
	function, irrespective of ggc_p.  Initialize '0' slots to
	NULL.
	(genlegend): Don't generate obstack_alloc_rtx routine, just a
	thin wrapper macro around obstack_alloc.

	* stmt.c (expand_fixup): Use ggc_alloc.
	* c-typeck.c (add_pending_init): Use ggc_alloc.
	* emit-rtl.c (init_emit_once): Clear CONST_DOUBLE_CHAIN(tem).
	* varasm.c (immed_double_const): Set CONST_DOUBLE_MEM(r) to
	const0_rtx when it is created.
	(immed_real_const_1): Set CONST_DOUBLE_CHAIN(r) to NULL_RTX if
	we are not in a function.

	* tree.c (tree_class_check_failed): Make second arg an int.
	* tree.h: Update prototype.

2000-06-09  Geoff Keating  <geoffk@cygnus.com>

	* tree.h (VOID_TYPE_P): Don't look at the TYPE_MAIN_VARIANT
	of an error_mark_node.

Fri Jun  9 20:35:13 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (asm_output_section_name): bugfix.

2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>

	* timevar.def: Add TV_EXPAND.
	* timevar.c (timevar_print): Update timing information.
	* calls.c (try_to_integrate): Push to TV_INTEGRATION for inlining.

	* stmt.c (expand_return): Check for error_mark_node.

2000-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Also avoid wrapping auto-build.h with IN_GCC.

	* scan-types.sh (VALUE) Wrap use with double quotes to protect
	variable against filename expansion when it contains "char *".

	* system.h (SSIZE_MAX): Delete backup definition.

	* cppfiles.c (read_include_file): Use INTTYPE_MAXIMUM(ssize_t)
	instead of SSIZE_MAX.

2000-06-09  Jakub Jelinek  <jakub@redhat.com>

	* configure.in: Check whether gas supports -relax.
	* configure, config.in: Rebuilt.
	* config/sparc/sparc.h (ASM_RELAX_SPEC): Define.
	(EXTRA_SPECS): Add asm_relax.
	(ASM_SPEC): Add %(asm_relax).
	(TARGET_SWITCHES): Add -mrelax and -mno-relax.
	* config/sparc/linux64.h (LINK_ARCH_SPEC): Rename to LINK_SPEC.
	(LINK_SPEC): Pass -relax to linker unless -mno-relax or -r.
	(ASM_SPEC): Add %(asm_relax).
	* config/sparc/linux.h (LINK_SPEC, ASM_SPEC): Likewise.
	* config/sparc/sparc.c (output_sibcall): If HAVE_AS_RELAX_OPTION,
	never use sethi/jmpl for leaf tail calls.  Use or with rs2 %g0
	instead of mov, so that gas can further optimize it.

2000-06-08  James E. Wilson  <wilson@bletchleypark.cygnus.com>

	* dwarf2out.c (size_of_die, case dw_val_class_const): Use
	size_of_sleb128.
	(value_format, case dw_val_class_const): Use sdata format.
	(output_die): Call output_sleb128.

2000-06-08  James E. Wilson  <wilson@cygnus.com>

	* dwarf2out.c (ASM_OUTPUT_DWARF_DATA8): Add new macro that uses
	UNALIGNED_DOUBLE_INT_ASM_OP.  Rename old macro to
	ASM_OUTPUT_DWARF_CONST_DOUBLE.
	(output_die, case dw_val_class_unsigned_const): Correct call to
	ASM_OUTPUT_DWARF_DATA8.
	(output_die, case dw_val_class_long_long): Use
	ASM_OUTPUT_DWARF_CONST_DOUBLE.
	* tree.c (host_integerp): Accept unsigned HOST_WIDE_INT values when
	pos is zero.

	* config/ia64/ia64-protos.h (ia64_output_end_prologue): Add.
	(output_function_prologue): Fix mispelling.
	(output_function_prologue, output_function_epilogue): Reorder to
	match ia64.c definition order.
	* config/ia64/ia64.c (ia64_expand_prologue): Add comment.
	(ia64_expand_epilogue): Set RTX_FRAME_RELATED_P on stack restore insns.
	Use r3 instead of r2 for large stack restores.
	(ia64_output_end_prologue): New function.
	(process_set): Emit ".restore sp" for epilogue stack restores.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Define.

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

	* dbxout.c (dbxout_type_fields): Don't segfault on fields with
	incomplete types.

2000-06-08  Nathan Sidwell  <nathan@codesourcery.com>

	* frame.c (end_fde_sort): Remove extraneous erratic array test.

2000-06-08  Denis Perchine <dyp@perchine.com>

	* frame.c (start_fde_sort): Don't malloc (0).

2000-06-07  Zack Weinberg  <zack@wolery.cumb.org>

	* c-decl.c (pushdecl): Do not call COMPLETE_TYPE_P on
	error_mark_node.
	* print-tree.c (print_node): The transparent_union_flag means
	different things for unions and arrays.  Do not inspect it
	with TYPE_TRANSPARENT_UNION.

2000-06-06  Jakub Jelinek  <jakub@redhat.com>

	* cpplib.c (do_ifdef, do_ifndef): Don't segfault if parse_ifdef
	returned NULL.

Wed Jun  7 20:34:33 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (asm_output_section_name): output section
	attributes.
	* config/avr/libgcc.S (.text.libgcc): declare section attributes.

2000-06-06  James E. Wilson  <wilson@cygnus.com>

	* frame.h (struct unwind_info_ptr): Collapse version, flags, and length
	fields into header field.
	(IA64_UNW_HDR_LENGTH, IA64_UNW_HDR_FLAGS, IA64_UNW_HDR_VERSION): New
	macros to access length, flags, and version info from header field.
	* config/ia64/crtbegin.asm (__do_frame_setup_aux): Delete here.
	* config/ia64/crtend.asm (__do_frame_setup_aux): Add here.
	(__do_global_ctors_aux): Fix caller.
	* config/ia64/frame-ia64.c (get_unwind_record): Change parameter
	prologue_flag to header.  Pass to read_P_record.
	(read_P_record): New argument header.  Implement P4 format.
	Multiply P7_T_SIZE by 16.
	(execute_one_ia64_descriptor): New static local region_header.  Pass to
	get_unwind_record.  Copy r to region_header if r is a header record.
	(print_all_records): Likewise.
	(__build_ia64_frame_state): Use IA64_UNW_HDR_LENGTH.
	(__get_personality, __get_except_table): Likewise.
	* config/ia64/ia64.c (process_set): Do not divide offsets by 4.

2000-06-06  Philipp Thomas  <pthomas@suse.de>

	* configure.in (AC_C_INLINE): Added.
	* aclocal.m4 (AM_WITH_NLS): Enable --with-included-gettext by default.
	* configure: Regenerate.

2000-06-06  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (c_language_kind): New type.
	(c_language): New variab.e
	* c-common.c (lang_get_alias_set): Don't put structures in
	nonzero alias sets in C++.
	* c-decl.c (c_language): Define it.
	* c-lex.c (doing_objc_thang): Remove.
	* c-tree.h (doing_objc_thang): Make it a macro.
	* objc/objc-act.c (lang_decode_option): Set c_language, not
	doing_objc_thang.

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

	* diagnostic.c (output_maximum_width): Remove.
	(doing_line_wrapping): Tweak.
	(diagnostic_buffer): New object.
	(global_output_buffer): New object.
	(output_destroy_prefix): New function.
	(default_initialize_buffer): Likewise.
	(reshape_diagnostic_buffer): Likewise.
	(initialize_diagnostics): Likewise.
	(output_clear): Tweak.
	(line_wrapper_printf): Adjust call to init_output_buffer.
	(vline_wrapper_message_with_location): Likewise.  Use
	output_destroy_prefix.
	(v_message_with_decl): Likewise.

	* diagnostic.h (struct output_buffer): Constify prefix.
	(init_output_buffer, output_get_prefix): Constify.
	(diagnostic_message_length_per_line): Likewise.
	(reshape_diagnostic_buffer): Declare.
	(default_initialize_buffer): Declare.
	(initialize_diagnostics): Declare.
	(diagnostic_buffer): Declare new obbject.

	* toplev.c: #include diagnostic.h
	(display_help): Document diagnostic formatting options.
	(decode_f_option): Handle diagnostic formatting options.
	(main): Setup initialization for diagnostic messages outputter.

	* toplev.h (set_message_length): Remove.

	* Makefile.in (toplev.o): Depends upon diagnostic.h

	* invoke.texi : Document diagnostics formatting options.

Tue Jun  6 19:25:32 2000  Philippe De Muyter  <phdm@macqel.be>

	* configure.in (Make the links): Typo fix : the file that must be
	included without #ifdef IN_GCC is `auto-host.h', not `auto-config.h'.
	* configure: File rebuilt.

2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>

	* eh-common.h (EH_ALLOC_SIZE, EH_ALLOC_ALIGN): New #defines.
	(eh_context): Add alloc_mask and alloc_buffer emergency fallback
	space.
	* libgcc2.c (__eh_alloc): Moved from cp/exception.cc. Fallback on
	emergency eh_context buffer, if malloc fails.
	(__eh_free): Moved from cp/exception.cc. Release to emergency
	eh_context buffer, if appropriate.

2000-06-06  Jason Merrill  <jason@casey.soma.redhat.com>

	* expr.c (store_expr): Fix typo.

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

	* m68k.c (legitimize_pic_address): Move prototype ...

	* m68k-protos.h (legitimize_pic_address): ... here.

	* m68k.md (legitimize_pic_address): Delete prototypes.
	(untyped_call): Invoke GEN_CALL(), not gen_call().

	* nextstep.c: Include system.h and toplev.h.
	(get_directive_line): Don't prototype.
	(handle_pragma): Mark parameters with ATTRIBUTE_UNUSED and constify.

	* nextstep.h (handle_pragma): Prototype.
	(SECTION_FUNCTION): Prototype FUNCTION().  Move prototype of
	objc_section_init ...
	(EXTRA_SECTION_FUNCTIONS): ... here.

Tue Jun  6 08:17:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sdbout.c (struct sdb_file): NAME now const.
	(sdbout_init): input_file_name now const.
	(sdbout_start_new_source_file): FILENAME now const.
	* sdbout.c (sdbout_init, sdbout_start_new_source_file): Reflect above.

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

	* c-typeck.c (build_conditional_expr): Handle complex data types.

2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>

	* explow.c (maybe_set_unchanging): New function, broken out from...
	(set_mem_attributes): Here.
	* expr.h: Declare it.
	* stmt.c (expand_decl): Call it.

2000-06-05  Richard Henderson  <rth@cygnus.com>

	* reload1.c (choose_reload_regs): Mind CLASS_CANNOT_CHANGE_SIZE
	while looking for a register to inherit from.

2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>

	* Makefile.in (libgcc.ready): Lose.
	(libgcc.mk): Just use mv, not move-if-change.
	(LIBGCC_DEPS): New macro.
	(libgcc.a): Use it.
	(stmp-multilib): Likewise.
	* mklibgcc.in (stmp-dirs): New target.  Make everything depend on
	it rather than the directories themselves.
	(LIB2ADD): Depend on the list file rather than 'force'.

	* fold-const.c (fold, case COND_EXPR): Elide conversion between
	cv-qualified versions of types.

Mon Jun  5 14:06:18 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.c (short_branch): Correct error in range
	computation.

2000-06-05  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* fixinc/inclhack.def: New include hacks for ultrix.
	* (nested_ultrix): Replaced by ultrix_nested_svc.
	* (ultrix_atof_param): test_text string added.
	* (ultrix_ifdef): Modified select string.

2000-06-05  Zack Weinberg  <zack@wolery.cumb.org>

	* objc/objc-act.c (generate_method_descriptors): Register
	objc_method_prototype_template as a GC root.
	(comp_method_with_proto): Register function_type as a GC root.
	(comp_proto_with_proto): Replace function_type1 and
	function_type2 with a two-element array; register it as a GC root.

	(generate_protocols, build_protocol_initializer,
	generate_protocol_list, build_category_initializer,
	build_shared_structure_initializer): Do not cache cast_type
	and/or cast_type2.

2000-06-05  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* function.c (assign_parms): Add missing argument to set_mem_attributes
	call.

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

	* tree.h (VOID_TYPE_P): New macro.
	(COMPLETE_OR_VOID_TYPE_P): Use VOID_TYPE_P.
	* c-decl.c (grokdeclarator): Use VOID_TYPE_P.
	(get_parm_info): Likewise.
	(store_parm_decls): Likewise.
	(combine_parm_decls): Likewise.
	(finish_function): Likewise.
	* c-typeck.c (build_function_call): Likewise.
	(build_binary_op): Likewise.
	(build_conditional_expr): Likewise.
	(internal_build_compound_expr): Likewise.
	(convert_for_assignment): Likewise.
	* stmt.c (expend_expr_stmt): Likewise.
	(warn_if_unused_value): Likewise.
	(expand_return): Likewise.
	* c-parse.in (primary): Likewise.
	* c-parse.y, c-parse.c, c-parse.h: Regenerate.
	* objc/objc-parse.y, objc/objc-parse.c: Regenerate.

Mon Jun  5 06:46:28 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (get_alias_set): If compnent is addressable, use alias
	set of component.
	* c-decl.c (init_decl_processing): Don't call record_component_aliases.
	(grokdeclarator): Likewise.
	* c-typeck.c (common_type): Likewise.

2000-06-04  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (OBJS): Remove dyn_string.o
	(dyn-string.o): Delete rule.
	* dyn-string.c: Delete file
	* dyn-string.h: Likewise.

2000-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (intl.*): Honor nonzero exit codes in the intl
	subdir.

2000-06-03  Geoff Keating  <geoffk@cygnus.com>

	* alias.c (record_component_aliases): Don't inspect
	DECL_NONADDRESSABLE_P of non-FIELD_DECL components of structures.

Sat Jun  3 19:05:30 2000  Michael Meissner  <meissner@redhat.com>

	* ifcvt.c (process_insns): If IFCVT_MODIFY_INSN is defined, call
	it with the pattern to do machine dependent work.
	(cond_exec_process_if_block): If IFCVT_MODIFY_TESTS is defined,
	use it to modify the true/false tests used in conditional
	execution.  If IFCVT_MODIFY_FINAL and IFCVT_MODIFY_CANCEL are
	defined, invoke them if the conversion to conditional execution
	was successful or not.

	* tm.texi (IFCVT_MODIFY_TESTS): Document.
	(IFCVT_MODIFY_INSN): Ditto.
	(IFCVT_MODIFY_FINAL): Ditto.
	(IFCVT_MODIFY_CANCEL): Ditto.

Sat Jun  3 15:26:13 2000  Matt Kraai <kraai@alumni.carnegiemellon.edu>

	* toplev.c (main): Fix misspellings of possibility and language.

2000-06-03  Richard Henderson  <rth@cygnus.com>

	* alias.c (record_alias_subset): Initialize has_zero_child in the
	superset.

2000-06-03  Richard Earnshaw (rearnsha@arm.com)

	* arm.md (untyped_call): Use GEN_CALL macro.

2000-06-02  Pekka Nikander  <pnr@teldanex.tcm.hut.fi>

	* Makefile.in: Use $(MAKE) not "make"

Fri Jun  2 19:31:03 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (struct alias_set_entry): New field has_zero_child.
	(mem_in_disjoint_alias_sets_p): Return 0 if set in either ase.
	(get_alias_set): If language-dependent routine set TYPE_ALIAS_SET,
	do nothing.
	Call record_component_aliases for aggregate types.
	(record_alias_subset): Set has_zero_child.
	(record_component_aliases, case ARRAY_TYPE): Do nothing if
	TYPE_NONALIASES_COMPONENT.
	(record_component_aliases, case RECORD_TYPE): Test
	DECL_NONADDRESSABLE_P.
	* c-decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead
	of TREE_ADDRESSABLE.
	* calls.c (initialize_argument_information): Only test
	TYPE_TRANSPARENT_UNION for UNION_TYPE.
	* function.c (assign_parms): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	* stor-layout.c (finish_record_layout): Don't call
	record_component_aliases.
	* tree.h (struct tree_int_cst): Use struct tree_common.
	(struct tree_real_cst, struct tree_string): Likewise.
	(struct tree_complex, struct tree_identifier): Likewise.
	(struct tree_list, struct tree_vec, struct tree_exp): Likewise.
	(struct tree_block, struct tree_type, struct tree_decl): Likewise.
	(TYPE_TRANSPARENT_UNION): Use UNION_TYPE_CHECK.
	(TYPE_NONALIASES_COMPONENT): New macro.
	(TYPE_AMBIENT_BOUNDEDNESS): Use FUNCTION_TYPE_CHECK.
	(DECL_NONADDRESSABLE_P): New macro.
	(struct tree_decl): Reorder bits for clarity of how many left;
	add non_adressable.

2000-06-02  Jason Merrill  <jason@casey.soma.redhat.com>

	* Makefile.in (libgcc.a): Also depend on $(LIB2ADD).
	* mklibgcc.in (force): New target.
	Make LIB2ADD stuff depend on it.

2000-06-02  Richard Henderson  <rth@cygnus.com>

	* alias.c (lang_get_alias_set): Remove.
	(get_alias_set): Call it directly, not indirectly.
	* c-common.c (lang_get_alias_set): Rename from c_get_alias_set.
	* c-common.h (c_get_alias_set): Don't declare.
	* c-decl.c (init_decl_processing): Don't set lang_get_alias_set.
	* expr.h (lang_get_alias_set): Declare as function, not pointer.

2000-06-02  Bruce Korb  <bkorb@gnu.org>

	* fixinc/server.c(sig_handler):  resume closing server on SIGPIPE
	(server_setup):  define the server's master pid
	(close_server):  actually do the deed IFF we are the server's master

2000-06-02  Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (c_get_alias_set): Check whether signed_type did not
	return its argument before calling get_alias_set on the result.

2000-06-02  Andrew MacLeod  <amacleod@cygnus.com>

	* expr.c (emit_group_load): Fix typo, GET_MODE not GET_CODE.

Fri Jun  2 00:22:52 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (CPP_SPEC): Add -D__NOMACSAVE__ for -mnomacsave.
	(CONDITIONAL_REGISTER_USAGE): Mac registers are call used
	for TARGET_NOMACSAVE.
	(NOMACSAVE_BIT): Define.
	(TARGET_NOMACSAVE): Define.
	(TARGET_SWITCHES): Add "nomacsave".

2000-06-02  Toshiyasu Morita  <toshi.morita@sega.com>

	* sh.md (untyped_call): Remove excess parameters

2000-06-01  Loren J. Rittle  <ljrittle@acm.org>

	* fixinc/inclhack.def (osf_namespace_a): Relax expression to
	match that used before the conversion to c_fix style.
	* fixinc/fixincl.x: regenerate

2000-06-01  Stan Cox  <scox@cygnus.com>

	* varray.h (VARRAY_PUSH_GENERIC_PTR, VARRAY_PUSH_CHAR_PTR): Fix
	macro argument typo.

2000-06-01  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (maybe_macroexpand): Use CPP_WTRADITIONAL.  Improve
	error message.
	* cpplib.c (parse_include): Remove support for VAX-C
	"#include starlet" misfeature.

2000-05-31 Laurynas Biveinis <lauras@softhome.net>

	* cppfiles.c: conditionally define O_BINARY.
	(open_include_file): pass O_BINARY to open().

2000-06-01  Richard Henderson  <rth@cygnus.com>

	* i960.c (i960_br_predict_opcode): Remove.
	(i960_print_operand) [+]: Emit branch prediction hints.
	(i960_function_arg): Return early for VOIDmode.
	(i960_round_align): Return early for incomplete types.
	* i960.h (PRINT_OPERAND_PUNCT_VALID_P): New.
	* i960.md (all conditional branches): Add "%+".

Thu Jun  1 12:24:21 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (get_alias_set): Don't call language-specific routine more
	than is needed and clean up code a bit.
	* c-common.c (c_get_alias_set): All references whose type
	is char get alias set 0, but character types need not.
	* varasm.c (make_function_rtl): Don't call set_mem_attributes.
	(make_decl_rtl): Don't call it for FUNCTION_DECL.

2000-06-01  Bruce Korb  <bkorb@gnu.org>

	* fixinc/tests/base/...: new base result files

Thu Jun  1 09:37:35 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* config/i386/i386.c (ix86_use_fcomi_compare): Make global.
	* config/i386/i386-protos.h (ix86_use_fcomi_compare): Declare.
	* config/i386/i386.md (*fp_jcc_3, *fp_jcc_4): Disable if we
	will use FCOMI.

2000-06-01  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (c-decl.o): Depend on $(EXPR_H), not expr.h.

	* c-decl.c (init_decl_processing): Set lang_get_alias_set first thing.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (sdata_symbolic_operand): Consider small
	CONSTANT_POOL_ADDRESS_P addresses for .sdata.
	* config/ia64/sysv4.h (SELECT_RTX_SECTION): New.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64-protos.h (ia64_expand_prediction): Remove.
	* config/ia64/ia64.c (ia64_expand_prediction): Move code ...
	(ia64_print_operand) [+]: ... here.  Use current_output_insn.
	* config/ia64/ia64.h (PRINT_OPERAND_PUNCT_VALID_P): New.
	* config/ia64/ia64.md (all branch/call patterns): Use %+.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (cond_exec_process_insns): Don't ever ignore clobbers.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (merge_if_block): Be prepared for JOIN to have no
	remaining edges.
	(find_if_block): Allow THEN with no outgoing edges.
	* flow.c (merge_blocks_nomove): Remove a barrier not following
	a jump as well.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* flow.c (propagate_block): Move initialization of mem_set_list ...
	(init_propagate_block_info): ... here.  Also track blocks with
	no successors; don't scan insns if ! PROP_SCAN_DEAD_CODE.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* jump.c (jump_optimize_1): Revert 05-18 change.

2000-05-31  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi: Remove documentation for -fguiding-decls.

2000-05-31  Richard Henderson  <rth@cygnus.com>

	* configure.in: Fix typo last change.

2000-05-31  Philipp Thomas  <pthomas@suse.de>

	* configure.in (enable-nls): Enable if build == host, i.e. when
	not building a canadian cross compiler.
	(enable-maintainer-mode): Added for use with i18n.
	* aclocal.m4 (AM_GNU_GETTEXT): Only build catalogs that are a
	cross section of ALL_LINGUAS and LINGUAS.
	* configure: Rebuild.

2000-05-31  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl: rework to use test result tree
	* fixinc/Makefile.in: change invocation of check script
	* fixinc/check.diff: No longer needed
	* fixinc/fixincl.x: regenerate
	* fixinc/inclhack.def:  add new tests
	* fixinc/tests/base/arch/i960/archI960.h:  New test result
	* fixinc/tests/base/curses.h: modified test result
	* fixinc/tests/base/stdio.h: ditto
	* fixinc/tests/base/time.h: ditto
	* fixinc/tests/base/sys/asm.h: ditto
	* fixinc/tests/base/sys/stat.h: ditto
	* fixinc/tests/base/sys/wait.h: ditto

Wed May 31 13:17:20 2000  Philippe De Muyter  <phdm@macqel.be>

	* except.c (clear_function_eh_region): Do not free NULL.

Wed May 31 08:07:52 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
	* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
	(REG_BASE_VALUE): Remove unneeded cast to unsigned.
	(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
	(find_base_decl): New function, from c_find_base_decl in c-common.c.
	(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
	(get_alias_set): Likewise.
	Major rework to do more things and allow language-specific code
	to just handle special-cases.
	(record_alias_subset): Args are HOST_WIDE_INT.
	(record_component_alias): Local vars are HOST_WIDE_INT.
	Don't handle COMPLEX_EXPR.
	(get_varargs_alias_set): Moved from builtins.c.
	(get_frame_alias_set): New function.
	* builtins.c (expand_builtin_return_address): Use frame alias set.
	(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
	for setjmp buffer.
	(get_memory_rtx): Rework to use set_mem_attributes.
	(get_varargs_alias_set): Deleted from here.
	* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
	(c_find_base_decl): Deleted from here.
	(c_get_alias_set): Remove many cases and rework to just handle
	C-specific cases.
	* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
	* c-decl.c (rtl.h, expr.h): Now included.
	(init_decl_processing): Call record_component_aliases on array types.
	(grokdeclarator): Likewise.
	Set TREE_ADDRESSABLE for all fields that are not bitfields.
	* c-typeck.c (common_type): Call record_component_aliases for array.
	* caller-save.c (setup_save_areas): Rework register loop for unsigned.
	Set all save areas to the frame alias set.
	* calls.c (initialie_argument_information): Call set_mem_attributes.
	(compute_argument_addresses, expand_call): Likewise.
	* explow.c (set_mem_attributes): New function.
	(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
	* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
	LEN and OFFSET now HOST_WIDE_INT.
	(clear_by_pieces): Similar changes.
	(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
	(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
	(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
	(clear_by_pieces_1): Likewise.
	(emit_push_insn): Call set_mem_attributes.
	(expand_expr, case INDIRECT_REF): Likewise.
	(expand_expr, case VAR_DECL): Call change_address.
	* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
	tree_low_cst.
	(get_varargs_alias_set, get_frame_alias_set): New decls.
	(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
	(new_alias_set, set_mem_attributes): Likewse.
	* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
	(assign_stack_temp_for_type): Likewise.
	Can split slot even if alias set since can copy.
	Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
	(assign_temp): Use host_integerp and tree_low_cst.
	(put_var_into_stack): Properly handle SAVE_EXPR.
	(put_addressof_into_stack): Likewise.
	(assign_parms): Call set_mem_attributes.
	Delete #if 0 code.
	(fix_lexical_address): Put reference to chain into frame alias set.
	(expand_function_start): Call set_mem_attributes.
	* integrate.c (expand_inline_function): Likewise.
	* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (alter_reg): Make alias sets for spilled pseudos.
	* rtl.def (MEM): Update comment.
	* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
	(move_by_pieces): Change length to HOST_WIDE_INT.
	(record_base_value, record_alias_subset): Delete from here.
	* stmt.c (expand_decl): Call set_mem_attributes.
	* stor-layout.c (finish_record_layout): Call record_component_aliases.i
	* toplev.c (compile_file): Call init_alias_once earlier.
	* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
	from here: now in alias.c.
	* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
	(struct tree_decl): Likewise.
	(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
	* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
	(output_constant_def, force_const_mem): Likewise.

	* flow.c (propagate_block): If block has no successors, stores to
	frame are dead if not used.

2000-05-31  Nathan Sidwell  <nathan@codesourcery.com>

	* stmt (expand_end_case): Reorder conversion sequence for jump
	table to avoid extra truncations.

Wed May 31 01:31:42 2000  Jeffrey A Law  (law@cygnus.com)

	* ifcvt.c (cond_exec_process_if_block): Do nothing if the last insn
	in the block is more than just a simple conditional branch.
	(noce_process_if_block): Similarly.

Tue May 30 22:25:57 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* optabs.c (prepare_float_lib_cmp): Protect *px and *py from
	queue.

2000-05-30  Michael Meissner  <meissner@redhat.com>

	* dwarf2out.c (dwarf2out_frame_debug_expr): Ignore HIGH
	instructions.  Treat LO_SUM operations as loading the full integer
	constant.

2000-05-30  Richard Henderson  <rth@cygnus.com>

	* combine.c (get_pos_from_mask): Test exact_log2 result as signed.

2000-05-30  Richard Henderson  <rth@cygnus.com>

	* bb-reorder.c (emit_jump_to_block_after): Protect use of HAVE_return.

2000-05-30  Bruce Korb  <bkorb@gnu.org>

	* fixinc/tests/*:  Added expected result files for fixinc's make check
	* fixinc/fixfixes(char_macro_*_fix): Restore original algorithm

2000-05-30  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.md (*setne_internal): Use match_operator
	instead of working down from insn.

2000-05-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* invoke.texi (-Wtraditional): Update WRT function macros.

Tue May 30 09:57:32 2000  Philippe De Muyter  <phdm@macqel.be>

	* except.c (free_exception_table): Do not free NULL.

2000-05-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_if): Don't save and restore only_seen_white here.
	* cppexp.c (_cpp_parse_expr): Save and restore only_seen_white
	and skipping here.

2000-05-29  Richard Earnshaw (rearnsha@arm.com)

	* flow.c (mark_used_reg): If a register is unconditionally live,
	remove any conditional death information.

2000-05-29  Richard Henderson  <rth@cygnus.com>

	* final.c (current_output_insn): New.
	(final_scan_insn): Set it.
	* output.h: Declare it.

2000-05-29  Richard Henderson  <rth@cygnus.com>

	* stor-layout.c (finalize_record_size): Fix typo.

	* jump.c (redirect_jump): Don't emit NOTE_INSN_FUNCTION_END
	if nlabel is null.

2000-05-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (cpp_reader): Remove if_stack.  Change
	potential_control_macro to a cpp_hashnode *.  Add skipping flag.
	* cpphash.h (struct ihash): Change control_macro to a
	cpp_hashnode * and shorten name to cmacro.
	Add NEVER_REINCLUDE constant.

	* cppfiles.c (redundant_include_p): Drop cpp_reader argument.
	Examine the cmacro node directly, no need to call cpp_defined.
	(_cpp_execute_include, read_include_file): Set cmacro to
	NEVER_REINCLUDE, not U"".
	* cpplex.c (cpp_push_buffer): Don't set new->if_stack.
	(cpp_get_token): If pfile->skipping is true, discard text and
	keep scanning until we hit a directive; don't expand macros.

	* cpplib.c (struct if_stack): Remove if_succeeded, add
	was_skipping. Change control_macro to a cpp_hashnode * and
	shorten name to cmacro.  Remove typedef IF_STACK.
	(parse_ifdef), detect_if_not_defined): Return a cpp_hashnode *.
	(conditional_skip, skip_if_group,
	consider_directive_while_skipping): Delete.
	(push_conditional): New.
	(_cpp_handle_directive): Don't process directives other than
	conditionals if we are skipping.

	(do_ifdef, do_ifndef, do_if, do_else, do_elif, do_endif):
	Update to new scheme.
	(validate_else): Skip rest of line here, unconditionally.
	(_cpp_unwind_if_stack): The stack is per-buffer.  Force
	pfile->skipping off.

	(all): Remove `scare quotes' from error messages.

2000-05-29  Richard Henderson  <rth@cygnus.com>

	* function.c (emit_return_into_block): New line_note arg; emit it.
	(thread_prologue_and_epilogue_insns): Attempt to locate a line note
	for the close brace to accompany HAVE_return.  Move all line notes
	following the epilogue to before the NOTE_INSN_EPILOGUE_BEG.

2000-05-29  Richard Henderson  <rth@cygnus.com>

	* longlong.h [__alpha] (count_leading_zeros): New.
	(count_trailing_zeros): New.
	(COUNT_LEADING_ZEROS_0): New.

	* config/alpha/alpha.c (alpha_zero_comparison_operator): New.
	(alpha_split_conditional_move): New.
	* config/alpha/alpha-protos.h: Prototype them.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	(CPP_CPU_DEFAULT_SPEC): Fix typo for EV67.
	* config/alpha/alpha.md: Update ffs cix commentary.
	(*ze_and_ne): New.
	(*nabssf2, *nabsdf2): New.
	(*mov[qhsd]icc_internal): Use add_operand.
	(if_then_else constant splitters): New.
	(*cmp_sadd_di, *cmp_sadd_si, *cmp_sadd_sidi): New.
	(*cmp_ssub_di, *cmp_ssub_si, *cmp_ssub_sidi): New.

2000-05-29  Richard Henderson  <rth@cygnus.com>

	* combine.c (force_to_mode) [MINUS]: Convert subtraction from
	a constant to NEG or NOT when conditions allow.

	* combine.c (combine_simplify_rtx): Don't create an if_then_else
	unless both args are general_operand.  Don't canonicalize plus
	to ior unless it helps.

	* toplev.c (rest_of_compilation): Set no_new_pseudos after flow1;
	instead track register_life_up_to_date.  Toggle no_new_pseudos
	around if_convert.

2000-05-28  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (output_cbranch): Escape '%' characters
	so output_operand doesn't see them.

Sun May 28 18:37:07 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* lcm.c (make_preds_opaque): Fix comment.
	(optimize_mode_switching): Use NORMAL_MODE instead of
	MODE_USES_IN_EXIT_BLOCK.  Change leftover instance of
	FP_MODE_NONE to no_mode.  Rename MODE_AT_ENTRY to NORMAL_MODE.
	Handle insertions before an existing NOTE_INSN_BASIC_BLOCK.
	* tm.texi (OPTIMIZE_MODE_SWITCHING): Refer to NORMAL_MODE.
	(MODE_USES_IN_EXIT_BLOCK): Delete.
	(MODE_AT_ENTRY) Rename to NORMAL_MODE.
	* sh.h (MODE_USES_IN_EXIT_BLOCK): Delete.
	(MODE_AT_ENTRY): Rename to NORMAL_MODE.
	(MODE_NEEDED): Don't look for USE.
	(EPILOGUE_USES): Define.

Sun May 28 23:26:59 2000  Philippe De Muyter <phdm@macqel.be>

	* mklibgcc.in (all): Variable initialized to `libgcc'.

2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.h (skip_leading_substring): New macro.
	* toplev.c (decode_f_option): Use skip_leading_substring instead
	of strncmp.
	(decode_W_option): Likewise.

2000-05-28  Nick Clifton  <nickc@cygnus.com>

	* tm.texi (CONDITIONAL_REGISTER_USAGE): Document that it can
	modify reg_names.

2000-05-28  Richard Henderson  <rth@cygnus.com>

	* regclass.c (record_operand_costs): Protect reg_changes_size
	with CLASS_CANNOT_CHANGE_SIZE.

	* loop.c (instrument_loop_bct): Set JUMP_LABEL on the new insn.

2000-05-28  Richard Henderson  <rth@cygnus.com>

	* function.c (diddle_return_value): A pcc-style struct return
	returns a pointer.

2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c: Read files in, using mmap if possible, then
	prescan them separately.
	(read_file, read_with_read): New functions.
	* cpplex.c: Don't define UCHAR_MAX.
	(_cpp_read_and_prescan): Rename to _cpp_prescan.  Don't read
	the file here.

	* cppinit.c (handle_option): Automatically define __cplusplus,
	__OBJC__, __ASEEMBLER__, _LANGUAGE_FORTRAN here when we see
	the respective -lang switch.

	* cpphash.h (enum node_type, struct hashnode, _cpp_lookup
	prototype): Move to...
	* cpplib.h: ... here.  Rename struct hashnode to struct
	cpp_hashnode and give it a typedef.  Rename _cpp_lookup to
	cpp_lookup.  Add 'fe_value' slot, a union tree_node *.

2000-05-27  Geoffrey Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (movsi): Constify 'name'.

	* regclass.c [CLASS_CANNOT_CHANGE_SIZE]
	(class_can_change_size): New variable.
	(reg_changes_size): New variable.
	(init_reg_sets_1): Initialize class_can_change_size.
	(record_operand_costs): Remove subreg_changes_size.
	Don't pass it around.  Instead update reg_changes_size.
	(regclass): Initialize and free reg_changes_size.  If a register
	changes size, don't preference it to a class that contains
	registers that can't change size.
	(record_reg_classes): Don't look at subreg_changes_size.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* print-rtl.c (reg_names): Remove const.
	* regclass.c (reg_names): Likewise.
	* regs.h (reg_names): Likewise.
	* hard-reg-set.h (reg_names): Likewise.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* config/rs6000/rs6000.md (untyped_call): Use GEN_CALL.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_does_function_need_gp): Test
	TARGET_PROFILING_NEEDS_GP in the if, instead of with an ifdef.
	(alpha_expand_prologue): Emit prologue_mcount if needed.
	* config/alpha/alpha.h (TARGET_PROFILING_NEEDS_GP): Default to 0.
	* config/alpha/alpha.md (prologue_mcount): New.
	* config/alpha/linux.h (FUNCTION_PROFILER): Remove.
	(TARGET_PROFILING_NEEDS_GP): Undef before redefining.
	* config/alpha/netbsd.h: Likewise.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* config/alpha/elf.h (SELECT_SECTION): Mirror Kenner's May 19
	change to config/elfos.h.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (resource.o): Depend on except.h.
	* except.h (output_exception_table_data): Prototype.
	* genconfig.c (gen_peephole2): Prototype.
	* genemit.c (main): Include ggc.h.
	* genoutput.c: Revert parts of last change: include errors.h
	(main): Set progname.
	* recog.c: Include hard-reg-set.h before recog.h.
	* resource.c: Include except.h.

	* config/alpha/alpha-protos.h (alpha_arg_info_reg_val): Protect
	with RTX_CODE.
	(alpha_write_linkage): Protect with BUFSIZ.
	(alpha_need_linkage): Update prototype.
	* config/alpha/alpha.c (function_arg): Move VMS code here.
	(alpha_links_base): Remove.
	(alpha_links): New.
	(mark_alpha_links_node, mark_alpha_links): New.
	(alpha_write_one_linkage): New.
	(alpha_need_linkage): Use a splay tree.  Build the linkage symbol.
	(alpha_write_linkage): Use splay_tree_foreach.
	* config/alpha/alpha.md (call_vms): Use alpha_need_linkage
	to get the linkage symbol.
	(call_value_vms): Likewise.
	* config/alpha/elf.h (output_file_directive): Remove decl.
	(ctors_section, dtors_section): Prototype.
	(sbss_section, sdata_section): Prototype.
	* config/alpha/vms.h (FUNCTION_ARG): Remove.
	(readonly_section, link_section, literals_section): Prototype.
	(ctors_section, dtors_section): Prototype.
	(vms_valid_decl_attribute_p): Remove decl.
	(alpha_arg_type, alpha_arg_info_reg_val): Likewise.

2000-05-27  Geoff Keating  <geoffk@cygnus.com>

	* reload.c (get_secondary_mem): Don't widen floating-point modes.

	* combine.c (subst): Honor CLASS_CANNOT_CHANGE_SIZE when
	substituting the REG in a (subreg:X (reg:Y ...)).

2000-05-28  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (_cpp_lex_line): Merge vertical space.  Flag
	first token of a line BOL.  Update EOF code for this.
	Remove illegal directive check - it appears in the (not
	yet committed) caller.
	* cpplib.h (BOL): New flag.

2000-05-28  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (_cpp_init_toklist): No comment space to initialize.
	(_cpp_free_toklist): No comment space to free.
	(expand_comment_space): Remove.
	(save_comment_space): Place the comment in the current token and
	not in a separate comment space.
	(_cpp_lex_line): Save comments during plain code and #define
	directives only.
	* cpplib.h (struct _cpp_toklist): Remove comment space.

2000-05-28  Neil Booth  <NeilB@earthling.net>

	* cppexp.c (parse_assertion): Supply extra argument to
	_cpp_init_toklist.
	* cpplib.c (do_assert, do_unassert): Similarly.
	* cpphash.h (_cpp_init_toklist) Update.
	(_cpp_expand_token_space): New.
	(DUMMY_TOKEN, NO_DUMMY_TOKEN): New.
	* cpplex.c (_cpp_init_toklist): New argument.
	(parse_string2): New argument multiline_ok.
	(spell_token): Take a const cpp_token *.
	(INIT_NAME): Replace with INIT_TOKEN_NAME.  Update tokens_used.
	(SPELL_ macros): Replace with enum.
	(expand_token_space): Replace with _cpp_expand_token_space.
	Take COUNT argument.
	(IS_DIRECTIVE): Update.
	(_cpp_lex_line): Update token structure before parsing number.
	Don't assume start at beginning of token list.
	(save_comment): Use INIT_TOKEN_NAME.

2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in (stage1_warn_cflags): Add -Wstrict-prototypes
	-Wmissing-prototypes.
	* configure: Regenerate.
	* gcc.texi: Remove explanation of MD_CALL_PROTOTYPES.

	* builtins.c, calls.c: Change all instances of gen_call_* or
	gen_sibcall_* to GEN_CALL_* and GEN_SIBCALL_*.
	* calls.c (struct_value_size_rtx): Separate definition from
	initialization to avoid unused variable warning.

	* genflags.c (gen_macro): New function.
	(gen_proto): Call it for gen_call_* and gen_sibcall_*.
	(gen_nonproto): Delete.
	(gen_insn): Put all insns on the same obstack.
	(main): Generate prototypes for everything unconditionally.

	* configure.in: Add AC_CHECK_TYPE(ssize_t).  Remove commented
	out check for wchar_t.
	* acconfig.h: Add template for ssize_t.  Remove @TOP@.
	* system.h: Add infrastructure for defining missing
	TYPE_MAX/TYPE_MIN macros.  Use it to provide fallback
	definitions of UCHAR_MAX and SSIZE_MAX.
	* configure: Regenerate.
	* config.in: Regenerate.

	* Makefile.in (libgcc2.ready): Rename to libgcc.ready.
	Depend on $(LANGUAGES) as well as $(GCC_PATCHES) and fixed
	headers.
	(clean): No need to delete libgcc1.a, libgcc1-asm.a,
	libgcc2.a, or libgcc1.null.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (recog.o): Don't depend on resource.h.
	* recog.c: Don't include resource.h.
	(recog_last_allowed_insn): Remove.
	(recog_next_insn): Remove.
	(struct peep2_insn_data): New.
	(peep2_insn_data, peep2_current): New.
	(peep2_next_insn): New.
	(peep2_regno_dead_p, peep2_reg_dead_p): New.
	(peep2_find_free_register): New.
	(peephole2_optimize): Track life information by insn as we go.
	* recog.h: Update declarations.
	* resource.c (find_free_register, reg_dead_p): Remove.
	* resource.h: Remove their declarations.
	* toplev.c: Include hard-reg-set.h before recog.h.

	* genconfig.c (max_insns_per_peep2): New.
	(gen_peephole2): New.
	(main): Call it.
	* genemit.c (output_peephole2_scratches): Generate calls to
	peep2_find_free_register; adjust surrounding code.
	(main): Have insn-emit.c include hard-reg-set.h before recog.h.
	* genrecog.c (change_state): Don't track last_insn.
	(write_action): Write into *_pmatch_len before accepting.
	(write_tree): Adjust peephole2_insns and subroutines to match.

	* config/i386/i386.md (all peepholes): Use peep2_regno_dead_p.

	* config/alpha/alpha.c (hard_fp_register_operand): Mind the mode.
	(hard_int_register_operand): New.
	* config/alpha/alpha-protos.h: Declare it.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	* config/alpha/alpha.md (peep2 patterns): Use hard_int_register_operand
	as needed; use peep2_reg_dead_p instead of dead_or_set_p.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* function.c (thread_prologue_epilogue_insns): Don't move the
	line note at the head of the chain.  Only force a lineno note
	before the end of block 0.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* gensupport.c (collect_insn_data): Record the maximum number
	of alternatives, not the last seen.

	* genoutput.c: Don't include errors.h.
	(struct data): Add lineno member.
	(have_error): New.
	(scan_operands): Use message_with_line instead of error.
	(validate_insn_alternatives): Likewise.
	(gen_insn): Accept and store the pattern's line number.
	(gen_peephole, gen_expand, gen_split): Likewise.
	(main): Don't set progname.  Pass line_no to gen_foo.

2000-05-27  Richard Henderson  <rth@cygnus.com>

	* config/d30v/d30v.c (d30v_print_operand): Handle ':'.
	* config/d30v/d30v.h (PRINT_OPERAND_PUNCT_VALID_P): Accept ':'.
	* config/d30v/d30v.md (attr predicable): New.
	(all insn patterns): Mark non-predicable patterns; use %: on the rest.
	(andsi3*): Unify into one pattern.
	(iorsi3*, xorsi3*): Likewise.
	(peephole2 patterns): Use peep2_reg_dead_p; verify not a
	conditional return.
	(old cond_exec patterns): Remove.
	(define_cond_exec): New.

Sat May 27 11:01:27 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (TREE_CODE_LENGTH): New macro.
	* c-common.c (c_find_base_decl): Use it.
	* expr.c (safe_from_p): Likewise.
	* print-tree.c (print_node): Likewise.
	* tree.c (make_node, copy_node, get_identifier): Likewie.
	(first_rtl_op, contains_placeholder_p, substitute_in_expr): Likewise.
	(build, build_nt, build_parse_node, simple_cst_equal): Likewise.
	* fold-const.c (make_range): Likewise.
	(fold): Likewise; also use first_rtl_op.
	* c-iterate.c (collect_iterators): Use first_rtl_op.
	* calls.c (calls_function_1): Likewise; also rename TYPE to CLASS.
	Use IS_EXPR_CODE_CLASS.
	(preexpand_calls): Likewise.
	* ggc-common.c (ggc_mark_trees): Rework to use first_rtl_op
	and TREE_CODE_LENGTH.
	* stmt.c (warn_if_unused_value): If no operands, no unused value.

2000-05-26  Geoffrey Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (movsi_internal1): Use '%a1' rather
	than '%1(%*)'.
	(movdi_internal64): Likewise.

	* config/rs6000/rs6000.md: Correct order of operands for DImode
	boolean patterns.

	* config/rs6000/rs6000.c (boolean_or_operator): New function.
	* config/rs6000/rs6000-protos.h (boolean_or_operator): Prototype it.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add boolean_or_operator.
	* config/rs6000/rs6000.md: Use boolean_or_operator instead of
	boolean_operator for the boolean patterns without NOTs.

	* config/rs6000/rs6000.c (reg_or_logical_cint_operand): Rename
	from reg_or_u_cint_operand.  Change comment and behavior.
	(logical_operand): Clean up, add assertion.
	(non_logical_cint_operand): Also check for
	reg_or_logical_cint_operand.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Update.
	* config/rs6000/rs6000.md (iorsi3): Use reg_or_logical_cint_operand
	in the expander.
	(xorsi3): Likewise.
	(iordi3): Likewise.
	(xordi3): Likewise.

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

	* tree.h (struct record_layout_info): Rename to (struct
	record_layout_info_s).
	* stor-layout.c (start_record_layout): Replace
	`record_layout_info' with `record_layout_info_s'.

2000-05-26  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (find_label_refs): New function.
	(find_basic_blocks_1): Call it for each alternative of a call
	placeholder.

2000-05-26  Richard Earnshaw  <rearnsha@arm.com>

	* ifcvt.c (cond_exec_get_condition): Set test_if to the SET_SRC
	of get_pc.

2000-05-25  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_comparison_operator): Don't be
	so strict about DImode.
	(alpha_swapped_comparison_operator): Likewise.
	* config/alpha/alpha.md (*setne_internal): Name it.  Allow
	any integer output mode.
	(*setcc_internal): Likewise.
	(*setcc_swapped_internal): Likewise.
	(*movdicc_internal, *movdicc_lbc, *movdicc_lbs): Name them.
	(*mov[qhs]icc_internal): New.
	(*mov[qhs]icc_lbc, *mov[qhs]icc_lbs): New.

2000-05-25  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (CPP_SPEC): Define __GFLOAT and GFLOAT when -mg is specified.

2000-05-25  Richard Henderson  <rth@cygnus.com>

	* bb-reorder.c (reorder_block_def): Reorder elements for size.
	Remove add_jump; add next; replace flags with visited.
	(rbd_init): Remove.
	(REORDER_BLOCK_HEAD, REORDER_BLOCK_VISITED): Remove.
	(REORDER_BLOCK_FLAGS, REORDER_BLOCK_INDEX): Remove.
	(REORDER_BLOCK_ADD_JUMP, REORDER_BLOCK_EFF_HEAD): Remove.
	(REORDER_BLOCK_EFF_END, REORDER_BLOCK_SCOPE): Remove.
	(RBI): New.
	(reorder_index, reorder_last_visited): Remove.
	(skip_insns_after_block): Rewrite to use a switch.
	(get_common_dest): Remove.
	(chain_reorder_blocks): Remove.
	(record_effective_endpoints): Split out from reorder_basic_blocks.
	(make_reorder_chain): Likewise.  Loop until all blocks are placed.
	(make_reorder_chain_1): Renamed from old make_reorder_chain.
	Only construct the reorder chain, do not move insns.  Try harder
	to tail recurse.
	(label_for_bb, emit_jump_to_block_after): New.
	(fixup_reorder_chain): Use them.  Do bulk block movement.  Examine
	and adjust the jump insns appropriately.  Fixup basic_block_info.
	(verify_insn_chain): Always define.
	(relate_bbs_with_scopes): Call xmalloc, not xcalloc.  Fix thinko
	in allocation size.
	(make_new_scope): Don't write zeros to calloc'd space.
	(build_scope_forest): Rely on xrealloc to DTRT.
	(reorder_basic_blocks): Don't build loop nest.  Don't fail if
	profile_arc_flag.  Streamline EH test.

	* flow.c (redirect_edge_succ, redirect_edge_pred): New.
	* basic-block.h: Declare them.

2000-05-25  Alexandre Oliva  <aoliva@cygnus.com>

	* emit-rtl.c (reset_used_decls): New function.
	(unshare_all_rtl_again): Call it.

2000-05-25  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (maybe_macroexpand): Warn about function-like
	macros used in non-function context, if -Wtraditional.

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

	* recog.c (peephole2_optimize): Use INSN_P.

2000-05-25  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (seq_contains_jump): New.
	(noce_try_store_flag_constants): Use it to fail conversion.
	(noce_try_store_flag_inc, noce_try_store_flag_mask): Likewise.

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

	* except.h (can_throw): Declare it.
	* except.c (can_throw): Give it external linkage.
	* resource.c (find_dead_or_set_registers): Use can_throw.

2000-05-25  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_set_1): Don't record conditionally dead memory.

2000-05-25  Jan Hubicka  <jh@suse.cz>

	* combine.c (try_combine): Use any_condjump_p, any_uncondjump_p
	and pc_set at the place of simplejump_p and condjump_p.
	* cse.c (record_jump_equiv): Likewise.
	* emit-rtl.c (emit): Likewise.
	* explow.c (find_next_ref): Likewise.
	* flow.c (tidy_fallthru_edge): Likewise.
	(init_propagate_block_info): Likewise.
	* gcse.c (delete_null_pointer_checks): Likewise.
	* ifcvt.c (cond_exec_get_condition, noce_get_condition,
	dead_or_predicable): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* loop.c (scan_loop, verify_dominator, find_and_verify_loops,
	for_each_insn_in_loop, check_dbra_loop, get_condition,
	insert_bct, load_mems): Likewise.
	* resource.c (find_dead_or_set_registers): Likewise.
	* sibcalls.c (simplejump_p): Likewise.
	* unroll.c (copy_loop_body, reg_dead_after_loop): Likewise.

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

	* rs6000.c (expand_block_move): Add 64-bit PowerPC doubleword move
	to STRING case.  Use doubleword STRING move for TARGET_POWERPC64
	when unaligned.
	* rs6000.h (CONST_OK_FOR_LETTER_P, 'J'): unsigned HOST_WIDE_INT.
	(RETURN_ADDR_RTX): Use COUNT and FRAME, not count and frame.
	(LEGITIMIZE_RELOAD_ADDRESS): unsigned HOST_WIDE_INT high.
	* rs6000.md: Name various internal patterns.

2000-05-25  Jan Hubicka  <jh@suse.cz>

	* jump.c (invert_exp_1): Remove first argument, use pc_set
	to get the expression.
	(redirect_exp): Make static; redirect only the pc_set expression,
	remove first argument.
	(invert_exp): Remove first argument, make static.
	(jump_optimize): Use any_condjump_p, any_uncondjump_p and
	any_onlyjump at most places where we originaly did condjump_p
	and simplejump_p.
	(jump_back_p, follow_jumps, thread_jumps): Likewise.
	(delete_barrier_succesors): Use pc_set.
	(invert_jump_1, invert_jump, redirect_jump_1, redirect_jump): Update
	calls of invert_exp and redirect_exp.
	* rtl.h (redirect_exp, invert_exp): Remove.
	* unroll.c (copy_loop_body): Use invert_jump and redirect_jump.

2000-05-25  Richard Henderson  <rth@cygnus.com>

	* stmt.c (expand_end_bindings): Fix thinko last change.

2000-05-25  Andrew MacLeod  <amacleod@cygnus.com>
	    Andrew Haley  <aph@cygnus.com>

	* except.c  (func_eh_entry): Add emitted field.
	(new_eh_region_entry): Set emitted field to 0;
	(output_exception_table_entry): Only emit previously un-emitted data,
	and send it to the eh_data section.
	(output_exception_table): Break out common parts. Output
	exception table for entire compilation unit to eh_data section.
	(output_exception_table_data): Common parts of output_exception_table.
	Send output to eh_data section.
	(output_function_exception_table): Output exception table data for
	a single function to eh_data section.
	(free_exception_table): New external to free the table.
	* except.h (free_exception_table): Add prototype.
	(output_function_exception_table): Add prototype.
	* final.c (final_end_function): Output function exception table
	for IA64_UNWIND_INFO.
	(final_scan_insn): Emit any unwind directives for an insn.

	* frame-dwarf2.c: New file containing all DWARF 2 specific code
	from frame.c.
	* frame.c: Remove all DWARF 2 specific code.
	* config/ia64/frame-ia64.c: New file.
	(gthread_stuff): Make all gthread available with
	IA64_UNWIND_INFO.
	(dwarf_fde): Define an IA64 struct for dwarf_fde.
	(__register_frame_info, __register_frame): Move to common area of file.
	(__register_frame_info_table, __register_frame_table): Move to common i
	area.
	(__deregister_frame_info, __deregister_frame): Move to common area.
	(__frame_init, find_fde): New versions for IA64_UNWIND_INFO.
	(read_uleb128): New version for ia64.
	(get_unwind_record): Read the next IA-64 unwind record.
	(read_R_record): Read a region header record.
	(process_a_b_reg_code): X record helper.
	(read_X_record): Read an X format record.
	(read_B_record): Read a B format record.
	(P3_record_types): List of record types matching the P3 format.
	(P7_record_types): List of record types matching the P7 format.
	(P8_record_types): List of record types matching the P8 format.
	(read_P_record): Read a P format record.
	(init_ia64_reg_loc): Set default fields for a register.
	(init_ia64_unwind_frame): Set defaults for all register records.
	(execute_one_ia64_descriptor): Execute one descriptor record.
	(rse_address_add): Calculate the position of a local reg in memory.
	(normalize_reg_loc): Turn a location descriptor into a memory address.
	(maybe_normalize_reg_loc): Only normalize a descriptor if it falls
	within a specified PC offset range.
	(get_real_reg_value): Given a register location, retrieve its value.
	(set_real_reg_value): Change the value of a register location.
	(copy_reg_value): Copy reg values, if needed.
	(copy_saved_reg_state): Copy all registers that need to be copied.
	(process_state_between): Normalize all frame register records that
	fall within the specified PC range.
	(frame_translate): Take a processed frame description, and turn
	everything into addresses.
	(build_ia64_frame_state ): Find and create frame state record for a PC.
	(get_personality): Get the personality routine for a given frame.
	(get_except_table): Get the exception table for a given frame.
	(record_name): Unwind record names for debugging.
	(print_record): Print and unwind record.
	(print_all_records): Print an entire unwind image.
	(__ia64_backtrace): Print a backtrace.
	(ia64_backtrace_helper): New function.
	(__register_frame_info_aux): New function.
	* config/ia64/crtend.asm (__do_frame_setup_aux): New function.

	* frame.h (enum unw_record_type): New unwind record types.
	(struct unw_p_record, unw_b_record, unw_x_record) : New unwind records.
	(struct unw_r_record, unwind_record): New unwind record structs.
	(struct unwind_info_ptr): Unwind information layout.
	(IA64_UNW_LOC_TYPE_*): Macros for different types for location
	descriptors.
	(struct ia64_reg_loc): Register location description.
	(struct ia64_frame_state): Location of all registers in a frame.
	(struct object): Add pc_base and fde_end for IA64_UNWIND_INFO.
	* libgcc2.c (__ia64_personality_v1): Personality routine.
	(__calc_caller_bsp): Calculate the bsp register for the caller's
	frame.
	(ia64_throw_helper): Figure out who to return to and set up the
	registers.
	(__throw): Throw routine.

	* output.h (assemble_eh_align, assemble_eh_label): New functions
	to generate EH info where we want it.
	(assemble_eh_integer): New function.
	* toplev.c (compile_file): Output module level exception table for
	non-ia64 targets.
	(main): Set exceptions_via_longjump and flag_new_exceptions based
	on IA64_UNWIND_INFO too.

	* varasm.c (assemble_eh_label): Generate a label via
	ASM_OUTPUT_EH_LABEL if it has been specified.
	(assemble_eh_align): Generate an alignment directive via
	ASM_OUTPUT_EH_ALIGN if it has been specified.
	(assemble_eh_label): Generate an integer value via
	ASM_OUTPUT_EH_type if they have been specified.
	* config/ia64/ia64.c (rtx_needs_barrier): Add flushrs.
	(ia64_init_builtins): Add __builtin_ia64_bsp
	and __builtin_ia64_flushrs.
	(ia64_expand_builtin): Add IA64_BUILTIN_BSP and
	IA64_BUILTIN_FLUSHRS.
	* config/ia64/ia64.h (ia64_builtins): Add IA64_BUILTIN_BSP and
	IA64_BUILTIN_FLUSHRS.

	* config/ia64/ia64.md (flushrs): New insn to flush the register
	stack.  Add to unspec list.

	* config/ia64/crtbegin.asm (frame_object): Change size.
	(__do_frame_setup_aux): New function.
	* config/ia64/crtend.asm: call __do_frame_setup_aux.
	* config/ia64/t-ia64 (LIB2ADDEH): Add.
	* Makefile.in (LIB2ADDEH): Add.
	(LIB2ADD): Use LIB2ADDEH.

2000-05-24  Richard Henderson  <rth@cygnus.com>

	* recog.c (offsettable_address_p): If mode size is zero, assume
	BIGGEST_ALIGNMENT.

2000-05-24  J. David Anglin  <dave@hiauly.hia.nrc.ca>

	* configure.in: Check for -Wno-long-long option support and improve
	handling of warning CFLAGS for stages 1 and 2.
	* Makefile.in (WARN_CFLAGS): Move definition to configure.in.
	* configure: Regenerate.

Wed May 24 19:37:53 2000  Jeffrey A Law  (law@cygnus.com)

	* gcc.texi: Remove contributor list.  Instead include contrib.texi.
	* contrib.texi: New file.

Thu May 25 02:27:22 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* loop.c (basic_induction_var): Avoid double recording of an increment.

Thu May 25 02:19:27 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* Back out this patch:
	Tue Dec  7 19:22:06 1999  Richard Henderson  <rth@cygnus.com>
	  * loop.h (struct induction): Add multi_insn_incr.
	  * loop.c (basic_induction_var): New multi_insn_incr argument.
	  Set it if we search back through previous insns for the biv.
	  (record_biv): New multi_insn_incr argument; fill in struct induction.
	  (strength_reduce): Discard an iv with multiple bivs, any of
	  which require multiple insns to increment.

	* loop.c (check_insn_for_bivs): Remove bits copied from above patch.

Thu May 25 02:09:10 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* rtl.h (loc_mentioned_in_p): Declare.
	* reload.c (loc_mentioned_in_p): Moved from here...
	* rtlanal.c (loc_mentioned_in_p): to here.  No longer static.
	Fix loop increment for 'E' handling.
	* loop.c (strength_reduce): When doing biv->giv conversion,
	take multi-insn biv increments into account.

2000-05-24  Jason Merrill  <jason@casey.soma.redhat.com>

	* stmt.c (expand_end_bindings): Look through NOTEs to find a
	BARRIER.

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

	* calls.c (expand_call): Handle cleanups in tail-recursion
	arguments analogously to cleanups in sibling calls.

2000-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* simplify-rtx.c: Rename macro SIGN_EXTEND to HWI_SIGN_EXTEND.
	All callers changed.

2000-05-24  Alexandre Oliva  <aoliva@cygnus.com>

	* expr.c (expand_assignment, store_expr, expand_expr,
	expand_expr_unaligned): Set in_check_memory_usage while emitting
	chkr_check_addr libcall.

2000-05-24  Nick Clifton  <nickc@cygnus.com>

	* fold-const.c (extract_muldiv): When constructing a
	multiplier/divisor, do not expect const_binop to correctly
	determine if overflow has occurred, so check explicitly.

2000-05-24  Alexandre Oliva  <aoliva@cygnus.com>

	* c-decl.c (build_enumerator): Don't modify the value's type,
	convert it.

2000-05-24  Andreas Jaeger  <aj@suse.de>

	* mips.h (LINKER_ENDIAN_SPEC): Pass -EL to linker by default.

2000-05-24  Eric Christopher <echristo@cygnus.com>

	* configure.in: Redefine inhibit_libc conditions.
	* libgcc2.c: Remove inhibit_libc conditional define.
	* configure: Regenerate.

2000-05-24  Phil Edwards  <pme@sourceware.cygnus.com>

	* configure.in:  For --enable-languages=LIST, check for empty LIST.
	* configure:  Regenerate.

2000-05-24  Lars Brinkhoff  <lars@nocrew.org>

	* pdp11.h (STACK_BOUNDARY): Define.

2000-05-24  Jakub Jelinek  <jakub@redhat.com>

	* ifcvt.c (if_convert): Update life info globally.

2000-05-24  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* emit-rtl.c (unshare_all_decls): New function.
	(unshare_all_rtl): Call it.

2000-05-23  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Treat 'strongarm' as if it were 'arm' when
	determining cpu type.

	* configure: Regenerate.

	* config/arm/arm.c: Change 'char *' to 'const char *' for cases
	where constant strings are involved.

	* config/arm/arm.h (arm_condition_codes): Change type to 'const
	char *'.

	* config/arm/arm-protos.h: Change 'char *' to 'const char *' for
	cases where constant strings are involved.

Tue May 23 15:08:31 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* config/sh/sh.c (gen_far_branch, split_branches): Update
	to reflect new prototypes for redirect_jump and invert_jump.
	(sh_insn_length_adjustment): Get rid of const warnings.

2000-05-23  Kazu Hirata  <kazu@hxi.com>

	* invoke.texi (Options for Debugging Your Program or GCC): Update
	the names of dump files.

Tue May 23 13:58:52 2000  Philippe De Muyter  <phdm@macqel.be>

	* configure.in (NO_MINUS_C_MINUS_O): Fix thinko in previous fix.
	* configure: Regenerated.

2000-05-23  Zack Weinberg  <zack@wolery.cumb.org>

	* simplify-rtx.c (SIGN_EXTEND): New macro.
	(simplify_unary_operation, simplify_binary_operation,
	simplify_relational_operation): Use SIGN_EXTEND.  Make low
	halves of (low, high) pairs unsigned if they weren't already.
	(simplify_ternary_operation): Cast INTVAL to unsigned before
	comparing to a MODE_BITSIZE.

2000-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4 (gcc_AC_CHECK_DECL, gcc_AC_CHECK_DECLS): New macros
	rewritten from the internals of gcc_AC_NEED_DECLARATION{S}.

	* configure.in (gcc_AC_CHECK_DECLS): Call this instead of
	gcc_AC_NEED_DECLARATIONS.

	* dwarfout.c: Don't prototype time().

	* gcc.c: Check HAVE_DECL_* instead of NEED_DECLARATION_*.

	* system.h: Likewise.

	* toplev.c: Likewise.

2000-05-23  Zack Weinberg  <zack@wolery.cumb.org>

	* c-decl.c (pushdecl): Invert sense of test for non-global types.

Tue May 23 18:11:42 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* reload1.c (reload_cse_move2add): Honor TRULY_NOOP_TRUNCATION.

2000-05-23  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* config/mips/elf64.h (CTOR_LISTS_DEFINED_EXTERNALLY): Define

Tue May 23 06:50:29 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c: Remove #ifdef HAIFA since now only scheduler.
	(alpha_start_function): Never write ..ng label if VMS or NT.
	(alpha_align_insns): Remove GP_IN_USE arg.
	Alignment now unsigned.
	(alpha_reorg): Don't pass GP_IN_USE arg to alpha_align_insns.
	* config/alpha/alpha.md (prologue_ldgp): Split into one define_expand
	and two define_insn's.

2000-05-22  Richard Henderson  <rth@cygnus.com>

	* combine.c (simplify_comparison): Use trunc_int_for_mode.

2000-05-22  Richard Henderson  <rth@cygnus.com>

	* stor-layout.c (place_field): Change rli->size to rli->offset.

2000-05-22  Richard Henderson  <rth@cygnus.com>

	* function.c (thread_prologue_and_epilogue_insns): Make sure
	existing line number notes appear after the prologue.

Mon May 22 21:49:00 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (alpha_fnname): New static variable.
	(print_operand, case '~'): New case.
	(alpha_expand_prologue): Emit prologue_ldgp insn if needed.
	(alpha_start_function): Set alpha_fnname.
	Write "ng" label if no ldgp; don't write ldgp insn.
	* config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): New case '~'.
	* config/alpha/alpha.md (prologue_ldgp): New define_insn.

Mon May 22 11:30:48 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* jump.c (jump_optimize_1): Don't increment LABEL_NUSES
	on deleted labels.

2000-05-22  Zack Weinberg  <zack@wolery.cumb.org>

	* varasm.c (eh_frame_section): Revert change to argument list.

Mon May 22 13:14:03 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* optabs.c (can_extend_p): Allow unsignedp to have any nonzero value.
	(gen_extend_insn, can_fix_p, can_float_p): Likewise.

	* final.c (final_scan_insn, case NOTE_INSN_FUNCTION_BEG): Remove
	dangling "else" that causes "break" to be conditional.
	Also remove unneeded code at start.

Mon May 22 17:31:35 2000  Philippe De Muyter  <phdm@macqel.be>

	* m68k/m68k.h (STORE_FLAG_VALUE): Macro set to (-1), not -1.
	* fx80/fx80.h, i370/i370.h, m88k/m88k.h (STORE_FLAG_VALUE): Ditto.
	* gmicro/gmicro.h, we32k/we32k.h (STORE_FLAG_VALUE): Ditto.

2000-05-22  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (movdf_insn_v9only_vis): fzero has
	just one argument.

Mon May 22 06:57:49 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (record_component_aliases): New function.
	* tree.h: Clean up some declarations and comments.
	(record_component_aliases): New declaration.
	* tree.c (get_alias_set): If type and has alias set, use it.

2000-05-22  Richard Henderson  <rth@cygnus.com>

	* simplify-rtx.c (simplify_ternary_operation): Try to simplify
	IF_THEN_ELSE to a setcc form.
	* jump.c (can_reverse_comparison_p): Be prepared for insn null.

2000-05-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/inclhack.def (sun_malloc): Handle `calloc'.
	(sun_malloc, sysz_stdtypes_for_sun): Add test_text.

Sun May 21 16:42:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (try_combine): Handle i3_subst_into_i2 case when I2 is
	not a PARALLEL.

2000-05-20  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.md (movdi, movdf): 64-bit clean-up.
	* config/mn10300/mn10300.c (print_operand): Likewise.

	* final.c (split_double): Right shift of negative values is not
	portable.

	* ifcvt.c (if_convert): Scan and kill dead code.

	* emit-rtl.c (unshare_all_rtl): Store the copied rtx.

2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>

	* diagnostic.c: Eliminate implicit int.
	* except.c, gcc.c: Add static prototypes.
	* final.c (final_end_function): Mark file arg ATTRIBUTE_UNUSED.
	* gensupport.c (process_rtx): Use XVEC to initialize vector
	slot of 'split'.

	* print-rtl.c: If DEBUG_REGISTER_NAMES, define static
	debug_reg_names instead of static reg_names.  If not, define
	global reg_names.
	* regclass.c: Don't define global reg_names unless
	DEBUG_REGISTER_NAMES is defined.

	* reload1.c (order_regs_for_reload): Remove unused variable.
	* varasm.c: Include output.h after defaults.h.  Define
	eh_frame_section as function of no args, not of unspecified args.

	* gcc.c: Constify argbuf; arguments to store_arg,
	process_command, main; elements of struct command and struct
	switchstr; local variables in execute, process_command, main.

2000-05-20  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def:  many applications of c_fix=format + tests
	* fixinc/check.diff:  regenerated
	* fixinc/fixincl.x:  regenerated

Sat May 20 09:30:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c: Clarify some comments.
	(record_base_value): REGNO is unsigned.
	* rtl.h (record_base_value): Likewise.

	* alias.c (aliases_everything_p): Don't special-case QImode here.
	* c-common.c (c_get_alias_set): Do it here.
	Handle BIT_FIELD_REF by getting alias info for arg.
	Use POINTER_TYPE_P.

2000-05-20  Alexandre Oliva  <aoliva@cygnus.com>

	* mklibgcc.in: Restore rule to create ${dir}.

Sat May 20 08:45:41 2000  H.J. Lu  <hjl@gnu.org>

	* Makefile.in (libgcc.mk): Depend on xgcc$(exeext) for
	GCC_FOR_TARGET used by MULTILIBS.
	* mklibgcc.in: Make sure each .o file depends on the
	directory it will be in.
	Make the multilib directory depends libgcc.

Sat May 20 08:29:28 2000  H.J. Lu  <hjl@gnu.org>

	* Makefile.in (bootstrap): Unset LANG_LIB2FUNCS for stage 1.

Sat May 20 07:27:35 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* fold-const.c (make_range): Handle degenerated intervals.
	Fixes c-torture/execute/991221-1.c

Fri May 19 18:16:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
	* reload.c (find_equiv_reg): Likewise.
	* alias.c (init_alias_analysis): Likewise.
	Only call prologue_epilogue_contains on insns.
	* basic-block.h (REG_SET_TO_HARD_REG_SET): Call new function.
	* bb-reorder.c (hard-reg-set.h): Include earlier.
	* haifa-sched.c (hard-reg-set.h): Likewise.
	* ifcvt.c (hard-reg-set.h): Likewise.
	* local-alloc.c (hard-reg-set.h): Likewise.
	* loop.c (hard-reg-set.h): Likewise.
	* predict.c (hard-reg-set.h): Likewise.
	* regrename.c (hard-reg-set.h): Likewise.
	* flow.c (hard-reg-set.h): Likewise.
	(reg_set_to_hard_reg_set): New function.
	* bitmap.c (regs.h, basic-block.h): No longer include.
	(bitmap.h): Now include.
	* conflict.c (hard-reg-set.h): Include.
	* profile.c (hard-reg-set.h): Likewise.
	* print-rtl.c (hard-reg-set.h): Likewise.
	* sbitmap.c (hard-reg-set.h): Likewise.
	* toplev.c (hard-reg-set.h): Likewise.
	* unroll.c (hard-reg-set.h, basic-block.h): Likewise.
	* hard-reg-set.h (reg_names): Now constant.
	* regs.h (reg_names): Likewise.
	* regclass.c (reg_names): Likewise.
	* loop.h (basic-block.h): No longer include.
	(bitmap.h): Now include.
	* reload1.c (order_regs_for_reload): Avoid loop over reg sets.
	* Makefile.in (LOOP_H, sbitmap.o, profile.o): Reflect above changes.
	(toplev.o, print-rtl.o, conflict.o, unroll.o, bitmap.o): Likewise.

2000-05-19  Jan Hubicka  <jh@suse.cz>
	    Richard Henderson  <rth@cygnus.com>

	* basic-block.h (struct edge_def): New field "count".
	(struct basic_block_def): Likewise.
	* flow.c (entry_exit_blocks): Add count fileds.
	(split_edge): Keep count information up-to-date.
	(dump_edge_info, dump_flow_info): Dump count fields.

	* final.c (count_instrumented_edges): Rename to edge from arc.
	(end_final): Update users.
	* profile.c: Include expr.h, basic-block.h.
	(struct adj_list, ARC_TARGET, ARC_SOURCE, ARC_COUNT): Kill.
	(struct bb_info, label_to_bb, label_to_bb_size, bb_graph): Kill.
	(ignore_next_note, return_label_execution_count): Kill.
	(bbg_file_name, da_file_name): Kill.
	(edge_info, bb_info): New structures.
	(EDGE_INFO, BB_INFO, GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX): New macros.
	(count_instrumented_edges, total_num_edges): Rename to edge from arc.
	(total_num_edges_instrumented): Likewise.
	(init_arc, expand_spanning_tree): Kill.
	(fill_spanning_tree, tablejump_entry_p): Kill.
	(instrument_edges):  Rewrite from instrument_arcs to use
	commit_edge_insertions infrastructure.
	(compute_branch_probabilities): Remove arguments; rewrite for
	CFG infrastructure; use rtl_dump_file directly.
	(branch_prob, find_spanning_tree): Likewise.
	(union_groups, find_group): New.
	(init_branch_prob): Make bbg_file_name and da_file_name local.
	(end_branch_prob): Use rtl_dump_file directly.
	(init_edge_profiler): Rename to edge from arc.
	(output_arc_profiler): Kill.
	(gen_edge_profiler): New.
	(output_func_start_profiler): Turn off profiling.  Make the
	constructor static when we can.
	* rtl.h (branch_prob, end_branch_prob): Update prototypes.

	* toplev.c (DFI_flow): Remove.
	(DFI_cfg, DFI_life): New.
	(dump_file): Update accordingly.
	(compile_file): Call end_branch_prob if profile_arc_flag too.
	(rest_of_compilation): Move flow1 cfg creation to DFI_cfg.  Do edge
	profiling after the CFG is built.  Move flow1 life analysis to
	DFI_life.  Always estimate remaining probabilities.

2000-05-19  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (find_if_case_2): Don't allow THEN to be EXIT.

	* flow.c (make_edges): The sibling call edge to exit is abnormal.

2000-05-19  Richard Henderson  <rth@cygnus.com>

	* jump.c (redirect_jump): Add delete_unused argument.  Don't
	remove labels and code following when LABEL_NUSES goes to zero.
	(invert_jump): Likewise.
	(jump_optimize_1): Fix redirect/invert arguments.
	(do_cross_jump, thread_jumps): Likewise.
	* flow.c (split_edge): Likewise.
	* reorg.c (optimize_skip): Likewise.
	(reorg_redirect_jump, relax_delay_slots, dbr_schedule): Likewise.
	* profile.c (instrument_arcs): Likewise.
	* loop.c (find_and_verify_loops): Likewise.  Fix indentation.
	* rtl.h: Update prototypes.

Fri May 19 12:05:13 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* ssa.c (convert_from_ssa): Tell life_analysis we need death
	notes.
	(make_regs_equivalent_over_bad_edges): Only look at abnormal
	critical edges.

2000-05-19  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (funlike_macroexpand): Make sure not to walk p1
	past l1 when deleting whitespace and markers.

	* cpplex.c (_cpp_scan_until): Clear AUX field of tokens.
	* cpplib.c (do_unassert): Put the list to compare against on
	the stack.

2000-05-19  Bruce Korb  <bkorb@gnu.org>

	* fixinc/README:  cleaned up old documentation
	* fixinc/check.diff: regenerated & verified on OSR5 on ix86
	* fixinc/check.tpl: compute the list of needed directories
	emit "#if defined(name)" because of conflict
	omit machine name differences from output differences
	* fixinc/inclhack.def( m88k_multi_incl ):  Use `wrap' function
	(machine_name): change test text to use `sed' markers
	* fixinc/fixincl.x: regen

Fri May 19 06:49:35 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/elfos.h (SELECT_SECTION): Don't access DECL_INITIAL of
	a CONSTRUCTOR.

2000-05-18  Chris Demetriou  <cgd@sibyte.com>

	* gcc.texi (MULTILIB_EXCEPTIONS): Correct example and update
	it to match the current practice.

2000-05-18  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (STAGESTUFF): Fix typo in spelling of s-under.

2000-05-18  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (insn_dependant_p, insn_dependant_p_1): New.
	* rtl.h (insn_dependant_p): Declare it.
	* loop.c (strength_reduce): Use it.

2000-05-18  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.c (expand_prologue, expand_epilogue):
	16-bit and 64-bit clean-up.

2000-05-18 Mark Elbrecht <snowball3@bigfoot.com>

	* configure.in (*-pc-msdosdjgpp): Set float_format to none.
	* configure: Rebuilt.

2000-05-18  Zack Weinberg  <zack@wolery.cumb.org>

	* genopinit.c: Use $ for escape sequences in optab patterns.
	Remove backslashes from optab patterns.  Change $A, $B, $C to
	expand to (int) whatever instead of just whatever; remove
	explicit (int) from all optab patterns.

	* gensupport.c (xmalloc, xrealloc, xstrdup): Provide.
	* genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c,
	genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c,
	genrecog.c: Remove private copies of xmalloc, xrealloc, and
	xstrdup.

2000-05-18  Richard Henderson  <rth@cygnus.com>

	* jump.c (jump_optimize_1): Base minimum insn count during
	find_cross_jump on BRANCH_COST.

2000-05-18  Jakub Jelinek  <jakub@redhat.com>

	* print-rtl.c (print_rtx): Only print note line number as string
	if between NOTE_INSN_BIAS and NOTE_INSN_MAX.
	* final.c (final_scan_insn): Do nothing for note line number 0.

2000-05-18  Jakub Jelinek  <jakub@redhat.com>

	* gcc-common.c (ggc_mark_rtx_children): Mark NOTE_EXPECTED_VALUE
	from NOTE_INSN_EXPECTED_VALUE notes and NOTE_SOURCE_FILE from
	NOTE_INSN_DELETED_LABEL.

2000-05-18  Nick Clifton  <nickc@cygnus.com>

	* config/arm/unknown-elf.h (UNIQUE_SECTION): Place constant,
	uninitialized data in .rodata not .bss, and do not interpret an
	error in the initialisation value as meaning that the variable
	should be placed in the .bss section.

Thu May 18 12:10:18 2000  Philippe De Muyter  <phdm@macqel.be>

	* configure.in (NO_MINUS_C_MINUS_O): Test `$ac_cv_prog_cc_${ac_cc}_c_o',
	not `$ac_cv_prog_cc_cc_c_o'.
	* configure: Regenerated.

2000-05-18  Chris Demetriou  <cgd@sibyte.com>
	    Richard Henderson  <rth@cygnus.com>

	* c-common.h (enum c_tree_index): Add g77 type entries.
	(g77_integer_type_node, g77_uinteger_type_node): New.
	(g77_longint_type_node, g77_ulongint_type_node): New.
	* c-decl.c (init_decl_processing): Initialize them.

2000-05-18  Richard Henderson  <rth@cygnus.com>

	* config/h8300/h8300.md (subs patterns): Use %G to negate.

	* config/h8300/h8300.c (ok_for_bclr): Take a HOST_WIDE_INT.
	(small_power_of_two): Likewise; use exact_log2.
	(adds_subs_operand, one_insn_adds_subs_operand): Remove.
	(output_adds_subs): Remove.
	(two_insn_adds_subs_operand): New.
	(split_adds_subs): New.
	* config/h8300/h8300-protos.h: Update.
	* config/h8300/h8300.h (CONST_OK_FOR_J): Cast to uns HOST_WIDE_INT.
	(CONST_OK_FOR_L): Match strict adds operands.
	(CONST_OK_FOR_N): Match struct subs operands.
	* config/h8300/h8300.md (adds_subs insns): Remove.
	(addhi patterns): Output adds/subs directly.
	(addsi_h8300h): Likewise.
	(addhi/addsi splitters): New.  Decompose two_insn_adds_subs_operand.

2000-05-18  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c (parse_assertion): New.
	(lex): Call it for CPP_HASH.  Remove CPP_ASSERTION case.
	(_cpp_parse_expr): Remove case '#'.  Don't set
	parsing_if_directive.
	* cpphash.c (collect_objlike_expansion,
	collect_funlike_expansion, collect_params,
	_cpp_create_definition): The list no longer has a trailing
	VSPACE token.
	* cpphash.h (enum node_type): Add T_ASSERTION.
	(struct hashnode): Remove aschain, add pred.
	(struct predicate): New.
	Update prototypes.

	* cpplex.c (expand_token_space): Handle both offset and
	nonoffset lists.
	(init_token_list, _cpp_free_token_list, _cpp_parse_assertion): Delete.
	(_cpp_init_toklist, _cpp_clear_toklist, _cpp_free_toklist,
	_cpp_slice_toklist, _cpp_squeeze_toklist, _cpp_equiv_tokens,
	_cpp_equiv_toklists): New.
	(_cpp_scan_line): Rename to _cpp_scan_until; add ability to
	stop at any single-character token, not just newline.
	(_cpp_lex_token): Remove special cases for #define and #if.
	(cpp_get_token): Expect # as a separate token type.  Remove
	DIRECTIVE case.
	(_cpp_get_directive_token): Remove DIRECTIVE case.
	(_cpp_lex_line, _cpp_lex_file, _cpp_init_input_buffer): Update.

	* cpplib.c (_cpp_check_directive): Set dirno and
	SYNTAX_INCLUDE bit of flags, not dir_handler and dir_flags.
	(_cpp_handle_directive): Run # <number> through the same logic
	as normal directives.
	(do_define): Don't set parsing_define_directive.  Use
	_cpp_scan_until.  The list does not have a VSPACE at the end.
	(do_if): Save, clear, and restore only_seen_white around
	_cpp_parse_expr.
	(skip_if_group): s/CPP_DIRECTIVE/CPP_HASH/
	(do_assert, do_unassert): Rewrite.

	* cpplib.h (TTYPE_TABLE): Remove CPP_ASSERTION.
	(LIST_OFFSET): New flag.
	(struct cpp_toklist): Replace dir_handler and dir_flags with
	dirno and flags.
	(struct cpp_reader): Remove parsing_if_directive and
	parsing_define_directive.

2000-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/inclhack.def (broken_cabs): Update fix to handle comments
	following the cabs decl which terminate on the following line.
	Add the corresponding test_text case.

2000-05-18  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (cpp_reader_init): Initialize col_adjust and
	default tab stop size.
	(no_num, OPT_ftabstop): New.
	(handle_option): Handle "ftabstop=" command-line option.
	(print_help): Document it.
	* cpplex.c (COLUMN): Remove.
	(handle_newline): Reset col_adjust.
	(skip_whitespace): Update col_adjust as tabs encountered.
	(_cpp_lex_line): Update to use col_adjust.  Call
	skip_whitespace for all whitespace.
	* cpplib.h (struct cpp_options): New member tabstop.
	(struct cpp_reader): New member col_adjust.
	(CPP_BUF_COL): Update.
	(CPP_BUF_COLUMN): New.
	* cpp.texi: Document "-ftabstop=" command line option.

Wed May 17 18:19:41 2000  Philippe De Muyter  <phdm@macqel.be>

	* configure.in (NO_MINUS_C_MINUS_O): Macro made availabe for AC_OUTPUT
	files.
	* configure: Rebuilt.

Wed May 17 18:06:12 2000  John David Anglin <dave@hiauly1.hia.nrc.ca>

	* mklibgcc.in Add missing -DL$name when compiling modules in libgcc1.c.

	* tree.c (build_common_tree_nodes): Do not build TI nodes unless
	HOST_BITS_PER_WIDE_INT is >= 64.

2000-05-17  Richard Henderson  <rth@cygnus.com>

	* jump.c (jump_optimize_1): Remove inactive but real insns
	in jump-to-next-insn optimization.

2000-05-17  Richard Henderson  <rth@cygnus.com>

	* toplev.c (rest_of_compilation): Don't call optimize_mode_switching
	unless OPTIMIZE_MODE_SWITCHING.  Conditionally set no_new_pseudos.
	Don't call recompute_reg_usage if no_new_pseudos is true.
	* lcm.c (optimize_mode_switching): Move ifdefs outside function.
	Return true if we did work; update global life information.
	* basic-block.h (optimize_mode_switching): Update decl.

2000-05-17  Neil Booth  <neilb@earthling.net>

	* cpplex.c (expand_name_space): Don't use ptrdiff_t.

2000-05-17  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c: New feature, #pragma system_header.
	* cpp.texi: Document special treatment of system headers, and
	the various mechanisms to get a header that special treatment.

2000-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (offsetof): Define at the very end, to ensure we prefer
	the platform's definition if available.

2000-05-16  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixincl.c: improve the debug displays, ignore SIGPIPE
	* fixinc/server.c: likewise
	* fixinc/fixfixes.c( char_macro_def_fix ): fix regex
	+ #ifdef debugging code + use #def constant for
	sub-pattern count
	* fixinc/inclhack.def( hpux11_fabsf ): Keep HP-UX 11 from stomping
	on C++ math namespace

2000-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/fixfixes.c (char_macro_use_fix, char_macro_def_fix):
	Don't check the return value of sprintf.  Use asprintf to avoid
	buffer overflows.

Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* flags.h (warn_unused_function, warn_unused_label,
	warn_unused_parameter, warn_unused_variable, warn_unused_value):
	Replace ``warn_unused''.
	(set_Wunused): Add declaration.
	* toplev.c (set_Wunused): New function.
	(warn_unused_function, warn_unused_label, warn_unused_parameter,
	warn_unused_variable, warn_unused_value): New variables.
	(W_options): Add -Wunused-function, -Wunused-function,
	-Wunused-label, -Wunused-parameter, -Wunused-variable and
	-Wunused-value.  Delete -Wunused.  Handled in decode_W_option.

	* toplev.c (decode_W_option): Update -Wunused flags by calling
	set_Wunused.
	* c-decl.c (c_decode_option): Ditto for -Wall.

	* stmt.c (expand_expr_stmt, expand_expr_stmt,
	warn_about_unused_variables): Replace warn_unused with more
	explicit warn_unused_value et.al.
	* function.c (expand_function_end): Ditto.
	* c-typeck.c (internal_build_compound_expr,
	internal_build_compound_expr): Ditto.
	* c-decl.c (poplevel, pop_label_level): Ditto.
	* toplev.c (check_global_declarations): Replace warn_unused with
	check for either warn_unused_function or warn_unused_variable.

	* gcc.1, invoke.texi (Warning Options): Document
	-Wunused-function, -Wunused-function, -Wunused-label,
	-Wunused-parameter, -Wunused-variable and -Wunused-value options.

Wed May 17 10:28:12 2000  Philippe De Muyter  <phdm@macqel.be>

	* mklibgcc.in (building libgcc1) [Xlibgcc1.a]: Find libgcc1.c in
	$(srcdir), not in the current directory.

2000-05-16  Richard Henderson  <rth@cygnus.com>

	* config/ia64/crtbegin.asm (__dso_handle): Mark hidden if the
	assembler supports it.
	(.fini, .init): Use a gp-relative indirect call.
	(__do_global_dtors_aux): Preserve the gp; rebundle.
	(__do_frame_setup): Likewise.
	* config/ia64/crtend.asm (.IA_64.unwind): Don't terminate with -1.
	(.init): Use a gp-relative indirect call.
	(__do_global_ctors_aux): Preserve the gp.

2000-05-16  Richard Henderson  <rth@cygnus.com>

	* flow.c (commit_one_edge_insertion): Be prepared for a return
	insn to be inserted on the edge with a normal jump.
	* jump.c (jump_optimize_1): Don't look to create return isns.

	* flow.c (flow_delete_insn): Don't adjust reference count of notes.
	* jump.c (jump_optimize_1): Likewise.
	(returnjump_p): Verify the argument is a JUMP_INSN.
	* rtl.def (NOTE): Add 5th element for NOTE_INSN_DELETED_LABEL.

2000-05-16  Nick Clifton  <nickc@cygnus.com>

	* config/m32r/m32r.c (small_insn_p): Use INSN_P() to replace
	GET_RTX_CLASS (GET_CODE ()) == 'i'.
	(large_insn_p): Ditto.
	(m32r_is_insn): New function: Return true if the insn contains
	an executable instruction.
	(m32r_adjust_insn): Use m32r_is_insn.
	(m32r_sched_reorder): Use m32r_is_insn.
	(m32r_sched_variable_issue): Use m32r_is_insn.

2000-05-16  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000/rs6000.c (rs6000_select_section): Treat CONSTRUCTOR like
	VAR_DECL.

	* rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Delete unused variable.

	* rs6000/sysv4.h (CPP_OS_LINUX_SPEC): Define __unix and __linux
	according to given options.

Tue May 16 12:17:31 2000  Jeffrey A Law  (law@cygnus.com)

	* mn10200.h (PREFERRED_RELOAD_CLASS): Do not prefer DATA_REGS
	if X has VOIDmode either.
	(LIMIT_RELOAD_CLASS): Similarly.

	* mn10200.md (indirect_jump, tablejump): Use "register_operand",
	not "general_operand" to match the processor's capabilities.

2000-05-16  Bruce Korb  <bkorb@gnu.org>

	* fixinc/README:  corrected return address
	* fixinc/check.diff:  regenerate, now that test works
	* fixinc/fixfixes.c(format_fix,format_write): reformatted
	(char_macro_def_fix,char_macro_use_fix): corrected and
	rewrote to use regex to parse the text
	* fixinc/inclhack.def: more testing
	* fixinc/fixincl.x:  regenerated

	* fixinc/inclhack.def: added several "test_text" attributes
	changed several fixes to use `c_fix = format'
	re-alphabetized the fixes

	* fixinc/check.diff: regenerate
	* fixinc/fixincl.x: regenerate
	* fixinc/check.tpl: added `sparc' and `netinet' to the list
	of created dirs


2000-05-16  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (ASM_OUTPUT_DWARF2_ADDR_CONST): Remove.

2000-05-15  Richard Henderson  <rth@cygnus.com>

	* toplev.c (rest_of_compilation): Run full jump pass before
	find_basic_blocks of flow2.

2000-05-15  Richard Henderson  <rth@cygnus.com>

	* jump.c: Fix typos and clarify commentary from last change.
	(any_condjump_p): Verify SET_SRC is an IF_THEN_ELSE.
	(safe_to_remove_jump_p): Remove.
	(condjump_label): Use pc_set.

2000-05-15  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (cond_exec_process_insns): Drop USE and CLOBBER insns
	that get in the way after reload.
	(cond_exec_process_if_block): Skip a label heading THEN block.

2000-05-15  Richard Henderson  <rth@cygnus.com>

	* varasm.c (output_constant_pool): Abort instead of converting
	(improperly) deleted labels to zero.

2000-05-16  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (parse_string2): Update comment.
	(cpp_lex_line): No special assertion treatment for '('.
	* cpplib.c (DIRECTIVE_TABLE): Remove SYNTAX_ASSERT.
	* cpplib.h (SYNTAX_ASSERT): Remove.

Mon May 15 21:45:36 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* jump.c (condjump_p):  Mark as depreached.
	(any_condump_p): New.
	(any_uncondump_p): New.
	(pc_set): New.
	(safe_to_remove_jump_p): New.
	* rtl.h (any_condump_p, any_uncondjump_p, pc_set
	safe_to_remove_jump_p): Declare.

Mon May 15 21:07:20 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c: Re-install both patches reverted by last patch.
	(struct arg_data): New field tail_call_reg.
	(initialize_argument_information): Initialize tail_call_reg
	(load_register_parameters): New argument flags, use
	tail_call_reg when emiting tail call sequence.
	(expand_call): Update call of load_register_parameters;
	copy unadjusted_args_size to adjusted_args_size.

Mon May 15 19:01:42 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (scan_loop, strength_reduce, loop_optimize): Change unroll_p
	and bct_p parameters to flags.
	* loop.h (LOOP_UNROLL, LOOP_BCT): New constants.
	* rtl.h (loop_optimize): Update prototype.
	* toplev.c (rest_of_compilation): Update call of loop_optimize.

2000-05-15  Jakub Jelinek  <jakub@redhat.com>

	* calls.c (expand_call): Move expand_start_target_temps call after
	start_sequence().

2000-05-15  Neil Booth  <NeilB@earthling.net>

	* cpphash.c (trad_stringify, warn_trad_stringify,
	collect_params): Make some pointers pointers to const.
	* cpplex.c (auto_expand_name_space) Guaranteed to always
	expand by at least one character.
	(SPELL_CHAR, SPELL_NONE): Temporarily reverse order.
	(struct token_spelling): Use const U_CHAR * rather than PTR.
	(expand_name_space): Fix up token pointers if name space
	is moved when expanding.
	(INIT_NAME, cpp_scan_line, parse_name, parse_number,
	parse_string2, save_comment, spell_token, cpp_output_list):
	Update so the routines handle tokens with a direct pointer to
	their text, rather than an offset into the token's list's namebuf.
	(_cpp_lex_line): Rearrange for clarity.

	* cpplib.c (_cpp_check_directive): Similarly.
	(do_define): Make SYM a pointer to const.
	* cpplib.h (struct cpp_name): Replace offset with direct pointer.
	(CPP_INT, CPP_FLOAT): Spelling type should be SPELL_IDENT.
	(TOK_OFFSET): Delete.
	(TOK_NAME): Update.

2000-05-14  Geoffrey Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.h (RETURN_ADDRESS_OFFSET): Correct for
	64-bit ABI.

	* config/rs6000/rs6000.c (logical_operand): Rewrite to take MODE
	into account.
	(logical_u_operand): Delete.
	(non_logical_cint_operand): Rewrite to take MODE into account.
	(non_logical_u_cint_operand): Delete.
	(boolean_operator): New function.
	(print_operand): Add new %q operand.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add boolean_operator,
	remove logical_u_operand and non_logical_u_cint_operand,
	update logical_operand and non_logical_cint_operand.
	* config/rs6000/rs6000.md: Rewrite the patterns for performing
	logical operations to use %q.

	* config/rs6000/rs6000.md (movsi): Don't modify RTL in-place.
	(movdi): Make similar to movsi.
	* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): There
	is no such thing as a DImode CONST_DOUBLE.
	* config/rs6000/rs6000.c (output_toc): Likewise.

	* config/rs6000/rs6000.c (output_cbranch): Don't output prediction
	codes when old mnemonics are in use.  Print register names
	for cc registers when requested.

	* optabs.c (expand_float): Don't allow mode widening that causes
	double rounding.

	* invoke.texi (RS/6000 and PowerPC Options): Update -m64/-m32
	flags to their current names -maix64 and -maix32.

2000-05-14  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c(wrap_fix): new fix - inserts text before
	and/or after current text of file
	* fixinc/fixlib.c(must_malloc):
	* fixinc/fixlib.h(must_malloc): + reformatting
	* fixinc/inclhack.def: replace the "1i" and "$a" sed commands
	with usages of ``c_fix = wrap;''
	Add several tests and use the ``c_fix = format'' fixer more.
	* fixinc/fixincl.x: regen
	* fixinc/check.diff: regen
	* fixinc/check.tpl: emit the associated header with the missing
	test message

Sun May 14 17:58:59 2000  Hans-Peter Nilsson  <hp@axis.com>

	* mklibgcc.in (building libgcc1) [Xlibgcc1.a]: Do not use unset
	variables $src and $dst.

2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>

	* diagnostic.h (DIAGNOSTICS_SHOW_PREFIX_ONCE): New macro.
	(DIAGNOSTICS_SHOW_PREFIX_NEVER): Likewise.
	(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE): Likewise.
	(struct output_buffer: emitted_prefix_p, prefixing_rule): New
	fields.
	(set_message_prefixing_rule): Declare.

	* diagnostic.c: (current_prefixing_rule): New variable.
	(set_message_prefixing_rule): Define.
	(output_set_prefix): Adjust buffer->emitted_prefix_p.
	(init_output_buffer): Adjust Initialization.
	(output_emit_prefix): Rewrite.  Take prefixing rules into account.

Sat May 13 11:05:47 2000  Philippe De Muyter  <phdm@macqel.be>

	* ifcvt.c (if_convert): Do not free NULL.

2000-05-12  H.J. Lu  (hjl@gnu.org)

	* gthr-dce.h: Add support for libobjc.
	* gthr-posix.h: Likewise.
	* gthr-solaris.h: Likewise.
	* gthr-vxworks.h: Likewise.
	* gthr-single.h: Likewise.
	* gthr-win32.h: Likewise.

2000-05-12  Nick Clifton  <nickc@cygnus.com>

	* config/fr30/fr30.c (fr30_move_double): New function:  Emit code
	to move a double word value.
	(di_operand): New function: Return true if the operand is suitbale
	for a double word move operation.
	(nonimmediate_di_operand): New function: Return true if the
	operand is a DImode register or MEM.

	* config/fr30/fr30.h (PREDICATE_CODES): Add di_operand and
	nonimmediate_di_operand.

	* config/fr30/fr30-protos.h Add fr30_move_double, di_operand, and
	nonimmediate_di_operand.

	* config/fr30/fr30.md (movdi): New pattern.  Required because
	other patterns generate DImode results.
	(movdi_insn): New pattern.

2000-05-12  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (struct shadow_summary): Define
	bitfields as type unsigned int.

Sat May 13 00:09:59 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/t-avr: Added definition of FLOAT while generates
	fp-bit.c

	* config/avr/avr.md: `NEXT_INSN (insn)' substituted to `insn' in
	peepholes for tst+jump = sbrs/sbrc optimization.

Fry May 12 20:03:00 CEST 2000  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_push_insn): Do not adjust stack pointer when
	preallocating.

Fri May 12 19:03:58 2000  Philippe De Muyter  <phdm@macqel.be>

	* ggc-simple.c (offsetof): Macro fallback definition moved from here ..
	* system.h (offsetof): ... to here.

2000-05-12  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (final.o): Depend on BASIC_BLOCK_H.
	* final.c (final_end_function): Use app_disable.  Rearrange note
	handling into a switch.  Emit deleted labels.
	(output_asm_label): Generate label strings for deleted labels.
	* flow.c (tail_recursion_label_list): New.
	(find_basic_blocks_1): Set label_value_list directly.  Collect list
	of tail recursion labels from call_placeholders.  Don't add deleted
	labels to the label value list.
	(cleanup_cfg): Use free_EXPR_LIST_list.
	(flow_delete_insn_chain): Turn non-removable labels into notes.
	(flow_delete_block): Don't disable deleting the block because of
	a non-removable label.
	(tail_recursion_label_p): New.
	(merge_blocks_move_predecessor_nojumps): Don't disable the merge
	because of a label.
	(merge_blocks_move_successor_nojumps): Likewise.  Also move a
	jump table.
	(merge_blocks): Disable a merge because of tail recursion labels.
	* ifcvt.c (merge_if_block): Don't disable a merge because of a label.
	Use a more accurate measure of not merging the join block.
	(find_if_block): Don't disable conversion because of a label.
	(find_if_case_1, find_if_case_2): Likewise.
	* jump.c (duplicate_loop_exit_test): Preserve the kind of list
	element when copying.
	(squeeze_notes): Also leave EH notes.
	(mark_jump_label): Ignore deleted labels.  Use an INSN_LIST for
	REG_LABEL notes.
	(delete_insn): Preserve LABEL_NAME in NOTE_SOURCE_FILE when
	deleting a label.
	* print-rtl.c (print_rtx): Print NOTE_SOURCE_FILE for
	NOTE_INSN_DELETED_LABEL.  Print `[# deleted]' for a label_ref
	referring to a deleted label.  Convert tail handling to a switch.
	* rtl.def (CODE_LABEL): Rearrange elements to be compatible with NOTE
	for NOTE_INSN_DELETED_LABEL.
	(NOTE): Fix commentary.
	* rtl.h (REG_LABEL): Update commentary wrt INSN_LIST.
	(REG_CC_SETTER, REG_CC_USER, REG_LIBCALL): Likewise.
	(CODE_LABEL_NUMBER, LABEL_NAME): Update index.
	(LABEL_NUSES, LABEL_REFS): Likewise.
	* unroll.c (copy_loop_body): Don't copy NOTE_INSN_DELETED_LABEL.

2000-05-12  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c(format_write): buglet & relaxed rules
	* fixinc/check.diff: updated
	* fixinc/inclhack.def: corrected & added some test_text-s
	* fixinc/genfixes: removed unneeded options to autogen invocation
	* fixinc/fixincl.tpl: Specified the output file
	* fixinc/fixfixes.c: visual appearance
	* fixinc/fixincl.x: regenerate

2000-05-12  Zack Weinberg <zack@wolery.cumb.org>

	* fixinc/fixfixes.c (IO_use_fix, IO_defn_fix, CTRL_use_fix,
	CTRL_defn_fix): Delete.
	(fix_char_macro_defines, fix_char_macro_uses): Rename to
	char_macro_def_fix and char_macro_use_fix, respectively.  Put
	them into the FIXUP_TABLE.  Get the string to search for from
	a c_fix_arg.

	(format_write): New function.
	(format_fix): Use it.

	(FIX_PROC_HEAD): Constify text parameter.
	(machine_name_fix): Constify all char *s.
	* fixtests.c (skip_quote): Remove double static.

	* inclhack.def (io_def_quotes, io_use_quotes, ctrl_def_quotes,
	ctrl_use_quotes): Update for new scheme.
	* fixincl.x: Regenerate.

2000-05-12  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (PREFERRED_DEBUGGING_TYPE): Redefine as
	DWARF2_DEBUG.
	(DWARF2_ASM_LINE_DEBUG_INFO): Define.
	(ASM_OUTPUT_DWARF2_ADDR_CONST): Define.

2000-05-11  Robert Lipe <robertlipe@usa.net>

	* fixinc/inclhack.def (hpux8_bogus_inlines): Delete bypass for SCO.
	* fixincl.x: Regenerate.

2000-05-11  Richard Henderson  <rth@cygnus.com>

	* calls.c: Revert both 05-09 patches.

2000-05-11  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.c (print_operand): Print FP constants in
	hexadecimal.
	* config/mn10300/mn10300.md (movsf, movdf): Use the `F' constraint
	for FP values.

	* mklibgcc.in (EQ): Define it to an equal sign in the Makefile,
	and replace any occurrences of `=' in multilib dirs with `$(EQ)'.

2000-05-11  Jason Merrill  <jason@casey.cygnus.com>

	* fixinc/fixincl.c (run_compiles): Don't crash on null pz_machine.

2000-05-11  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/fixfixes.c, fixinc/fixtests.c: Update commentary.

Thu May 11 22:28:05 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.c (jump_over_one_insn_p): New declaration.
	* config/avr/avr.c (jump_over_one_insn_p): New function.
	* config/avr/avr.md: New peepholes added. Output test and
	conditional jump to "sbrc" or "sbrs" command.

2000-05-11  Mark Elbrecht  <snowball3@bigfoot.com>

	* cppmain.c (main): Use IS_DIR_SEPARATOR.

2000-05-11  Jakub Jelinek  <jakub@redhat.com>

	* except.c (find_exception_handler_labels_1): New function.
	(find_exception_handler_labels): Split into two functions, dive
	into CALL_PLACEHOLDERs when looking for exception handler labels.

2000-05-11 Stan Cox <scox@cygnus.com>

	* regrename.c (replace_reg_in_block): Improve REG_DEAD handling.
	* timevar.def (TV_RENAME_REGISTERS): Move before TV_SCHED2.
	* toplev.c (rest_of_compilation): Call regrename_optimize before sched2.

2000-05-11  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c (double_slash_fix):  obsolete
	(else_endif_label_fix): obsolete
	(format_fix):  new, unused as yet
	(main): obsolete
	* fixinc/fixlib.h: added fix description struct for use by format_fix
	* fixinc/fixincl.c: removed the struct & test for SIGIOT befure using
	* fixinc/Makefile.in:  compile fixfixes.c and fixtests.c as separate
	modules.  Removed the vestiges of the script version.
	Added support for "make check".
	* fixinc/check.diff: base diff file (needs work!!)
	* fixinc/check.tpl: quiet the fixup output
	* fixinc/fixtests.c (main): obsolete
	* fixinc/fixincl.sh:  don't bother copying fixincl to ..
	* fixinc/fixincl.tpl:  provide for arguments to c_fix routines

Thu May 11 11:57:02 MET DST 2000  Jan Hubicka <jh@suse.cz>

	* toplev.c (rest_of_compilation): Remove dead code after
	combine.

2000-05-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (collect_funlike_expansion): Make "# is not
	followed by a macro argument name" a pedwarn, not an error.
	Preserve the # in the output.  Suppress the warning if lang_asm.

Thu May 11 01:19:31 2000  Jeffrey A Law  (law@cygnus.com)

	* configure.in (hppa*64*-*-hpux11*): New target for PA64 support.
	* configure: Rebuilt.

2000-05-10 Laurynas Biveinis <lauras@softhome.net>

	* i386/xm-djgpp.h (XREF_FILE_NAME): Add mising brace.

2000-05-10  Kazu Hirata  <kazu@hxi.com>

	* combine.c (try_combine): Fix a typo.

Wed May 10 21:31:44 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.md (insv): Add comment.

2000-05-10  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (libgcc.a, stmp-multilib): Depend on FPBIT and DPBIT.
	* mklibgcc.in: Rewrite to not use functions.  Don't shortcut
	dependencies on FPBIT and DPBIT.

2000-05-10  Nick Clifton  <nickc@redhat.com>

	* flow.c (find_auto_inc): Do not bias REG_N_REFS by loop_depth
	when optimising for size.
	(mark_used_regs:) Ditto.
	(try_pre_increment_1): Ditto.

2000-05-10  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c (lex): Use %.*s to print non-NUL-terminated string.
	Make error message friendlier.

	* cpphash.h (struct hashnode): Use struct hack for name
	member.
	* cpphash.c (struct hashdummy): New.
	(eq_HASHNODE): Second argument is a hashdummy, not a HASHNODE.
	(make_HASHNODE): No need to set ->name pointer.  Correct
	setting of p.
	(cpp_lookup): Make 'dummy' a struct hashdummy.  Tidy up a bit.

2000-05-10  Richard Henderson  <rth@cygnus.com>

	* flow.c (find_basic_blocks_1): Remove any spare bb_note
	after completion.

2000-05-10  Bruce Korb  <bkorb@gnu.org>

	* fixinc/gnu-regex.c:  reg_syntax_t re_syntax_options must be static

2000-05-10  Eric Schweitz  <schweitz@nortelnetworks.com>

	* dwarfout.c (dwarfout_finish): Call retry_incomplete_types
	after we enter .debug.

2000-05-10  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (gen_subprogram_die): Fixup die_parent for the
	abstract instance of a nested inline function.

	* stor-layout.c (finish_record_layout): finalize_type_size
	before laying out the pending_statics.

Wed 10 May 09:36:47 2000  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (spell_token): New function.
	(spell_string, spell_comment, spell_name): fold into
	spell_token.
	(I, S): Add macros.
	(E, H): Remove macros.
	(save_comment): Save comment opening characters too.
	(_cpp_lex_file): Update to use spell_token.  Tidy up comment
	handling.
	* cpplib.h (I, S): Add macros.
	(E, H): Remove macros.
	(TTYPE_TABLE): Update entries for new speller.
	(SYNTAX_ASSERT): Remove.

Wed 10 May 09:08:30 2000  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (_cpp_lex_line): Maintain PREV_WHITESPACE flag
	when removing escaped newlines.  Reverse sense of test for
	escaped newline.

2000-05-09  Richard Henderson  <rth@cygnus.com>

	* flow.c (find_basic_blocks_1): Do not delete the first
	bb_note we run across.
	(create_basic_block): Use reorder_insns to move an existing
	bb_note to the correct place.

2000-05-09  Richard Henderson  <rth@cygnus.com>

	* calls.c (expand_call): Increment currently_expanding_call
	before calling optimize_tail_recursion.

Tue May  9 18:54:16 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload1.c (reload_combine): Fix errors in last change.

2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>

	* gcc.c (used_arg): Skip over a semicolon at the end of the
	split-up loop; don't break out of it.

	* Makefile.in (WARN_CFLAGS): Add -Wwrite-strings.
	(tree.o): Depend on output.h.

	* c-decl.c (pending_invalid_xref_file,
	current_function_prototype_file): Constify.
	(pushdecl): Constify a local char *.
	(define_label): Constify filename parameter.
	* c-lex.c (init_parse): Constify parameter and return value.
	* c-typeck.c (c_expand_asm_operands): Constify filename parameter.
	* c-tree.h: Update prototypes.
	* c-parse.in: Constify filename member of %union, and if_stmt_file.
	* c-parse.y, c-parse.c, c-parse.h, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

	* dwarfout.c (dwarfout_init): Constify main_input_filename parameter.
	* dwarfout.h: Update prototypes.
	* expr.c (expand_expr): Constify a local char *.
	* flags.h: Constify main_input_filename.
	* function.c (expand_function_end): Constify filename parameter.
	* genrecog.c (make_insn_sequence): Use a character array for
	c_test_pos.
	(main): Remove unused variables.
	* input.h: Constify input_filename, main_input_filename, and
	file_stack.name.  Update prototypes.
	* output.h: Declare first_global_object_name and
	weak_global_object_name here, as const char *.
	* stmt.c (expand_asm_operands): Constify filename parameter.
	* toplev.c (compile_file, push_srcloc, debug_start_source_file):
	Constify filename parameter.
	(input_filename, main_input_filename): Constify.
	* toplev.h: Update prototypes.
	* tree.c: Include output.h.  Don't declare
	first_global_object_name or weak_global_object_name.  Clean up string
	bashing in get_file_function_name_long.
	* tree.h (struct tree_decl): Constify filename member.
	(input_filename): Constify.
	Update prototypes.
	* varasm.c (first_global_object_name, weak_global_object_name):
	Constify.
	(assemble_start_function, assemble_variable): Clean up string bashing.

	* gcc.c: Constify all spec-related strings initialized,
	transitively, from string constants.  Constify all strings
	and string variables related to multilibs.
	(set_spec, read_specs): Cast argument to free to PTR.
	(used_arg): Do not modify multilib_matches.  Use strncmp plus
	length comparison to compare multilib switches.
	* genmultilib: Constify everything declared in multilib.h.

Tue May  9 22:28:03 2000  Denis Chertykov  <denisc@overta.ru>

	* flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn
	as deleted.

Tue May  9 20:52:43 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.h (extra_constraint): change a type of
	second argument from char to int to avoid warnings.
	(asm_output_byte): Likewise.

	* config/avr/avr.c (MAX_LD_OFFSET) New macro.
	(initial_elimination_offset): Handle elimination from
	FRAME_POINTER_REGNUM to STACK_POINTER_REGNUM.
	(legitimate_address_p): Use MAX_LD_OFFSET.
	(legitimize_address): Likewise.
	(out_movqi_r_mr): Likewise.
	(out_movhi_r_mr): Likewise, use `fatal_insn' instead of `fatal'.
	(out_movsi_r_mr): Use MAX_LD_OFFSET.
	(out_movsi_mr_r): Likewise.
	(out_movqi_mr_r): Likewise.
	(out_movhi_mr_r): Likewise.
	(notice_update_cc): Correct CC for the ashrqi3 with the shift
	count as CONST_INT != 6.
	(ashlqi3_out): Coding style modifications. Run `fatal_insn' if
	shift count is a CONSTANT_P, but not a CONST_INT.
	(ashlhi3_out): Coding style modifications.
	(ashlsi3_out): Likewise.
	(ashrhi3_out): Likewise.
	(ashrsi3_out): Likewise.
	(lshrhi3_out): Likewise.
	(lshrsi3_out): Likewise.
	(ashrqi3_out): Generate shift for any known constant count without
	scratch register. Run `fatal_insn' if shift count is a CONSTANT_P,
	but not a CONST_INT.
	(lshrqi3_out): Coding style modifications. Run `fatal_insn' if
	shift count is a CONSTANT_P, but not a CONST_INT.
	(extra_constraint): change a type of
	second argument from char to int to avoid warnings.
	(asm_output_byte): Likewise.
	(asm_file_end): Output size generated commands count as a hex
	number too.

	* config/avr/avr.h (RETURN_ADDR_RTX): New macro.

	* config/avr/avr.md (addhi3): Fragment commented by &&0 is
	removed.
	(ashlqi3): Values of "length" attribute changed. Shift count
	uses constraints 'n' instead of 'i'.
	(ashrqi3): Likewise. Values of "cc" attribute changed. Generate
	shifts without clobber register.
	(lshrqi3): Shift count uses constraints 'n' instead of 'i'.
	(call_insn): Correct test for which_alternative == 1 (was 0).
	(call_value_insn): Likewise.

	* config/avr/t-avr: Remove definition of FLOAT while generates
	fp-bit.c

2000-05-09  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl:  Template for checking fixes
	* fixinc/inclhack.def:  Added 'test_text' for many fixes
	disable hpux8_bogus_inlines on SCO
	* fixinc/fixinc.sco:  Oh, yes, we don't need this any more.

Tue May  9 16:30:27 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Reorganize somewhat in order
	to avoid unnecesary recalculation inside loop and make
	tail call failure code cleaner.

Tue May  9 06:30:20 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (nonlocal_reference_p): Minor reformatting.
	* reload.c (find_equiv_reg): Simplify logic for
	CALL_INSN_FUNCTION_USAGE since can't have SUBREG or pseudos and
	some some reformatting.
	* reload1.c (reload_combine): Don't assume everything in
	CALL_INSN_FUNCTION_USAGE is a REG and clean up code a bit.

2000-05-08  Richard Henderson  <rth@cygnus.com>

	* final.c (current_insn_predicate): New.
	(final_scan_insn): Set it.
	* output.h (current_insn_predicate): Declare.

	* ifcvt.c (cond_exec_process_insns): New argument prob_val.
	Attach it to call insns.
	(cond_exec_process_if_block): Track probability for true and
	false branches.
	(dead_or_predicable): Likewise.

	* predict.c (PROB_NEVER, PROB_VERY_UNLIKELY): New.
	(PROB_UNLIKELY, PROB_EVEN, PROB_LIKELY): New.
	(PROB_VERY_LIKELY, PROB_ALWAYS): New.
	(estimate_probability, expected_value_to_br_prob): Use them.

	* config/ia64/ia64-protos.h (ia64_expand_prediction): Declare.
	* config/ia64/ia64.c (ia64_print_operand_address): Handle 'j'.
	(ia64_expand_prediction): New.
	(emit_insn_group_barriers): Don't look at notes.  Emit barriers
	as needed after calls.
	(ia64_epilogue_uses): Mark b0 used.
	* config/ia64/ia64.md (beq_true, beq_false): Remove.
	(bne_true, bne_false): Remove.
	(eq_return, eq_not_return, ne_return, ne_not_return): Remove.
	(br_true, br_false): New.  Use predicate_operator and
	ia64_expand_prediction.
	(return_true, return_false): Likewise.
	(call_internal): Use ia64_expand_prediction.  Don't emit stop bit.
	(call_internal1, call_value_internal): Likewise.
	(call_value_internal1, call_multiple_values_internal1): Likewise.

	* config/ia64/ia64.c (ia64_direct_return): Require frame size zero.

	* config/ia64/ia64.md (extendsfdf2): Split only after reload.

2000-05-08  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (may_trap_p): Consider old-style and volatile
	asms to trap.

Mon May  8 17:16:48 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (RETURN_ADDR_RTX): Use COUNT not count.

2000-05-08  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.h (predicate_operator): Declare.

	* config/ia64/ia64.md (extendsfdf2): Split the nop case out
	of existence.

	* gensupport.c (process_rtx): Copy and post-process each member
	of the define_insn rtvec individually.

Mon  8 May 22:17:35 2000  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (spell_token): New function.
	(TOKEN_LEN): Add 1 for whitespace.
	(_cpp_lex_file): Update to use spell_token.
	* cpplib.h (E): Remove.
	(TTYPE_TABLE): Update CPP_VSPACE entry.

2000-05-08  Richard Henderson  <rth@cygnus.com>

	* flow.c (init_propagate_block_info): Watch out for conditional
	branch to next instruction, and thus one outgoing edge.

	* config/ia64/ia64.c (ia64_encode_section_info): Exit early
	for global register variables; don't special case __[CD]TOR_LIST__;
	mind ggc_p for string allocation.

2000-05-08  Nick Clifton  <nickc@cygnus.com>

	* config/i386/i386.h (ELIMINABLE_REGS): Fix comment.

2000-05-08  Bruce Korb  <bkorb@gnu.org>

	* fixinc/mkfixinc.sh:  fixinc.sco is no longer used
	i?86-*-msdosdjgpp* no longer uses fixincludes
	* fixinc/genfixes:  inclhack.sh and fixincl.sh are no longer generated
	* fixinc/inclhack.sh:  deleted
	* fixinc/hackshell.tpl:  deleted
	* fixinc/inclhack.tpl:  deleted
	* fixinc/Makefile.in:  Remove dependencies on above
	* fixinc/fixincl.sh:  "DO NOT EDIT" text modified

2000-05-08  Andreas Jaeger  <aj@suse.de>

	* config/mips/linux.h: Remove undefines which disabled .ctor/.dtor
	support.

2000-05-07  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (LOOSE_CFLAGS): Add /g modifiers to both sed
	substitutions.

Sun  7 May 08:43:53 2000  Neil Booth  <NeilB@earthling.net>

	* cpplex.c: Move new lexer definitions and prototypes
	to top.  Conditional include these and the code if
	NEW_LEXER is defined.  Rename functions whose names
	clash if this code included.

Sun May  7 00:54:57 EDT 2000  John Wehle  (john@feith.com)

	* rtl.def (COND_EXEC): Clarify.

	* i386.md (extendsidi2): Clobber (reg:CC 17) in the
	same fashion as zero_extendsidi2.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* config/ia64/ia64.c (predicate_operator): New.
	(ia64_print_operand): Handle 'J'.
	(rtx_needs_barrier): Handle COND_EXEC.
	* config/ia64/ia64.h (BRANCH_COST): Define.
	(PREDICATE_CODES): Update.
	* config/ia64/ia64.md: Document used unspec values.
	(attr predicable): New.
	(movxf, movxf_internal): New.
	(extendsfdf2): Don't comment out nop.
	(floatdidf2): Remove.
	(truncxfsf2, truncxfdf2, floatdixf2): New.
	(abssi2, absdi2): Put the neg in the "true" slot.
	(conditional branch instructions): Mark not predicable.
	(cmov*_internal): Use predicate_operator.  Split to cond_exec.
	(abs*_internal): Likewise.
	(alloc, set_bsp): Mark not predicable.
	(barrier, insn_group_barrier, flush_cache): Likewise.
	(define_cond_exec): New.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* c-decl.c: Include "tm_p.h".

	* config/ia64/ia64-protos.h: Rearrange decls to reduce ifdef madness.
	(fetchadd_operand, ia64_expand_fetch_and_op): Declare.
	(ia64_expand_op_and_fetch): Declare.
	* config/ia64/ia64.c: Include "toplev.h".  Kill trailing whitespace.
	(setjmp_operand): Constify variables for XSTR.
	(ia64_encode_section_info): Likewise.
	(ia64_print_operand): Use %d for exact_log2; cast 32-bit printed
	values to int.
	(ia64_asm_output_external): Constify name.
	(process_set): Use HOST_WIDE_INT_PRINT_DEC for frame size.
	(process_for_unwind_directive): Provide switch default.
	(ia64_expand_compare_and_swap): Remove unused variables.
	(ia64_expand_builtin): Likewise.
	* config/ia64/ia64.h (ASM_OUTPUT_BYTE): Mask and cast value to int
	for printing.

	* config/ia64/ia64.c (sdata_symbolic_operand): Mark unused args.
	(symbolic_operand, function_operand, setjmp_operand): Likewise.
	(shift_count_operand, shift_32bit_count_operand): Likewise.
	(shladd_operand, fetchadd_operand, ia64_function_prologue): Likewise.
	(ia64_function_epilogue, ia64_setup_incoming_varargs): Likewise.
	(ia64_function_arg_partial_nregs, ia64_function_value): Likewise.
	(ia64_print_operand_address, ia64_secondary_reload_class): Likewise.
	(ia64_expand_builtin): Likewise.
	(call_multiple_values_operation): Make dest_regno unsigned.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* rtl.def (DEFINE_COND_EXEC): New.
	* md.texi: Document it.

	* gensupport.c (input_file): Remove.
	(struct queue_elem): Add lineno.
	(rtx_ready_queue): Remove.
	(errors): New.
	(predicable_default): New.
	(predicable_true, predicable_false): New.
	(define_attr_queue, define_attr_tail): New.
	(define_insn_queue, define_insn_tail): New.
	(define_cond_exec_queue, define_cond_exec_tail): New.
	(other_queue, other_tail): New.
	(queue_pattern): New.
	(process_rtx): Add patterns to the appropriate queues.
	(is_predicable, identify_predicable_attribute): New.
	(n_alternatives, collect_insn_data): New.
	(alter_predicate_for_insn, alter_test_for_insn): New.
	(shift_output_template, alter_output_for_insn): New.
	(process_one_cond_exec, process_define_cond_exec): New.
	(init_md_reader): Read the entire file.  Process define_cond_exec.
	(read_md_rtx): Return elements from the queues.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_set_1): Don't update conditional life info
	if the register is not_dead.

2000-05-06  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (STAGESTUFF): Add genrtl.c and genrtl.h.
	(mostlyclean): Also delete fixincl, fixinc.sh, and
	specs.ready, and make clean in the fixinc subdir.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (gensupport.o): Compile for the host.
	(host-prefix gensuuprt.o): Remove.
	(genflags.o): Depend on gensupport.h and OBSTACK_H.
	(genattrtab.o): Likewise.
	(gencodes.o): Depend on gensupport.h.
	(genemit.o, genopinit.o, genrecog.o, genextract.o): Likewise.
	(genpeep.o, genattr.o, genoutput.o): Likewise.

	* gensupport.c (obstack, rtl_obstack): New.
	(init_md_reader): Initialize rtl_obstack.
	* gensupport.h (rtl_obstack): Declare.
	(message_with_line): Declare.

	* genattr.c: Remove all traces of obstack manipulation.
	* gencodes.c, genconfig.c, genemit.c, genextract.c: Likewise.
	* genopinit.c, genoutput.c, genpeep.c, genrecog.c: Likewise.

	* genattrtab.c (obstack, rtl_obstack): Remove.
	(main): Don't init rtl_obstack.
	* genflags.c: Likewise.

	* genrecog.c (message_with_line): Move ...
	* gensupport.c: ... here.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* c-typeck.c (build_c_cast): Remove dead code.

2000-05-06  Richard Henderson  <rth@cygnus.com>

	* flow.c (split_edge): Don't allocate global_live_at_start for
	the new block unless the old blocks had them as well.

	* flow.c (mark_set_1): Respect not_dead when updating reg_live.

	* ifcvt.c (noce_process_if_block): Don't use an insn_b from
	test_bb if a or b uses x.

2000-05-06  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h: Remove conditional #define of __extension__.
	* rtl.h: Add __extension__ to RTL_CHECK1, RTL_CHECK2,
	RTL_CHECKC1, RTL_CHECKC2, and RTVEC_ELT macros
	(ENABLE_RTL_CHECKING only).
	* tree.h: Add __extension__ to TREE_CHECK, TREE_CLASS_CHECK,
	CST_OR_CONSTRUCTOR_CHECK, and EXPR_CHECK macros
	(ENABLE_TREE_CHECKING only).
	* varray.h: Add __extension__ to VARRAY_CHECK macro
	(ENABLE_CHECKING only).

2000-05-06  Richard Earnshaw (reanrsha@arm.com)

	Use new tail-calling mechanism on ARM.
	* arm.md (sibcall, sibcall_value): New expands.
	(sibcall_insn, sibcall_value_insn, sibcall_epilogue): New insns.
	(tailcalling peepholes): Delete.
	(push_multi): Simplify.
	* arm.c (lr_save_eliminated): Delete definition.
	(pattern_really_clobbers_lr, function_really_clobbers_lr): Delete.
	(output_return_instruction): Remove checks on lr_save_eliminated.
	(output_arm_prologue): Remove old tail-calling code.
	(arm_output_epilogue): New parameter, really_return.  All callers
	changed.  Handle tail-calling epilogues.
	* arm.h (lr_save_eliminated): Delete declaration.
	(frame_pointer_needed): Delete declaration.
	* arm-protos.h (arm_output_epilogue): Adjust prototype.

	* arm.md (is_thumb): Examine symbol thumb_code, not expression
	TARGET_ARM.
	* arm.c (thumb_code): Define it.
	(arm_override_options): Set it.
	* arm.h (thumb_code): Declare it.

2000-05-06  Richard Earnshaw (reanrsha@arm.com)

	* arm-protos.h (arm_dllexport_name_p, arm_dllimport_name_p): Constify.

2000-05-06  Richard Earnshaw (reanrsha@arm.com)

	* arm.c (arm_gen_load_multiple, arm_gen_store_mulitple): Don't add
	bogus clobber to insns.
	(load_multiple_operation, store_mulitple_operation): Don't check
	for it.
	* arm.md (ldmsi_postinc, stmsi_postinc): Adjust accordingly.

	* arm.md (and_scc, ior_scc): Add missing mode.

	* arm.md (call_value_symbol): Remove predicate from op2.

	* arm.h (SPECIAL_MODE_PREDICATES): Define.

Sat May  6 06:25:56 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (get_subtarget): New function.
	(force_operand, expand_expr, do_store_flag): Use it.

	* toplev.c (compile_file): Don't take strlen of NAME if null.

2000-05-06  David Edelsohn  <edelsohn@gnu.org>

	* xcoffout.c (xcoff_current_include_file,
	xcoff_current_function_file, xcoff_lastfile): Constify char *.
	(xcoffout_source_file, xcoffout_source_line): Make filename 'const
	char *'.
	(xcoffout_declare_function): Make name 'const char *'.
	(xcoffout_end_epilogue): Make fname 'const char *'
	* xcoffout.h (xcoff_current_include_file, xcoff_lastfile,
	xcoffout_declare_function, xcoffout_source_line): Match above.

	* aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -mpowerpc64 without
	-maix64	is error.
	* rs6000.c (print_operand): Fix lossage typo.
	(output_cbranch): Remove "cr" decoration for now.
	* rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Make alias 'const char *'.

Sat May  6 06:55:32 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (out_shift_with_cnt): Bugfix for shift by
	constant count.

2000-05-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes: Improve the matching for make target names

2000-05-05  Catherine Moore  <clm@cygnus.com>

	* c-common.c (decl_attributes):  For TYPE_DECLs attach the
	attribute to the decl.
	* c-decl.c (pushdecl): Propagate the USED attribute to the
	type copy.

2000-05-05  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (reg_overlap_mentioned_p): Treat parallels in the
	same way emit_group_load does.

2000-05-05 Mark Elbrecht <snowball3@bigfoot.com>

	* gcc.c (set_input) [HAVE_DOS_STYLE_FILE_SYSTEM]: Skip drive name.

	* toplev.c (output_file_directive): Use IS_DIR_SEPARATOR.
	(main): Likewise.

2000-05-05 Rodney Brown	<RodneyBrown@mynd.com>

	* pa.h (FUNCTION_ARG_ADVANCE): Warning removal.

Fri May  5 10:29:21 2000  Marc Espie <espie@cvs.openbsd.org>

	* config/openbsd.h (LINK_SPEC): pass correct flags to ld
	to support -shared, on platforms with dynamic libraries.

Fri May  5 10:27:06 2000  Philippe De Muyter  <phdm@macqel.be>

	* system.h (S_ISBLK): Provide fallback definition.

2000-05-05  Geoff Berry  <geoffb@bops.com>

	* extend.texi (Extended Asm): Document inability to give asm
	statements access to condition codes.

2000-05-05  Marek Michalkiewicz  <marekm@linux.org.pl>

	* varasm.c (asm_emit_uninitialised): Use 0, not NULL
	as arg 2 of UNIQUE_SECTION.

Fri May  5 10:11:41 2000  Jeffrey A Law  (law@cygnus.com)

	* predict.c: Remove May 4 change.
	* bb-reorder.c (make_reorder_chain): Do not perform block movement
	if we have predicted the branch at 50-50 probability.

2000-05-05  Richard Henderson  <rth@cygnus.com>

	* flow.c (init_propagate_block_info): Fix merge error
	in HAVE_conditional_execution code.

Fri May  5 07:43:50 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (out_shift_with_cnt): Genetare a more optimal
	shift cycle for unknown shift count. Also generates dec + brpl.
	(ashlqi3_out): Don't generate dec + brpl which now generates by
	`out_shift_with_cnt'.
	(ashlhi3_out): Likewise.
	(ashlsi3_out): Likewise.
	(ashrqi3_out): Likewise.
	(ashrhi3_out): Likewise.
	(ashrsi3_out): Likewise.
	(lshrqi3_out): Likewise.
	(lshrhi3_out): Likewise.
	(lshrsi3_out): Likewise.

2000-05-04 Mark Elbrecht <snowball3@bigfoot.com>

	* gcc.c (free_split_directories): Correct typo in explanation
	of make_relative_prefix.

2000-05-04  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.h (PREDICATE_CODES): Add floating-point
	comparison codes to branch_comparison_operator.

2000-05-04  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (noce_process_if_block): Always reset X in the A == B case.

2000-05-04  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (FPBIT_FUNCS): Remove _df_to_usi.
	(DPBIT_FUNCS): Remove _sf_to_usi.
	(stmp-multilib): Pass LIB1ASMSRC to libgcc.mk.

	* ifcvt.c (noce_process_if_block): Fail if A or B modified
	between condition and jump.

	* libgcc2.c (near eh_context_specific): Comment #endif string.
	* longlong.h: Don't use strings with embedded newlines.

2000-05-04  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000-protos.h: Add output_cbranch.
	* config/rs6000/rs6000.c (ccr_bit_negated_p): Delete.
	(print_operand): Delete %t and %T codes.
	(output_cbranch): New function.  Support branch prediction.
	* config/rs6000/rs6000.md: Use output_cbranch for
	conditional branches and returns.

2000-05-04  Jason Merrill  <jason@casey.cygnus.com>

	* simplify-rtx.c (simplify_ternary_operation): Cast to unsigned.
	* stor-layout.c (place_field): Likewise.
	* integrate.h (struct inline_remap): Make regno_pointer_align unsigned.
	* expr.c (store_expr): Make align unsigned.
	* explow.c (plus_constant_wide): Make low words unsigned.
	* expmed.c (choose_multiplier): Likewise.
	* fold-const.c (fold):  Likewise.
	* tree.h (build_int_2): Likewise.
	* tree.c (build_int_2_wide, tree_int_cst_msb): Likewise.
	* emit-rtl.c (gen_reg_rtx): Add cast to unsigned char*.
	(init_emit): Change cast to unsigned char*.
	* varasm.c (compare_constant_1): Add cast to char*.
	* gcse.c (delete_null_pointer_checks): Change cast to unsigned int*.
	* reload1.c (reload): Likewise.

	* rtl.h (MEM_SET_IN_STRUCT_P): Use do { } while (0).

Thu May  4 14:37:23 2000  Jeffrey A Law  (law@cygnus.com)

	* predict.c (estimate_probability): If no prediction was found, then
	predict the successor that is the next physical block (if such a
	successor exists).

2000-05-04  Richard Henderson  <rth@cygnus.com>

	* config/alpha/t-alpha (LIB2FUNCS_EXTRA): Use qrrnd.asm in place.

2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h: Don't wrap <sys/types.h> with HAVE_SYS_TYPES_H.

2000-05-04  Mumit Khan  <khan@xraylith.wisc.edu>

	* i386/cygwin.h (CPP_PREDEFINES): Don't define __STDC__. Move
	attribute macros from here ...
	(CPP_SPEC): to here.
	* i386/mingw32.h (CPP_PREDEFINES): Likewise.
	(CPP_SPEC): Likewise.
	* i386/crtdll.h (CPP_PREDEFINES): Delete attribute macros.

	* Makefile.in ($(HOST_PREFIX_1)gensupport.o): Add build rule.
	(libgcc.a): Pass LIB1ASMSRC to libgcc.mk.

2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bb-reorder.c (get_next_bb_note, get_prev_bb_note): Prototype.

	* diagnostic (vbuild_message_string, build_message_string,
	build_location_prefix, output_get_prefix, init_output_buffer,
	output_notice, vline_wrapper_message_with_location,
	v_message_with_decl, default_print_error_function): De-constify.
	(set_real_maximum_length): Prototype.

	* diagnostic.h (struct output_buffer, init_output_buffer,
	output_get_prefix, output_set_prefix): De-constify.

	* function.c (init_function_start): Constify.

	* gensupport.c (remove_constraints, process_rtx): Prototype.

	* gthr-posix.h: Indent uses of #pragma.

	* objc/objc-act.c (ggc_mark_imp_list, ggc_mark_hash_table):
	Prototype.

	* predict.c (find_expected_value): Delete prototype.
	(expected_value_to_br_prob): Initialize variable `ev_reg'.

	* sbitmap.h (debug_sbitmap): Prototype.

	* ssa.c (compute_coalesced_reg_partition): Prototype.

	* stor-layout.c (debug_rli): Prototype.

	* tree.h (round_down): Prototype.
	(init_function_start): Constify.

2000-05-04  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h: #define __extension__ away if GCC_VERSION < 2095
	(overly conservative).  Change extern inline wrappers to
	static inline, define them always, use PARAMS properly.
	* cpplex.c (_cpp_get_directive_token): Don't issue pedantic
	whitespace warnings for \f and \v at the beginning of a line.

Thu May  4 10:03:50 2000  Jeffrey A Law  (law@cygnus.com)

	* haifa-sched.c (schedule_insns): Free the flow edge list when it
	is no longer needed

2000-05-04  Bruce Korb  <bkorb@gnu.org>

	* fixincl/inclhack.def: added broken_cabs -
	Remove `extern double cabs' declarations from math.h
	* fixincl/inclhack.sh: regen
	* fixincl/fixincl.x: regen
	* fixincl/fixincl.c: Remove BOGOSITY code
	* fixincl/mkfixinc.sh: Remove code for installing "shell" version

Thu May  4 09:45:12 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and
	MEM_ALIAS_SET.
	* alias.c (canon_rtx): Don't copy RTX_UNCHANGING_P or MEM_ALIAS_SET
	when calling MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword, change_address): Likewise.
	* explow.c (stabilize): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* combine.c (combine_simplify_rtx): Don't copy RTX_UNCHANGING_P
	when calling MEM_COPY_ATTRIBUTES.
	(make_extraction, simplify_shift_const, gen_lowpart_for_combine):
	Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	* simplify-rtx.c (add_mem_for_addr): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* config/arm/arm.md: Likewise.
	* config/h8300/h7300.c (fix_bit_operand): Likewise.
	* config/m88k/m88k.c (legitimize_address, block_move_loop): Likewise.
	(block_move_no_loop, block_move_sequence): Likewise.
	* config/rs6000/rs6000.c (expand_block_move_mem): Likewise.
	* config/alpha/alpha.c (get_aligned_mem): Likewise.
	Clear MEM_ALIAS_SET.
	* final.c (alter_subreg): Don't copy MEM_ALIAS_SET when calling
	MEM_COPY_ATTRIBUTES.

2000-05-03  Robert Lipe <robertlipe@usa.net>

	* configure.in (i[34567]86-*-isc*) [tmake_file]: Add t-i386bare
	to suppress libgcc1.
	(i[34567]86-*-sco3.2v5*) Likewise.
	(i[34567]86-*-sco3.2v4*) Likewise.
	(i[34567]86-*-sco) Likewise.
	(i[34567]86-*-solaris2) Likewise.
	(i[34567]86-*-sysv5*) Likewise.
	(i[34567]86-*-sysv4*) Likewise.
	(i[34567]86-*-udk*) Likewise.
	(i[34567]86-*-sysv*) Likewise.

2000-05-03  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h (U): New define, to correct type of string constants.
	(ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr): New wrapper
	routines, to do casts when passing unsigned strings to libc.
	* cppexp.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c: Use them.

	* cppfiles.c (_cpp_execute_include): Make filename an U_CHAR *.
	* cpphash.c (_cpp_quote_string): Make string an U_CHAR *.
	* cppinit.c (dump_special_to_buffer): Make macro name an U_CHAR *.
	* cpplex.c (parse_ifdef, parse_include, validate_else): Make
	second argument an U_CHAR *.

	* cppinit.c (builtin_array): Make name and value U_CHAR *, add
	length field, clean up initializer.
	(ISTABLE): Add __extension__ to designated-
	initializers version.
	* cpplex.c (CHARTAB): Likewise.

	* mbchar.c: Add dummy external declaration to the !MULTIBYTE_CHARS
	case so the file won't be empty.

Wed May  3 21:01:46 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (struct reorder_block_def): Member succ removed.
	(REORDER_BLOCK_SUCC): Removed.
	(enum reorder_skip_type): Removed.
	(skip_insns_between_block): Renamed to skip_insns_after_block.
	Removed second argument. Removed dead code and cleaned up.
	(make_reorder_chain): Removed use of REORDER_BLOCK_SUCC.
	(reorder_basic_blocks): Remove use of REORDER_SKIP_AFTER. Removed
	second parameter to skip_insns_after_block.

Wed May  3 13:29:54 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (staticp, case LABEL_DECL): New case.

2000-05-03  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (start.encap): Do not depend on LIBGCC1.

	* mklibgcc1.in: Fix typo last change.

2000-05-03  Jason Merrill  <jason@casey.cygnus.com>

	* Makefile.in (WARN_CFLAGS): Add -pedantic -Wno-long-long.
	(LOOSE_CFLAGS): New: CFLAGS without -pedantic and -Wtraditional.
	(GCC_CFLAGS): Use it.
	(LANG_FLAGS_TO_PASS): New: SUBDIR_FLAGS_TO_PASS with LOOSE_CFLAGS.
	* cp/Make-lang.in, java/Make-lang.in, f/Make-lang.in, ch/Make-lang.in,
	objc/Make-lang.in: Use it.

2000-05-03  Jason R Thorpe  <thorpej@zembu.com>

	* config/i386/i386.md (lshrqi2_cmpno): Use q not r in constraint.

2000-05-03  Richard Henderson  <rth@cygnus.com>

	* mklibgcc.in: Restrict OLDCC=GCC test to native.  Equate
	LIBGCC1 empty with libgcc1.null.

Wed May  3 12:55:46 2000  Jim Wilson  <wilson@cygnus.com>

	* fold-const.c (extract_muldiv, case MAX_EXPR): Don't allow signedness
	change.

2000-05-03  Greg McGary  <gkm@gnu.org>

	* tree.h (tree_common): Add bounded_flag member.  Remove
	inaccurate comment about number of remaining bits.
	(BOUNDED_INDIRECT_TYPE_P, BOUNDED_POINTER_TYPE_P,
	BOUNDED_REFERENCE_TYPE_P, MAYBE_BOUNDED_INDIRECT_TYPE_P,
	MAYBE_BOUNDED_POINTER_TYPE_P, MAYBE_BOUNDED_REFERENCE_TYPE_P,
	TREE_BOUNDED, TYPE_MAIN_VARIANTS_PHYSICALLY_EQUAL_P,
	TYPE_MAIN_PHYSICAL_VARIANT, TYPE_BOUNDED): New macros.
	(TYPE_QUAL_BOUNDED): New constant.
	(TYPE_QUALS): Handle bounded qualifier.
	(TREE_EXPR_QUALS, TREE_FUNC_QUALS): New macros.
	(TYPE_BOUNDED_VALUE, TYPE_BOUNDED_BASE, TYPE_BOUNDED_EXTENT,
	TYPE_BOUNDED_SUBTYPE, TYPE_UNBOUNDED_VARIANT, TYPE_POINTER_DEPTH,
	TYPE_AMBIENT_BOUNDEDNESS): New macros.
	(MAX_POINTER_DEPTH, VA_LIST_POINTER_DEPTH): New constants.
	(tree_type): Add pointer_depth member.  Remove
	inaccurate comment about number of remaining bits.
	(DECL_POINTER_DEPTH): Add macro.
	(tree_decl): Add pointer_depth member.

Wed May  3 22:52:53 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.h (test_hard_reg_class): Declared.
	* config/avr/avr.c (ashrhi3_out): optimized shift by 15.
	(lshrhi3_out): Likewise.
	(ashrsi3_out): bugfix in shift by 8.
	(test_hard_reg_class): New function.
	* config/avr/avr.md: Bugfix inside conditions in peepholes.
	(ashlhi3): removed define_expand of this pattern.
	(*ashlhi3_insn): renamed to ashlhi3.
	(ashlsi3): removed define_expand of this pattern.
	(*ashlsi3_insn): renamed to ashlsi3.
	(ashrqi3): removed define_expand of this pattern.
	(*ashrqi3_insn): renamed to ashrqi3.
	(ashrhi3): removed define_expand of this pattern.
	(*ashrhi3_insn): renamed to ashrhi3.
	(ashrsi3): removed define_expand of this pattern.
	(*ashrsi3_insn): renamed to ashrsi3.
	(lshrhi3): removed define_expand of this pattern.
	(*lshrhi3_insn): renamed to lshrhi3.
	(lshrsi3): removed define_expand of this pattern.
	(*lshrsi3_insn): renamed to lshrsi3.

2000-05-03  Rodney Brown  <RodneyBrown@pmsc.com>

	* config/mcore/mcore.c: Replacing inclusion of "stdio,h" with
	inclusion of "system.h".

Wed May  3 11:43:53 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (ia64_encode_section_info): Add check for
	TREE_ASM_WRITTEN.

2000-05-03  David Mosberger  <davidm@hpl.hp.com>

	* config/ia64/ia64.c (ia64_override_options): Force -mconstant-gp
	if -mauto-pic is on.
	(ia64_epilogue_uses): Mark "gp" (r1) as used by the epilogue if
	-mconstant-gp is in effect and function-descriptors are being used
	to make indirect calls.
	* config/ia64/ia64.h (MASK_CONST_GP): New macro.
	(MASK_AUTO_PIC): Ditto.
	(TARGET_CONST_GP): Ditto.
	(TARGET_AUTO_PIC): Ditto.
	(TARGET_SWITCHES): Add -mconstant-gp and -mauto-pic options.
	(ASM_OUTPUT_DOUBLE_INT): Don't generate @fptr() if -mauto-pic or
	-mno-pic is in effect.
	(ASM_OUTPUT_XDATA_DOUBLE_INT): Ditto.
	* config/ia64/ia64.md (movdi): Use gen_load_gprel64() if
	-mauto-pic is in effect.
	(gprel64_offset): New pattern.
	(load_gprel64): Ditto.
	(call): Handle -mauto-pic like -mno-pic (don't use fptr).  If
	-mconstant-gp is in effect, no need to preserve gp around direct
	calls.
	(call_value): Ditto.
	* config/ia64/linux.h (PROFILE_BEFORE_PROLOGUE): Define.
	(FUNCTION_PROFILER): Define.
	* config/ia64/sysv4.h (ASM_OUTPUT_CONSTRUCTOR): Don't generate
	@fptr() directive when -mno-pic or -mauto-pic is in effect.
	(ASM_OUTPUT_DESTRUCTOR): Ditto.

2000-05-03  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (STAGESTUFF): Add libgcc libgcc.mk.
	(libgcc1.null, libgcc1.cross, libgcc1.a): Remove targets.
	(libgcc1-asm.a, libgcc1.S, libgcc2.a): Remove targets.
	(mklibgcc, libgcc.mk): New targets.
	(libgcc.a): Use libgcc.mk.
	(stmp-multilib): Likewise.
	(stmp-multilib-sub): Remove.
	(mostlyclean): Don't delete libgcc2 temp files.
	* configure.in (AC_PROG_CC_C_O): Add.
	(NO_MINUS_C_MINUS_O): Substitute it.
	(all_outputs): Add mklibgcc.
	* mklibgcc.in: New file.

2000-05-03  Jason Merrill  <jason@casey.cygnus.com>

	* cppexp.c (op_t): Make an int.

	* rtlanal.c (dead_or_set_regno_p): Remove unused variable.

	* varasm.c (initializer_constant_valid_p): Fix parenthesis.

	* gensupport.c (process_rtx): Fix macros used.

2000-05-03  Richard Henderson  <rth@cygnus.com>

	* flow.c (propagate_one_insn): Also don't PROP_REG_INFO for
	call-clobbered registers of a call.

Wed May  3 12:40:53 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* gensupport.c: New file.
	* gensupport.h: New file.
	* Makefile.in (HOST_RTL): Depend on gensupport.
	(gensupport.o) New rule.
	* genattr.c: Use gensupport for reading .md files.
	* genattrtab.c: Ditto.
	* gencodes.c: Ditto.
	* genconfig.c: Ditto.
	* genemit.c: Ditto.
	* genextract.c: Ditto.
	* genflags.c: Ditto.
	* genopinit.c: Ditto.
	* genoutput.c: Ditto.
	* genpeep.c: Ditto.
	* genrecog.c: Ditto.
	* rtl.def (define_insn_and_split): New DEF_RTL_EXPR.
	* md.texi (Insn Splitting): Document define_insn_and_split.

Tue May  2 00:20:30 2000  Jason Eckhardt  <jle@cygnus.com>

	* flow.c (verify_flow_info): Added two more sanity checks. The
	first checks that the blocks are numbered consecutively. The second
	checks that n_basic_blocks is actually equal to the number of
	basic blocks in the insn chain.

2000-05-03  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h: Add accessor macros for token lists.
	* cpplib.c, cpphash.c, cpplex.c: Use them.

Wed May  3 09:29:17 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): Don't check for checking
	memory usage if not in a function.
	* varasm.c (initializer_constant_valid_p, case ADDR_EXPR): Only
	return address if static.

Wed May  3 13:14:49 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_try_cmove_arith):  Use may_trap_p to thest
	whether address may trap.

Tue May  2 23:38:37 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder (chain_reorder_blocks): Changed code to test for
	EDGE_FALLTHRU rather than making erroneous assumption that the
	first outgoing edge is the fall-through edge.

Tue May  2 18:20:31 2000  Donald Lindsay  <dlindsay@hound.cygnus.com>

	* config/mips/mips.c (mips_build_va_list,mips_va_start,mips_va_arg): new
	ABI for varargs, across all MIPS. This is incompatible because the
	va_list (__builtin_va_list) structure is different, so a compilation
	unit passing a va_list and a compilation unit being passed one, should
	both be compiled with the same ABI. (The old structure had two
	pointers, now it has three.)

Tue May  2 19:18:43 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (struct reorder_block_def): Remove members end,
	block_begin, and block_end.
	(REORDER_BLOCK_OLD_END): Delete.
	(REORDER_BLOCK_BEGIN): Delete.
	(REORDER_BLOCK_END): Delete.
	(chain_reorder_blocks): Remove dead code.

Tue May  2 17:06:53 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (remove_scope_notes): Check for both types of scope
	notes as the end of a basic block before deleting.

2000-05-02  Mumit Khan  <khan@xraylith.wisc.edu>

	* final.c (final_start_function): Fix spelling of "necessary".

2000-05-02  Jason Merrill  <jason@casey.cygnus.com>

	* toplev.c (debug_ignore_block): Return int.
	* dwarf2out.c (dwarf2out_ignore_block): Likewise.
	* toplev.h, dwarf2out.h: Adjust.
	* emit-rtl.c (remove_unnecessary_notes): Test return value.

	* emit-rtl.c (remove_unnecessary_notes): Fix spelling of "necessary".
	* toplev.c, final.c, rtl.h: Adjust.

2000-05-02  Zack Weinberg  <zack@wolery.cumb.org>

	* aclocal.m4 (gcc_AC_CHECK_PROG_VER): New macro.
	* configure.in: Look for makeinfo in the unified tree, then
	for a system makeinfo which is sufficiently new.
	* Makefile.in: If configure says makeinfo is too old, don't
	build or install Info documentation.

2000-05-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (collect_params): Fix off-by-one error.
	(dump_hash_helper): Dump all four macro nodetypes.

2000-05-02  Jakub Jelinek  <jakub@redhat.com>

	* cpphash.c (trad_stringify): Adjust p after stringification as
	well.

2000-05-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (CPP_POP, parse_cleanup_t): Delete.
	(cpp_buffer): Remove cleanup, seen_eof, manual_pop members.

	* cppfiles.c (file_cleanup): Delete.
	* cpphash.c (macro_cleanup): Delete.
	(collect_objlike_expansion, collect_funlike_expansion,
	macarg, scan_arguments): Remove CPP_POP case.

	* cpplex.c (null_cleanup): Delete.
	(cpp_pop_buffer): Do the work that was done in the cleanups
	here.  Call _cpp_unwind_if_stack from here.
	(_cpp_expand_to_buffer, cpp_scan_buffer_nooutput,
	cpp_scan_buffer): Run until we see CPP_EOF and the top of
	stack is the buffer _below_ the one we stacked.
	(cpp_get_token): Always pop an exhausted buffer.  Return
	CPP_EOF unless it's a macro buffer.  Don't call _cpp_handle_eof.
	* cpplib.c (skip_if_group): Don't call cpp_get_token to
	increment the line number.
	(_cpp_handle_eof): Rename to _cpp_unwind_if_stack.

	* fix-header.c (read_scan_file) [parsing getchar()]: Run until
	we see CPP_EOF and the top of stack is the buffer _below_ the
	one we stacked.
	* scan-decls.c: Likewise.

2000-05-02  Andrew Haley  <aph@cygnus.com>

	* config/ia64/ia64.c (ia64_encode_section_info): Handle the case
	where this function is called for the second time on a decl that
	has had its section info changed in such a way as to move it out
	of small data/bss.
	* config/ia64/ia64.h (REDO_SECTION_INFO_P): New definition.

2000-05-01  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (dead_or_predicable): Set merge_bb->end to the insn before
	the sequence we're moving, not to merge_bb->head.

2000-05-01  Richard Henderson  <rth@cygnus.com>

	* configure.in (alpha*-*-linux-gnulibc1*) [tmake_file]: Remove
	reference to alpha/t-linux.
	(alpha*-*-linux-gnu*): Likewise.
	* configure: Rebuild.

	* calls.c (expand_call): Don't emit reg notes for a sibcall.

	* flow.c (calculate_global_regs_live): Skip for_each_successor_phi
	if not in SSA form.

	* ifcvt.c (if_convert): Only verify_flow_info if ENABLE_CHECKING.

2000-05-01  Jason Merrill  <jason@casey.cygnus.com>

	* integrate.c (copy_decl_for_inlining): Copy TREE_READONLY and
	TREE_THIS_VOLATILE.

2000-05-01  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (noce_emit_cmove): Conditionally compile call to
	emit_conditional_move.

2000-05-01  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/linux.h (LINK_SPEC): Use /lib/ld-linux-ia64.so.1
	as the dynamic linker.

2000-05-01  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (open_include_file): Open file in blocking mode.
	(read_include_file): Don't fcntl(fd, F_SETFL, 0) anymore.
	Only exclude block devices and directories.

	* cpphash.c (_cpp_make_hashnode): Rename make_HASHNODE, now
	static.  Allocate the hashnode and its string in the same
	block of memory.
	(del_HASHNODE): Don't free h->name.
	(_cpp_lookup): If there is no entry for this string, create
	one, of type T_VOID.
	(_cpp_lookup_slot): Delete.
	* cpphash.h: Update prototypes.

	* cpplex.c (maybe_macroexpand): Check for hp->type == T_VOID,
	not hp == NULL.
	* cpplib.c (do_define, do_undef, do_pragma_poison, do_assert,
	do_unassert, cpp_defined): Use _cpp_lookup.  Don't create a
	node here, just fill in the value field properly.  "Delete"
	entries by setting the value field to T_VOID.  Check for
	hp->type == T_VOID, not hp == NULL.

	* Makefile.in (cpplib.o): Don't depend on $(HASHTAB_H).
	* cpperror.c, cppexp.c, cpplex.c, cpplib.c:  Don't include
	hashtab.h.

2000-05-01  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.c (print_operand_address): Do not add
	zero to SP.

	* config/mn10300/mn10300.c (expand_epilogue): If SP is to be
	adjusted by less than 256 bytes, use ret regardless of having any
	callee-saved register to restore.

2000-05-01 Laurynas Biveinis <lauras@softhome.net>

	* tm.texi (TARGET_HAS_F_SETFLKW): Fix typo.

2000-05-01 Mark Elbrecht <snowball3@bigfoot.com>

	* config/i386/djgpp.h (INT_ASM_OP): Define.
	(CPP_PREDEFINES): Rename MSDOS to __MSDOS__.
	(ASM_WEAKEN_LABEL): Define.
	(MASK_BNU210): Define.
	(SUBTARGET_SWITCHES): Define.
	(SUPPORTS_WEAK, SUPPORTS_ONE_ONLY): Define.
	(MAKE_DECL_ONE_ONLY): Define.
	(UNIQUE_SECTION_P, UNIQUE_SECTION): Define.

2000-05-01  Mumit Khan  <khan@xraylith.wisc.edu>

	* i386/cygwin.h (INT_ASM_OP): Define.

Mon May  1 18:20:06 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (address_cost): renamed to avr_address_cost.
	* config/avr/avr.h (ADDRESS_COST): use avr_address_cost.

Mon May  1 17:50:44 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (asm_file_start): output 0 as r0 and 1 as r1 in
	__tmp_reg__ and __zero_reg__ initialization.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* flow.c (propagate_one_insn): Mark sets even when the insn is dead.

	* ifcvt.c (noce_process_if_block): Fail the conversion if X is
	referenced bewteen the condition and the jump.  Don't delete
	anything but the jump.

Sun Apr 30 22:48:24 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (scope_def): New struct.
	(scope_forest_info): New struct.
	(struct reorder_block_def): New member "scope".
	(REORDER_BLOCK_SCOPE): New macro.
	(relate_bbs_with_scopes): New function and prototype.
	(make_new_scope): Likewise.
	(build_scope_forest): Likewise.
	(remove_scope_notes): Likewise.
	(insert_intra_1): Likewise.
	(insert_intra_bb_scope_notes): Likewise.
	(insert_inter_bb_scope_notes): Likewise.
	(rebuild_scope_notes): Likewise.
	(free_scope_forest_1): Likewise.
	(free_scope_forest): Likewise.
	(dump_scope_forest): Likewise.
	(dump_scope_forest_1): Likewise.
	(chain_reorder_blocks): Set REORDER_BLOCK_SCOPE for new block.
	Update REORDER_BLOCK_EFF_HEAD and REORDER_BLOCK_EFF_END for new
	block.
	(reorder_basic_blocks): Added calls to build_scope_scope_forest
	and remove_scope_notes before reordering is done. Added calls to
	rebuild_scope_notes, free_scope_forest, and reorder_blocks after
	after reordering is done.

2000-40-30  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def:  Added definitions needed by OSR5,
	removed two stale entries (defined away with OLD_CPP).
	* fixinc/inclhack.sh: regen
	* fixinc/fixincl.x: regen

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c (dead_or_predicable): Manually squeeze non-movable notes
	from the last insn in the sequence.

2000-04-30  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (cpp_idcmp): New function.
	* cpplib.h: Prototype it.
	* scan_decls.c (scan_decls): Use it to inspect token names.
	* fix-header.c (read_scan_file): Likewise.  Set system_header_p on
	the file being run through the preprocessor.
	(check_macro_names): Provide length of token to cpp_defined.

	* Makefile.in: Remove stale warning message.

	* cppfiles.c (redundant_include_p): Provide length of token to
	cpp_defined.
	* cpphash.c (_cpp_make_hashnode, _cpp_lookup_slot): Hash
	values are unsigned int.
	(_cpp_lookup, _cpp_lookup_slot): Do not calculate the length.
	(_cpp_lookup_slot): Do not calculate the hash, either.
	* cpphash.h: Update prototypes.
	* cpplib.c (do_define, do_undef, do_pragma_poison, do_assert):
	Hashes are unsigned int.  Calculate hash here, pass by value
	to _cpp_lookup_slot.

2000-04-30  Bernd Schmidt  <bernds@cygnus.co.uk>

	* simplify-rtx.c (check_value_useless): Delete function.
	(discard_useless_locs): Don't call it; manage N_USELES_VALUES counter
	by hand.
	(cselib_invalidate_regno): Likewise.
	(cselib_invalidate_mem_1): Likewise.
	(references_value_p): Recognize useless values by the fact that they
	have no locations.
	(discard_useless_values): Likewise.
	(cselib_record_set): This may turn a useless value
	into a useful one.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* config/d30v: New port.

	* configure.in (d30v-*): Set fp format.
	* configure: Rebuild.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* ifcvt.c: New file.
	* Makefile.in (OBJS): Add it.
	(ifcvt.o): New target.
	* jump.c (jump_optimize_1): Remove all code related to if-conversion,
	and conditional arithmetic.
	(find_insert_position): Remove.
	* timevar.def (TV_IFCVT, TV_IFCVT2): New.
	* toplev.c (DFI_ce, DFI_ce2): New.
	(dump_file): Add ce and ce2 dumps.
	(rest_of_compilation): Run if_convert a couple o times.  Set
	cse_not_expected after cse2.  Don't set no_new_pseudos until
	after sched1 or recompute_reg_usage.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* config/alpha/t-crtbe (crtbegin.o): Add "-I.".
	(crtend.o, crtbeginS.o, crtendS.o): Likewise.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* flow.c (struct reg_cond_life_info): New.
	(struct propagate_block_info): Add reg_cond_dead and reg_cond_reg.
	(init_propagate_block_info): Initialize them.
	(free_propagate_block_info): Destruct them.
	(mark_set_1): Consider conditional life before killing a register.
	(mark_regno_cond_dead): New.
	(free_reg_cond_life_info): New.
	(flush_reg_cond_reg_1, flush_reg_cond_reg): New.
	(ior_reg_cond, not_reg_cond, nand_reg_cond): New.
	(mark_used_reg): Record conditional life.

	* haifa-sched.c (schedule_insns): Disable death counting
	sanity check for HAVE_conditional_execution.

2000-04-30  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (TIMEVAR_H): New.
	(ggc-simple.o, ggc-page.o, toplev.o, timevar.o): Use it.
	(timevar.h): Remove rule.

2000-04-29  Richard Henderson  <rth@cygnus.com>

	* config/alpha/crtend.asm: Use C comments instead of #.
	* config/alpha/crtbegin.asm: Likewise.  Mark __dso_handle hidden.

	* config/alpha/elf.h (SELECT_SECTION): Treat CONSTRUCTOR like VAR_DECL.

2000-04-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h (enum node_type: Take out T_MCONST.
	(union hashval): Move into struct hashnode.
	(struct hashnode): Pack tighter.  Remove file, line, col
	members.
	* cpphash.c: Constify most of the macro-definition structures.
	(struct definition): Replace by struct object_defn
	and struct funct_defn.  Put file, line, column information
	here.  All users updated to match.
	(_cpp_create_definition, _cpp_macroexpand): Remove special
	case for #define WORD OTHERWORD.
	* cpplib.c (do_undef): Remove T_MCONST case.

	* cpphash.h: Move struct reflist, struct definition, and the
	DEFINITION typedef to cpphash.c.  Use 'struct definition *' in
	union hashval.  _cpp_free_definition takes a HASHNODE pointer.
	* cpphash.c (_cpp_free_definition): Free data pointed to by
	MCONST, XCONST, MACRO, and FMACRO nodes properly.
	(_cpp_create_definition, del_HASHNODE): Just call
	_cpp_free_definition to clear out a hashnode.
	* cpplib.c (do_pragma_poison): Likewise.

Sat Apr 29 12:25:17 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (FIRST_DATA_REGNUM,
	LAST_DATA_REGNUM, FIRST_ADDRESS_REGNUM, LAST_ADDRESS_REGNUM,
	FIRST_EXTENDED_REGNUM, LAST_EXTENDED_REGNUM): New macros.
	(REGNO_SP_P): Redefine in terms of STACK_POINTER_REGNUM.
	(REGNO_DATA_P, REGNO_ADDRESS_P, REGNO_EXTENDED_P,
	REGNO_AM33_P): Redefine in terms of the new macros.
	(CONDITIONAL_REGISTER_USAGE, REGNO_REG_CLASS): Likewise.
	(FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
	STRUCT_VALUE): Likewise.
	(STACK_POINTER_REGNUM, FRAME_POINTER_REGNUM,
	ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Likewise.  Moved.

Sat Apr 29 01:18:45 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* regmove.c (struct record_stack_memrefs_data): New.
	(record_stack_memrefs): New function.
	(combine_stack_adjustments_for_block): Use it.

Sat Apr 29 01:15:27 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (calls_function_1):  Properly handle TREE_LIST expressions;
	use special_function_p to detect alloca.

Fri Apr 28 16:30:33 2000  Marc Espie <espie@cvs.openbsd.org>

	* gcc.texi: Fixes for makeinfo 4.0 --html.

2000-04-28  Zack Weinberg  <zack@wolery.cumb.org>

	* pcp.h: Delete file.

2000-04-28  Kazu Hirata  <kazu@hxi.com>

	* h8300.c (function_epilogue): Clean up flags when the last insn
	in a function is a barrier.

2000-04-28  Chris Demetriou  <cgd@sibyte.com>

	* configure.in (sparc-hal-solaris2*): protect [] glob from
	my expansion.
	(mips*-*-ecoff*, mips*-*-elf*, mips*-*-*): use MASK_ defines
	rather than hard-coded constants in target_cpu_default2.
	* configure: Regenerate.

2000-04-28  Jason Merrill  <jason@casey.cygnus.com>

	* tree.c (get_callee_fndecl): Extract the initial value from
	a readonly decl.

2000-04-28  Richard Henderson  <rth@cygnus.com>

	* varasm.c (record_constant_1): Record the CODE_LABEL when
	taking the address of a LABEL_REF.

2000-04-28  Richard Henderson  <rth@cygnus.com>
	    Jan Hubicka  <jh@suse.cz>

	* calls.c (combine_pending_stack_adjustment_and_call): Return the
	adjustment; don't do the stack adjust.
	(expand_call): Call compute_argument_block_size right before
	allocating the block; update comment; don't do alignment sanity
	checking for sibling call; use args_size instead of
	unadjusted_args_size before args_size is adjusted.  Use
	combine_pending_stack_adjustment_and_call to compute stack adjust
	for must_preallocate case.

	* expr.c (push_block): Remove shadow `temp' in inner scope.

2000-04-28  Jason Merrill  <jason@casey.cygnus.com>

	* toplev.c (rest_of_compilation): Call
	note_deferral_of_defined_inline_function even if the function
	can't be inlined.

2000-04-28  Scott Bambrough  <scottb@netwinder.org>

	* cpplex.c (_cpp_scan_line): Fix buffer overwrite.

2000-04-28  Richard Henderson  <rth@cygnus.com>

	* toplev.c (rest_of_type_compilation): Fix sdb TIMEVAR typo.

2000-04-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* timevar.c (init_timevar): DeANSIfy function definition.

2000-04-27  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (timevar.o): Depend on flags.h.
	* timevar.c (unused_stack_instances): New variable.
	(timevar_push): Take a timevar_stack_def from
	unused_stack_instances if available.
	(timevar_pop): Push the popped timevar_stack_def onto
	unused_stack_instances.
	(TIMEVAR_ENABLE): New macro.
	(timevar_def): Make standalone a 1-bit field.  Add field used.
	(get_time): Rename parameter to now.  Return after clearing it if
	not TIMEVAR_ENABLE.
	(init_timevar): Do nothing if not TIMEVAR_ENABLE.
	(timevar_pop): Likewise.
	(timevar_stop): Likewise.
	(timevar_push): Likewise.  Mark the timing variable as used.
	(timevar_start): Likewise.
	(timevar_print): Do nothing if not TIMEVAR_ENABLE.  Don't print
	timevars that were never used.

2000-04-27  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (c_apply_type_quals_to_decl): REFERENCE_TYPES are
	always TREE_READONLY.

2000-04-27  Ulrich Drepper  <drepper@cygnus.com>

	* i386.h (FUNCTION_BLOCK_PROFILER_EXIT): Generate mem reference
	for call instruction with mode QImode.

2000-04-27  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (OBJS): Add timevar.o.
	(toplev.o): Depend on timevar.h.
	(ggc-simple.o): Likewise.
	(ggc-page.o): Likewise.
	(timevar.o): New rule.
	(timevar.h): New rule.

	* timevar.h: New file.
	* timevar.c: Likewise.
	* timevar.def: Likewise.

	* toplev.h (gc_time, parse_time, varconst_time): Remove.
	* toplev.c: Use timevar_push and timevar_pop instead of TIMEVAR
	throughout.
	(TIMEVAR): Remove macro.
	(gc_time, parse_time, varconst_time, integration_time, jump_time,
	cse_time, gcse_time, loop_time, cse2_time, branch_prob_time,
	flow_time, combine_time, regmove_time, sched_time,
	local_alloc_time, global_alloc_time, flow2_time, peephole2_time,
	sched2_time, dbr_sched_time, reorder_blocks_time,
	rename_registers_time, shorten_branch_time, stack_reg_time,
	to_ssa_time, from_ssa_time, final_time, symout_time, dump_time,
	all_time): Remove.
	(compile_file): Don't initialize time variables.  Call
	init_timevar and start TV_TOTAL timer.  Call timevar_print instead
	of many calls to print_time.
	(rest_of_compilation): Add timing for reload_cse_regs.
	(get_run_time): Removed to timevar.c.
	(print_time): Likewise.
	(get_run_time): Implement using TV_TOTAL time variable.
	(print_time): Get total run time from get_run_time.
	* ggc-page.c (ggc_collect): Push and pop TV_GC instead of
	computing elapsed time explicitly.
	* ggc-simple.c (ggc_collect): Likewise.
	(gc_time): Remove declaration.

2000-04-27  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (combine_pending_stack_adjustment_and_call): New function.
	(expand_call): Use it.

2000-04-27  Jan Hubicka  <jh@suse.cz>

	* flow.c (mark_set_1):  Handle MEMs in ZERO_EXTRACT/SIGN_EXTRACT
	fields.

Thu Apr 27 12:47:00 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.md (movhi): Simplify.  Prefer data
	registers.

Thu Apr 27 17:33:05 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* function.c (epilogue_done): Pass whole insn to record_insns.

Thu Apr 27 16:55:28 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* cse.c (CSE_ADDRESS_COST): Remove.
	(find_best_addr): Add new parameter "MODE", use address_cost instead
	of CSE_ADDRESS_COST
	(address_cost): New.
	(fold_rtx): Update call of find_best_addr.
	* rtl.h (address_cost): Declare.
	* loop.c (general_induction_var): Add new parameter "MODE", use
	address_cost instead of ADDRESS_COST
	(init_loop): Use address_cost instead of ADDRESS_COST.
	(check_insn_for_givs): Update call of general_induction_var.
	(find_mem_givs): Likewise.
	(consec_sets_giv): Likewise.
	* config/i386/i386.h (ADDRESS_COST): Call ix86_address_cost.
	* i386.c (ix86_address_cost): New.
	* i386-protos.h (ix86_address_cost): Declare.

Thu Apr 27 11:45:16 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.md (movqi): Simplify.  Prefer data
	registers.

Thu Apr 27 16:11:00 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* expr.c (store_expr): Use clear_storage instead of direct memset
	libcall.

Thu Apr 27 10:36:51 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.c (mn10300_address_cost): Test
	ASHIFT, AND and LABEL_REF.

Thu Apr 27 15:08:46 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* invoke.texi (-foptimize-sibling-calls): Fix.

Thu Apr 27 14:54:22 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (load_mems)  Don't use hard registers for the hoisting.

	* unroll.c (unroll_loop): Avoid overflow in the n_iterations
	calculation; rename const_equiv array in the preconditioning code
	from loop_unroll to loop_unroll_precondition

2000-04-27  Richard Henderson  <rth@cygnus.com>

	* flow.c (struct propagate_block_info): Remove new_dead, new_live;
	add new_set.
	(propagate_one_insn): Clear it.  Don't update reg_live here.
	(init_propagate_block_info): Update for pbi member changes.
	(free_propagate_block_info): Likewise.
	(mark_set_1): Know that zero_extract, sign_extract, and
	strict_low_part don't kill their argument.  Alter hard subregs.
	Update new_set for non-CLOBBER sets.  Update reg_live.
	(find_auto_inc): Update reg_live, not new_dead.
	(mark_used_reg): Update reg_live, not new_live.  Examine new_set
	to determine if the reg in question was set this insn.  Only update
	reg info with PROP_REG_INFO.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (allocate_reg_life_data): Set max_regno here ...
	(life_analysis): ... not here.

	* flow.c (calculate_global_regs_live): Force stack pointer
	live at end.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* jump.c (redirect_exp_1): Rework from old redirect_exp.  Never
	commit change group changes.
	(invert_exp_1): Similarly.
	(redirect_exp, invert_exp): Use them.
	(redirect_jump_1): New.
	(invert_jump_1): New.
	(jump_optimize_1): Remove code subsumed by condexec.c.
	* rtl.h (invert_jump_1, redirect_jump_1): Declare.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (dead_or_set_regno_p): Use find_regno_note.

	* genconfig.c (main): Set all HAVE_foo to 1.

	* graph.c (node_data): Use GET_NOTE_INSN_NAME instead of local array.

2000-04-26  Alex Samuel  <samuel@codesourcery.com>

	* invoke.texi: Document -fssa flag.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (count_reg_sets_1): Remove.
	(count_reg_sets, count_reg_references): Remove.
	(recompute_reg_usage): Implement with update_life_info.
	Reallocate life data.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (update_life_info): Consider blocks null to mean the
	universal set.
	(calculate_global_regs_live): Likewise.
	(life_analysis): Do that instead of collecting all_blocks.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (tidy_fallthru_edge): Don't delete the jump when it's
	a still-valid conditional jump.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* jump.c (invert_jump): Always invert REG_BR_PROB.  Do it correctly.

	* bb-reorder.c (reorder_basic_blocks): Don't run estimate_probability.
	* flow.c (calculate_loop_depth): Remove.
	* output.h (calculate_loop_depth): Don't declare.
	* toplev.c (rest_of_compilation): Expand calculate_loop_depth
	inline; run estimate_probability at the same time.

2000-04-26  Neil Booth  <NeilB@earthling.net>

	* cpplib.h: "~=" is not a single pp-token.
	* cpplex.c: Correct commentary.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_set_1): New arguments code and flags; update all
	callers.  Track regno_first and regno_last; do HARD_REGNO_NREGS
	test in one place.  Tidy flags tests.  Don't bias REG_N_REFS by
	loop_depth when optimizing for size.  Do new_dead update after
	emitting REG_UNUSED notes.  Merge mark_set_reg code.
	(mark_set_reg): Remove.
	(propagate_one_insn): Use mark_set_1 for call-clobbered registers;
	arrange to not emit REG_UNUSED notes.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (find_auto_inc): Use pbi->bb instead of BLOCK_FOR_INSN.
	* ssa.c (convert_from_ssa): Don't run compute_bb_for_insn.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (propagate_one_insn): Break out from propagate_block.
	(init_propagate_block_info): Likewise.
	(free_propagate_block_info): Likewise.
	(propagate_block): Use them.  Export.
	* basic-block.h: Declare them all.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* basic-block.h (life_analysis): Declare here ...
	* output.h: ... not here.
	* flow.c (life_analysis): Remove nregs parameter; replace
	remove_dead_code with flags.  Remove ssa dead code check.
	Only init alias analysis if we'll use it.
	* reg-stack.c (reg_to_stack): Update life_analysis arguments.
	* ssa.c (convert_to_ssa): Likewise.
	(convert_from_ssa): Likewise.
	* toplev.c (rest_of_compilation): Likewise.

2000-04-26  Richard Henderson  <rth@cygnus.com>

	* flow.c (flow_delete_block): Rename from delete_block.  Export.
	* basic-block.h (flow_delete_block): Declare.

2000-04-26  David S. Miller  <davem@redhat.com>

	* optabs.c (emit_libcall_block): Verify insns with INSN_P before
	taking a PATTERN of it.

2000-04-26  <NeilB@earthling.net>

	* cpplex.c (spell_other, spell_char): Remove.
	(SPELL_CHAR): New.
	(token_spelling, trigraph_map): Use unsigned chars.
	(_cpp_lex_line): Tidy up the switch statement.
	* cpplib.h: Implement spell_char with spell_string.
	(C): New.

2000-04-26  <RodneyBrown@pmsc.com>

	* pa/pa32-regs.h (HARD_REGNO_MODE_OK): Warning removal.
	* pa/pa64-regs.h (HARD_REGNO_MODE_OK): Warning removal.

2000-04-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2out.c (dw_cfi_oprnd_struct, dw_fde_struct, add_fde_cfi,
	reg_save, dwarf2out_frame_debug_expr, dwarf2out_def_cfa,
	dwarf2out_window_save, dwarf2out_args_size, dwarf2out_reg_save,
	dwarf2out_return_save, dwarf2out_return_reg,
	dwarf2out_stack_adjust, dwarf2out_frame_debug, primary_filename,
	add_AT_lbl_id, add_AT_lbl_offset, type_tag, decl_start_label,
	gen_compile_unit_die, dwarf2out_init): Constify a char*.

	* dwarf2out.h (dwarf2out_init): Likewise.

	* dwarfout.c (filename_entry, primary_filename, last_filename,
	type_tag, output_compile_unit_die, dwarfout_init): Likewise.

	* tree.h (dwarf2out_def_cfa, dwarf2out_window_save,
	dwarf2out_args_size, dwarf2out_reg_save, dwarf2out_return_save,
	dwarf2out_return_reg): Likewise.

2000-04-26  Andreas Jaeger  <aj@suse.de>

	* extend.texi (Function Attributes): Fix description of pure
	attribute.

2000-04-26  Jason Merrill  <jason@casey.cygnus.com>

	* integrate.c (output_inline_function): Do clear DECL_DEFER_OUTPUT
	before calling rest_of_compilation.

2000-04-26  Andreas Jaeger  <aj@suse.de>

	* config/mips/linux.h: Remove erroneous commit of #if 0/#endif in
	last patch.

2000-04-25  Richard Henderson  <rth@cygnus.com>

	* cse.c (cse_insn): Emit barrier after unconditional jump.

	* calls.c (expand_call): Disable tail call generation once
	rtx_equal_function_value_matters is false.

	* reg-stack.c (convert_regs_1): Treat EDGE_ABNORMAL_CALL edges
	like EDGE_EH edges.

2000-04-25  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (add_bound_info): Don't crash on an unexpanded SAVE_EXPR.

	* dwarfout.c (output_decl): Ignore NAMESPACE_DECLs.

	* dwarf2out.c (gen_subprogram_die): The class-scope declaration DIE
	is the primary DIE for a member function.
	(gen_decl_die): Call set_decl_origin_self here.
	* dwarfout.c (output_decl): And here.
	* integrate.c (output_inline_function): Not here.
	Don't clear DECL_INLINE until after calling rest_of_compilation.
	(set_decl_origin_self): No longer static.
	* tree.h: Add prototype.
	* toplev.c (note_deferral_of_defined_inline_function): Only write
	out abstract instance for actual inlines.

2000-04-25  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Return
	EXTENDED_REGS only if TARGET_AM33.
	* config/mn10300/mn10300.md (movsi, addsi): Avoid exposing
	SP_REGS to register allocation and reloading unless absolutely
	necessary.
	(movsi3): Remove special-case of adding non-constants to SP.

2000-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4 (gcc_AC_NEED_DECLARATION): This macro now requires
	INCLUDES to search and does not provide any of its own.  Also it
	now accepts optional ACTION-IF-NEEDED and ACTION-IF-NOT-NEEDED
	parameters.  Also it does not call AC_DEFINE.
	(gcc_AC_NEED_DECLARATIONS): Likewise.  Also this macro now calls
	AC_DEFINE and provides for automatic entries for autoheader.
	(gcc_AC_FUNC_PRINTF_PTR): Cleanup C code in test.

	* configure.in (gcc_AC_NEED_DECLARATIONS): Save and restore CFLAGS
	so we can pass -I flags and include gansidecl.h/system.h in this
	test.

	* acconfig.h: Delete all NEED_DECLARATION_* entries.

2000-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* acconfig.h (ENABLE_STD_NAMESPACE, ENABLE_CHECKING,
	ENABLE_TREE_CHECKING, ENABLE_RTL_CHECKING, ENABLE_GC_CHECKING,
	ENABLE_GC_ALWAYS_COLLECT): Delete entries.

	* configure.in (ENABLE_STD_NAMESPACE, ENABLE_CHECKING,
	ENABLE_TREE_CHECKING, ENABLE_RTL_CHECKING, ENABLE_GC_CHECKING,
	ENABLE_GC_ALWAYS_COLLECT): Use three argument form of AC_DEFINE
	for these macros.  Clean up spacing and linewraps.

2000-04-26  Jason Merrill  <jason@casey.cygnus.com>

	* calls.c (expand_call): Use get_callee_fndecl.

	* print-tree.c (print_node): Print the chain of an _EXPR.

Tue Apr 25 16:16:04 2000  Andrew MacLeod  <amacleod@cygnus.com>
			  Jim Wilson  <wilson@cygnus.com>
			  Andrew Haley  <aph@cygnus.com>

	* config/ia64/crtbegin.asm: Add IA-64 unwind support.  Correct alloc
	and gp save/restore problems.
	* config/ia64/crtend.asm: Add IA-64 unwind support.
	* config/ia64/ia64.c (ia64_compute_frame_size): Don't include pr_size
	in fr_pad_size calculation.
	(save_restore_insns): Move PR save area.  Correct uses of
	RTX_FRAME_RELATED_P.
	(ia64_expand_prologue): Mark alloc with RTX_FRAME_RELATED_P.
	(ia64_expand_epilogue): Add eh_epilogue support.
	(ia64_function_prologue): Emit .prologue directive.
	(ia64_init_machine_status, ia64_mark_machine_status): New functions.
	(ia64_override_options): Set init_machine_status and
	mark_machine_status.
	(rtx_needs_barrier): Handle bsp reads and writes.
	(spill_offset, sp_offset, spill_offset_emitted, tmp_reg, tmp_saved):
	New static variables.
	(process_set, process_for_unwind_directive): New functions.
	* config/ia64/ia64.h (ASM_OUTPUT_XDATA_CHAR, ASM_OUTPUT_XDATA_SHORT,
	ASM_OUTPUT_XDATA_INT, ASM_OUTPUT_XDATA_DOUBLE_INT, ASM_OUTPUT_EH_CHAR,
	ASM_OUTPUT_EH_SHORT, ASM_OUTPUT_EH_INT, ASM_OUTPUT_EH_DOUBLE_INT): New
	macros.
	(EH_FRAME_SECTION_ASM_OP): Define to IA_64.unwind section.
	(IA64_UNWIND_INFO, HANDLER_SECTION, IA64_UNWIND_EMIT): Define.
	(struct machine_function): Define.
	* config/ia64/ia64.md (bsp_value, set_bsp, eh_epilogue): New patterns.

2000-04-25  Bruce Korb  <bkorb@gnu.org>

	* fixinc/Makefile.in: make the removal of old programs more
	robust
	* fixinc/mkfixinc.sh: use the two new targets in the Makefile:
	install-bin and install-sh

2000-04-25  Nick Clifton  <nickc@cygnus.com>

	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): If not
	defined, define to return zero.
	(function_cannot_inline_p): If a function has any target
	specific attributes, then use the macro
	FUNCTION_ATTRIBUTE_INLINABLE_P to allow the target to decide
	whether it can be inlined.  If it cannot, issue a suitable
	explanation.

	* tm.texi: Add a new node 'Inlining' to document the new macro
	FUNCTION_ATTRIBUTE_INLINABLE_P.

2000-04-25  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (struct cpp_buffer): Add 'mapped' flag; fix
	commentary.

2000-04-25  Neil Booth  <NeilB@earthling.net>

	Restore previous patch, plus the following fixes:

	* cpphash.c (_cpp_create_definition): Test PREV_WHITESPACE in
	flags, not CPP_OPEN_PAREN.
	* cpplex.c (expand_token_space, init_token_list,
	cpp_free_token_list): Put the dummy token at list->tokens[-1].
	(_cpp_lex_line, _cpp_lex_file): token list is 0-based.

Tue Apr 25 14:06:40 2000  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/i386/freebsd.h (INT_ASM_OP): Define.

Tue Apr 25 14:51:07 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (strength_reduce): Fix typo in the last checkin.

Tue Apr 25 07:33:12 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (finalize_record_size): Simplify to use existing
	functions.
	(compute_record_mode): No longer static.
	* tree.h (compute_record_mode): New declaration.

2000-04-25  Neil Booth  <NeilB@earthling.net>

	* Revert my patch below until cause of build failures
	determined.

2000-04-25  Richard Henderson  <rth@cygnus.com>

	* combine.c (combine_instructions): Add missing argument
	to try_combine.

	* toplev.c (rest_of_compilation): Delay sibcall optimization
	until after emit_eh_context.

2000-04-24  Nick Clifton  <nickc@redhat.com>

	* combine.c (combine_instructions): Do not try to combine a
	sequence of insns when the second insn has been replaced by a
	note.

Mon Apr 24 17:34:18 2000  Mumit Khan  <khan@xraylith.wisc.edu>

	* gcc.c (load_specs): New static function.
	(read_specs): Use it.

	* gcc.c (lookup_compiler): Make multiple passes for case
	insensitive filesystems.

2000-04-24  Neil Booth  <NeilB@earthling.net>

	* cpphash.c: replace HSPACE_BEFORE with PREV_WHITESPACE.
	* cpphash.h (_cpp_check_directive): new.
	* cpplex.c (handle_newline, cpp_free_token_list,
	init_trigraph_map, trigraph_ok, trigraph_replace,
	backslash_start, skip_block_comment, skip_line_comment,
	skip_whitespace, parse_name, parse_number, parse_string,
	copy_comment, _cpp_lex_line, spell_char, spell_string,
	spell_comment, spell_name, spell_other, _cpp_lex_file,
	_cpp_output_list): new.
	(expand_name_space): take length argument.
	(init_token_list): add comment list initialisation.
	(cpp_scan_line): use auto_expand_name_space.  PREV_WHITESPACE
	instead of HSPACE_BEFORE.

	* cpplib.c (_cpp_check_directive): new
	* cpplib.h (cpp_name, PREV_WHITESPACE, PREV_COMMENT,
	DIGRAPH, UNSIGNED_INT, TOK_NAME): new.
	(HSPACE_BEFORE): delete.
	(TTYPE_TABLE): rearrange.
	(struct cpp_toklist): update.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4 (gcc_AC_HEADER_STRING, gcc_AC_FUNC_PRINTF_PTR,
	gcc_AC_C_VOLATILE, gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG): Use the three
	argument form of AC_DEFINE.

	* configure.in (DEFAULT_LINKER, DEFAULT_ASSEMBLER,
	HAVE_INTTYPES_H, PACKAGE, VERSION, ENABLE_WIN32_REGISTRY,
	WIN32_REGISTRY_KEY, HAVE_GAS_SUBSECTION_ORDERING, HAVE_GAS_WEAK,
	HAVE_GAS_HIDDEN, HAVE_AS_REGISTER_PSEUDO_OP, AS_SPARC64_FLAG,
	HAVE_AS_OFFSETABLE_LO10, ENABLE_NEW_GXX_ABI): Likewise.

	* acconfig.h: Delete stubs made redundant by 3-arg AC_DEFINE.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (GCC_FOR_TARGET, GCC_CFLAGS, LIBGCC2_INCLUDES,
	deduced.h): Use -isystem, not -I, for including system headers.

2000-04-24  Nick Clifton  <nickc@cygnus.com>

	* config/fr30/fr30.md (addsi3): Do not use small add instruction if
	the source register is the frame pointer or arg pointer.
	(addsi3_small_int): Disallow if source register is the frame
	pointer or arg pointer.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (ENUM_BITFIELDS_ARE_UNSIGNED): Delete redundant
	call to AC_MSG_RESULT.

2000-04-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* invoke.texi: Correct grammatical errors, document
	-fno-gnu-keywords as identical to -fno-asm for C++.

2000-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4: (GCC_HEADER_STRING, GCC_NEED_DECLARATION,
	GCC_NEED_DECLARATIONS, GCC_FUNC_VFPRINTF_DOPRNT,
	GCC_FUNC_PRINTF_PTR, GCC_PROG_LN_S, GCC_PROG_LN, GCC_C_VOLATILE,
	AC_GCC_C_LONG_DOUBLE, GCC_FUNC_MKDIR_TAKES_ONE_ARG,
	EGCS_PROG_INSTALL): Rename autoconf macros with prefix gcc_AC_.

	* configure.in (AC_GCC_C_LONG_DOUBLE, GCC_PROG_LN, GCC_PROG_LN_S,
	GCC_C_VOLATILE, EGCS_PROG_INSTALL, GCC_HEADER_STRING,
	GCC_FUNC_VFPRINTF_DOPRNT, GCC_FUNC_PRINTF_PTR,
	GCC_NEED_DECLARATIONS, GCC_FUNC_MKDIR_TAKES_ONE_ARG): Invoke with
	new macros names.

2000-04-24  Mumit Khan  <khan@xraylith.wisc.edu>

	* c-pragma.c (push_alignment): Use BITS_PER_UNIT macro.
	(pop_alignment): Likewise.
	(handle_pragma_token): Likewise.

2000-04-24  Robert Lipe <robertlipe@usa.net>

	* tree.h (tree_decl): Member `mode' now ENUM_BITFIELD.

2000-04-24  Hiroyuki Machida <machida@sm.sony.co.jp>

	* combine.c (try_combine): Update reg_nonzero_bits of
	newi2pat before newpat.

Mon Apr 24 10:19:48 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (strength_reduce): Simplify test to INSN_P.
	(record_giv): Attempt to simplify the add value, use CONSTANT_P
	expressions instead of CONST_INT.
	(express_from_1): Likewise.

2000-04-24  Mark Mitchell  <mark@codesourcery.com>

	* regs.h (reg_n_max): Don't declare.
	* flow.c (reg_n_max): Don't define.
	* regclass.c (renumber): Don't initialize to zero.
	(regno_allocated): Likewise.
	(reg_n_max): Define.
	(allocate_reg_info): Don't initialize unnecessarily.

Mon Apr 24 00:21:36 2000  Jeffrey A Law  (law@cygnus.com)

	* genattrtab.c (find_attr): Initialize unsigned_p, func_units_p
	and blockage_p in the newly allocated attribute.

Sun Apr 23 20:16:49 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.md (addsi): `inc4' on address
	registers does not modify cc, but `inc' on an extended
	register does.

Sun Apr 23 16:24:35 2000  Denis Chertykov  <denisc@overta.ru>

	* reload.c (find_equiv_reg): Checks all valueno regs
	as a reload_reg_p regs.

2000-04-23  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (collect_objlike_expansion): Add sanity check.
	(special_symbol): Remove case T_CONST, T_XCONST, T_MCONST.  If
	the buffer is the empty string, return.  Mark __DATE__ and
	__TIME__ as XCONST nodes, not MCONST.
	(_cpp_macroexpand): Avoid pushing an empty buffer.
	(funlike_macroexpand): Don't pop token_buffer here.

Sun Apr 23 18:37:53 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (REGNO_IN_RANGE_P): New macro.
	(REGNO_DATA_P, REGNO_ADDRESS_P, REGNO_SP_P): New macros.
	(REGNO_EXTENDED_P, REGNO_AM33_P): New macros.
	(REGNO_OK_FOR_BASE_P): Define in terms of them.
	(REGNO_OK_FOR_BIT_BASE_P, REGNO_OK_FOR_INDEX_P): Likewise.
	(REG_OK_FOR_BASE_P): Define in terms of the REGNO macro.
	(REG_OK_FOR_BIT_BASE_P, REG_OK_FOR_INDEX_P): Likewise.

Sun Apr 23 22:23:08 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (simplify_giv_expr):  Be more agressive on simplifying
	constant MULT givs.

2000-04-23  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.h (struct definition): Move file, line, col members...
	(struct hashnode): ... here.  Also add 'disabled' flag.
	(enum node_type): Add T_VOID, T_XCONST, T_FMACRO, and
	T_IDENTITY.  Remove T_DISABLED.
	Update prototypes.

	* cpphash.c (_cpp_dump_definition): Split out dump_DEFINITION.
	(collect_expansion): Split into collect_objlike_expansion and
	collect_funlike_expansion.
	(_cpp_macroexpand): Split out scan_arguments, stringify, and
	funlike_macroexpand.
	(_cpp_compare_defs): Rename compare_defs, make static.
	(_cpp_make_hashnode): Initialize hp->disabled.
	(macro_cleanup): Adjust for new token types.  Clear
	m->disabled.
	(_cpp_create_definition): Move code here to determine what
	sort of macro it is, and code to check for redefinitions, from
	do_define.  Implement a few simple cases without creating a
	full DEFINITION.
	(_cpp_macroexpand, special_symbol, _cpp_dump_definition):
	Handle the simple cases.
	(push_macro_expansion): Set buf->has_escapes and hp->disabled
	here.

	* cppinit.c (builtin_array): Change MCONST to XCONST
	everywhere.
	* cpplex.c (maybe_macroexpand): Handle IDENTITY macros here;
	fix check for disabled and function-like macros.
	* cpplib.c (do_define): Move most logic to
	_cpp_create_definition.
	(do_undef): Handle new special token types.

Sun Apr 23 14:27:44 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (maybe_eliminate_biv_1): Use GET_CODE (x) == CONST_INT instead
	of CONSTANT_P for mult_val; always use validate_change to update insn.

2000-04-22  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (trad_stringify, add_pat): New functions.
	(collect_expansion): Restore support for -traditional syntax.
	Use trad_stringify and add_pat.
	(_cpp_macroexpand): Restore support for -traditional semantics.
	* cpplex.c (_cpp_scan_line): Don't change space_before if we
	get a COMMENT token.
	(_cpp_lex_token): Provide COMMENT tokens to caller if
	traditional and parsing_define_directive.
	(skip_comment): Warn about // comments if -Wtraditional.
	* cpplib.c (do_define): Fix typo.  Create EMPTY nodes with
	proper node type.
	(do_undef): Don't warn about undefining EMPTY nodes.

Sat Apr 22 22:35:38 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (strength_reduce): Fix biv removal code.

2000-04-22  Richard Henderson  <rth@cygnus.com>

	* predict.c (estimate_probability): Examine both sides of
	a branch for no exits.  Use 90% not 50% for predict taken.
	Reorg for one copy of note generation code.

2000-04-22  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_used_reg): Hack around rs6000 eliminable pic reg.

2000-04-22  Richard Henderson  <rth@cygnus.com>

	* diagnostic.c (init_output_buffer): Don't initialize format_args.
	(output_clear): Likewise.
	(output_printf): Use va_copy.
	(vline_wrapper_message_with_location): Likewise.
	(v_message_with_decl): Likewise.
	(line_wrapper_printf): VA_START infor buffer.format_args directly.
	* system.h (va_copy): Provide default implementation.

2000-04-22  Richard Henderson  <rth@cygnus.com>

	* predict.c (expected_value_to_br_prob): Don't bomb if op1 of
	the collected condition is not a constant.

2000-04-22  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h: New file.

	* Makefile.in (diagnostic.o): Depends on diagnostic.h

	* diagnostic.c: Tweak.  Rationalize the output logic.  Adjust
	various function prototypes.
	(diagnostic.h): #include.
	(struct output_buffer): Move into diagnostic.h.
	(get_output_prefix): Rename to output_get_prefix.  Export.
	(init_output_buffer): Export. Break out.  Adjust initialization.
	(output_space_left, output_append): Export.
	(output_newline): Rename to output_add_newline.  Export.
	(output_clear): Nullify additional output_buffer fields.
	(output_puts): Rename to output_add_string.  Export.
	(dump_output): Rename to output_flush_on.  Export.
	(build_location_prefix): Constify return-type.
	(emit_output_prefix): Rename to output_emit_prefix. Export.
	(set_real_maximum_length): New function.
	(output_set_maximum_length): Ditto
	(output_clear): Ditto.
	(output_add_character): Ditto.
	(output_add_integer): Ditto.
	(output_add_space): Ditto.
	(output_format): Ditto.
	(output_printf): Adjust buffer initialization.
	(vline_wrapper_message_with_location): Ditto.
	(v_message_with_decl): Ditto.  Adjust call to output_puts
	and get_output_prefix.
	(default_print_error_function): Adjust buffer initialization.

Sat Apr 22 06:45:04 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (preexpand_calls, case CALL_EXPR): Don't look at TYPE_SIZE
	of VOID_TYPE.

Fri Apr 21 18:33:09 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (REGNO_REG_CLASS): Use NO_REGS instead
	of explicit 0.

Fri Apr 21 18:30:00 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (REGISTER_MOVE_COST): Provide more
	accurate data about SP moves.

Fri Apr 21 18:28:28 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (ADDITIONAL_REGISTER_NAMES): Added
	aliases to AM33 registers.

Fri Apr 21 18:26:17 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.h (REG_CLASS_CONTENTS): Added register 16
	to all EXTENDED bitmaps.

Fri Apr 21 18:17:12 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300-protos.h (mn10300_address_cost): Declare.
	* config/mn10300/mn10300.h (ADDRESS_COST): New macro.
	* config/mn10300/mn10300.c (mn10300_address_cost): New function.

Fri Apr 21 18:11:56 2000  Alexandre Oliva  <aoliva@cygnus.com>

	* config/mn10300/mn10300.md (movdi, movdf): Do not use `movu' when
	the operand is not constant.

Fri Apr 21 14:58:29 2000  Denis Chertykov  <denisc@overta.ru>

	* reload.c (find_equiv_reg): Checks all valueno and regno regs
	as a call-clobbered regs.

Fri Apr 21 13:30:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.c: Use NOTE_INSN_REPEATED_LINE_NUMBER and NOTE_INSN_RANGE_BEG.
	* rtl.h: Likewise.
	* rtl.def: Update comment.
	* function.c (expand_function): Use NOTE_INSN_REPEATED_LINE_NUMBER.
	* integrate.c (expand_inline_function): Likewise.
	* profile.c (branch_prob): Likewise.
	* ggc-common.c (ggc_mark_rtx_children): Use NOTE_INSN_RANGE_BEG.
	* print-rtl.c (print_rtx): Likewise.
	* haifa-sched.c (sched_analyze, unlink_other_notes): Likewise.
	(reemit_notes): Likewise; also use enum insn_note.

	* stor-layout.c (layout_decl): Only set DECL_MODE if not already set.
	(place_field): Properly compute know and actual alignment.

	* gengenrtl.c (gencode): Write obstack_alloc_rtx function start
	in proper format.

	* cse.c (cse_insn): In (set REG0 REG1) case, remove a REG_EQUAL
	note for REG1.

2000-04-21  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (struct arg, struct arglist): Const-ify strings.
	(warn_trad_stringify, duplicate_arg_p): New helper functions.
	(collect_expansion): Rewrite to scan over a token list.
	Remove -traditional support.
	(collect_formal_parameters): Rename to collect_params; rewrite
	to scan over a token list.
	(_cpp_create_definition): Adjust to scan a token list.
	(_cpp_macroexpand): Remove -traditional support.
	(_cpp_compare_defs): Whitespace is now canonicalized.
	(comp_def_part): Delete function.

	* cpphash.h: Update prototypes.
	* cpplex.c (init_token_list): Don't set lineno if there is no
	buffer.
	(pedantic_whitespace): New function.
	(_cpp_scan_line): Mark tokens that had hspace before.  Don't
	consume a newline.  Use pedantic_whitespace.
	(_cpp_lex_token): Remove support for -traditional macros.
	(_cpp_get_define_token): Delete.
	(_cpp_get_directive_token): Do the real work here.  Use
	pedantic_whitespace.
	(_cpp_init_input_buffer): Initialize pfile->directbuf.

	* cpplib.c (get_macro_name): Delete.
	(do_define): Read the entire line into pfile->directbuf, then
	feed the token list to _cpp_create_definition.
	* cpplib.h (HSPACE_BEFORE): new define.
	(struct cpp_reader): Add a toklist member, "directbuf".

	* predict.c (estimate_probability): New heuristic: if a jump
	branches around a block with no successors, predict it taken.
	Disentangle control flow.

2000-04-20  Richard Henderson  <rth@cygnus.com>

	* loop.c (emit_iv_add_mult): Revert last change.

2000-04-20  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (enum cpp_ttype): Add token types for all
	punctuators.  Distinguish pp-numbers from valid C numbers.
	Give some tokens better names.  Initialize from macro.
	(struct cpp_name, cpp_token, cpp_toklist): New data
	structures.
	Update prototypes.
	* cpplex.c (bump_column, expand_name_space,
	expand_token_space, init_token_list, cpp_output_list,
	_cpp_scan_line):  New functions.
	(output_line_command): Add third argument, new line number.
	* cpphash.h: Update prototypes.
	* cppexp.c, cpphash.c, cpplib.c, scan-decls.c: Update for new
	token names.

2000-04-20  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_emit_floatuns): Emit missing barrier.

2000-04-20  Zack Weinberg  <zack@wolery.cumb.org>

	* c-common.c (decl_attributes) [A_ALIAS]: Set TREE_USED on the
	object pointed to.

Thu Apr 20 14:19:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* loop.c (emit_iv_add_mult):  Simplify it's input and emit
	REG_EQUAL note explaining the calculated value.

	* calls.c (expand_call): Avoid unnecesary precalculation
	and outgoing parameters space guarding for sibling calls.
	(store_one_arg): Likewise.

Thu Apr 20 08:01:07 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (enum dump_file_index, dump_file): Add DFI_sibling.
	(rest_of_compilation): Write sibling dump file and account
	for time as jump time.
	* invoke.texi: Update documentation on dump flags.

2000-04-19  Marek Michalkiewicz  <marekm@linux.org.pl>

	* avr.c: #include "system.h" instead of <stdio.h> and <stdlib.h>.

2000-04-19  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (special_symbol): Represent an empty macro with
	"\r \r " not just "\r ".
	(_cpp_macroexpand): Correct condition for the foo ( ) special
	case.
	(unsafe_chars): Handle EOF as second argument.
	(push_macro_expansion): Simplify test for removing escape at
	end.  Do not trim both escapes if there is no text in between.

2000-04-19  Jim Blandy  <jimb@redhat.com>

	* dwarf2out.c (DWARF2_ADDR_SIZE): New macro.  Use it instead
	of PTR_SIZE, when appropriate.

2000-04-19  Mark Mitchell  <mark@codesourcery.com>

	* system.h (ONLY_INT_FIELDS): Make sure it is defined.
	(USE_ENUM_BITFIELDS): Fix typo.

Wed Apr 19 12:14:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (place_field): Set rli->offset_align properly.

2000-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.h (BITS_PER_WORD, UNITS_PER_WORD, UNITS_PER_FPREG,
	INT_TYPE_SIZE, LONG_TYPE_SIZE, POINTER_SIZE, POINTER_BOUNDARY,
	PARM_BOUNDARY): Remove unnecessary casts.

Wed Apr 19 12:02:37 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (precompute_arguments): Remove must_preallocate and
	args_size calls.
	(expand_call): Update call of precompute_arguments.

	* loop.c (check_insn_for_bivs, for_every_insn_in_loop,
	check_insn_for_givs): Break out from ...
	(strength_reduce) ... here; use for_every_insn_in_loop to call
	check_insn_for_givs.
	* loop.h (for_every_insn_in_loop): Declare.
	(loop_insn_callback): New type.

2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_pragma_poison):  Strings in the token buffer are
	not nul-terminated.

Tue Apr 18 16:04:12 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/sysv4.h (SELECT_SECTION): Use data_section if
	flag_pic and RELOC.

2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>

	* cccp.c, cexp.y, cexp.c, cccp.1: Removed.

	* configure.in: Delete --disable-cpplib option and all
	references to cpp_main.
	* configure: Regenerate.
	* Makefile.in: Remove all references to CCCP, CCCP_OBJS,
	@cpp_main@, cccp.c, cexp.c, cexp.y, cexp.output, cexp.o,
	cccp.o, cccp, or cppmain.  Link cppmain.o straight to
	cpp$(exeext).  Add --no-headers to makeinfo command line when
	generating INSTALL.  Install and uninstall cpp.1 manpage, not
	cccp.1.
	* install.texi: Delete all references to cexp.y/cexp.c.
	Delete ancient instructions for compiling GCC on 3b1.
	* INSTALL: Regenerate.

	* cppfiles.c, cpplib.h, jump.c, protoize.c, c-lex.c, mips/t-ecoff,
	mips/t-elf, mips/t-r3900: Remove references to cccp.c.
	* convex.h, fx80.h, m68k.h, pdp11.h: Remove references to
	cexp.c/cexp.y.
	* xm-linux.h, xm-os2.h, romp.h: Remove definition of BSTRING,
	which is no longer tested anywhere.

	* cppinit.c (handle_option): Don't run error message through
	gettext twice.

Tue Apr 18 14:16:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* conflict.c (conflict_graph_add): Pass enum type to htab_find_slot.
	* cpperror.c (hashtab.h): Now include.
	* cppexp.c (hashtab.h): Likewise.
	* cpplex.c (hashtab.h): Likewise.
	* cppfiles.c (hashtab.h): Likewise.
	(find_include_file, _cpp_calc_hash, cpp_read_file): Pass enum type
	to htab_find_slot_with_hash.
	* cpphash.c (hashtab.h): Now include.
	(_cpp_lookup_slot): INSERT is now enum insert_option.
	* cpphash.h (_cpp_lookup_slot): Likewise.
	* cppinit.c (hashtab.h): Include earlier.
	(initialize_builtins): Pass enum to htab_find_slot.
	* cpplib.c (hashtab.h): Now include.
	(do_define, do_undef): Pass enum type to _cpp_lookup_slot.
	(do_pragma_poison, do_assert): Likewise.
	* emit-rtl.c (gen_rtx_CONST_INT): Pass enum to
	htab_find_slot_with_hash.
	* simplify-rtx.c (cselib_lookup_mem, cselib_lookup): Likewise.
	* tree.c (type_hash_add): Likewise.
	(build1): Minor cleanup.

	* ggc-common.c: Add missing blanks.
	* print-tree.c (print_node): Print DECL_OFFSET_ALIGN.
	* tree.h (DECL_OFFSET_ALIGN): Fix typo in comment.

	* stmt.c (mark_case_node): New function.
	(mark_case_nesting): Call it.

	* expmed.c (emit_store_flag): If comparing two-word integer
	with zero, can optimize NE, EQ, GE, and LT.

	* c-decl.c (mark_binding_level): Use 'for' instead of `while'.
	* conflict.c: Minor cleanups.
	* optabs.c: Add blank line
	* simplify-rtx.c: Minor cleanups.

2000-04-18  Stan Cox  <scox@cygnus.com>

	* gengenrtl.c (genlegend): Fix misspelling.

2000-04-18  Robert Lipe  <robertlipe@usa.net>

	* configure.in (ENUM_BITFIELDS_ARE_UNSIGNED): Added.  Check that
	bitfields of the host compiler are not signed quantities.
	* config.in: Regenerate.
	* configure: Regenerate.
	* system.h (USE_ENUM_BITFIELDS): Added.
	(ENUM_BITFIELDS): Added.
	* rtl.h (rtx_def): Members `code', `mode', now ENUM_BITFIELD.
	(SHORT_ENUM_BUG): Deleted.
	* tree.h (tree_common): Members `code', `mode', `built_in_class',
	now ENUM_BITFIELD.
	* config/i386/xm-sco.h (ONLY_INT_FIELDS): Deleted.
	(CODE_FIELD_BUG): Likewise.
	* config/m68k/x-apollo68 (CC): Deleted SHORT_ENUM_BUG.
	(OLD_CC): Likewise.
	* config/m68k/x-ccur (X_CFLAGS): Likewise.

2000-04-18  Mark Mitchell  <mark@codesourcery.com>

	* cpplex.c (_cpp_lex_token): Don't call CPP_BUMP_LINE when the
	mark is active.

2000-04-17  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c (lex): Don't assume tokens are NUL terminated.
	* cpplib.c (do_include, do_import, do_include_next,
	read_line_number, detect_if_not_defined): Likewise.
	* cpphash.c (collect_expansion): Likewise.
	(special_symbol, _cpp_macroexpand): Check return from
	cpp_file_buffer.
	* cpphash.h (CPP_NUL_TERMINATE, CPP_NUL_TERMINATE_Q): Delete
	macros.  Delete all uses.

	* gcc.dg/cpp-mi.c: Add two more test cases.
	* gcc.dg/cpp-mind.h, gcc.dg/cpp-mindp.h: New files.

2000-04-17  Richard Henderson  <rth@cygnus.com>

	* bb-reorder.c (fixup_reorder_chain): Don't look up new block again.
	(reorder_basic_blocks): If no epilogue in rtl, force last block last.

2000-04-17  Mark Mitchell  <mark@codesourcery.com>

	* function.c (expand_function_start): Use hard_function_value to
	compute the RTL to use for DECL_RESULT.

Mon Apr 17 23:35:29 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.c (athlon_cost): Fix lea, divide and XFmode move costs.
	(x86_integer_DFmode_moves, x86_partial_reg_dependency,
	 x86_memory_mismatch_stall): New global variables.
	(ix86_adjust_cost): Handle MEMORY_BOTH on places MEMORY_STORE was only
	alloved; fix load penalties for Athlon.
	* i386.h (x86_integer_DFmode_moves, x86_partial_reg_dependency,
	x86_memory_mismatch_stall): Declare.
	(TARGET_INTEGER_DFMODE_MOVES, TARGET_PARTIAL_REG_DEPENDENCY,
	 TARGET_MEMORY_MISMATCH_STALL): New.
	* i386.md (athlon scheduling parameters): Fix latencies according to
	Athlon Optimization Manual.
	(sahf, xchg, fldcw, leave instruction patterns): Set athlon_decode to
	vector.
	(fsqrt instruction patterns): Set athlon_decode to direct.
	(movhi_1): Promote for TARGET_PARTIAL_REG_DEPENDENCY and for
	PARTIAL_REGISTER_STALL with !TARGET_HIMODE_MATH machines.
	(movqi_1): Handle promoting correctly for TARGET_PARTIAL_REG_DEPENDENCY
	and TARGET_PARTIAL_REGISTER_STALL machines.
	(pushdf_nointeger): New pattern.
	(pushdf_integer): Rename from pushdf.
	(movdf_nointger): Enable for !TARGET_INTEGER_DFMODE_MOVES machines.
	(movdf_intger): Disable for !TARGET_INTEGER_DFMODE_MOVES machines.

2000-04-17  Richard Henderson  <rth@cygnus.com>

	* loop.c (canonicalize_condition): Add WANT_REG argument.
	Stop the search if we match it.
	* expr.h (canonicalize_condition): Update decl.
	* predict.c (expected_value_to_br_prob): Use it.  Track last
	expected value note.
	(find_expected_value): Remove.

	* reorg.c (mostly_true_jump): Always use BR_PROB if present.

2000-04-17  Zack Weinberg  <zack@wolery.cumb.org>

	* aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE([AC_FUNC_MMAP]).
	(AC_FUNC_MMAP_FILE): New macro, tests read-only private map of
	a plain file.
	* configure.in: Call AC_FUNC_MMAP_FILE.
	* configure: Regenerate.
	* config.in: Regenerate.

	* intl/loadmsgcat.c: Test HAVE_MMAP_FILE not HAVE_MMAP.
	* fixinc/fixincl.c: Likewise.

2000-04-17  Richard Henderson  <rth@cygnus.com>

	* builtins.c (expand_builtin_expect): New.
	(expand_builtin): Call it.
	* builtins.def (BUILT_IN_EXPECT): New.
	* c-common.c (c_common_nodes_and_builtins): Declare __builtin_expect.
	* extend.texi: Document it.

	* predict.c (expected_value_to_br_prob): New.
	(find_expected_value): New.
	* basic-block.h (expected_value_to_br_prob): Declare.
	* toplev.c (rest_of_compilation): Invoke it.

	* rtl.h (NOTE_EXPECTED_VALUE): New.
	(NOTE_INSN_EXPECTED_VALUE): New.
	* rtl.c (note_insn_name): Update.
	* print-rtl.c (print_rtx): Reorg NOTE_LINE_NUMBER special
	cases; handle NOTE_INSN_EXPECTED_VALUE.

2000-04-17  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (eligible_for_sibcall_delay): Cannot use
	leaf sibcall delay slot if flag_pic.
	(output_sibcall): Always emit call for leaf sibcall if flag_pic.

2000-04-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (stmp-fixproto): Acknowledge errors in fixproto.

	* fixproto: If fix-header fails, exit with an error.

Mon Apr 17 14:59:36 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* cse.c (struct check_dependence_data): New.
	(check_dependence): New function.
	(invalidate): Use check_depdenence.

2000-04-16  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (DWARF_CIE_DATA_ALIGNMENT): Adjust, now that
	UNITS_PER_WORD is unsigned.

	* tree.h (struct tree_common): Remove misleading comment.

2000-04-16  Dave Pitts  <dpitts@cozx.com>

	* Makefile.in ($(srcdir)/c-parse.y: c-parse.in): Enclose the whole
	message in quotes. Otherwise, IBM's make program treats the '#' as the
	start of a comment and ignores the remainder of the line.

	* c-lex.c (yylex): Change for EBCDIC, lower case characters precede
	upper case.
	* cccp.c (initialize_char_syntax): Allow for holes in EBCDIC.
	* cexp.y (initialize_random_junk): Likewise.
	* cppfiles.c (find_include_file): Cast alloca return value.
	* cppinit.c (initialize_standard_includes): Likewise.
	* cpplib.c (cpp_define, cpp_undef): Likewise.
	* defaults.h (ASM_OUTPUT_ASCII): Use ISPRINT.
	* final.c (output_asm_insn): Allow for holes in EBCDIC.
	* fold-const.c (CHARMASK): New.
	(real_hex_to_f): Use it.
	* real.c (CHARMASK): New.
	(etoasc, asctoeg): Use it.
	(asctoeg): EBCDIC lower case characters precede upper case.

	* i370.c (mvs_add_label): Change spacing for coding conventions.
	* i370.h (ASM_OUTPUT_CASE_LABEL): Change to the data CSECT for the
	outputting case vectors.
	(ASM_OUTPUT_CASE_END): New, put assembler back into code CSECT.
	(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Remove page check,
	since vector in in the data CSECT.
	(ASM_OUTPUT_REG_POP, ASM_OUTPUT_REG_PUSH): Restore to correct operation.
	* i370.md (Many patterns): Put the length in the XL directives.
	(movdi): Put back STM and MVC in definition.
	(floatsidf2): Correct TARGET_ELF_ABI pattern and add back the LE370
	pattern using the TCA.
	* oe.h (CPP_SPEC): Added to allow trigraphs.
	* xm-oe.h (HOST_BITS_PER_LONGLONG): Change to 32. IBM's compiler does
	not support the "long long" type.

2000-04-16  Mark Mitchell  <mark@codesourcery.com>

	* config/mips/mips-protos.h (mips_legitimate_address_p): New
	function.
	(mips_reg_mode_ok_for_base_p): Likewise.
	* config/mips/mips.h (REG_OK_STRICT_P): Don't define.
	(REG_OK_FOR_INDEX_P): Define unconditionally.
	(REG_MODE_OK_FOR_BASE_P): Use mips_reg_mode_ok_for_base_p.
	(GO_IF_LEGITIMATE_ADDRESS): Use mips_legitimate_address_p.
	* config/mips/mips.c (mips16_simple_memory_operand): Adjust now
	that GET_MODE_SIZE is unsigned.
	(mips_reg_mode_ok_for_base_p): Define.
	(mips_legitimate_address_p): Likewise.  Adjust now
	that GET_MODE_SIZE is unsigned.
	(block_move_loop): Make the number of bytes unsigned.
	(expand_block_move): Likewise.
	(function_arg): Make the loop counter unsigned to match the
	boundary condition.

2000-04-16  Richard Henderson  <rth@cygnus.com>

	* rtl.h (enum insn_note): New enumeration.  Subsume
	NOTE_INSN_DELETED and friends.
	(GET_NOTE_INSN_NAME): Adjust index by NOTE_INSN_BIAS.
	* rtl.c (note_insn_name): Tweak string order.

2000-04-15  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (_cpp_read_and_prescan): Enlarge len by setting it
	to offset * 2.

	* cpplex.c (output_line_command): Remove debugging prints.
	(cpp_output_tokens): Don't write out a zero-length buffer or
	try to see if it has a newline in it.
	(_cpp_expand_to_buffer): Copy the source buffer before pushing.
	(_cpp_read_and_prescan): Move shift-down of pushback bytes to
	the end of the loop.  Use memmove.  Don't read past the end of
	the buffer.  Remove trailing newlines from error messages.

2000-04-16  Neil Booth  <NeilB@earthling.net>

	* cpphash.h (SYNTAX_INCLUDE, SYNTAX_ASSERT, directive_handler): new.
	* cpplib.c: Add new syntax flags to directive table, and
	supporting macros.

2000-04-15  Ulrich Drepper  <drepper@redhat.com>

	* i386.c (ix86_expand_epilogue): Yes, the x86 can pop 64k at once
	using ret $N.

2000-04-15  David Edelsohn  <edelsohn@gnu.org>

	* toplev.c (display_help): Prefix "f" to "sched-verbose=".
	* haifa-sched.c: Update -fsched-verbose comments to use "=".

Sat Apr 15 10:59:19 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (ggc-page.o): Now includes toplev.h.
	* ggc-page.c (toplev.h): Now included.
	(gc_time): Remove declaration.
	(ggc_collect): TIME now long.
	* toplev.c (parse_time, varasm_time, gc_time): Still global; all
	others static.
	* toplev.h (gc_time, parse_time, gc_time): New declarations.

	* toplev.c: Make *_time variable long to reduce chance of overflow.
	(TIMEVAR): Likewise for `otime'.
	(print_time): Arg is now long; compute percentage in FP and round.
	* toplev.h (print_time): Arg is long.

	* tree.c: Minor whitespace changes.

	* configure.in (alpha*-*-*): Add config/alpha/t-alpha.
	* configure: Rebuilt.
	* libgcc2.c (__fixunstfDI): Renamed from __fixunstfdi.
	(__fixunsxfDI): Renamed from __fixunsxfdi.
	(__fixunsdfDI): Renamed from __fixunsdfdi.
	(__fixunssfDI): Renamed from __fixunssfdi.
	(__floatdisf): Use proper type in REP_BIT macro.
	(__fixunsxfSI): Renamed from __fixunsxfsi.
	(__fixunsdfSI): Renamed from __fixunsdfsi.
	(__fixunssfSI): Renamed from __fixunssfsi.
	* libgcc2.h: Add cases for MIN_UNITS_PER_WORD > 4.
	Change location of macros and upper-case some names as above.
	* longlong.h ([alpha]): Use PARAMS, not __P in decl of __udiv__qrnnd.
	* config/alpha/t-alpha, config/alpha/qrnnd.asm: New files.

	* varasm.c (assemble_variable): Add cast to remove warning.
	(immed_real_const_1): Only use CONST[01]_RTX if not in nested function.

	* flow.c (count_basic_blocks, find_basic_blocks_1): Remove last change.
	* optabs.c (emit_libcall_block): If have REG_EH_REGION, update
	region number to -1.

2000-04-15  Richard Earnshaw (rearnsah@arm.com)

	* emit-rtl.c (unshare_all_rtl_again): Unmark everything, then
	call unshare_all_rtl.

	* arm.md (movhi): REGNO_POINTER_ALIGN is now bits.

Fri Apr 14 16:58:45 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/lib1funcs.asm (__divdi3, __moddi3, __udivdi3, __umoddi3):
	Use .s1 not .s0 for all FP instructions.

2000-04-14  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (cpp_output_tokens, cpp_scan_buffer_nooutput): New public
	interfaces.
	(safe_fwrite, output_line_command): New static functions.
	(cpp_expand_to_buffer): Now private to cpplib.
	(cpp_scan_buffer): Take a printer.

	* cpphash.h: Update prototypes.
	* cpplib.h: Update prototypes.
	(cpp_printer): New.
	(cpp_buffer): Remove last_nominal_fname.
	(cpp_reader): Remove lineno.

	* cppmain.c: Use a cpp_printer.
	* fix-header.c: No need to inhibit line commands.  Call
	cpp_start_read with no printer.

	* cpperror.c (cpp_notice_from_errno): Provide default name.
	* cppfiles.c (make_IHASH, _cpp_fake_ihash): New functions.
	(find_include_file, cpp_read_file): Use make_IHASH.
	(file_cleanup): Set control_macro and clear
	input_stack_listing_current here.
	(_cpp_execute_include): Don't output entering-file marker.
	* cpphash.c (special_symbol): Look for the line number in the
	buffer, not the reader.
	(_cpp_macroexpand): No need to disable line commands.
	(_cpp_dump_definition): No need to generate line commands.
	(dump_hash_helper): Remove excess newline from output.
	* cppinit.c (dump_special_to_buffer): No need to generate line
	commands.
	(cpp_printer_init): New.
	(cpp_start_read): Take a printer, and start it up if it's not
	NULL.  No need to generate line commands.
	(cpp_finish): Expect no buffers stacked at all.  Take a
	printer argument, and flush the output buffer if it's not
	NULL.
	* cpplex.c (_cpp_lex_token): Return EOF if there's no buffer.
	Don't put two hashes at the beginning of an assertion.
	(cpp_get_token): Don't increment pfile->lineno or emit line
	commands here.  Return EOF if there's no buffer when we get
	EOF.
	* cpplib.c (do_define, skip_if_group):
	No need to disable line commands.
	(_cpp_output_line_command): Delete function.
	(do_line): Don't emit line commands here, but set things up so
	they will be emitted if necessary.  Use _cpp_fake_ihash to
	make unique nominal_fnames if necessary.
	(do_elif, do_else, _cpp_handle_eof): Call cpp_error_with_line
	with 0 for column, not -1.
	(_cpp_handle_eof): Don't set the control macro here.  Don't
	clear input_stack_listing_current here.  Don't emit line
	commands.

2000-04-14  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/sysv4.h (LINK_START_SOLARIS_SPEC): Define to empty
	always, use the default SVR4 start address.

	* config/rs6000/linux.h (LINK_SPEC): Don't define.
	(LINK_SHLIB_SPEC): Define.
	(LINK_START_DEFAULT_SPEC): Define.
	(LINK_OS_DEFAULT_SPEC): Define.

	* config/rs6000/sysv4.h (ENDFILE_SPEC): Use the %(endfile_*) macros.

	* config/rs6000/eabi.asm (__eabi): Call __init rather than
	__do_global_ctors to handle constructors.
	* config/rs6000/sysv4.h (STARTFILE_ADS_SPEC): Use crtbegin.
	(STARTFILE_YELLOWKNIFE_SPEC): Likewise.
	(STARTFILE_MVME_SPEC): Likewise.
	(STARTFILE_SIM_SPEC): Likewise.
	(ENDFILE_ADS_SPEC): Use crtend.
	(ENDFILE_YELLOWKNIFE_SPEC): Likewise.
	(ENDFILE_MVME_SPEC): Likewise.
	(ENDFILE_SIM_SPEC): Likewise.
	(STARTFILE_SOLARIS_SPEC): Use crtbegin/crtbeginS.
	(ENDFILE_SOLARIS_SPEC): Use crtend/crtendS.
	(STARTFILE_LINUX_SPEC): Use crtbeginS for shared objects.
	(ENDFILE_LINUX_SPEC): Use crtendS for shared objects.
	* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Don't build eabi-ctors.o.
	(EXTRA_MULTILIB_PARTS): Build crtbeginS/crtendS.
	(CRTSTUFF_T_CFLAGS_S): Define.
	* config/rs6000/eabi-ctors.c: Delete.

	* config/rs6000/eabi-ci.asm (__init): Align stack to 16-byte
	boundary.
	(__fini): Likewise.
	* config/rs6000/eabi-cn.asm (__init): Allow for 16-byte stack frame.
	boundary.
	(__fini): Likewise.

Fri Apr 14 16:09:02 2000  Jim Wilson  <wilson@cygnus.com>

	* combine.c (force_to_mode, case LSHIFTRT): Check that shift shift
	plus mask size is smaller or equal to the mode size.

Fri Apr 14 18:07:30 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* print-rtl.c (print_rtx, case NOTE): Don't blow up if NOTE_BASIC_BLOCK
	not yet set.

	* expr.c (reload.h): Now included.
	(emit_block_move): Set volatile_ok when checking for movstr.
	(emit_move_1): Check for replacements in addresses in multi-word case.
	* Makefile.in (expr.o): Now includes reload.h.

	* flow.c (count_basic_blocks): Remove unused var PREV_CALL.
	Never have a LIBCALL end a basic block.
	(find_basic_blocks_1): Likewise.
	Reorganize CALL_INSN cases.

	* sbitmap.h (EXECUTE_IF_SET_IN_SBITMAP): Revert last change.

Fri Apr 14 10:54:22 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Drop obsolete
	completers from mov.ret instruction.

2000-04-14  Richard Henderson  <rth@cygnus.com>

	* fold-const.c (extract_muldiv): Don't distribute and widen
	multiply across plus for non-sizetype unsigned types.

2000-04-14  Richard Henderson  <rth@cygnus.com>

	* flow.c (find_auto_inc): Don't autoinc eliminable registers.
	If the original source is dead in the incr insn, it's dead now.

Fri Apr 14 07:40:32 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_decl): Properly compare KNOWN_ALIGN to
	see if DECL_BIT_FIELD needs to still be set.

	* tree.h (struct tree_type): Make PRECISION 9 bits and MODE 7.

	* dbxout.c (dbxout_type, case INTEGER_TYPE): Don't call
	print_int_cst_octal with something that's not an INTEGER_CST.

	* config/alpha/alpha.c (alpha_emit_floatuns): Ensure we pass a REG
	and not a SUBREG to a FLOAT rtl.

Thu Apr 13 19:39:56 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* emit-rtl.c (try_split): Avoid infinite loop if the split
	results in a sequence that contains the original insn.

2000-04-13  Andreas Jaeger  <aj@suse.de>

	* config/mips/mips.c (expand_block_move): Pass alignment
	argument to move_by_pieces in bits, not bytes.

	* config/mips/linux.h (CPP_PREDEFINES): Also define __PIC__ and
	__pic__ for little endian.

2000-04-13  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386-protos.h: Add prototype for
	uno_comparison_operator.

Thu Apr 13 15:55:08 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* alias.c (nonlocal_reference_p): Take care of CALL_INSNS's fusage.
	* calls.c (ECF_PURE): New flag.
	(emit_call_1): Handle ECF_PURE calls.
	(initialize_argument_information): Unset ECF_PURE flag too.
	(precompute_arguments): Precompute for ECF_PURE too.
	(expand_call): Handle ECF_PURE calls too.
	(emit_library_call_value_1): Rename no_queue argument to fn_type,
	accept value of 2 as pure function.
	(emit_library_call_value, emit_library_call): Rename no_queue argument
	to fn_type.
	* optabs.c (prepare_cmp_insn): Pass fn_type 2 to memcmp call.

	* tree.h (DECL_IS_PURE): New macro.
	(struct tree_decl): Add pure_flag.
	* c-common.c (enum attrs): Add attribute "pure".
	(init_attributes): Initialize attribute "pure"
	(decl_attributes): Handle attribute "pure".
	* extend.texi (Attribute "pure"): Document.
	* calls.c (expand_call): Add (mem:BLK (scratch)) to "equal from"
	in pure function.
	(flags_from_decl_or_type): Support attribute "pure".

2000-04-13  Jason Merrill  <jason@casey.cygnus.com>

	* cpplex.c (_cpp_lex_token): Handle digraphs.  Don't null-terminate
	the token except for numbers and identifiers.

Thu Apr 13 00:09:16 EDT 2000  John Wehle  (john@feith.com)

	* i386.c (ix86_expand_binary_operator,
	ix86_expand_unary_operator): Check no_new_pseudos
	instead of reload_in_progress and reload_completed.
	(ix86_split_ashldi, ix86_split_ashrdi,
	ix86_split_lshrdi): Check no_new_pseudos instead
	of reload_completed.

2000-04-12  Jeffrey A Law  (law@cygnus.com)

	* function.c (purge_addressof): Unshare any shared rtl created by
	purge_addressof and its children.

2000-04-12  Mark Mitchell  <mark@codesourcery.com>

	* function.c (aggregate_value_p): VOID_TYPE nodes are never
	aggregates.

2000-04-05  Andreas Jaeger  <aj@suse.de>

	* config/mips/linux.h (SUBTARGET_ASM_SPEC): Use proper flags if
	not compiling PIC code, add flags for mabi=64.
	(SUBTARGET_CPP_SIZE_SPEC): New.
	(SUBTARGET_CPP_SPEC): New.
	(CPP_PREDEFINES): Define __PIC__ and __pic__.  PIC code is default
	for MIPS/Linux and lots of code needs these defines.

Wed Apr 12 22:44:11 2000  Hans-Peter Nilsson  <hp@axis.com>

	* reorg.c (fill_slots_from_thread): Check side_effects_p when
	trying the "opposite arithmetic" approach.

Wed Apr 12 20:51:20 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (STRUCT_VALUE): Just 0 for TARGET_HITACHI.
	(struct sh_args): Add new field force_mem.
	(INIT_CUMULATIVE_ARGS): Initialize it.
	(FUNCTION_ARG, FUNCTION_ARG_ADVANCE): Act on it.

Wed Apr 12 17:20:41 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Do not reverse args in "equal from" field.
	(emit_library_call_value_1): Emit_libcall_block for const and pure
	function.

Wed Apr 12 16:00:25 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* reload1.c (reload_combine): Don't enable optimization for fixed
	registers when encountering a BARRIER.

Wed Apr 12 15:54:11 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* builtins.c (expand_builtin_memcmp): Do expansion even with
	!HAVE_cmpstrsi, do libcall when gen_strcmpsi fails.

	* calls.c (expand_call): Do NO_DEFER_POP unconditionally once
	stack is properly aligned; add sanity checking for aligned
	stack pointer.
	(expand_library_call_value_1): Add sanity checking for aligned
	stack pointer.

Wed Apr 12 07:51:54 2000  Catherine Moore  <clm@cygnus.com>

	* calls.c (emit_library_call_value_1): Change 3rd arg to
	locate_and_pad_parm to disregard the setting of partial.

Wed Apr 12 08:47:38 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (unsave_expr_now_r, unsafe_for_reeval): Properly do TREE_LIST.

	* print-rtl.c (print_rtx): For CALL_PLACEHOLDER, output the
	CALL_INSN from the normal case.

Fri Apr  7 12:23:04 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8):
	New global variables.
	(ix86_emit_epilogue_adjustment): Do not attempt to use pop for the
	adjustment.
	* i386.h (x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8):
	Declare,
	(TARGET_SUB_ESP_4, TARGET_SUB_ESP_8, TARGET_ADD_ESP_4,
	 TARGET_ADD_ESP_8): New macros.
	* i386.md: Add peep2s to convert esp adjustments to push and pop
	instructions.
	(pushsi_prologue, popsi_epilogue): New patterns.

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

	* real.c (toe64): Remove stale #endif from the last change.

2000-04-12  Stephen L Moshier  <moshier@mediaone.net>

	* real.h (MAX_LONG_DOUBLE_TYPE_SIZE): Comment.
	* real.c (toe64): Revert previous change.

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

	* objc/objc-act.c: Include ggc.h.
	(objc_tree_index, objc_global_trees): Convert most of the
	static tree variables into a static array with previous names
	as defines.
	(objc_ellipsis_node): New variable.
	(lang_init): Call objc_act_parse_init and c_parse_init.
	Create objc_ellipsis_node.
	(build_selector_translation_table): Use objc_ellipsis_node instead
	of (tree)1.
	(hack_method_prototype): Likewise.
	(get_arg_type_list): Likewise.
	(start_method_def): Likewise.
	(continue_method_def): Likewise.
	(gen_method_decl): Likewise.
	(ggc_mark_imp_list): New function.
	(ggc_mark_hash_table): New function.
	(objc_act_parse_init): New function.
	* objc/objc-act.h (objc_ellipsis_node): Add extern variable.
	* c-parse.in (c_parse_init): For objc add roots of objc specific
	local tree variables.
	* objc/objc-parse.y: Rebuilt.
	* objc/objc-parse.c: Rebuilt.
	(opt_parm_list): Use objc_ellipsis_node instead of (tree)1.

Wed Apr 12 01:00:44 EDT 2000  John Wehle  (john@feith.com)

	* cse.c (delete_trivially_dead_insns): Also delete insns
	that copy a register to itself where the destination is
	a strict_low_part.

2000-04-11  Richard Henderson  <rth@cygnus.com>

	* flow.c (struct propagate_block_info): Add new_dead, new_live.
	(propagate_block): Initialize them.  Use them in parallel instead
	of one tmp variable, ie revert much of the 0408 and 0407 functional
	changes, but keep the structural changes.
	(mark_set_regs): Take new_dead from propagate_block_info instead.
	(mark_set_1, mark_set_reg): Likewise.
	(mark_used_regs): Likewise with new_live.
	(mark_used_reg): Likewise.  Revert 0408 change.

2000-04-11  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.h: (INCOMING_RETURN_ADDR_RTX): Remove Dwarf2
	restriction.
	(DWARF_FRAME_RETURN_COLUMN): Remove Dwarf2 restriction.

2000-04-11  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/elfos.h (SELECT_SECTION): Decide whether to use a data or
	const section to output a CONSTRUCTOR based on the same conditions
	used for VAR_DECLs.

Tue Apr 11 09:55:59 2000  Jeffrey A Law  (law@cygnus.com)

	* pa/long-double.h (FIX_TRUNCTFSI2_LIBCALL): Tweak for PA64.
	* pa/pa-protos.h (output_call): Add additional argument indicating
	if the call is a sibling/tail call.
	(compute_zdepdi_operands, output_64bit_and): Prototype new functions.
	(compute_64bit_ior, cmpib_comparison_operator): Likewise.
	(function_arg, function_arg_partial_nregs): Likewise
	* pa/pa.c (override_options): Always set flag_pic for TARGET_64BIT.
	(emit_move_sequence): Zero extend certain constants as needed
	for TARGET_64BIT.
	(compute_zdepdi_operands, output_64bit_and): New functions.
	(output_64bit_ior, function_arg): Likewise.
	(cmpib_comparison_operator, function_arg_partial_nregs): Likewise.
	(compute_frame_size, hppa_expand_prologue): Handle TARGET_64BIT.
	(hppa_expand_epilogue, return_addr_rtx, hppa_va_arg): Likewise.
	(hppa_builtin_saveregs, output_cbranch, output_bb): Likewise.
	(output_bvb): Likewise.
	(output_millicode_call): Return pointer is in %r2 for TARGET_64BIT.
	(output_call): New argument 'sibcall'.  Generate sibcall sequences
	as needed.
	(print_operand); Handle cases 'Q', 'p', and 'z' for TARGET_64BIT.  For
	(ouput_arg_descriptor): Do not emit argument descriptors for
	TARGET_64BIT.
	* pa/pa.h (TARGET_PA_11, TARGET_PA_20): Only define if not already
	defined.
	(TARGET_64BIT, PROMOTE_FUNCTION_RETURN): Define.
	(FUNCTION_OK_FOR_SIBALL): Define.
	(CPP_PA10_SPEC, CPP_PA11_SPEC, CPP_PA20_SPEC): Define.
	(CPP_CPU_DEFAULT_SPEC, SUBTARGET_EXTRA_SPECS, EXTRA_SPECS): Likewise.
	(CPP_SPEC): Use new spec infrastructure.
	(BITS_PER_WORD, UNITS_PER_WORD): Handle TARGET_64BIT.
	(STACK_BOUNDARY, FUNCTION_BOUNDARY, PIC_OFFSET_TABLE_REGNUM): Likewise.
	(RETURN_IN_MEMORY, EXTRA_CONSTRAINT, FIRST_PARM_OFFSET): Likewise.
	(REG_PARM_STACK_SPACE, STACK_POINTER_OFFSET): Likewise.
	(STACK_DYNAMIC_OFFSET, FUNCTION_VALUE): Likewise.
	(FUNCTION_ARG_PASS_BY_REFERENCE, FUNCTION_ARG_CALLEE_COPIES): Likewise.
	(TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Likewise.
	(INITIALIZE_TRAMPOLINE, LEGITIMATE_CONSTANT_P): Likewise.
	(CONST_OK_FOR_LETTER_P, MOVE_RATIO): Likewise.
	(FUNCTION_ARG); Call out to C code.
	(FUNCTION_ARG_PARTIAL_NREGS): Likewise.
	(MAX_BITS_PER_WORD, MAX_LONG_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Define.
	(MIN_UNITS_PER_WORD): Likewise.
	* pa/pa.md (cmpdi): New expander.
	(scc patterns, movstrsi): Not available for TARGET_64BIT.
	(64bit conditional arithmetic): New patterns.
	(absdi2, smindi3, umindi3, smaxdi3, umaxdi3): New patterns.
	(movsicc): Not available if modes on all the operands to not match.
	(movdicc): New expander and associated patterns.
	(64bit branches): New patterns.
	(pre_load, post_store): Generate appropriate code for TARGET_64BIT.
	(pre_ldd, post_std): New patterns.
	(64bit addil, load low part): New patterns.
	(special movsf constant): Not available for TARGET_64BIT.
	(movsf, movdf expanders): Force constants into memory.
	(32bit movdf/movdi patterns): Disable for TARGET_64BIT.
	(64bit movdf/movdi patterns): New patterns.
	(zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New patterns
	for TARGET_64BIT.
	(extendqidi2, extendhidi2, extendsidi2): Similarly.
	(adddi3 expander): Allow "arith_operand" for second input.
	(32bit adddi3, subdi3, uaddcm): Disable for TARGET_64BIT.
	(64bit adddi3, subsi3, uaddcm): New patterns for TARGET_64BIT.
	(mulsi3 expander): Revamp slightly so it supports TARGET_64BIT too.
	(muldi3): New expander for TARGET_64BIT.
	(divsi3, udivsi3, modsi3, umodsi3): Fourth operand must be (reg:SI 2)
	for TARGET_64BIT.
	(32bit anddi3, iordi3, xordi3, andcm, negdi2, uaddcm): Disable
	patterns for TARGET_64BIT.
	(64bit anddi3, iordi3, xordi3, andcm, negdi2, uaddcm, shadd): New
	patterns for TARGET_64BIT.
	(64bit bit insertion/extractions): New patterns for TARGET_64BIT.
	(64bit shifts/rotates): New patterns/expanders for TARGET_64BIT.
	(sibcall_epilogue): New expander.
	(casesi): Tweak for TARGET_64BIT.
	(call expanders): Set & use the outgoing argument pointer.  Use the
	64bit call patterns as needed. Add additional arg to output_call.
	(call_internal_reg_64bit, call_value_internal_reg_64bit): New pattern.
	(sibcall, sibcall_internal_symref): New expanders.
	(sibcall_value, sibcall_value_internal_symref
	(interspace_jump): Turn into an expander + matching patterns.
	(canonicalize_funcptr_for_compare): Not needed for TARGET_64BIT.
	* pa/pa64-regs.h: Eliminate trigraph sequences.
	* pa/pa64-start.h (TARGET_PA_20): Fix typo.

2000-04-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c, cpphash.c, cpphash.h, cpplex.c, cpplib.c,
	cpplib.h, cppmain.c, fix-header.c, scan-decls.c: Replace
	cpp_token with cpp_ttype everywhere.
	* cpperror.c, cpphash.c, cpplex.c, cpplib.c, scan-decls.c:
	Replace cpp_buf_line_and_col with CPP_BUF_LINE and/or
	CPP_BUF_COL.  Line and column numbers are unsigned int, not
	long.
	* cpplex.c (cpp_buf_line_and_col): Delete.
	* cpplib.h (struct cpp_buffer, struct cpp_reader): Change
	'long lineno' to 'unsigned int lineno'.
	(CPP_BUF_LINE, CPP_BUF_COL): New macros.

2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* extend.texi: ISO C99 is not a draft anymore.
	* invoke.texi: ISO C++ is not a draft anymore.
	* cpp.texi: __cplusplus is required by the ISO standard.

	* extend.texi (-fthis-is-variable): Undocument.
	* flags.h (warn_template_debugging): Remove declaration.
	* gcc.1 (-fall-virtual, -fenum-int-equiv, -fthis-is-variable,
	-Wenum-clash, -Wtemplate-debugging): Undocument.

2000-04-10  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.h (HOST_INT): New macro: Declare a HOST_WIDE_INT
	integer.
	(HOST_UINT): New macro: Declare an unsigned HOST_WIDE_INT
	integer.
	(ARM_SIGN_EXTEND): Use HOST_UINT.
	(STRIP_NAME_ENCODING): Prevent warnings about redefinitions.
	(ASM_OUTPUT_LABELREF): Prevent warnings about redefinitions.
	(INCOMING_RETURN_ADDR_RTX): Only define if Dwarf2 is supported.
	(DWARF_FRAME_RETURN_COLUMN): Only define if Dwarf2 is supported.

	* config/arm/arm.c: (const_ok_for_arm): Use HOST_UINT.
	(arm_gen_constant): Use HOST_UINT.
	(arm_canonicalize_constant): Use HOST_UINT.
	(arm_reload_in_hi): Use HOST_UINT.
	(arm_reload_out_hi): Use HOST_UINT.
	(output_multi_immediate): Use HOST_UINT.
	(int_log2): Use HOST_UINT.
	(arm_poke_function_name): Use HOST_UINT.
	(arm_output_epilogue): Use arm_volatile_func().
	(output_thumb_prologue): Use arm_strip_name_encoding().

Mon Apr 10 15:40:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sbitmap.c (sbitmap_a_subset_b_p): Rework loop to avoid potential
	of sequence point problems.

2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.def (ASHIFT, ROTATE, ASHIFTRT, LSHIFTRT, ROTATERT):
	Recomment.
	* tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Recomment.

Mon Apr 10 07:21:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sbitmap.h: Whitespace changes and use upper-case macro args.
	(struct simple_bitmap_def): All sizes now unsigned.
	(EXECUTE_IF_SET_IN_SBITMAP): Internal vars now _X instead of X_.
	* sbitmap.c (sbitmap_alloc): N_ELMS now unsigned; also local vars.
	(sbitmap_vector_alloc): Parms and local vars now unsigned.
	(sbitmap_zero): Cast bzero arg to PTR.
	(sbitmap_vector_zero, sbitmap_vector_one): Parm and Local var unsigned.
	(sbitmap_union_of_diffs): Change loop index to unsigned and rework
	loop to make structure clearer.
	(sbitmap_not, sbitmap_difference, sbitmap_a_and_b): Likewise.
	(sbitmap_a_or_b, sbitmap_a_subset_b_p, sbitmap_a_or_b_and_c): Likewise.
	(sbitmap_a_and_b_or_c): Likewise.
	(sbitmap_intersection_of_succs): Minor cleanups.
	(sbitmap_intersection_of_preds, sbitmap_union_of_succs): Likewise.
	(sbitmap_union_of_preds): Likewise.
	(sbitmap_first_set_bit, dump_sbitmap): Local variables now unsigned.
	(debug_sbitmap): New function.

	* c-convert.c (convert): Handle REFERENCE_TYPE like POINTER_TYPE.
	* c-typeck.c (convert_for_assignment): Likewise.

	* expmed.c (init_expmed): Don't free objects we make.
	* emit-rtl.c (gen_rtx_CONST_INT, init_emit_once): Minor cleanups.

	* expr.c (get_inner_reference): Correct some WITH_RECORD_EXPR cases.
	(expand_expr, case CONVERT_EXPR): Pass proper alignment to store_field.

	* gcse.c (expr_hash_table_size): Now unsigned.
	(compute_ae_gen): Local variable `i' now unsigned.
	(compute_ae_kill, pre_insert_copies, pre_delete, pre_gcse): Likewise.
	(compute_transout, hoist_code): Likewise.
	(compute_local_properties): Likewise, also hash_table_size.
	(alloc_expr_hash_table): N_INSNS now unsigned.
	(delete_null_pointer_checks): Mark arg F as unused.

	* regrename.c: Minor cleanups, including chang some variables
	to unsigned int.

2000-04-10  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (skip_block_comment): Use pointer arithmetic rather
	than GETC ().
	* cpphash.h: (CPP_BUMP_BUFFER_LINE_CUR, CPP_BUMP_LINE_CUR): New.

2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* invoke.texi (-fno-gnu-keywords): Remove classof, headof,
	__classof__, and __headof__ from the list of gnu keywords.
	(-ansi): Remove -foperator-names from list of implied options.
	Do not call it ANSI C++.
	(-foperator-names): Document as -fno-operator-names.

2000-04-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (timestamp): Delete.
	(del_HASHNODE): If type is T_MCONST, free value.cpval.
	(special_symbol): Remove unnecessary braces.  Remove
	T_VERSION.  Treat T_STDC like T_CONST unless
	STDC_0_IN_SYSTEM_HEADERS.  Render both __DATE__ and __TIME__
	when one is encountered, then convert them into T_MCONST
	nodes.
	* cppinit.c (builtin_array): version_string is T_MCONST.
	__STDC__ has a "1" in its cpval.  Don't have a terminator
	entry.  Clean up which entries are dumped.
	(initialize_builtins): Only __STDC__ gets the special
	-traditional treatment.  Count the length of builtin_array.
	Render version_string here.
	* cpphash.h: Remove T_VERSION.  Add T_MCONST.
	* cpplib.h (struct cpp_reader): Remove timebuf.

2000-04-09  Richard Henderson  <rth@cygnus.com>

	* genrecog.c (pred): Update comparison_operator for the unordered
	operators.

	* config/i386/i386.c (no_comparison_operator): Disallow unordered
	operators.
	(fcmov_comparison_operator): Allow UNORDERED/ORDERED.
	(uno_comparison_operator): New.
	(put_condition_code): Handle UNORDERED/ORDERED.
	(unsigned_comparison): Likewise.
	(ix86_fp_compare_mode): Broken out of ix86_expand_fp_compare.
	(ix86_use_fcomi_compare, ix86_prepare_fp_compare_args): Likewise.
	(ix86_expand_fp_compare): Use them.  Take scratch as argument,
	update all callers.  Handle all 8 unordered operators.
	(ix86_expand_setcc): Lose the unordered argument, update all callers.
	(ix86_expand_branch): Likewise.  Don't fully expand fp branches.
	* config/i386/i386.h (PREDICATE_CODES): Update.
	* config/i386/i386-protos.h (ix86_expand_fp_compare): Declare.
	(ix86_expand_branch, ix86_expand_setcc): Update.
	* config/i386/i386.md (sunordered, sordered): New.
	(suneq, sunge, sungt, sunle, sunlt, sltgt): New.
	(bunordered, bordered): New.
	(buneq, bunge, bungt, bunle, bunlt, bltgt): New.
	(*fp_jcc_1, *fp_jcc_2, *fp_jcc_3, *fp_jcc_4): New.
	(*fp_jcc_5, *fp_jcc_6, and splitters): New.

2000-04-09  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (ARM_NAME_ENCODING_LENGTHS): Strip `*' too.

Sun Apr  9 15:16:14 EDT 2000  John Wehle  (john@feith.com)

	* i386.md (fix_truncsfhi2, fix_truncdfhi2,
	fix_truncxfhi2): New patterns.
	* i386.c (output_fix_trunc): Handle converting to HImode.

2000-04-08  Alex Samuel  <samuel@codesourcery.com>

	* ssa.c (convert_to_ssa): Eliminate dead code when calling
	life_analysis.
	(convert_from_ssa): Call compute_bb_for_insn before life_analysis.
	(for_each_successor_phi): Change parameter to basic_block.
	(coalesce_regs_in_successor_phi_nodes): Likewise.
	(coalesce_regs_in_copies): Likewise.
	(compute_coalesced_reg_partition): Use basic_block instead of index.
	* rtl.h (convert_to_ssa): Delete.
	(convert_from_ssa): Likewise.
	(successor_phi_fn): Likewise.
	(for_each_successor_phi): Likewise.
	(in_ssa_form): Likewise.
	* basic-block.h (convert_to_ssa): Moved from rtl.h.
	(convert_from_ssa): Likewise.
	(successor_phi_fn): Likewise.
	(in_ssa_form): Likewise.
	(for_each_successor_phi): Likewise.  Change parameter to basic_block.
	* flow.c (calculate_global_regs_live): Pass a basic_block to
	for_each_successor_phi.

2000-04-08  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_used_reg): Use reg_set_p to determine if a register
	was modified in the current insn.

2000-04-08  Richard Earnshaw (rearnsha@arm.com)

	* arm/thumb.md: Delete.
	* arm/thumb-protos.h: Delete.

2000-04-08  Richard Earnshaw (rearnsha@arm.com)

	Merge changes from merged-arm-thumb-backend-branch onto trunk.

	2000-04-08  Richard Earnshaw (rearnsha@arm.com)

	* Merge trunk code from tag merged-arm-thumb-backend-merge_20000408
	into branch.

	* arm.md (nop): Use the standard RTL expression.  Don't code as a
	define_expand.
	(*arm_nop, *thumb_nop): Delete.

	* arm.c (const_ok_for_arm): Don't use ANSI extensions for defining
	constants.  Use casts instead.
	(arm_gen_constant, arm_rtx_costs, arm_reload_in_hi, arm_reload_out_hi,
	output_multi_immediate, arm_poke_function_name): Likewise.
	* arm.h (ARM_LEGITIIMIZE_RELOAD_ADDRESS, ARM_SIGN_EXTEND,
	MASK_RETURN_ADDDR): Likewise.

	2000-03-31  Richard Earnshaw (rearnsha@arm.com)

	* Merge trunk code from tag merged-arm-thumb-backend-merge_20000325
	into branch.

	* arm.md (eh_epilogue): New function.
	* arm.h (struct machine_function): Move to here ...
	* arm.c: ... from here.
	(arm_output_epilogue): Support epilogues for __builtin_eh_return.
	(thumb_exit): Extra parameter eh_ofs.  All callers changed.
	Handle epilogues for __builtin_eh_return.  Make bit-fields unsigned.

	2000-03-30  Nick Clifton  <nickc@cygnus.com>

	* config/arm/semi.h (ASM_SPEC): Restore definition.
	(SUBTARGET_EXTRA_ASM_SPEC): Define if not already defined.

	* config/arm/elf.h (ASM_SPEC): Restore definition.
	(SUBTARGET_EXTRA_ASM_SPEC): Define if not already defined.

	* config/arm/arm.h (ASM_SPEC): Remove definition.
	(SUBTARGET_EXTRA_ASM_SPEC): Remove definition.

	2000-03-26  Bernd Schmidt <bernds@cygnus.co.uk>

	* config/arm/arm.c: Disable -fschedule-insns for Thumb.

	2000-03-24  Nick Clifton  <nickc@cygnus.com>

	Various formating tidyups, elimination of compile time
	warnings and synchronisation with internal sources:

	* config/arm/arm-protos.h (assemble_align): Add prototype.
	(gen_rotated_half_load): Rename to arm_gen_rotated_half_load.
	(gen_comapre_reg): Rename to arm_gen_compare_reg.
	(arm_return_addr_rtx): Rename to arm_return_addr.

	* config/arm/arm.c: Include except.h.
	Define shorter typenames for strict minipool_node and struct
	minipool_fix.
	(arm_return_in_memory): For WinCE return all structures <= 32 bits
	in memory.
	(gen_rotated_half_load): Rename to arm_gen_rotated_half_load.
	(gen_comapre_reg): Rename to arm_gen_compare_reg.

	* config/arm/arm.h (SUBTARGET_EXTRA_ASM_SPEC): Define if not
	already defined.
	(ASM_SPEC): Define if not already defined.
	(ASM_OUTPUT_DEF_FROM_DECLS): Define.

	* config/arm/arm.md: Rename references to gen_rotated_half_load to
	arm_gen_rotated_half_load, and references to gen_comapre_reg to
	arm_gen_compare_reg.
	(indirect_jump):  Only accept register operands.
	(load_indirect_jump): Keep this pattern since combine can generate
	it.

	* config/arm/coff.h: Include aout.h.
	(MULTILIB_DEFAULTS): Only define if not already defined.

	* config/arm/elf.h (ASM_OUTPUT_DEF_FROM_DECLS): Move definition
	into arm.h (so that COFF ports can support thumb based aliases).
	(ASM_SPEC): Move definition into arm.h

	* config/arm/linux-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Remove
	redundant apcs spec.
	(ASM_SPEC): Move definition to arm.h

	* config/arm/semi.h (ASM_SPEC): Move definition to arm.h

	* config/arm/unknown-elf.h (ASM_OUTPUT_SECTION_NAME): Add support
	for entries in the .bss section

	2000-03-23  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.h (THUMB_INITIAL_ELIMINATION_OFFSET): Pass 0
	to thumb_far_jump_used_p.

	* config/arm/arm-protos.h (thumb_far_jump_used_p): Take a
	single integer parameter.

	* config/arm/arm.c (struct machine_function): Add two new
	fields, 'far_jump_used' and 'arg_pointer_live'.
	(thumb_far_jump_used_p): Once the decision has been made that
	far jumps might be used, always return true.
	If being called from the initial elimination offset macro then
	do not bother to perform the test if the arg pointer is not
	being used.
	(thumb_unexpand_epilogue): Pass 1 to thumb_far_jump_used_p().
	(output_thumb_prologue): Pass 1 to thumb_far_jump_used_p().

	2000-03-23  Richard Earnshaw (rearnsha@arm.com)

	* arm.c (output_return_instruction): Handle more cases where we can
	return from a function with an ldr instruction.
	(arm_output_epilogue): Likewise.

	* arm.c (thumb_expand_prologue): Don't clobber the frame pointer
	if we need to push a large stack frame and there are no callee-saved
	registers.

	* arm.c (arm_debugger_arg_offset): An offset of 0 is also valid
	in ARM code if the frame pointer has been eliminated.

	* arm.md (epilogue, *epilogue_insns, consttable_*, align_4): Renumber
	unspec_volatile arguments to avoid duplicates.
	(consttable_1, consttable_2): Fixes for big-endian mode.

	* arm.md (all ARM-mode load insns): Add neg_pool_range attribute
	as appropriate.

	Re-write constant pool code.
	* arm.c (minipool_node, minipool_fix): New types.
	(minifix): Delete type.
	(arm_add_minipool_constant): Delete.
	(arm_compute_minipool_offsets, arm_find_barrier,
	arm_find_minipool_constant, fixup_compare, sort_fixups): Likewise.
	(get_jump_table_size): Now returns HOST_WIDE_INT.
	(move_minipool_fix_forward_ref, add_minipool_forward_ref): New
	functions.
	(move_minipool_fix_backward_ref, add_minipool_backward_ref): Likewise.
	(assign_minipool_offsets, arm_print_value): Likewise.
	(dump_minipool): Rewrite.
	(arm_barrier_cost): New function.
	(create_fix_barrier): New function.
	(push_minipool_barrier): New function.
	(push_minipool_fix): Record additional information about the fixup
	required.
	(note_invalid_constants): Remove push for (UNSPEC 3).  Don't
	check the mode of what needs fixing.
	(arm_reorg): Rewrite.

	2000-03-08  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.md (indirect_jump): Force constant addresses into
	a register.

	2000-03-01  Bernd Schmidt <bernds@cygnus.co.uk>

	* config/arm/arm.md: Add splitter to turn SF moves into SI moves.

	2000-02-24  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (thumb_expand_prologue): Make sure that stack
	adjust is word aligned.
	(thumb_expand_epilogue): Make sure that stack adjust is word
	aligned.

	* config/arm/elf.h (ASM_FILE_START): Fix type of version string.

	2000-02-24  Bernd Schmidt <bernds@cygnus.com>

	* config/arm/arm.h (THUMB_GO_IF_LEGITIMATE_ADDRESS): Allow frame
	pointer relative addresses.

	2000-02-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (find_barrier): Find the last barrier within the allowed
	range.

	2000-02-09  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm-protos.h: Replace PROTO with PARAMS.

	2000-02-09  Nick Clifton  <nickc@cygnus.com>

	* config/arm/linux-elf.h (FUNCTION_PROFILER): Rename to
	ARM_FUNCTION_PROFILER.

	* config/arm/netbsd.h (FUNCTION_PROFILER): Rename to
	ARM_FUNCTION_PROFILER.

	* config/arm/linux-oldld.h: Imported from mainline sources.

	2000-02-07  Nick Clifton  <nickc@cygnus.com>

	* config/arm/lib1funcs.asm: Merge in thumb functions from
	lib1thumb.asm.

	* config/arm/lib1thumb.asm: Delete.

	2000-02-04  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c: Sychronised with current Red hat local
	sources.
	* config/arm/arm.h: Ditto.
	* config/arm/arm-protos.h: Ditto.

	2000-02-02  Bernd Schmidt  <bernds@cygnus.co.uk>

	* arm.c (soft_df_operand): Reject SUBREGs containing a constant.

	* arm.c (arm_gen_movstrqi): Generate halfword stores rather than two
	byte stores.

	2000-02-02  Nick Clifton  <nickc@cygnus.com>

	* config/arm/thumb.c (thumb_exit): Additional fix for same bug.

	* config/arm/arm.md (epilogue): Fix rtl checking abort because
	(return) was emited using an emit_insn() call.

	2000-01-31  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (output_thumb_prologue): Fix bug generating
	thumb stack frame.
	(thumb_exit): Move frame pointer back into hard frame pointer
	register if backtracing is being used.

	2000-01-13  Richard Earnshaw (rearnsha@arm.com)

	* Merge trunk code from tag merged-arm-thumb-backend-merge_20000113
	into branch.

	1999-12-15  Bernd Schmidt  <bernds@cygnus.co.uk>

	* config/arm/arm.md (neg_pool_offset): Provide default for new
	attribute.
	(arm_movsi_insn): Add neg_pool_offset attribute.
	* config/arm/arm.c (arm_find_barrier): Replace arg FIX with an
	rtx for the insn that starts the scan and an unsigned long for its
	address.  Add MIN_OFFSET and PINSERTED args.  All callers changed.
	Change scan to ignore insns before MIN_OFFSET.  Store size of inserted
	instructions in *PINSERTED.
	(struct minipool_fixup): Add MIN_ADDRESS elt.
	(sort_fixups): Compute it.
	(arm_reorg): Changes to support inserting pools before the insn to be
	fixed up.

	1999-12-08  Bernd Schmidt  <bernds@cygnus.co.uk>

	* config/arm/elf.h (MULTILIB_DEFAULTS): Add "marm".
	* config/arm/linux-elf.h (MULTILIB_DEFAULTS): Add "marm".
	* config/arm/coff.h (MULTILIB_DEFAULTS): Add "marm".

	Wed Nov  3 10:04:07 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/semi.h (TARGET_VERSION): Do not define if already
	defined.
	(TARGET_DEFAULT): Do not define if already defined.

	Tue Nov  2 10:37:25 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.md (anddi3): Allow disjoint source operands.
	(iordi3): Allow disjoint source operands.
	(xordi3): Allow disjoint source operands.
	(negdi2): Permit construction for ARM and Thumb.
	(arm_negdi2): Renamed version of old negdi2 pattern.
	(thumb_negdi2): New pattern: Only permit non-overlapping
	source and destination.

	Fri Oct 29 18:52:38 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (thumb_expand_prologue): Emit a USE of the
	scratch low register so that it will not be deleted.

	Fri Oct 29 15:23:48 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/pe.h (ARM_PE): Define.

	* config/arm/arm.c (arm_valid_machine_decl_attribute): Allow
	interfacearm attribute if this is a PE toolchain.
	(output_return_instruction): Do not emit anything if the function
	has the naked attribute set.
	(is_called_in_ARM_mode): If the function has the interfacearm
	attribute then return true.
	(thumb_expand_prologue): Do not generate a prologue for naked
	functions.
	(thumb_expand_epilogue): Do not generate an epilogie for a naked
	function.
	(output_thumb_prologue): Do not bother if the function is naked.
	Strip PE encoding from function name before emitting.

	Thu Oct 28 11:05:13 1999  Richard Earnshaw <rearnsha@arm.com>

	* arm.md (pic_load_addr): Fix constraints.

	* arm.md (casesi_insn): Fix mis-applied patch.

	* arm.md ("core" function unit): Add rules for single- and
	multi-cycle insns.
	(All TARGET_THUMB patterns): Add "type" attribute information
	where needed.
	* arm.c (arm_adjust_cost): Reduce the cost of a data dependency if
	the following insn is a CALL.

	* arm.c (thumb_expand_epilogue): Add a use of the adjusted stack
	pointer.
	* arm.h (CONDITIONAL_REGISTER_USAGE): Nail down the
	ARM_HARD_FRAME_POINTER_REGNUM when TARGET_APCS_FRAME.
	(FRAME_POINTER_REQUIRED): Only check TARGET_APCS_FRAME if TARGET_ARM.

	Wed Oct 27 14:40:48 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/linux-gas.h: oops - this file was missed out when the
	branch was created...

	Tue Oct 26 17:07:38 1999  Richard Earnshaw <rearnsha@arm.com>

	* thumb.c: Deleted.  Move contents to ...
	* arm.c: ... here.
	* t-arm-aout, t-arm-coff, t-arm-elf, t-linux, t-netbsd, t-semi: Remove
	rule for thumb.o
	* configure.in (arm*-*-*): Remove thumb.o from extra_objs list.
	* configure: Regen.

	* arm-protos.h: Use RTX_CODE and tidy up long lines.  Don't
	declare a prototype for asm_output_align();

	* arm.c (thumb_condition_code): Delete.
	(arm_print_operand): Always use arm_condition_code array.

	* arm.c (thumb_return_addr_rtx): Delete.
	(arm_save_machine_status, arm_restore_machine_status): Delete.
	(arm_init_machine_status, arm_mark_machine_status): New functions.
	(arm_init_expanders): Update accordingly.
	(arm_return_addr): Renamed from arm_return_addr_rtx.  Rewrite.
	(thumb_expand_prologue): Delete code referencing thumb_return_addr_rtx.
	* arm.h (RETURN_ADDR_RTX): Call arm_return_addr().

	Tue Oct 26 13:24:16 1999  Nick Clifton  <nickc@cygnus.com>

	* configure.in : Fix arm-*-aout target to use new t-arm-aout
	script.
	* config/arm/t-arm-aout: New file: Makefile script for arm-*-aout
	targets.

	Tue Oct 26 11:27:12 1999  Nick Clifton  <nickc@cygnus.com>

	* config/arm/thumb.c (output_thumb_prologue): Fix bug creating
	stack backtrace structure.

	* config/arm/arm-protos.h: Add prototypes for functions defined in
	arm/pe.h.

	* config/arm/arm.c (arm_override_options): Fix selection of
	attributes of default processor.

	* config/arm/coff.h: Delete needless #include.

	* config/arm/pe.c: Delete unused code.

	* config/arm/pe.h (CPP_DEFINES): Delete
	(SUBTARGET_CPP_SPEC): Define.
	(ASM_DECLARE_FUNCTION_NAME): Use ARM_DECLARE_FUNCTION_NAME.

	* config/arm/t-pe: Add -DInhibit_libc to allof libgcc.a to build.

	Mon Oct 25 15:42:09 1999  Richard Earnshaw (rearnsha@arm.com)

	* arm.h (TARGET_APCS_FRAME): Renamed from TARGET_APCS -- all uses
	updated.
	(CAN_DEBUG_WITHOUT_FP): Define.
	(FIXED_REGISTERS): Make r11 call-saved.
	(CALL_USED_REGISTERS): Likewise.
	(CONDITIONAL_REGISTER_USAGE): Fix r11 if TARGET_APCS_FRAME.
	(FRAME_POINTER_REQUIRED): Correct logic for determining when a
	frame-pointer is required.
	(TARGET_DEFAULT): Make default setting include ARM_FLAG_APCS_FRAME.
	* arm.c (arm_override_options): Warn about -mno-apcs-frame and -g
	if the target normally needs a stack frame in non-leaf functions.
	(use_return_insn): Correct logic for determining when a return
	instruction can be used.
	(output_return_instruction): Handle the frame-pointer register as
	a normal register when not TARGET_APCS_FRAME.
	(arm_output_prologue): Likewise.
	(arm_output_epilogue): Likewise.
	(output_func_epilogue): Likewise.
	(arm_expand_prologue): Likewise.
	* netbsd.h semi.h (TARGET_DEFAULT): Add ARM_FLAG_APCS_FRAME.

	* arm.c (use_return_insn): No need to check floating point regs if
	TARGET_SOFT_FLOAT.
	(arm_find_minipool_constant): Correct typo; use GET_CODE to get
	the code of value stored in the minipool array.
	(arm_add_minipool_constant): Likewise.

2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* basic-block.h (conflict_graph_enum_fn): K&R fix.

2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tree.c (tree_expr_nonnegative_p): New function.

	* tree.h (tree_expr_nonnegative_p): Declare.

	* c-typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to
	elide some sign_compare warnings.
	(build_conditional_expr): Likewise.

Sat Apr  8 00:21:51 EDT 2000  John Wehle  (john@feith.com)

	* i386.md (ashrsi3, ashrhi3, ashrqi3): Fix typo.

	* i386.md (floathisf2, floathidf2, floathixf2): New patterns.
	* i386.c (print_operand): Use the proper suffix for a 387 HImode
	operand.  Abort if a 387 operand has an unsupported size.

2000-04-08  Neil Booth  <NeilB@earthling.net>

	* cppexp.c (parse_charconst): Null does not end character
	constants.
	* cppinit.c (ISTABLE): Null character handled as whitespace.
	* cpplex.c (null_warning):  new function.
	(skip_string): Emit warning if nulls encountered.
	(_cpp_skip_hspace): Emit warning if nulls encountered.
	(_cpp_lex_token): Emit warning if nulls encountered.  Drop
	them.
	* cpp.texi: Update.

2000-04-07  Richard Henderson  <rth@cygnus.com>

	* flow.c (loop_depth): Remove.
	(reg_next_use, cc0_live, mem_set_list): Replace with ...
	(struct propagate_block_info): New.
	(life_analysis): Don't allocate reg_next_use.
	(propagate_block_delete_insn): Break out of propagate_block.
	Use flow_delete_insn to unlink rather than use NOTE_INSN_DELETED.
	(propagate_block_delete_libcall): Likewise.
	(propagate_block): Create a propagate_block_info struct to pass
	to subroutines.  Allocate one not two temporary regsets.  Don't
	clobber memory for const calls.  Look for clobbers in
	CALL_INSN_FUNCTION_USAGE.
	(mark_set_regs): Recognize COND_EXEC.
	(mark_set_reg): Break out of mark_set_1.
	(mark_used_reg): Break out of mark_used_regs.
	(mark_used_regs): Recognize COND_EXEC.
	(insn_dead_p): Use propagate_block_info struct.
	(libcall_dead_p, invalidate_mems_from_autoinc): Likewise.
	(find_auto_inc, try_pre_increment_1): Likewise.
	(print_rtl_with_bb): Dump regs live at end too.
	(count_reg_sets_1): Pass in loop_depth.
	(count_reg_sets, count_reg_references): Likewise.
	(recompute_reg_usage): Provide it.

2000-04-07  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (conflict.o): Depend on $(RTL_H) and $(BASIC_BLOCK_H)
	not the raw files.

2000-04-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_elif): Skip the rest of the line if we're
	not going to bother evaluating it.
	(skip_if_group): Clear pfile->only_seen_white.  Reorder loop
	to avoid pointless calls to the lexer.

Fri Apr  7 11:50:54 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c: Delete stdio.h and ctype.h includes.

2000-04-07  Jason Merrill  <jason@casey.cygnus.com>

	* calls.c (expand_call): emit_queue if we're trying a sibcall.

2000-04-07  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/t-linux64 (tcrtbeginS.o, tcrtendS.o): Remove.

2000-04-06  Geoff Keating  <geoffk@cygnus.com>

	* Makefile.in: Build crtbeginS and crtendS like crtbegin and
	crtend so they can be multilibbed.
	(STAGESTUFF): Remove s-crt and s-crtS.

2000-04-07  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (alpha_emit_conditional_move): Fail
	if we discover we need a pseudo and no_new_pseudos is true.
	* config/alpha/alpha.md (ne:DI insn): New.
	(trunctfsf2, sne): Emit NE instead of non-canonical LTU.

2000-04-07  Richard Henderson  <rth@cygnus.com>

	* rtl.def (COND_EXEC): New.
	* rtl.h (COND_EXEC_TEST, COND_EXEC_CODE): New.
	* tm.texi (MAX_CONDITIONAL_EXECUTE): Document.

	* genconfig.c (have_cond_arith_flag): Remove.
	(have_cond_exec_flag): New.
	(walk_insn_part): Detect COND_EXEC, not arithmetic in IF_THEN_ELSE.
	(main): Print HAVE_conditional_execution.

	* haifa-sched.c (haifa_classify_insn): Recognize COND_EXEC.
	(sched_analyze_insn, print_pattern): Likewise.
	* reload.c (find_equiv_reg): Likewise.
	* rtlanal.c (reg_referenced_p): Likewise.
	(note_stores, dead_or_set_regno_p): Likewise.
	(reg_overlap_mentioned_p): Rewrite to use a switch.

	* ggc.h (struct rtx_def): Forward declare.

	* print-rtl.c (debug_rtx_range): New.
	* rtl.h (debug_rtx_range): Declare.

	* varray.h (VARRAY_ACTIVE_SIZE, VARRAY_POP_ALL): New.

	* gcse.c (gcse_main): Don't rebuild the CFG here.
	(delete_null_pointer_checks): Likewise.
	* ssa.c (convert_to_ssa): Likewise.
	* toplev.c (rest_of_compilation): Do it here instead.  Combine
	sequential calls to TIMEVAR.  Consistently use `insns' instead of
	`get_insns()'.  Always split insns after reload when optimizing.

	* basic-block.h (merge_blocks_nomove): Declare.
	(tidy_fallthru_edge): Declare.
	* flow.c (merge_blocks_nomove): Document as merging into previous
	blocks.  Remove cruft from between blocks; remove all edges out of A.
	(tidy_fallthru_edge): Export.

2000-04-06  Alex Samuel  <samuel@codesourcery.com>

	* ssa.c (compute_conservative_reg_partition): Declare with
	void arguments.
	* toplev.c (clean_dump_file): Remove previously-deleted function
	inadvertantly merged back in.
	* conflict.c (conflict_graph_add): Use a single call to
	htab_find_slot to look up and insert.

2000-04-06  Richard Henderson  <rth@cygnus.com>

	* genrecog.c (*): Rename _last_insn to last_insn.
	(make_insn_sequence): Set the position of the peephole2 C test
	to be at the last insn.

2000-04-06  Richard Henderson  <rth@cygnus.com>

	* flow.c (compute_flow_dominators): Free worklist.

2000-04-06  Michael Matz  <matzmich@cs.tu-berlin.de>

	* flow.c (compute_flow_dominators): Process blocks FIFO not LIFO.

2000-04-06  Alex Samuel  <samuel@codesourcery.com>

	* rtl.h (INSN_P): New macro.
	(successor_phi_fn): New typedef.
	(for_each_successor_phi): New prototype.
	(in_ssa_form): New variable.
	(PHI_NODE_P): Likewise.
	* flow.c (calculate_global_regs_live): Add to new_live_at_end from
	phi nodes in successors.
	(mark_used_regs): Add PHI case.
	(set_phi_alternative_reg): New function.
	(life_analysis): Assert that dead code elimination is not selected
	when in SSA form.
	* toplev.c (to_ssa_time): New variable.
	(from_ssa_time): Likewise.
	(compile_file): Zero to_ssa_time and from_ssa_time.
	Print time to convert to and from SSA.
	(rest_of_compilation): Time convert_to_ssa and convert_from_ssa.
	(print_time): Compute percent fraction as integer.
	* ssa.c (PHI_NODE_P): Moved to rtl.h.
	(convert_to_ssa): Check if we're already in SSA.
	Don't eliminate dead code in life_analysis.
	Rerun flow and life analysis at bottom.
	(eliminate_phi): Use canonical regnos when adding nodes.
	(mark_reg_in_phi): New function.
	(mark_phi_and_copy_regs): Likewise.
	(convert_from_ssa): Rerun life analysis at top.
	Use coalesced partition.
	Check for removing a phi node at the end of the block.
	(compute_coalesced_reg_partition): New function.
	(coalesce_regs_in_copies): Likewise.
	(coalesce_reg_in_phi): Likewise.
	(coalesce_regs_in_successor_phi_nodes): Likewise.
	(for_each_successor_phi): Likewise.
	(rename_context): New struct.
	(rename_block): Use a rename_context with rename_insn_1.  When
	renaming sets of a subreg, emit a copy of the entire reg first.
	(rename_insn_1): Treat data as a rename_context *.  Save current
	insn in set_data.
	(rename_set_data): Add field set_insn.
	* Makefile.in (HASHTAB_H): Move up in file.
	(OBSTACK_H): New macro.
	(collect2.o): Use OBSTACK_H in dependencies.
	(sdbout.o): Likewise.
	(emit-rtl.o): Likewise.
	(simplify-rtx.o): Likewise.
	(fix-header.o): Likewise.
	(OBJS):	Add conflict.o.
	(conflict.o): New rule.
	* basic-block.h: Include partition.h.
	(conflict_graph): New typedef.
	(conflict_graph_enum_fn): Likewise.
	(conflict_graph_new): New prototype.
	(conflict_graph_delete): Likewise.
	(conflict_graph_add): Likewise.
	(conflict_graph_conflict_p): Likewise.
	(conflict_graph_enum): Likewise.
	(conflict_graph_merge_regs): Likewise.
	(conflict_graph_print): Likewise.
	(conflict_graph_compute): Likewise.
	* conflict.c: New file.

2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>

	* tlink.c (read_repo_files): Don't look for .rpo info for
	linker flags.

Thu Apr  6 20:39:26 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (STRUCT_VALUE, RETURN_IN_MEMORY): Define.

Thu Apr  6 19:34:08 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/sh/lib1funcs.asm (___udivsi3_i4):
	( __SH4_SINGLE__ / __SH4_SINGLE_ONLY__ variant): value for fpscr
	only depends on FMOVD_WORKS.

Thu Apr  6 19:11:47 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/sh/lib1funcs.asm (___udivsi3_i4): When using fmovd,
	make double constant 8-byte aligned.

2000-04-06  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (movtf_insn_sp32, movtf_insn_vis_sp32,
	movtf_no_e_insn_sp32, movtf_insn_hq_sp64, movtf_insn_hq_vis_sp64,
	movtf_no_e_insn_sp64): Accept loading 0.0 into GENERAL_REGS.
	(movtf_insn_sp64, movtf_insn_vis_sp64): Likewise.
	Accept storing GENERAL_REGS into offsetable memory.
	* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Don't allow
	building a TFmode constant other than 0.0L into GENERAL_REGS.

2000-04-06  Clinton Popetz  <cpopetz@cygnus.com>

	* regrename.c (regrename_optimize): Handle no REG_ALLOC_ORDER.

2000-04-06  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (CPP_IS_MACRO_BUFFER, FORWARD, PEEKC): Delete.
	(macro_cleanup): No need to cast pbuf->macro.
	(collect_expansion): Use _cpp_get_define_token.  Goto done if
	it returns VSPACE.  Remove check for trailing space after
	CPP_COMMENT.
	(_cpp_create_definition): Don't diddle flags here.  Return
	directly on error.
	(unsafe_chars): Handle c1 being EOF.
	(push_macro_expansion): Use unsafe_chars for both accidental-paste
	checks.  Don't push the buffer till after we're done with
	them.
	* cpplex.c (PEEKBUF, GETBUF, FORWARDBUF): New.
	(PEEKN, FORWARD, GETC, PEEKC): Use them.
	(cpp_push_buffer): Don't set new->alimit.  Set new->mark
	appropriately.
	(_cpp_parse_assertion): Don't NUL terminate.
	(_cpp_lex_token): Fix -traditional macro handling.  Don't skip
	hspace before calling _cpp_parse_assertion.  Remove all sets
	of only_seen_white. Treat '\f' as hspace.  Don't do anything
	special with '\n' here.
	(maybe_macroexpand): Handle T_EMPTY hash entries without
	pushing a buffer at all.
	(cpp_get_token): Handle clearing only_seen_white here.  Handle
	incrementing the line number here.  Clear
	potential_control_macro as well as only_seen_white, if
	appropriate.
	(cpp_get_non_space_token): Don't eat CPP_POP tokens.
	(_cpp_get_define_token): New function, basically like
	_cpp_get_directive_token was but doesn't eat horizontal space.
	Don't do anything with only_seen_white here.
	(_cpp_get_directive_token): Just call _cpp_get_define_token
	repeatedly till it returns non-hspace.

	* cpplib.c (PEEKN, FORWARD, GETC, PEEKC): Delete.
	(conditional_skip, skip_if_group): Return int.
	(DIRECTIVE_TABLE): Change origin of all conditional directives
	to "COND".
	(TRAD_DIRECT_P): New macro.
	(_cpp_handle_directive): Use _cpp_get_directive_token.  Issue
	an error for a bogus directive, unless -lang-asm.  Use
	TRAD_DIRECT_P. Loop calling handler functions till one returns
	zero.
	(get_macro_name): Don't diddle flags here.
	(do_define): Diddle flags here.  Use _cpp_get_directive_token.
	Create T_EMPTY nodes for #define macro /* nothing */.
	(do_undef): Don't copy the name.  Use _cpp_get_directive_token.
	Use hp->name when calling pass_thru_directive.
	(do_if, do_else, do_elif, do_ifdef, do_ifndef, conditional_skip):
	Return the result of conditional_skip and/or skip_if_group.
	Don't call _cpp_output_line_command.
	(consider_directive_while_skipping): Use _cpp_get_directive_token.
	Issue -Wtraditional warnings as appropriate.  Don't complain
	about unrecognized directives.  If we are to stop skipping,
	return the number of the directive that ended the skip.
	(skip_if_group): Use _cpp_get_directive_token.  Turn off macro
	expansion and line commands while skipping.  Return the result
	of consider_directive_while_skipping, if nonzero.
	(do_endif): Just set potential_control_macro here.
	(validate_else): Use _cpp_get_directive_token.
	(do_assert, do_unassert): Don't save pointers into the
	token_buffer across calls to the lexer.  Use
	_cpp_get_directive_token.

	* cpplib.h (cpp_buffer): Remove alimit and colno.  Make mark a
	pointer, not an offset.  Replace 'data', which was a generic
	pointer, with 'macro', which points to a struct hashnode.
	(cpp_reader): Add 'potential_control_macro' pointer.
	* cpphash.h (T_UNUSED): Replace with T_EMPTY.
	(CPP_BUF_GET, CPP_FORWARD): Delete.
	(CPP_IN_COLUMN_1, ADJACENT_TO_MARK): New macros.
	(CPP_IS_MACRO_BUFFER, CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK,
	ACTIVE_MARK_P): Update.
	(_cpp_get_define_token): New internal function.
	* cppfiles.c (read_include_file): Don't set fp->alimit or fp->colno.

2000-04-05   Benjamin Kosnik  <bkoz@cygnus.com>

	* configure.in: And here.
	* configure: Regenerate.
	* acconfig.h: Add ENABLE_STD_NAMESPACE to set flag_honor_std if
	--enable-libstdcxx-v3 is passed at configure time.
	* config.h.in: Regenerate.

2000-04-05  Mark Mitchell  <mark@codesourcery.com>

	* final.c (final): Use xcalloc to allocate line_note_exists.
	* function.c (free_after_compilation): Free the temp_slots.
	(assign_stack_temp_for_type): Use xmalloc to allocate temp_slots.
	(combine_temp_slot): Free temp_slots when they get combined.
	(purge_addressof): Fix typo in comment.
	* stmt.c (mark_goto_fixup): Mark the fixup itself.
	(expand_fixup): Allocate the fixup with ggc_alloc_obj.

	* ggc.h: Include varray.h.
	(ggc_pending_trees): Declare.
	(ggc_mark_tree_children): Remove declaration.
	(ggc_mark_tree): Just push unmarked trees on ggc_pending_trees.
	* ggc-common.c (ggc_pending_trees): New variable.
	(ggc_mark_roots): Call ggc_mark_trees.
	(ggc_mark_tree_children): Rename to ggc_mark_trees.  Process all
	the ggc_pending_trees.
	* Makefile.in (GGC_H): New variable.  Use it throughout in place
	of ggc.h.

Thu Apr  6 00:30:50 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (FUNCTION_ARG_PARTIAL_NREGS): Accommodate an unsigned
	GET_MODE_SIZE.

Wed Apr  5 23:17:10 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.c (sh_insn_length_adjustment): New function.
	* sh-protos.h (sh_insn_length_adjustment): Declare.
	* sh.h (ADJUST_INSN_LENGTH): Use it.

Wed Apr  5 12:35:18 2000  Hans-Peter Nilsson  <hp@axis.com>

	* optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes
	from the insn where REG_RETVAL is added.
	(emit_no_conflict_block): Ditto.

	* md.texi (Standard Names): Clarify when movX is needed.

	* combine.c (simplify_comparison) [MINUS]: Do not replace
	all (op (minus A B) 0) with (op A B).

Wed Apr  5 18:03:31 2000  Toshiyasu Morita  (toshi.morita@sega.com)
			  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.md (block_lump_real_i4): Add missing clobber of T_REG
	(block_lump_real): Likewise.

2000-04-05  Chris Demetriou  <cgd@netbsd.org>

	* mips.h (MASK_DEBUG_A, MASK_DEBUG_B, MASK_DEBUG_C): Zero the
	remaining nonzero debugging masks.

Wed Apr  5 09:44:07 2000  Jeffrey A Law  (law@cygnus.com)

	* basic-block.h (verify_flow_info): Declare.
	(flow_loop_outside_edge_p): Declare.
	* flow.c (verify_flow_info): Remove declaration.
	(clear_log_links, flow_loop_outside_edge_p): Likewise.

Wed Apr  5 09:34:26 2000  Philippe De Muyter <phdm@macqel.be>

	* m68k/m68k-protos.h (finalize_pic): Turn prototype off using `#if 0',
	not C++ comments.

2000-04-05  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (snedi_zero+1, neg_snedi_zero+1,
	snedi_zero_trunc+1, seqdi_zero+1, neg_seqdi_zero+1,
	seqdi_zero_trunc+1): Allow splits only if registers are
	different.

2000-04-04  Ulrich Drepper  <drepper@cygnus.com>

	* acconfig.h: Add HAVE_GAS_HIDDEN.
	* config.in: Regenerated.
	* configure.in: Add test for .hidden pseudo-op in gas.
	* configure: Regenerated.
	* crtstuff.c: Include auto-host.h.
	Emit additional .hidden pseudo-op for __dso_handle if the
	assembler knows about it.

2000-04-04  Philippe De Muyter  <phdm@macqel.be>

	* cpphash.c (_cpp_free_definition): Test argnames, not nargs >= 0,
	before freeing argnames.
	* cpplib.c (do_ifndef): Cast return value of xstrdup.

2000-04-05  Michael Meissner  <meissner@redhat.com>

	* config/rs6000/rs6000.c (print_operand): Patch from Jonathan
	Walton <jonboy@gordian.com> to make memory references with update
	work wtih -mregnames.

2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* regrename.c (regno_first_use_in): Wrap prototype in PARAMS.
	(regrename_optimize): Rename variables `def_uses' and
	`ext_basic_blocks' to avoid conflicts with similarly named
	typedefs in traditional C.

	* calls.c (initialize_argument_information): Fix typo in previous
	change.

2000-04-04  Richard Henderson  <rth@cygnus.com>

	* regrename.c (consider_available): Test fixed_regs not
	PIC_OFFSET_TABLE_REGNUM.

2000-04-04  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/t-ppccomm (EXTRA_MULTILIB_PARTS): Add crtbegin,
	crtend.
	(CRTSTUFF_T_CFLAGS_S): Delete definition.
	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Always use crtbegin.
	(ENDFILE_LINUX_SPEC): Always use crtend.
	* configure.in (powerpc-*-linux-gnulibc1): Don't define extra_parts.
	(powerpc-*-linux-gnu): Likewise.
	* configure: Regenerate.

	* config/rs6000/eabi.h:	Don't include sysv4.h.
	(MULTILIB_DEFAULTS): Don't define.
	* config/rs6000/eabiaix.h: Don't include eabi.h.
	* config/rs6000/eabile.h: Delete.
	* config/rs6000/eabilesim.h: Delete.
	* config/rs6000/eabisim.h: Don't include eabi.h.
	* config/rs6000/linux.h: Don't include sysv4.h.
	(JUMP_TABLES_IN_TEXT_SECTION): Don't redefine.
	(MULTILIB_DEFAULTS): Don't redefine.
	* config/rs6000/rtems.h: Don't include eabi.h.
	* config/rs6000/sol2.h: Don't include sysv4le.h.
	* config/rs6000/sysv4le.h: Don't include sysv4.h.
	* config/rs6000/t-ppc: Delete.
	* config/rs6000/t-ppcgas: Correct comment.
	* config/rs6000/t-ppcos: Correct comment.  Don't build
	multilibs for -fPIC, rather use -fPIC -mstrict-align
	as default.
	* config/rs6000/t-ppc: Delete.
	* config/rs6000/vxppc.h: Don't include sysv4.h.
	* config/rs6000/vxppcle.h: Delete.
	* configure.in: Use multiple header files for p2pc ELF targets
	powerpc-eabiaix, powerpc-eabisim, powerpc-rtems, powerpcle-eabi,
	powerpcle-eabisim, powerpc-elf, powerpcle-elf, powerpc-linux-gnu,
	powerpc-linux-gnulibc1, powerpc-sysv, powerpcle-sysv,
	powerpc-vxworks, powerpcle-vxworks.  Assume GAS functionality is
	always available for these platforms.

2000-04-04  Richard Henderson  <rth@cygnus.com>

	* calls.c (try_to_integrate): Initialize reg_parm_stack_space.

2000-04-04  Stan Cox  <scox@cygnus.com>

	* Makefile.in: Add rules for regrename.o
	* regrename.c: New file.
	* rtl.h (regrename_optimize): Add prototype.
	* toplev.c (rename_registers_dump, flag_rename_registers): New variables
	(compile_file, decode_d_option): Add support for -frename-registers.
	(rest_of_compilation): Call regrename_optimize.
	* config/ia64/ia64.h (HARD_REGNO_RENAME_OK, RENAME_EXTENDED_BLOCKS):
	New macros.

2000-04-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* Makefile (gccbug): New target.
	(doc): Depend on it.
	* gcc.texi (Bugs): Link subnodes.
	(gccbug): New node.
	* gccbug.in (CATEGORIES): Remove gc, host, profiling, libgcc.
	Document severities, priorities, and classes in bug form.

2000-04-04  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplex.c (trigraph_map, speccase): Combine into single
	table, chartab.
	(NORMAL, NONTRI): New macros.
	(_cpp_read_and_prescan): Change to use unified table.  Use
	is_hspace to test for whitespace.

	* dbxout.c (CONTIN): If it doesn't have to do anything, give it a
	definition that doesn't provoke the "empty body in an
	if-statement" warning.

2000-04-04  Clinton Popetz  <cpopetz@cygnus.com>

	* builtins.c (expand_builtin_strlen): Force the source to
	be a memory address.

2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpplib.c (D): Adjust to call CONCAT2 macro without whitespace.

Tue Apr  4 19:17:20 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (ECF_MALLOC, ECF_MAY_BE_ALLOCA, ECF_RETURNS_TWICE,
	 ECF_LONGJMP, ECF_FORK_OR_EXEC):  New constants.
	(ECF_IS_CONST): Rename to ECF_CONST.
	(special_function_p): Make static, change interface.
	(flags_from_decl_or_type, try_to_integrate): Break out from ...
	(expand_call) ... here; convert number of variables to flags.
	(emit_library_call_vlue_1): Likewise.
	(setjmp_call_p): New function.
	(initialize_argument_information): Accepts flags as argument;
	return flags.
	(precompute_arguments): Likewise.
	* tree.h (special_function_p): Remove.
	(setjmp_call_p): Add prototype.

2000-04-04  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (RTX_OK_FOR_OFFSET_P): Leave minor margin
	so that addresses are offsetable by up to 16 bytes.
	(GO_IF_LEGITIMATE_ADDRESS): Don't allow REG+REG addresses for
	non-optimizing TARGET_ARCH32 in DF or DI modes because it is not
	offsetable.

	* config/sparc/sparc.md (movdi_insn_sp64_novis): New pattern.
	(movdi_insn_sp64_vis): Renamed from movdi_insn_sp64.
	(movsf): Don't force any constant to memory if target is integer
	hard register.
	Move fp_zero_operand check below the const0_rtx check.
	(movtf): Likewise. Also allow fp_zero_operand for stores into
	memory.
	(movdf): Likewise. Also allow fp_zero_operand for stores into
	memory and into integer hard registers.
	(clear_df, clear_dfp, movdf_const_intreg_sp32,
	movdf_const_intreg_sp64): Remove.
	(movdf_insn_sp32, movdf_no_e_insn_sp32): Redo constraints and
	conditions.
	(movdf_no_e_insn_v9_sp32): New pattern.
	(movdf_insn_v9only): Remove.
	(movdf_insn_v9only_novis, movdf_insn_v9only_vis): New patterns.
	(movdf_insn_sp64): Remove.
	(movdf_insn_sp64_novis, movdf_insn_sp64_vis): New patterns.
	(movdf_no_e_insn_sp64): Allow storing 0.0 into memory.
	(following splits): Rewrite conditions. Add two new splits
	for storing 0.0 into memory and registers.
	(clear_tf, clear_tf+1, clear_tfp, clear_tfp+1): Remove.
	(movtf_insn_sp32): Redo constraints and conditions.
	(movtf_insn_vis_sp32): New pattern.
	(movtf_no_e_insn_sp32): Redo constraints and conditions.
	(movtf_insn_hq_sp64): Likewise.
	(movtf_insn_hq_vis_sp64): New pattern.
	(movtf_insn_sp64): Redo constraints and conditions.
	(movtf_insn_vis_sp64): New pattern.
	(movtf_no_e_insn_sp64): Redo constraints and conditions.
	(movtf_no_e_insn_sp64+1): New split for storing 0.0L into registers
	or memory.
	* config/sparc/sparc.c (sparc_override_options): Assume v9 if either
	-mvis or -m64 to take down the number of various reload patterns.

Tue Apr  4 00:41:53 2000  Jeffrey A Law  (law@cygnus.com)

	* pa/pa-64.h: New file.
	* pa/pa64-regs.h: New file.
	* pa/pa64-start.h: New file.
	* pa/t-pa64: New file.
	* pa/xm-pa64hpux.h: New file.

2000-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.c (output_restore_regs): Prototype.
	(sparc_emit_float_lib_cmp): Constification.

	* emit-rtl.c (const_int_htab_hash, const_int_htab_eq): Likewise.

	* reload1.c (reload_cse_delete_noop_set, reload_cse_simplify):
	Prototype.

	* simplify-rtx.c (entry_and_rtx_equal_p): Constification.
	(get_value_hash, hash_rtx): Likewise.

	* ssa.c (compute_conservative_reg_partition): Prototype.

	* tree.c (mark_hash_entry): Prototype.

2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>

	* bb-reorder.c (verify_insn_chain): #ifdef out unless ENABLE_CHECKING.
	* i386.h (FUNCTION_ARG_REGNO_P): Remove unnecessary test for N >= 0.
	* i386.md (call_value, call_value_pop): Remove unused variable 'addr'.

	* gcc.c (C specs): Pass -fno-show-column to the preprocessor.
	* objc/lang-specs.h: Likewise.

2000-04-03  Neil Booth  <NeilB@earthling.net>

	* cppexp.c: wrap long lines.  New macros CPP_ICE, SYNTAX_ERROR
	and SYNTAX_ERROR2. Replace `' in messages with ''.
	(op_to_str): Make re-entrant.
	(_cpp_parse_expr): Implement new error macros. Use | rather
	than || to logically or 2 boolean integers.  Simply expression
	checking we have a left operand iff needed.

2000-04-03  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in (diagnostic.o): Depend upon diagnostic.c

2000-04-03  Philip Blundell  <philb@gnu.org>

	* config/arm/linux-elf.h (SUBTARGET_EXTRA_LINK_SPEC): Fix typos.

2000-04-03  Felix Lee  <flee@cygnus.com>

	* fixinc/server.c (find_shell): New function.  Avoid $SHELL.
	(run_shell): Use it.

2000-04-03  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* Makefile.in (stmp-int-hdrs): Make include subdir here...
	(stmp-fixproto): ...rather than here.

Mon Apr  3 00:50:06 2000  Jason Eckhardt <jle@cygnus.com>

	* pa.c (print_operand): Compute 'base' only inside the code paths
	that use it.

2000-04-03  Geoffrey Keating  <geoffk@cygnus.com>

	* stor-layout.c (byte_from_pos): Use TRUNC_DIV_EXPR rather than
	CEIL_DIV_EXPR.

2000-04-03  Philipp Thomas  <pthomas@suse.de>

	* i386.h (TARGET_SWITCHES): Remove bogus empty strings, fix typo.

Mon Apr  3 00:02:59 2000  Brad Lucier <lucier@math.purdue.edu>

	* Makefile.in (alias.o): Depend on $(TREE_H).

2000-04-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_start_read): Turn off -Wtraditional if
	processing C++.
	* cpplib.c (_cpp_handle_directive): Improve warnings for
	traditional C and indented directives.

	* enquire.c, gsyslimits.h, limity.h, config/convex/fixinc.convex,
	fixinc/fixinc.irix, fixinc/fixinc.sco, fixinc/fixinc.wrap,
	fixinc/inclhack.def: Indent the # of #include_next one space.
	* cp/rtti.c: Un-indent #if and #endif.

	* cppexp.c (_cpp_parse_expr): If lex returns '#', it's a
	syntax error, but an error has already been printed.
	* cpplex.c (_cpp_parse_assertion): Give a more specific error
	message when called with nothing remaining on the line.
	(_cpp_lex_token): If _cpp_parse_assertion fails, return an
	OTHER token, not an ASSERTION.
	* cpplib.c (do_assert): When we create a 'base' node, clear
	its aschain pointer.

2000-04-02  Neil Booth <NeilB@earthling.net>

	* cppexp.c:  New typedef op_t.  struct operation and struct
	token updated to use it.
	(op_to_str): New function.
	(_cpp_parse_expr): Error messages modified to use op_to_str.

2000-04-02  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_function_arg): Check for void_type_node
	before checking MUST_PASS_IN_STACK.

2000-04-02  Neil Booth <NeilB@earthling.net>

	* cppexp.c:  New FINISHED dummy token.  Combine operator initial
	flags and initial priority into a single constant.  New
	EQUALITY macro.  New operator flag SHORT_CIRCUIT.
	(_parse_cpp_expr): Implement new constants.  Take left operand
	checks out of reduction loop.  Handle SHORT_CIRCUIT.  End of
	parse indicated by reducing FINISHED token.  Remove new lines
	from cpp_error messages.

2000-04-01  Mark Mitchell  <mark@codesourcery.com>

	* emit-rtl.c (gen_rtx_CONST_INT): Create cached CONST_INTs on the
	permanent obstack.

2000-04-01  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c: Include symcat.h.  Add 'origin' field to struct
	directive.  Add origin values to DIRECTIVE_TABLE.  Generate
	the strings and function names on the fly.  Take the #sccs
	entry out of the table if SCCS_DIRECTIVE is not defined.
	(_cpp_handle_directive): Decide if the # was at the beginning
	of the line here.  Issue -pedantic warnings for extended
	directives here.  Warn about K+R directives with the #
	indented, and C89/extended directives with the # not indented,
	here.
	(do_import, do_include_next, do_warning, do_ident, do_sccs,
	do_assert, do_unassert): Don't issue pedantic warning here.

	* cpphash.h: Add CPP_WTRADITIONAL macro.
	* cpplib.h (struct cpp_options): Rename warn_stringify to
	warn_traditional; update comments.
	* cppinit.c (handle_option): Set warn_traditional not
	warn_stringify.
	* cpphash.c: Replace CPP_OPTION (pfile, warn_stringify) with
	CPP_WTRADITIONAL (pfile).
	* cpplex.c (_cpp_lex_token): Don't decide if directives should
	be ignored in -traditional mode here.

	* cpplex.c: Copy ISTABLE macros from cppinit.c, and adapt them
	to initialize speccase[] and trigraph_map[].  Delete all
	references to pfile->input_speccase.  Always treat '?' as a
	special character.  Remove table-initialization code from
	_cpp_init_input_buffer.

	* cpplib.h (struct cpp_reader): Remove input_speccase field.
	* cppinit.c (cpp_cleanup): Don't free input_speccase.

2000-04-01  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (STAGESTUFF): Wildcard all debugging dumps at once.
	(mostlyclean): Likewise.

	* toplev.c (rtl_dump, jump_opt_dump, etc): Remove.
	(struct dump_file_info, enum dump_file_index, dump_file): New.
	(open_dump_file): Take a dump_file_index not a suffix, and a decl
	not a string.  Clean out file if we haven't yet done so.  Do nothing
	if the dump isn't enabled.
	(close_dump_file): Do nothing if the dump isn't open.  Dump
	graph data if requested.
	(dump_rtl, clean_dump_file): Remove.
	(compile_file): Don't clean the dump files.  Only finalize .bp dump
	if flag_test_coverage or flag_branch_probabilities.  Only finalize
	.combine dump if optimizing.  Iterate over dump_file to finalize the
	graph dumps.
	(rest_of_compilation): Update for open_dump_file/close_dump_file.
	Convert all uses of dump_rtl.
	(decode_d_option): Iterate over dump_file to implement 'a' and to
	locate pass-specific dumps.

2000-04-01  Neil Booth <NeilB@earthling.net>

	* cppexp.c: Redefine priority constants.
	(_cpp_parse_expr): Replace left and right priority scheme with
	single priority logic.  Move LOGICAL to same place as COMPARE.
	Remove bogus check for multiple unary +/- operators.

2000-04-01  Neil Booth <NeilB@earthling.net>

	* cppexp.c: (_cpp_parse_expr): Numerical constants are pushed
	within the switch statement.  Binary operations break out of
	the switch naturally.  '(' tokens handled by forcing
	immediate shift.  ')' handled by forcing immediate reduce to
	the previous '('.  New error messages.

2000-03-31  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.c (print_operand): Don't use %l for 'low
	part', it's already in use.  Use %K instead.  Add a return at the
	end of what is now %K.
	* config/rs6000/rs6000.md (elf_low): Use %K instead of %l.

Sat Apr  1 02:05:29 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* builtins.c  (expand_builtin_apply):  Pass proper parameters to
	allocate_dynamic_stack_space.
	* calls.c (emit_call_1):  Do not adjust stack pointer for SIB,
	update stack_pointer_delta; do not update arg_size_so_far.
	(compute_argument_block_size): Use stack_delta instead of
	stack_pointer_pending and arg_size_so_far.
	(expand_call): Add sanity checking for stack_pointer_delta;
	save and restore stack_pointer_delta for SIB, use
	stack_pointer_delta for alignment; do not update arg_space_so_far.
	(emit_library_call_value): Use stack_pointer_delta for alignment.
	(store_one_arg): Do not update arg_space_so_far.
	* explow.c (adjust_stack, anti_adjust_stack): Update
	stack_pointer_delta.
	(allocate_dynamic_stack_space): Add sanity checking for
	stack_pointer_delta.
	* expr.c (init_expr, clear_pending_stack_adjust): Clear
	stack_pointer_delta.
	(emit_push_insn): Update stack_pointer_delta.
	* function.h (struct expr_status): Add x_stack_pointer_delta;
	remove x_arg_space_so_far.
	(arg_space_so_far): Remove.
	(stack_pointer_delta): New macro.

2000-03-31  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h: Merge struct cpp_options into struct cpp_reader.
	Reorder struct cpp_options and struct cpp_reader for better
	packing.  Replace CPP_OPTIONS macro with CPP_OPTION which
	takes two args.  Change all 'char' flags to 'unsigned char'.
	Move show_column flag into struct cpp_options.  Don't
	prototype cpp_options_init.
	* cpphash.h, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
	cppinit.c, cpplex.c, cpplib.c:
	Replace CPP_OPTIONS (pfile)->whatever with
	CPP_OPTION (pfile, whatever), and likewise for
	opts = CPP_OPTIONS (pfile); ... opts->whatever;

	* cppinit.c (merge_include_chains): Take a cpp_reader *.
	Extract CPP_OPTION (pfile, pending) and work with that
	directly.
	(cpp_options_init): Delete.
	(cpp_reader_init): Turn on on-by-default options here.
	Allocate the pending structure here.
	(cl_options, enum opt_code): Define these from the same table,
	kept in a large macro.  Add -fshow-column and -fno-show-column
	options.

	* cpperror.c (v_message): If show_column is off, don't print
	the column number.

	* cppmain.c: Update for new interface.
	* fix-header.c: Likewise.

2000-03-30  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/t-aix43 (AR_FLAGS_FOR_TARGET): Adjust for new
	definition.
	* Makefile.in (AR_FLAGS_FOR_TARGET): Is now the flags that
	are passed to any invocation of AR_FOR_TARGET.
	(AR_CREATE_FOR_TARGET): New macro.
	(AR_EXTRACT_FOR_TARGET): New macro.
	(ORDINARY_FLAGS_TO_PASS): Add AR_CREATE_FOR_TARGET,
	AR_EXTRACT_FOR_TARGET.
	(many places): Use AR_CREATE_FOR_TARGET, AR_EXTRACT_FOR_TARGET
	in place of `$(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET)' and
	`$(AR_FOR_TARGET) x'.  Pass AR_CREATE_FOR_TARGET and
	AR_EXTRACT_FOR_TARGET to sub-makes.

2000-03-31  Neil Booth <NeilB@earthling.net>

	* cppexp.c: Delete SKIP_OPERAND.  Correct priority
	PAREN_INNER_PRIO.
	(_cpp_parse_expr): Check for multiple unary +/- operators.
	Correct priorities of ':' and '?'.  Treat ')' as having a
	value.	Ensure conditional expression is not void.

2000-03-31  Mark Mitchell  <mark@codesourcery.com>

	* alias.c (canon_rtx): Make it global.
	(rtx_equal_for_memref_p): CONST_INT equality is now pointer
	equality.
	* cse.c (struct table_elt): Add canon_exp.
	(insert): Clear it.
	(invalidate): Canonicalize expressions only once.
	* rtl.h (canon_rtx): Declare.

2000-03-30  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (emit-rtl.o): Depend on HASHTAB_H.
	* alias.c (reg_known_value): Add comments.
	(init_alias_analysis): Likewise.
	* cse.c (exp_equiv_p): CONST_INTs are equal iff they have the same
	address.
	(cse_basic_block): Fix typo in comment.
	* emit-rtl.c: Include hashtab.h.
	(const_int_htab): New variable.
	(const_int_htab_hash): New function.
	(const_int_htab_eq): Likewise.
	(rtx_htab_mark_1): Likewise.
	(rtx_htab_mark): Likewise.
	(gen_rtx_CONST_INT): Cache all CONST_INTs.
	(unshare_all_rtx): Fix formatting.
	(init_emit_once): Initialize const_int_htab.
	* rtl.c (rtx_equal_p): CONST_INTs are equal iff they have the same
	address.
	* rtl.texi: Document the fact that all CONST_INTs with the same
	value are shared.

2000-03-30  Richard Henderson  <rth@cygnus.com>

	* alpha.h (FUNCTION_BOUNDARY): Reduce to 128 bits.

2000-03-30  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in: Comment out --enable-c-cpplib stanza.
	* configure: Regenerate.

Thu Mar 30 06:32:51 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor): Properly compute displacement and
	alignment when offset is variable.

	* expmed.c (store_bit_field, store_fixed_bit_field): Fix more
	cases of alignment in bytes.

Thu Mar 30 13:30:40 2000  Jeffrey A Law  (law@cygnus.com)

	* c-parse.in (cast_expr): Move change from March 21 into c-parse.in
	since it is used to generate c-parse.y.
	* objc-parse.c, objc-parse.y: Regenerated.

	* function.c (expand_function_end): Pass alignment argument to
	emit_block_move in bits, not bytes.

Thu Mar 30 06:32:51 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (move_by_pieces_ninsns): Fix one more missing align
	correction.

	* expmed.c (store_fixed_bit_field): STRUCT_ALIGN is in bits.

	* calls.c (expand_call): Pass bit alignment to mark_reg_pointer.
	* explow.c (memory_address, allocate_dynamic_stack_space): Likewise.
	* function.c (assign_parms): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_decl): Likewise.
	(copy_rtx_and_substitute): Likewise.
	* expr.c (expand_expr, expand_expr_unaligned): Likewise.
	(clear_by_pieces): Fix error in last change.
	* emit-rtl.c (init_emit): Set known registers alignment in bits.
	* function.h (regno_pointer_align): Now unsigned.
	* config/arm/arm.c (alignable_memory_operand): REGNO_POINTER_ALIGN
	is in bits.
	* config/i386/i386.c (aligned_operand): Likewise.
	* config/sparc/sparc.c (mem_min_alignment): Likewise.
	* config/alpha/alpha.c (aligned_memory_operand): Likewise.
	(unaligned_memory_operand): Likewise.
	(alpha_expand_block_move, alpha_expand_block_clear): Likewise.
	Also make alignments and sizes unsigned and some whitespace cleanup.
	(alpha_va_start): Do nothing if VALIST's type is error_mark_node.

	* builtins.c (get_pointer_alignment): Use host_integerp & tree_low_cst.
	(expand_builtin_apply): Pass alignment to emit_block_move in bits.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but to clear_storage.
	* calls.c (save_fixed_argument_area): Likewise, to move_by_pieces.
	(restore_fixed_argument_area): Likewise.
	(store_unaligned_arguments_into_pseudos): Likewise, to store_bit_field.
	(load_register_parameters): Likewise, to emit_group_load.
	(expand_call): Likewise, to emit_group_store and emit_block_move.
	(emit_library_call_value_1): Likewise, to emit_block_move.
	(store_one_arg): Likewise, and to emit_push_insn.
	* expmed.c (extract_bit_field): Alignment is in bits, not bytes.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	* expr.c (move_by_pieces, move_by_pieces_ninsns): Likewise.
	(emit_block_move, emit_group_load, emit_group_store): Likewise.
	(clear_by_pieces, clear_storage, emit_push_insn): Likewise.
	(expand_assigment, store_expr, store_constructor_field): Likewise.
	(expand_expr_unaligned, do_jump, do_compare_and_jump): Likewise.
	(store_constructor, store_field, get_inner_reference): Likewise.
	Use host_integerp and tree_low_cst; sizes and positions HOST_WIDE_INT.
	(expand_expr, case COMPONENT_REF): Likewise.
	(copy_blkmode_from_regs): Use UNSIGNED_HOST_WIDE_INT for sizes
	and positions; reindent code.
	* expr.h (emit_cmp_insn, emit_cmp_and_jump_insns): Alignment unsigned.
	* function.c (purge_addressof_1): Pass bit align to store_bit_field.
	(assign_parms): Likewise to emit_group_store.
	* optabs.c (prepare_cmp_insn): Alignment is in bits.
	(emit_cmp_and_jump_insns, emit_cmp_insn): Likewise, and also unsigned.
	* stmt.c (expand_value_return): Pass align in bits to emit_group_load.
	(expand_return): Likewise to {extract,store}_bit_field.
	* stor-layout.c (get_mode_alignment): Minor cleanup.
	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Align is in bits.
	* config/sh/sh.h (MOVE_BY_PIECES_P): Likewise.

2000-03-29  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.h: Undo effects of previous delta:
	(ASM_SPEC): Do not define.
	(SUBTARGET_EXTRA_ASM_SPEC): Do not define.

	* config/arm/linux-elf.h: (SUBTARGET_EXTRA_ASM_SPEC) Fix
	typo.

2000-03-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_start_read): Call initialize_dependency_output
	only after reading in the primary source file.

2000-03-29  Geoff Keating  <geoffk@cygnus.com>

	* c-common.c (c_common_nodes_and_builtins): The first parameter to
	__builtin_va_start and __builtin_va_copy is now either a 'va_list'
	or a reference to a va_list.
	* builtins.c (stabilize_va_list): Simplify now we don't have to
	work around C array address decay.
	* c-typeck.c (convert_for_assignment): Handle assignment to
	a reference parameter by taking the address of the RHS.
	* ginclude/stdarg.h (va_start): Don't take address of first parameter.
	(va_copy): Likewise.
	(__va_copy): Likewise.
	* ginclude/varargs.h (va_start): Likewise.
	(__va_copy): Likewise.

Wed Mar 29 15:44:53 2000  Jeffrey A Law  (law@cygnus.com)

	* i386/djgpp.h: Remove extraneous "+".

	* stmt.c (stmt_loop_nest_empty): Fix thinko in last change.

	* calls.c (expand_call): Fix typo in last change.

2000-03-29  Jason Merrill  <jason@casey.cygnus.com>

	* tree.c (unsave_expr_1): Don't mess with a TARGET_EXPR that hasn't
	been expanded.

Wed Mar 29 15:39:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (bit_from_pos, byte_from_pos): New functions.
	(pos_from_byte, pos_from_bit, normalize_offset): Likewise.
	(normalize_rli, rli_size_so_far, rli_size_unit_so_far): Use them.
	* tree.c (bit_position, byte_position): Likewise.
	* tree.h: Declare new functions.

2000-03-29  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c: Minor formatting changes/
	* config/arm/arm.h (SUBTARGET_EXTRA_ASM_SPEC): Define if not
	already defined.
	(ASM_SPEC): Define if not already defined.

2000-03-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (cpp_read_file): Don't pass zero-length string to
	_cpp_calc_hash.

2000-03-29  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2out.c (gen_enumeration_type_die): If enum has a negative
	value, don't output it as unsigned.

Wed Mar 29 10:53:49 2000  Jeffrey A Law  (law@cygnus.com)

	* stmt.c (stmt_loop_nest_empty): Allow cfun->stmt to be NULL.

2000-03-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (c_common_nodes_and_builtins): Don't special case
	cplus_mode when declaring builtin bzero/bcmp, always avoid
	prototype arguments.

2000-03-29  Bruce Korb  <bkorb@gnu.org>

	* fixinc/mkfixinc.sh: Initially set the variable "fixincludes"
	to a non-file

Wed Mar 29 15:08:01 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	Convert ACCUMULATE_OUTGOING_ARGS to an expression.
	* calls.c (PUSH_ARGS_REVERSED) Change to expression.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default value.
	(struct arg_data): Remove #ifdef ACCUMULATE_OUTGOING_ARGS.
	(save_fixed_argument_area, restore_fixed_argument_area):
	conditionize by #ifdef REG_PARM_STACK_SPACE only.
	(emit_call): Change #ifdefs on ACCUMULATE_OUTGOING_ARGS
	to conditions, handle RETURN_POPS_ARGS on ACCUMULATE_OUTGOING_ARGS.
	(precompute_register_parameters): Avoid #ifdefs on
	ACCUMULATE_OUTGOING_ARGS and PUSH_ARGS_REVERSED.
	(stire_one_args): Likewise.
	(expand_call): Likewise; conditionize PUSH_ROUNDING code by PUSH_ARGS.
	(emit_library_call_value_1): Likewise.
	(compute_argument_block_size): Align to STACK_BOUNDARY only for
	ACCUMULATE_OUTGOING_ARGS.
	* combine.c (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default
	value.
	(nonzero_bits): Conditionize PUSH_ROUNDING code by USE_PUSH.
	(use_crosses_set_p): Likewise.
	* all targets (ACCUMULATE_OUTGOING_ARGS define): Change to
	#define ACCUMULATE_OUTGOING_ARGS 1.
	* i386.c (ix86_compute_frame_size): Handle ACCUMULATE_OUTGOING_ARGS
	frames.
	* i386.h (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS): New
	constants.
	(TARGET_PUSH_ARGS, TARGET_ACCUMULATE_OUTGOING_ARGS): New macros.
	(TARGET_SWITCHES): Add push-args, no-push-args,
	accumulate-outgoing-args and no-accumulate-outgoing-args.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): New macro.
	* expr.c (ACCUMULATE_OUTGONG_ARGS, PUSH_ARGS): Provide default.
	(push_block): Avoid ifdefs on ACCUMULATE_OUTGONG_ARGS
	and PUSH_ROUNDING.
	(emit_push_insn): Likewise.
	* final.c (ACCUMULATE_OUTGOING_ARGS): Provide default.
	(final_scan_insn): Avoid ifdefs on ACCUMULATE_OUTGOING_ARGS.
	* function.c (ACCUMULATE_OUTGOING_ARGS): Provide default.
	(STACK_DYNAMIC_OFFSET): Define correctly for both
	ACCUMULATE_OUTGOING_ARGS and normal mode.
	* invoke.texi (-mpush_args, -maccumulate-outgoing-args): Document.
	* tm.texi (PUSH_ARGS): Document.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ROUNDING): Update documentation.

Wed Mar 29 11:51:13 MET DST 2000  Jan Hubicka  <jh@suse.cz>

	* flags.h (flag_optimize_sibling_calls): Declare.
	* calls.c (expand_call): Fail sibcall when
	!flag_optimize_sibling_calls
	* invoke.texi (flag_optimize_sibling_calls): Document.
	* toplev.c (flag_optimize_sibling_calls): New global variable.
	(f_options): Add flag_optimize_sibling_calls.
	(rest_of_compilation): Conditionize
	optimize_sibling_and_tail_recursive_calls by
	flag_optimize_sibling_calls.
	(main): Set flag_optimize_sibling_calls for -O2.
	* stmt.c (expand_return): Conditionize tail recursion by
	flag_optimize_sibling_calls.

2000-03-29  Richard Henderson  <rth@cygnus.com>

	* config/i386/att.h (LOCAL_LABEL_PREFIX): Define.
	(ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): Use it.

2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>

	* except.c (add_eh_table_entry): Mark type_info's as referenced.

2000-03-29  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/rs6000/aix41.h (CPP_SPEC): Define _ANSI_C_SOURCE if -ansi
	is given.
	* config/rs6000/aix43.h (CPP_SPEC): Likewise.
	* config/rs6000/rs6000.h (CPP_SPEC): Moved to...
	* config/rs6000/aix.h: then modified likewise.

2000-03-28  Richard Henderson  <rth@cygnus.com>

	* rtl.h: Redistribute enum reg_note documentation.
	Kill trailing whitespace.
	* rtl.c (reg_note_name): Adjust to match enum reg_note tweeks.
	Kill trailing whitespace.

2000-03-28  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (hash_IHASH): Just return i->hash.
	(cpp_included): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	(cpp_read_file): Likewise.
	(find_include_file): Likewise.  Properly initialize
	ih->nshort.  Share ih->name and ih->nshort if possible.
	* cpphash.c (_cpp_calc_hash): New function.
	(hash_HASHNODE): Just return h->hash.
	(_cpp_lookup): Set dummy.hash using _cpp_calc_hash.  Use
	htab_find_with_hash.
	* cpphash.h: Prototype _cpp_calc_hash.
	* cppinit.c (initialize_builtins): Provide a valid hash
	to _cpp_make_hashnode, using _cpp_calc_hash.

	* cpphash.c (collect_expansion): # is not a special character
	in object-like macros.  In -traditional mode, /**/ is not
	token paste at the beginning or end of the line.
	* cpplib.c (do_include, do_import, do_include_next): If
	parse_include fails, return immediately.

2000-03-28  Jason Merrill  <jason@casey.cygnus.com>

	* config/arm/arm.md (return peepholes): Update to reflect the new
	call insn patterns.
	* config/arm/arm.c (arm_volatile_func): Also check
	current_function_nothrow.
	(output_return_instruction, output_func_prologue): Use it.
	(arm_output_epilogue, arm_expand_prologue): Likewise.

2000-03-27  Tom Tromey  <tromey@cygnus.com>

	* gcc.c (handle_braces): In {x*...} case, break out of loop if
	switch is found.

Tue Mar 28 11:55:48 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor): SIZE now signed.
	For EXPR_SIZE, don't evaluate size; just needed if constant.
	* fold-const.c (fold): Fix a number of cases when folded tree is
	wrong type.
	* function.c (flush_addressof): Reenable.
	* tree.h (flush_addressof): Likewise.
	* toplev.c (independent_decode_option): Look at strings_processed.
	* config/alpha/alpha.h (MINIMUM_ATOMIC_ALIGNMENT): Cast to unsigned.

Tue Mar 28 08:29:46 2000  Jan Hubicka  <jh@suse.cz>

	* sibcall.c (identify_call_return_value): Find last call in the chain;
	Allow stack adjustment after function call.

	* regmove.c (struct csa_memlist): Make mem field rtx *.
	(record_one_stack_ref): Accept rtx * instead of rtx as parameter.
	(try_apply_stack_adjustment): Replace whole MEM rtx.
	(combine_stack_adjustments_for_block): Update calls
	to record_one_stack_ref.

2000-03-28  Neil Booth  <NeilB@earthling.net>

	* cpplex.c (_cpp_read_and_prescan): Mark end of input buffer with
	'\\' rather than a null character, so nulls are not special.  Fix
	"\\\n" handling in end-of-buffer conditions.  Use trigraph map to
	speed trigraph conversion.
	(_cpp_init_input_buffer): Initialize trigraph map.

2000-03-27  Alan Modra  <alan@linuxcare.com.au>

	* config/i386/i386.c (output_387_binary_op): Correct intel
	mode assembly output, and add spaces after commas in AT&T
	output.  Correct Unixware assembler comment.  Document input
	constraints.  Comment fp operations.  Reduce profligate buffer
	size.  Remove extraneous abort.  Localize temp var.
	(SYSV386_COMPAT): Define.  Add !SYSV386_COMPAT code.
	(output_fix_trunc): Add spaces after commas in assembly output.

2000-03-27  Richard Henderson  <rth@cygnus.com>

	* i386-protos.h (ix86_match_ccmode): Declare.
	* i386.c (ix86_match_ccmode): New.
	(ix86_expand_fp_compare): Update for pattern renames.
	(ix86_expand_strlensi_unroll_1): Likewise.
	* i386.h (EXTRA_CC_MODES): Add CCZ.
	(SELECT_CC_MODE): Use it for EQ/NE zero.
	* i386.md (cmpsi_ccz_1): New.
	(cmpqi_ccz_1): New.
	(*testsi_ccz_1): New.
	(testqi_ccz_1): New.
	(cmpsi_ccno_1): Rename from cmpsi_0.
	(testsi_ccno_1): Rename from testsi_1.
	(testqi_ccno_1): Rename from testqi_1.
	(*testqi_ext_ccz_0): Rename from testqi_ext_0.
	(testqi_ext_ccno_0): Rename from *testqi_ext_1.
	(*cmphi_0): Use ix86_match_ccmode.
	(*cmpqi_ext_2, *addsi_2, *addhi_2, *addqi_2): Likewise.
	(*subsi_2, *subhi_2, *subqi_2, *testhi_1): Likewise.
	(*testqi_ext_1, *testqi_ext_2, *testqi_ext_3): Likewise.
	(*andsi_2, *andhi_2, *andqi_2, *andqi_ext_0_cc): Likewise.
	(*iorsi_2, *iorhi_2, *iorqi_2): Likewise.
	(*xorsi_2, *xorhi_2, *xorqi_cc_1): Likewise.
	(*one_cmplsi2_2, *one_cmplhi2_2, *one_cmplqi2_2): Likewise.
	(*ashlsi3_cmpno, *ashlhi3_cmpno, *ashlqi3_cmpno): Likewise.
	(*ashrsi3_cmpno, *ashrhi3_cmpno, *ashrqi3_cmpno): Likewise.
	(*lshrsi3_cmpno, *lshrhi3_cmpno, *lshrqi3_cmpno): Likewise.
	(appropriate peepholes): Likewise.
	(*cmphi_1, *cmpqi_ccno_1, *cmpqi_1): Star out name.
	(*subsi_3, *subhi_3, *subqi_3): Remove.
	(*negdi2_1+1 splitter): Use CCZ for neg patterns.
	(*negsi2_cmp, *neghi2_cmp, *negqi2_cmp): Remove.
	(*negsi2_cmpz): Rename from *negsi2_cmpno, use CCZ.
	(*neghi2_cmpz, *negqi2_cmpz): Similarly.
	(x86_shift_adj_1): Use CCZ.
	(*dbra_ge+1, *dbra_ge+2, ffssi2, ffssi_1): Likewise.

2000-03-27  Stan Cox  <scox@cygnus.com>

	* resource.h (mark_resource_type): New.
	* resource.c (find_dead_or_set_registers, mark_target_live_regs,
	find_free_register): Use mark_resource_type.
	(mark_set_resources): Change include_delayed_effects
	to mark_resource_type.
	* reorg.c (steal_delay_list_from_target, try_merge_delay_insns,
	redundant_insn, fill_simple_delay_slots, fill_slots_from_thread):
	Use mark_resource_type.

2000-03-27  Richard Henderson  <rth@cygnus.com>

	* i386.md (call_pop_0, call_value_pop_0): New.
	(call_pop_1): Remove constraint from unused arg.  Support sibcalls.
	(call_value_pop_1): Likewise.
	(call_0, call_value_0): New.
	(call_1, call_value_1): Remove constraint from unused arg.

2000-03-27  Nick Clifton  <nickc@cygnus.com>

	* invoke.texi (Spec Files): Document new spec % command created by
	Tom Tromey's recent patch.

2000-03-27  Jakub Jelinek  <jakub@redhat.com>

	* libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD
	if not defined.

Mon Mar 27 06:04:22 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_assignment): Fix typo in last change.

	* libgcc2.h: Use MIN_UNITS_PER_WORD, not UNITS_PER_WORD.

Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-convert.c (convert): Return if output or input type is ERROR_MARK.
	* c-decl.c (duplicate_decls): Only look at DECL_BUILT_IN_NONANSI
	and DECL_INLINE if FUNCTION_DECL.
	(pushdecl, redeclaration_error_message): Likewise, for DECL_INLINE.
	(store_parm_decls): Check for type of PARM_DECL being ERROR_MARK.
	Use DECL_WEAK, not DECL_RESULT, to flag for already seen.
	(combine_parm_decls): Likewise.
	* ggc-common.c (gcc_mark_tree_children, case 'd'): Use DECL_RESULT_FLD.
	* print-tree.c (print_node): Likewise.
	Only test DECL_PACKED, DECL_INLINE, DECL_BIT_FIELD, and
	DECL_TRANSPARENT_UNION on proper decl types.
	Properly handly DECL_INCOMING_RTL and DECL_SAVED_INSNS.
	* stor-layout.c (layout_decl): Only check DECL_PACKED and
	DECL_BIT_FIELD of FIELD_DECL.
	* tree.h (DECL_RESULT_FLD): New macro.

	* expr.c (expand_assignment): Add code to handle variable-sized
	BLKmode case.

2000-03-26  Richard Henderson  <rth@cygnus.com>

	* calls.c (expand_call): Pass parms not original exp to
	optimize_tail_recursion.  Mind return value instead of looking
	for a barrier.
	* stmt.c (optimize_tail_recursion): Take parameter list, not entire
	call_expr.  Move checks for call_expr and current_function_decl ...
	(expand_return): ... here.

2000-03-26  Tom Tromey  <tromey@cygnus.com>

	* gcc.c (handle_braces): Recognize `%{<S}' construct.
	(SWITCH_OK, SWITCH_FALSE, SWITCH_IGNORE, SWITCH_LIVE): New
	defines.
	(process_command): Use them.
	(check_live_switch): Likewise.
	(give_switch): Skip ignored switches.

2000-03-26  Jan Hubicka  <jh@suse.cz>

	* jump.c (jump_optimize_1): Fix typo in elide optimizations
	for minimal jump pass test.

2000-03-26  Mark Mitchell  <mark@codesourcery.com>

	* integrate.c (function_cannot_inline_p): Do inline functions that
	return `void'.

Sun Mar 26 11:37:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_type, set_sizetype): early_type_list is
	now a list of TREE_LIST entries, not types.
	* tree.c (build_common_tree_nodes_2): Eliminate dupliate type sets.

	* expmed.c (extract_bit_field): Ensure BITS_PER_WORD is signed in MAX.
	* config/arm/pe.c (arm_pe_return_in_memory): Use host_integerp and
	int_bit_position.
	* config/mips/mips.c (function_arg): Likewise; also remove cast
	and make variables unsigned or HOST_WIDE_INT and use tree_low_cst.
	(mips_function_value): Use int_byte_position and make HOST_WIDE_INT.
	* config/mips/abi64.h (SETUP_INCOMING_VARARGS): Offsets are unsigned.
	* config/mips/mips.h (BITS_PER_WORD, UNITS_PER_WORD): Cast to unsigned.
	(UNITS_PER_FPREG, INT_TYPE_SIZE, LONG_TYPE_SIZE): Likewise.
	(POINTER_SIZE, POINTER_BOUNDARY,PARM_BOUNDARY): Likewise.
	(GP_REG_P, FP_REG_P, MD_REG_P, ST_REG_P): Ensure subtraction signed.
	(struct mips_arg): arg_number, arg_words, fp_arg_words, and
	num_adjusts now unsigned.
	(FUNCTION_ARG_BOUNDARY): Remove unneeded cast.
	* config/sparc/sparc.c (struct function_arg_record_value_parms):
	NREGS now unsigned.
	(function_arg_record_value_1): STARTBITPOS arg now HOST_WIDE_INT
	as is BITPOS variable; use host_integerp and int_bit_position.
	(function_arg_record_value_2): Likewise.
	(function_arg_record_value_3): Arg BITPOS now HOST_WIDE_INT.
	Variable REGNO now unsigned.
	(function_arg_record_value): NREGS now unsigned.

2000-03-26  Bernd Schmidt  <bernds@cygnus.co.uk>

	* jump.c (mark_all_labels): Handle CALL_PLACEHOLDERs.

Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Rework fields used to describe positions of bitfields and
	modify sizes to be unsigned and use HOST_WIDE_INT.
	* alias.c (reg_known_value_size): Now unsigned.
	* c-typeck.c (build_unary_op, case ADDR_EXPR): Use byte_position.
	(really_start_incremental_init): Use bitsize_zero_node.
	(push_init_level, pop_init_level, output_init_element): Likewise.
	Use bitsize_unit_node and bitsize_one_node.
	(output_pending_init_elements, process_init_element): Likewise.
	* combine.c (combine_max_regno, reg_sign_bit_copies): Now unsigned.
	(make_extraction): Position and length HOST_WIDE_INT and unsigned
	HOST_WIDE_INT, respectively.
	(get_pos_from_mask): Passed in value is unsigned HOST_WIDE_INT.
	(num_sign_bit_copies): Returns unsigned.
	BITWIDTH now unsigned; rework arithmetic.
	Remove recursive call from arg to MAX.
	(combine_instructions, init_reg_last_arrays): NREGS now unsigned.
	(setup_incoming_promotions, can_combine_p, try_combine, simplify_set):
	REGNO now unsigned.
	(set_nonzero_bit_and_sign_copies): NUM now unsigned.
	(find_split_point, expand_compound_operation, make_extraction): LEN
	now unsigned HOST_WIDE_INT, POS now HOST_WIDE_INT.
	(make_field_assignment): Likewise.
	(combine_simplify_rtx): Add cast.
	(expand_compound_operation): MODEWIDTH now unsigned; rework arithmetic.
	(force_to_mode): WIDTH now unsigned; add cast.
	(if_then_else_cond): SIZE now unsigned.
	(nonzero_bits): MODE_WIDTH, RESULT_WIDTH, and WIDTH now unsigned.
	(extended_count): Now returns unsigned.
	(simplify_shift_const): COUNT unsigned; arg is now INPUT_COUNT.
	Add SIGNED_COUNT variable; MODE_WORDS and FIRST_COUNT now unsigned.
	(simplify_comparison): MODE_WIDTH now unsigned.
	(update_table_tick): REGNO and ENDREGNO now unsigned; new var R.
	(mark_used_regs_combine): Likewise; rework arithmetic.
	(record_value_for_reg): REGNO, ENDREGNO, and I now unsigned.
	(record_dead_and_set_regs, reg_dead_at_p, distribute_notes): Likewise.
	(record_promoted_value): REGNO now unsigned.
	(get_last_value_validate): REGNO, ENDREGNO, and J now unsigned.
	(get_last_value): REGNO now unsigned.
	(use_crosses_set_p): REGNO and ENDREGNO now unsigned.
	(reg_dead_regno, reg_dead_endregno): Now unsigned.
	(remove_death): Arg REGNO now unsigned.
	(move_deaths):  REGNO, DEADREGNO, DEADEND, OUREND, and I now unsigned.
	(reg_bitfield_target_p): REGNO, REGNO, ENDREGNO, and ENDTREGNO
	now unsigned.
	* convert.c (convert_to_integer): INPREC and OUTPREC now unsigned.
	* cse.c (struct qty_table_elem): FIRST_REG and LAST_REG now unsigned.
	(struct cse_reg_info): REGNO now unsigned.
	(cached_regno): Now unsigned.
	(REGNO_QTY_VALID_P): Add cast.
	(make_new_qty, make_regs_eqv, delete_reg_eqiv): Regno args unsigned.
	(remove_invalid_regs): Likewise.
	(remove_invalid_subreg_refs): Likewise; arg WORD also unsigned
	as are variables END and I.
	(get_cse_reg_info, insert): Likewise.
	(mention_regs, invalidate_for_call): REGNO, ENDREGNO, and I unsigned.
	(canon_hash): Likewise.
	(insert_regs, lookup_for_remove): REGNO now unsigned.
	(invalidate): REGNO, ENDREGNO, TREGNO, and TENDREGNO now unsigned.
	New variable RN.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't check for REGNO < 0.
	* dwarf2out.c (dwarf2ou_frame_debug_expr): Remove cast.
	* emit-rtl.c (subreg_realpart_p): Add cast.
	(operand_subword): Arg I is now unsigned as is var PARTWORDS.
	(operand_subword_force): Arg I is now unsigned.
	* except.c (eh_regs): Variable I is now unsigned.
	* explow.c (hard_function_value): BYTES is unsigned HOST_WIDE_INT.
	* expmed.c (store_fixed_bit_field): Position is HOST_WIDE_INT;
	length is unsigned HOST_WIDE_INT; likewise for internal variables.
	(store_split_bit_field, extract_fixed_bit_field): Likewise.
	(extract_split_bit_field, store_bit_field, extract_bit_field):
	Likewise.
	* expr.c (store_constructor_fields, store_constructor, store_field):
	Positions are HOST_WIDE_INT and lengths are unsigned HOST_WIDE_INT.
	(expand_assignment, expand_expr, expand_expr_unaligned): Likewise.
	(do_jump): Likewise.
	(move_by_pieces, move_by_pieces_ninsns, clear_by_pieces):
	MAX_SIZE is now unsigned.
	(emit_group_load): BYTEPOS is HOST_WIDE_INT; BYTELEN is unsigned.
	(emit_group_store): Likewise.
	(emit_move_insn): I now unsigned.
	(store_constructor): Use host_integerp, tree_low_cst, and
	bitsize_unit_node.
	(get_inner_reference): Return bitpos and bitsize as HOST_WIDE_INT.
	Rework all calculations to use trees and new fields.
	* expr.h (promoted_input_arg): Regno now unsigned.
	(store_bit_field, extract_bit_field): Adjust types of pos and size.
	(mark_seen_cases): Arg is HOST_WIDE_INT.
	* flow.c (verify_wide_reg_1): REGNO now unsigned.
	* fold-const.c (decode_field_reference): Size and pos HOST_WIDE_INT;
	precisions and alignments are unsigned.
	(optimize_bit_field_compare, fold_truthop): Likewise.
	(int_const_binop): Adjust threshold for size_int_type_wide call.
	(fold_convert): Likewise.
	(size_int_type_wide): Make table larger and fix thinko that only
	had half of table used.
	(all_ones_mask_p, fold): Precisions are unsigned.
	* function.c (put_reg_info_stack): REGNO is unsigned.
	(instantiate_decl): Size is HOST_WIDE_INT.
	(instantiate_virtual_regs): I is unsigned.
	(assign_parms): REGNO, REGNOI, and REGNOR are unsigned.
	(promoted_input_arg): REGNO is unsigned.
	* function.h (struct function): x_max_parm_reg is now unsigned.
	* gcse.c (max_gcse_regno): Now unsigned.
	(struct null_pointer_info): min_reg and max_reg now unsigned.
	(lookup_set, next_set): REGNO arg now unsigned.
	(compute_hash_table): REGNO and I now unsigned.
	(handle_avail_expr): regnum_for_replacing now unsigned.
	(cprop_insn): REGNO now unsigned.
	(delete_null_pointer_checks_1): BLOCK_REG now pointer to unsigned.
	* ggc-common.c (ggc_mark_tree_children, case FIELD_DECL): New case.
	* global.c (set_preference): SRC_REGNO, DEST_REGNO, and I now unsigned.
	* hard-reg-set.h (reg_class_size): Now unsigned.
	* integrate.c (mark_stores): LAST_REG and I now unsigned; new UREGNO.
	* jump.c (mark_modified_reg): I now unsigned; add cast.
	(rtx_equal_for_thread_p): Add cast.
	* loop.c (max_reg_before_loop): Now unsigned.
	(struct_movable): REGNO now unsigned.
	(try_copy_prop): REGNO arg unsigned.
	(regs_match_p): XN and YN now unsigned.
	(consec_sets_invariant_p, maybe_eliminate_biv): REGNO now unsigned.
	(strength_reduce): Likewise; NREGS also unsigned.
	(first_increment_giv, last_increment_giv unsigned): Now unsigned.
	* loop.h (struct iv_class): REGNO now unsigned.
	(max_reg_before_loop, first_increment_giv, last_increment_giv):
	Now unsigned.
	* machmode.h (mode_size, mode_unit_size): Now unsigned.
	(mode_for_size, smallest_mode_for_size): Pass size as unsigned.
	* optabs.c (expand_binop): I and NWORDS now unsigned.
	(expand_unop): I now unsigned.
	* print-tree.c (print_node): Don't print DECL_FIELD_BITPOS, but do
	print DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET.
	* real.c (significand_size): Now returns unsigned.
	* real.h (significand_size): Likewise.
	* regclass.c (reg_class_size): Now unsigned.
	(choose_hard_reg_mode): Both operands now unsigned.
	(record_reg_classes): REGNO and NR now unsigned.
	(reg_scan): NREGS now unsigned.
	(reg_scan_update): old_max_regno now unsigned.
	(reg_scan_mark_refs): Arg MIN_REGNO and var REGNO now unsigned.
	* reload.c (find_valid_class): BEST_SIZE now unsigned.
	(find_dummy_reload): REGNO, NWORDS, and	I now unsigned.
	(hard_reg_set_here_p): Args BEG_REGNO and END_REGNO now unsigned.
	Likewise for variable R.
	(refers_to_regno_for_reload_p): Args REGNO and END_REGNO now unsigned,
	as are variables INNER_REGNO and INNER_ENDREGNO; add new variable R.
	(find_equiv_reg): Add casts.
	(regno_clobbered_p): Arg REGNO now unsigned.
	* reload.h (struct reload): NREGS now unsigned.
	(refers_to_regno_for_reload_p): Regno args are unsigned.
	(regno_clobbered_p): Likewise.
	* reload1.c (reg_max_ref_width, spill_stack_slot_width): Now unsigned.
	(compute_use_by_pseudos): REGNO now unsigned.
	(find_reg): I and J now unsigned, new variable K, and change loop
	variables accordingly; THIS_NREGS now unsigned.
	(alter_reg): INHERENT_SIZE and TOTAL_SIZE now unsigned.
	(spill_hard_reg): REGNO arg now unsigned; add casts.
	(forget_old_reloads_1): REGNO, NR, and I now unsigned.
	(mark_reload_reg_in_use): Arg REGNO and vars NREGS and I now unsigned.
	(clear_reload_reg_in_use): Arg REGNO and vars NREGS, START_REGNO,
	END_REGNO, CONFLICT_START, and CONFLICT_END now unsigned.
	(reload_reg_free_p, reload_reg_reaches_end_p): Arg REGNO now unsigned.
	(choose_reload_regs): MAX_GROUP_SIZE now unsigned.
	(emit_reload_insns): REGNO now unsigned.
	(reload_cse_move2add): Add cast.
	(move2add_note_store): REGNO and I now unsigned; new variable ENDREGNO
	and rework loop.
	* resource.c (mark_referenced_resources, mark_set_resources): New
	variable R; REGNO and LAST_REGNO now unsigned.
	(mark_target_live_regs): J and REGNO now unsigned.
	* rtl.c (mode_size, mode_unit_size): Now unsigned.
	* rtl.h (union rtunion_def): New field rtuint.
	(XCUINT): New macro.
	(ADDRESSOF_REGNO, REGNO, SUBREG_WORD): New XCUINT.
	(operand_subword, operand_subword_force): Word number is unsigned.
	(choose_hard_reg_mode): Operands are unsigned.
	(refers_to-regno_p, dead_or_set_regno_p): Regno arg is unsigned.
	(find_regno_note, find_regno_fusage, replace_regs): Likewise.
	(regno_use_in, combine_instructions, remove_death): Likewise.
	(reg_scan, reg_scan_update): Likewise.
	(extended_count): Return is unsigned.
	* rtlanal.c (refers_to_regno_p): Args REGNO and ENDREGNO and vars I,
	INNER_REGNO, and INNER_ENDREGNO now unsigned; new variable X_REGNO.
	(reg_overlap_mentioned_p): REGNO and ENDREGNO now unsigned.
	(reg_set_last_first_regno, reg_set_last_last_regno): Now unsigned.
	(reg_reg_last_1): FIRS and LAST now unsigned.
	(dead_or_set_p): REGNO, LAST_REGNO, and I now unsigned.
	(dead_or_set_regno_p): Arg TEST_REGNO and vars REGNO and ENDREGNO
	now unsigned.
	(find_regno_note, regno_use_in): Arg REGNO now unsigned.
	(find_regno_fusage): Likewise; also var REGNOTE now unsigned.
	(find_reg_fusage): Variables REGNO, END_REGNO, and I now unsigned.
	(replace_regs): Arg NREGS now unsigned.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Don't check REGNO < 0.
	* simplify-rtx.c (simplify_unary_operation): WIDTH now unsigned.
	(simplify_binary_operation): Likewise.
	(cselib_invalidate_regno): Arg REGNO and variables ENDREGNO, I, and
	THIS_LAST now unsigned.
	(cselib_record_set): Add cast.
	* ssa.c (ssa_max_reg_num): Now unsigned.
	(rename_block): REGNO now unsigned.
	* stmt.c (expand_return): Bit positions unsigned HOST_WIDE_INT;
	sizes now unsigned.
	(all_cases_count): Just return -1 not -2.
	COUNT, MINVAL, and LASTVAL now HOST_WIDE_INT.
	Rework tests to use trees whenever possible.
	Use host_integerp and tree_low_cst.
	(mark_seen_cases): COUNT arg now HOST_WIDE_INT;
	Likewise variable NEXT_NODE_OFFSET; XLO now unsigned.
	(check_for_full_enumeration_handing): BYTES_NEEDED, I to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size): SIZE arg now unsigned.
	(smallest_mode_for_size): Likewise.
	(layout_decl): Simplify handing of a specified DECL_SIZE_UNIT.
	KNOWN_ALIGN is now an alignment, so simplify code.
	Don't turn off DECL_BIT_FIELD if field is BLKmode, but not type.
	(start_record_layout): Renamed from new_record_layout_info.
	Update to new fields.
	(debug_rli, normalize_rli, rli_size_unit_so_far, rli_size_so_far):
	New functions.
	(place_union_field): Renamed from layout_union_field.
	Update to use new fields in rli.
	(place_field): Renamed from layout_field.
	Major rewrite to use new fields in rli; pass alignment to layout_decl.
	(finalize_record_size): Rework to use new fields in rli and handle
	union.
	(compute_record_mode): Rework to simplify and to use new DECL fields.
	(finalize_type_size): Make rounding more consistent.
	(finish_union_layout): Deleted.
	(layout_type, case VOID_TYPE): Don't set TYPE_SIZE_UNIT either.
	(layout_type, case RECORD_TYPE): Call new function names.
	(initialize_sizetypes): Set TYPE_IS_SIZETYPE.
	(set_sizetype): Set TYPE_IS_SIZETYPE earlier.
	(get_best_mode): UNIT is now unsigned; remove casts.
	* tree.c (bit_position): Compute from new fields.
	(byte_position, int_byte_position): New functions.
	(print_type_hash_statistics): Cast to remove warning.
	(build_range_type): Use host_integerp and tree_low_cst to try to hash.
	(build_index_type): Likewise; make subtype of sizetype.
	(build_index_2_type): Pass sizetype to build_range_type.
	(build_common_tree_nodes): Use size_int and bitsize_int to
	initialize nodes; add bitsize_{zero,one,unit}_node.
	* tree.h (DECL_FIELD_CONTEXT): Use FIELD_DECL_CHECK.
	(DECL_BIT_FIELD_TYPE, DECL_QUALIFIER, DECL_FCONTEXT): Likewise.
	(DECL_PACKED, DECL_BIT_FIELD): Likewise.
	(DECL_FIELD_BITPOS): Deleted.
	(DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): New fields.
	(DECL_RESULT, DECL_SAVED_INSNS): Use FUNCTION_DECL_CHECK.
	(DECL_FRAME_SIZE, DECL_FUNCTION_CODE, DECL_NO_STATIC_CHAIN): Likewise.
	(DECL_INLINE, DECL_BUILT_IN_NONANSI, DECL_IS_MALLOC): Likewise.
	(DECL_BUILT_IN_CLASS, DECL_STATIC_CONSTRUCTOR): Likewise.
	(DECL_STATIC_DESTRUCTOR, DECL_NO_CHECK_MEMORY_USAGE): Likewise.
	(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT, DECL_NO_LIMIT_STACK) Likewise.
	(DECL_ORIGINAL_TYPE, TYPE_DECL_SUPPRESS_DEBUG): Use TYPE_DECL_CHECK.
	(DECL_ARG_TYPE_AS_WRITEN, DECL_ARG_TYPE): Use PARM_DECL_CHECK.
	(DECL_INCOMING_RTL, DECL_TRANSPARENT_UNION): Likewise.
	(DECL_ALIGN): Adjust to new field in union.
	(DECL_OFFSET_ALIGN): New field.
	(DECL_ERROR_ISSUED, DECL_TOO_LATE): Use LABEL_DECL_CHECK.
	(DECL_IN_TEXT_SECTION): Use VAR_DECL_CHECK.
	(union tree_decl): Add struct for both aligns.
	(enum tree_index): Add TI_BITSIZE_{ZERO,ONE,UNIT}.
	(bitsize_zero_node, bitsize_one_node, bitsize_unit_node): Added.
	(struct record_layout_info): Rework fields to have offset
	alignment and byte and bit position.
	(start_record_layout, place_field): Renamed from old names.
	(rli_size_so_far, rli_size_unit_so_far, normalize_rli): New decls.
	(byte_position, int_byte_position): Likewise.
	(get_inner_reference): Change types of position and length.
	* unroll.c (unroll_loop): New variable R; use for some loops.
	MAX_LOCAL_REGNUM and MAXREGNUM now unsigned.
	(calculate_giv_inc): Arg REGNO now unsigned.
	(copy_loop_body): REGNO and SRC_REGNO now unsigned.
	* varasm.c (assemble_variable): Clean up handling of size using
	host_integerp and tree_low_cst.
	(decode_addr_const): Use byte, not bit, position.
	(output_constructor): bitpos and offsets are HOST_WIDE_INT;
	use tree_low_cst and int_bit_position.
	* objc/objc-act.c (build_ivar_list_initializer): Use byte_position.

Fri Mar 24 20:13:49 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (REORDER_MOVED_BLOCK_END): Removed.
	(reorder_block_def): New members eff_head and eff_end.
	(REORDER_BLOCK_EFF_HEAD, REORDER_BLOCK_EFF_END): New macros.
	(verify_insn_chain): New function.
	(skip_insns_between_block): Add code to skip deleted insns.
	Check for note before using.
	(chain_reorder_blocks): Replace calls to skip_insns_between_block
	with references to REORDER_BLOCK_EFF_HEAD and REORDER_BLOCK_EFF_END.
	Check for note before using.
	(make_reorder_chain): Use INTVAL rather than XINT to get REG_BR_PROB.
	(fixup_reorder_chain): Restructure, clean up, defect removal.
	(reorder_basic_blocks): Remove last_insn and references to it.
	Moved insn chain verification code into a new function (see above).
	Delete defective code that sets last insn.
	Initialize REORDER_BLOCK_EFF_HEAD and REORDER_BLOCK_EFF_END for
	all blocks.

2000-03-25  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (CPP_SPEC): Remove erroneous space.

2000-03-24  Richard Henderson  <rth@cygnus.com>

	* tree.c (lang_safe_for_unsave): Remove.
	(unsafe_for_reeval): Transmute and rename from safe_for_unsave,
	allowing for two levels of unsafeness.  Remove lang hook.
	* tree.h: Update declarations.
	* calls.c (expand_call): Rename safe_for_reeval to try_tail_call.
	Create temporary VAR_DECLs to protect very unsafe_for_reeval trees.
	Always fail sibcalls when there are pending cleanups.

2000-03-24  Geoff Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When we delete an ADDR_VEC,
	also delete the BARRIER following it if there is one.

2000-03-24  Richard Henderson  <rth@cygnus.com>

	* builtins.c (expand_builtin_bzero): Convert `length' argument
	to sizetype.

2000-03-24  Jakub Jelinek  <jakub@redhat.com>

	* sibcall.c (skip_copy_to_return_value): Use OUTGOING_REGNO for
	comparison if regno's are equal.
	* calls.c (initialize_argument_informat): Add ecf_flags argument.
	Use FUNCTION_INCOMING_ARG if available and ECF_SIBCALL.
	(expand_call): Update caller.
	Avoid making a sibling call if argument size of the callee is larger
	than argument size of the caller.
	Call hard_function_value with outgoing set if in sibcall pass.
	Use FUNCTION_INCOMING_ARG if available and ECF_SIBCALL.

	* final.c (permitted_reg_in_leaf_functions, only_leaf_regs_used):
	Change LEAF_REGISTERS from an array initializer to actual array
	identifier. Move static global variable into the function.
	(leaf_function_p): Allow SIBLING_CALL_P calls even outside of
	sequences for leaf functions.
	* global.c (global_alloc): Likewise.
	* tm.texi (LEAF_REGISTERS): Update documentation.

	* config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Remove the ugly
	TARGET_FLAT leaf disabling hack.
	(LEAF_REGISTERS): Changed from an array initializer to actual array
	identifier to avoid duplication and remove the above hack.
	(FUNCTION_OK_FOR_SIBCALL): Define.
	* config/sparc/sparc.md (sibcall): New attr type. Use it almost
	always like call attribute.
	(eligible_for_sibcall_delay): New attribute.
	(sibcall): New delay type.
	(sibcall, sibcall_value, sibcall_epilogue): New expands.
	(sibcall_symbolic_sp32, sibcall_symbolic_sp64,
	sibcall_value_symbolic_sp32, sibcall_value_symbolic_sp64): New insns.
	* config/sparc/sparc.c (sparc_leaf_regs): New array.
	(eligible_for_sibcall_delay, output_restore_regs, output_sibcall):
	New functions.
	(output_function_epilogue): Move part of the code into
	output_restore_regs.
	(ultra_code_from_mask, ultrasparc_sched_reorder): Handle
	TYPE_SIBCALL.
	* sparc-protos.h (output_sibcall, eligible_for_sibcall_delay): New
	prototypes.

	* config/sparc/sparc.h (REVERSIBLE_CC_MODE): Revert Jan, 25 change
	until infrastructure is finished.

Fri Mar 24 13:49:45 2000  Jeffrey A Law  (law@cygnus.com)

	* integrate.c (save_for_inline_nocopy): Clear in_nonparm_insns here.
	(save_parm_insns): Not here.

2000-03-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_bzero): New function.
	(expand_builtin): Handle bzero.

	* builtins.def: Add BUILT_IN_BZERO.

	* c-common.c (c_common_nodes_and_builtins): Provide builtin
	prototype & function for bzero.

2000-03-23  Michael Meissner  <meissner@redhat.com>

	* config/alpha/alpha.md (TF floating point insns): Undo 2000-03-21
	change adding TARGET_FP to the TF floating point insns, except for
	trunctfsf2, which generates direct calls to truncdfsf2.

2000-03-23  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.h (ARG_POINTER_CFA_OFFSET): New definition,
	try to protect against middle-end changes that break binary
	compatibility.
	(DWARF_FRAME_REGISTERS): New definition, likewise for backend.

2000-03-24  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (load_immed_address):  Add DP reg clobber.

Thu Mar 23 17:10:48 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (expand_call): If TARGET is passed by reference and
	is readonly, write a CLOBBER.

2000-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin): Handle bcmp.

	* builtins.def: Add BUILT_IN_BCMP.

	* c-common.c (c_common_nodes_and_builtins): Provide builtin
	prototype & function for bcmp.

Thu Mar 23 11:34:39 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (rtx_needs_barrier, case UNSPEC): Move case 6...
	(rtx_needs_barrier, case UNSPEC_VOLATILE): to here.
	* config/ia64/ia64.md (pr_restore): Change UNSPEC to UNSPEC_VOLATILE.

Thu Mar 23 16:04:40 2000  Andrew Haley  <aph@cygnus.com>

	* config/mips/mips.md (movdf_internal1a): Delete (set 'f', 'F')
	alternative when using -fp64 -gp32.

2000-03-22  Jason Merrill  <jason@casey.cygnus.com>

	* config/rs6000/rs6000.h (DWARF_FRAME_RETURN_COLUMN): Define.
	* config/alpha/alpha.h (DWARF_FRAME_RETURN_COLUMN): Define.
	* config/sparc/sparc.h (DWARF_FRAME_RETURN_COLUMN): Define.

	* frame.h (frame_state): Revert last change.
	* frame.c (execute_cfa_insn): Just don't record the save of a CFA reg.
	* libgcc2.c (throw_helper): Revert last change.

2000-03-22  Richard Henderson  <rth@cygnus.com>

	* stmt.c (expand_asm_operands): Don't promote the temporary.

2000-03-22  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>

	* builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.
	* c-common.c (decl_attributes,check_format_info,truthvalue_conversion,
	  c_get_alias_set): Likewise.
	* c-decl.c (duplicate_decls): Likewise.
	* c-typeck.c (default_conversion,build_unary_op): Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* dwarf2out.c (decl_class_context,add_abstract_origin_attribute):
	Likewise.
	* dwarfout.c (decl_class_context,output_type): Likewise.
	* expr.c (get_inner_reference): Likewise.
	* fold-const.c (simple_operand_p,fold): Likewise.
	* function.c (aggregate_value_p): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* varasm.c (named_section): Likewise.

2000-03-22  Jason Merrill  <jason@casey.cygnus.com>

	Implement dwarf2 exception handling for the ARM.
	* config/arm/arm.h (INCOMING_RETURN_ADDR_RTX): Define.
	(DWARF_FRAME_RETURN_COLUMN): Define.
	* config/arm/arm.c (emit_multi_reg_push): Return rtx.  Attach
	REG_FRAME_RELATED_EXPR note.
	(emit_sfm): Likewise.
	(arm_expand_prologue): Set RTX_FRAME_RELATED_P on everything.
	* dwarf2out.c (reg_save): Handle saving a register to itself.
	(dwarf2out_frame_debug_expr): Handle an intermediate cfa reg.
	* except.c (eh_regs): Don't use the static chain reg if it's
	callee-saved.
	* frame.h (frame_state): Add cfa_saved field.
	* frame.c (execute_cfa_insn): Set it.
	* libgcc2.c (throw_helper): Don't adjust sp if it's restored in
	the epilogue.
	* function.c (ARG_POINTER_CFA_OFFSET): Default to FIRST_PARM_OFFSET.
	Now takes a parm.
	(instantiate_virtual_regs): Adjust.
	* tm.texi: Adjust.
	* config/m68k/m68k.h (ARG_POINTER_CFA_OFFSET): Don't define.
	* config/ns32k/ns32k.h (ARG_POINTER_CFA_OFFSET): Don't define.
	* config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): Take a parm.

	* dwarf2out.c (reg_number): Refer to FIRST_PSEUDO_REGISTER.
	(initial_return_save): Use DWARF_FRAME_REGNUM, not reg_number.

2000-03-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: New file.

	* Makefile.in (TREE_H): Depend on builtins.def.

	* builtins.c (built_in_names): Use builtins.def.

	* tree.h (built_in_function): Likewise.

2000-03-22  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (size_in_bytes): Return size_zero_node, not
	integer_zero_node.

2000-03-22  Geoff Keating  <geoffk@cygnus.com>

	* config/fp-bit.c (pack_d): Correct the case when a denormal
	is rounded up and stops being denormal.

2000-03-21  Richard Henderson  <rth@cygnus.com>

	* config/alpha/alpha.c (function_arg): Check for void_type_node
	before using MUST_PASS_IN_STACK.

2000-03-21  Stephane Carrez  <stcarrez@worldnet.fr>

	* regmove.c (combine_stack_adjustments_for_block): Check that
	the stack pointer is a valid memory address.

Wed Mar 22 11:44:50 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c: re-install Mar 16 emit_library_call merge.

2000-03-21  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (mem_min_alignment): If not optimizing,
	we cannot be sure that if reload_completed base register will
	be properly aligned.

2000-03-21  Richard Henderson  <rth@cygnus.com>

	* flow.c (delete_block): Fix typo last change.

2000-03-21  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (c_expand_expr_stmt): Use COMPLETE_TYPE_OR_VOID_P,
	not COMPLETE_TYPE_P, to check the type of the expression.

2000-03-21  Michael Meissner  <meissner@redhat.com>

	* config/alpha/alpha.md (floating point insns): Add TARGET_FP to
	all floating point insns that just tested the macro
	TARGET_HAS_XFLOATING_LIBS.
	(movsf/movdf recognizers): Add separate insns if -mno-fp-regs is
	used to only use the gprs.

2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (COMPLETE_TYPE_P): New macro.
	(COMPLETE_OR_VOID_TYPE_P): New macro.
	(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
	* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
	* c-aux-info.c (gen_type): Use them.
	* c-common.c (c_expand_expr_stmt): Likewise.
	* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
	grokdeclarator, grokparms, finish_struct, start_function,
	store_parm_decls, combine_parm_decls): Likewise.
	* c-parse.y (cast_expr): Likewise.
	* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
	c_size_in_bytes, c_alignof, build_component_ref,
	build_indirect_ref, build_array_ref, convert_arguments,
	build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* convert.c (convert_to_integer): Likewise.
	* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
	* dwarfout.c (location_or_const_value_attribute,
	output_enumeration_type_die, output_structure_type_die,
	output_union_type_die, output_type): Likewise.
	* expr.c (safe_from_p, expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
	* tree.c (build_array_type, build_function_type,
	build_method_type, build_offset_type, build_complex_type): Likewise.
	* c-parse.c, c-parse.h: Regenerated.

2000-03-21  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/rtems.h: Include config/rtems.h.

Tue Mar 21 09:24:00 2000  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (encode_section_info): sets SYMBOL_REF_FLAG if
	decl is a FUNCTION_DECL

Mon Mar 20 19:53:53 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (ia64_expand_prologue): Don't abort if leaf
	function uses output registers.  Don't save RP for leaf functions.
	Do save RP even if no epilogue.
	* config/ia64/ia64.h (FIXED_REGISTERS): Unmark in/out registers.
	(CALL_USED_REGISTERS): Unmark in registers.
	(REG_ALLOC_ORDER): Move out regs up, to near the top.  Move in regs up,
	to near the middle.

2000-03-20  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (bunordered): New expander.
	(bordered): New expander.
	(buneq): New expander.
	(bunge): New expander.
	(bungt): New expander.
	(bunle): New expander.
	(bunlt): New expander.
	(bltgt): New expander.

	* config/rs6000/rs6000.c (ccr_bit): Handle unordered comparisons.
	(ccr_bit_negated_p): New function.
	(print_operand): For %C, generate appropriate cror for UNEQ,
	UNLT, UNGT, and LTGT.  For %T and %t, use ccr_bit_negated_p.

2000-03-20  Andreas Jaeger  <aj@suse.de>

	* sdbout.c (sdbout_one_type): Add braces to avoid "ambigous else"
	warning.

	* tree.h (safe_for_unsave): Prototype.

2000-03-20  Richard Henderson  <rth@cygnus.com>

	* regmove.c (stack_memref_p): Fix typo, reorg for readability.
	(combine_stack_adjustments_for_block): Don't allow sp references
	in the side of a set we're not fixing up.
	* toplev.c (rest_of_compilation): Run combine_stack_adjustments
	after life_analysis.

2000-03-20  Richard Henderson  <rth@cygnus.com>

	* calls.c (expand_call): Don't bother generating tail call
	sequences if there are pending cleanups.  Use
	expand_start_target_temps/expand_end_target_temps to elide
	cleanups created during sibcall expansion.

2000-03-20  Geoff Keating  <geoffk@cygnus.com>

	* configure.in: Set $IFS to a value if it doesn't already have one
	in the --enable-checking handling.
	* configure: Regenerate.

2000-03-20  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* c-parse.in (SAVE_WARN_FLAGS): Use size_int.
	* c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
	Regenerated.

Mon Mar 20 11:43:15 MET 2000  Jan Hubicka  <jh@suse.cz>

	* jump.c (delete_noop_moves): Remove code attempting to
	combine stack adjustments.

2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* emit-rtl.c (push_to_full_sequence, end_full_sequence): New functions.
	* except.c (emit_cleanup_handler): Use them.
	(expand_end_all_catch): Likewise.
	* function.c (fixup_var_refs): Likewise.
	(expand_function_end): Clear catch_clauses_last.
	* rtl.h (push_to_full_sequence, end_full_sequence): Declare.
	* except.h (struct eh_status): New field x_catch_clauses_last.
	(catch_clauses_last): New define.

	* Makefile.in (tree.o): Depend on HASHTAB_H.
	* tree.c: Include hashtab.h.
	(struct type_hash): Remove next field.
	(TYPE_HASH_SIZE): Remove.
	(TYPE_HASH_INITIAL_SIZE): New define.
	(type_hash_table): Change type to htab_t.
	(type_hash_eq, type_hash_hash, print_type_hash_statistics,
	mark_hash_entry): New functions.
	(init_obstacks): Allocate type hash.
	(type_hash_lookup): Use htab functions.
	(type_hash_add, mark_type_hash): Likewise.
	(dump_tree_statistics): Call print_type_hash_statistics.

2000-03-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rs6000/t-aix41: New file.

	* configure.in ({rs6000,powerpc}-ibm-aix4.[12]*): Use it.

Sun Mar 19 13:27:30 2000  Hans-Peter Nilsson  <hp@axis.com>

	* tm.texi (Driver): Fix typos and tweak entry for
	INCLUDE_DEFAULTS.
	Move misplaced STRUCT_FORCE_BLK entry ...
	(Storage Layout): ... to here.
	(Run-time Target): Recommend having TARGET_MASK_... helper macros.

2000-03-19  Richard Henderson  <rth@cygnus.com>

	* flow.c (delete_block): Delete the addr_vec along with the block.
	(flow_delete_insn): Decrement LABEL_NUSES when deleting insns that
	reference labels.

	* fold-const.c (extract_muldiv): Apply type check for defined
	overflow to multiply as well as divide.

	* stor-layout.c (layout_decl): Don't abort on any zero sized decl.

2000-03-18  Mark Mitchell  <mark@codesourcery.com>

	* emit-rtl.c (remove_unnecessary_notes): Check that all
	NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an
	associated NOTE_BLOCK.
	* function.h (identify_blocks): Update comments.
	(reorder_blocks): Declare.
	* function.c (identify_blocks): Don't take paramters.
	(reorder_blocks): Don't take parameters.
	* loop.h (find_loop_tree_blocks): Remove.
	(unroll_block_trees): Likewise.
	* loop.c (loop_optimize): Don't call find_loop_tree_blocks.  Use
	reorder_blocks instead of unroll_block_trees.h
	* sibcall.c (optimize_sibling_and_tail_recursive_calls): Likewise.
	* stmt.c (find_loop_tree_blocks): Remove.
	(unroll_block_trees): Likewise.
	* toplev.c (rest_of_compilation): Don't call find_loop_tree_blocks
	in whole-function mode.
	* tree.h (reorder_blocks): Remove declaration.

	* expr.c: Include intl.h.
	* Makefile.in (expr.o): Depend on intl.h.

2000-03-18  Richard Henderson  <rth@cygnus.com>

	* expr.c (emit_move_insn_1): Clarify cannot_inline message.

2000-03-18  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (tree_index): Remove enumerals for integer types.
	(integer_type_kind): New type.
	(integer_types): New variable.
	(char_type_node): Adjust.
	(signed_char_type_node): Likewise.
	(unsigned_char_type_node): Likewise.
	(short_integer_type_node): Likewise.
	(short_unsigned_type_node): Likewise.
	(integer_type_node): Likewise.
	(unsigned_type_node): Likewise.
	(long_integer_type_node): Likewise.
	(long_unsigned_type_node): Likewise.
	(long_long_integer_type_node): Likewise.
	(long_long_unsigned_type_node): Likewise.
	* tree.c (integer_types): New variable.
	(init_obstacks): Register it as a root.

Sat Mar 18 14:38:00 2000  Jason Eckhardt  <jle@cygnus.com>

	* bb-reorder.c (reorder_basic_blocks): Update PREV_INSN as well as
	NEXT_INSN. Update last insn in chain.

2000-03-17  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (dwarf2out_decl): Don't emit anything for types
	with TYPE_DECL_SUPPRESS_DEBUG set.

2000-03-18  Richard Henderson  <rth@cygnus.com>

	* flow.c (make_edges): Use INTVAL to access REG_EH_REGION value.

2000-03-18  Richard Henderson  <rth@cygnus.com>

	* i386.c (call_insn_operand): Always allow SYMBOL_REF,
	care for HALF_PIC_P.
	(expander_call_insn_operand): Remove.
	(ix86_expand_epilogue): New arg `emit_return' to control return insn.
	* i386.h (PREDICATE_CODES): Update.
	* i386.md (all call expanders): Remove predicates, remove special
	handling for half-pic.
	(*call_1, *call_value_1): Handle SIBLING_CALL_P insns.
	(*call_pop_pic2, *call_pic2, *call_value_pop_2, *call_value_2): Remove.
	(sibcall_epilogue): New.

2000-03-17  Richard Henderson  <rth@cygnus.com>

	* rtlanal.c (single_set): Reject if the parallel has anything
	except SET or USE or CLOBBER.

2000-03-17  Jeff Law  <law@cygnus.com>
	    Richard Henderson  <rth@cygnus.com>

	* Makefile.in (OBJS): Add sibcall.o.
	(sibcall.o): New.
	* sibcall.c: New file.
	* calls.c (FUNCTION_OK_FOR_SIBCALL): Provide default.
	(ECF_IS_CONST, ECF_NOTHROW, ECF_SIBCALL): New.
	(emit_call_1): Replace `is_const' and `nothrow' with `ecf_flags'.
	Emit sibcall patterns when requested.  Update all callers.
	(expand_call): Generate CALL_PLACEHOLDER insns when tail call
	elimination seems feasable.
	* final.c (leaf_function_p): Sibling calls don't discount being
	a leaf function.
	* flow.c (HAVE_sibcall_epilogue): Provide default.
	(find_basic_blocks_1): Sibling calls don't throw.
	(make_edges): Make edge from sibling call to EXIT.
	(propagate_block): Don't remove sibcall_epilogue insns.
	* function.c (prologue, epilogue): Turn into varrays.  Update all uses.
	(sibcall_epilogue): New.
	(fixup_var_refs): Scan CALL_PLACEHOLDER sub-sequences.
	(identify_blocks_1): Likewise.  Break out from ...
	(identify_blocks): ... here.
	(reorder_blocks_1): Scan CALL_PLACEHOLDER.  Break out from ...
	(reorder_blocks): ... here.
	(init_function_for_compilation): Zap prologue/epilogue as varrays.
	(record_insns): Extend a varray instead of mallocing new memory.
	(contains): Read a varray not array of ints.
	(sibcall_epilogue_contains): New.
	(thread_prologue_and_epilogue_insns): Emit and record
	sibcall_epilogue patterns.
	(init_function_once): Allocate prologue/epilogue varrays.
	* genflags.c (gen_insn): Treat sibcall patterns as calls.
	* integrate.c (save_parm_insns): Recurse on CALL_PLACEHOLDER patterns.
	Broken out from ...
	(save_for_inline_nocopy): ... here.
	(copy_insn_list): Recurse on CALL_PLACEHOLDER patterns.
	Broken out from ...
	(expand_inline_function): ... here.
	(copy_rtx_and_substitute): Handle NOTE_INSN_DELETED_LABEL.
	(subst_constants): Handle 'n' formats.
	* jump.c (jump_optimize_minimal): New.
	(jump_optimize_1): New arg `minimal'; update callers.  Elide most
	optimizations if it's set.
	* rtl.c (copy_rtx): Do copy jump & call for insns.
	* rtl.h (struct rtx_def): Document use of jump and call for insns.
	(SIBLING_CALL_P): New.
	(sibcall_use_t): New.
	* toplev.c (rest_of_compilation): Do init_EXPR_INSN_LIST_cache earlier.
	Invoke optimize_sibling_and_tail_recursive_calls.
	* tree.c (lang_safe_for_unsave): New.
	(safe_for_unsave): New.
	* tree.h (lang_safe_for_unsave, safe_for_unsave): Declare.

	* alpha.h (FUNCTION_OK_FOR_SIBCALL): New.
	* alpha.md (sibcall, sibcall_value, sibcall_epilogue): New.
	(*sibcall_osf_1, *sibcall_value_osf_1): New.

2000-03-17  Mark Mitchell  <mark@codesourcery.com>

	* objc/objc-act.c (encode_method_prototype): Pass types, not
	PARM_DECLs, to int_size_in_bytes.

Fri Mar 17 11:51:34 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.md (mix4right_3op): Swap %1 and %2 in template.

	* config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/ia64/ia64.md, config/ia64/xm-ia64.h: Fix copyrights again.

Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Clean up usages of TREE_INT_CST_LOW.
	* c-parse.in (RESTORE_WARN_FLAGS): Use tree_low_cst.
	* c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
	Regenerated.
	* c-tree.h (min_precision): Move declaration to here.
	* c-typeck.c (build_binary_op): Use host_integerp and tree_low_cst.
	(build_unary_op, add_pending_init): Use bit_position.
	(pending_init_member, process_init_element): Likewise.
	(really_start_incremental_init, push_init_level, pop_init_level):
	Don't make copies of nodes or modify them in place, use consistent
	types when tracking positions, and use tree routines computations.
	(set_init_index, output_init_element): Likewise.
	(output_pending_init_elements, process_init_element): Likewise.
	* dbxout.c (dbxout_type_fields): Use bit_position, host_integerp,
	tree_low_cst and int_bit_position; also minor cleanup.
	(dbxout_type_method_1, dbxout_range_type, dbxout_type): Likewise.
	(print_cst_octal): Precision is unsigned.
	(dbxout_symbol): Ensure DECL_INITIAL is in-range and use tree_low_cst.
	* dwarf2out.c (ceiling): Input and output are unsigned HOST_WIDE_INT.
	(simple_type_align_in_bits): Result is unsigned int.
	Use tree_int_low_cst and host_integerp.
	(simple_type_size_in_bits): Result is unsigned HOST_WIDE_INT.
	(field_byte_offset): Result is HOST_WIDE_INT.
	Change types of internal variables so alignments are unsigned int,
	offsets are HOST_WIDE_INT and sizes are unsigned HOST_WIDE_INT.
	Use host_integerp, tree_low_cst, and int_bit_position.
	(add_bit_offset_attribute): Likewise.
	(add_data_member_location_attribute): Use tree_cst_low.
	(add_bound_info): Use host_integerp, integer_zerop, and integer_onep.
	(add_bit_size_attribute): Use tree_low_cst.
	(add_pure_or_virtual_attribute, gen_enumeration_type_die): Likewise.
	* dwarfout.c: Similar changes to dwarf2out.c.
	* expr.c (expand_expr, case ARRAY_REF): Remove redundant code.
	* genoutput.c (n_occurrences): Return -1 for null string.
	(strip_whitespace): Accept null string and make into function.
	(scan_operands): Reflect above changes.
	* sdbout.c (plain_type_1): Use host_integerp and tree_low_cst.
	(sdbout_field_types, sdbout_one_type): Likewise; also use bit_position.
	* ssa.c (rename_registers): Add missing cast of arg to bzero.
	* tree.c (int_size_in_bytes): Check for too big to represent.
	(bit_position, int_bit_position, host_integerp, tree_low_cst): New fns.
	* tree.h (host_integerp, tree_low_cst, bit_position, int_bit_position):
	New declarations.
	(min_precision): Delete from here.
	* varasm.c (decode_addr_const): Use host_integerp, bit_position,
	and int_bit_position.
	* objc/objc-act.c (encode_method_prototype): Sizes are HOST_WIDE_INT.
	(encode_method_def): Likewise.
	(build_ivar_list_initializer): Use int_bit_position.
	(generate_shared_structures): Convert size.
	(encode_type, encode_complete_bitfield): Use integer_zerop.
	(encode_bitfield): Use tree_low_cst and int_bit_position.

2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (CPP_SPEC): Fix typo.

2000-03-17  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* call.c (special_function_p): It is only malloc if it returns
	Pmode.

2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (ASM_SPEC, CPP_SPEC, LINK_SPEC): Support C33.
	(C33_FLAG, TARGET_C3X): Add macros.
	(TARGET_SWITCHES): Add -m33 option.
	* config/c4x/c4x.c (c4x_override_options): Test for TARGET_C33.

2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (PARALLEL_INSN_FLAG): Add.
	(PARALLEL_PACK_FLAG): Delete.
	(TARGET_SWITCHES): Update.
	(TARGET_PARALLEL): Use PARALLEL_INSN_FLAG.

Thu Mar 16 18:52:32 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (fold): Fix a few cases when the returned result
	is not of the same type as the input.

2000-03-16  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.h (ASM_OUTPUT_MI_THUNK): Fix compile time
	warning.

2000-03-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* libgcc2.h: Move prototypes above macros with the same name.
	Wrap some function prototypes in the conditional which indicates
	whether they are supported, i.e. "BITS_PER_UNIT == 8".

2000-03-16  Richard Henderson  <rth@cygnus.com>

	* calls.c: Revert last two changes.

2000-03-16  Bernd Schmidt  <bernds@cygnus.co.uk>

	* fp-bit.c (_unpack_d): If NO_DENORMALS is defined, anything that
	has exponent 0 is a zero.

	* simplify-rtx.c (hash_rtx, case MEM/REG): Take into account that
	HASH may already be nonzero.  Add code/mode into hash value
	immediately after repeat label.
	(cselib_lookup): Don't leave the hash table in an inconsistent
	state before a hash lookup operation.

Thu Mar 16 17:03:10 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (all HI and QI mode non-move patterns):  Conditionize
	by TARGET_[HQ]IMODE_MATH.
	* i386.h (x86_himode_math, x86_qimode_math, x86_promote_hi_regs,
	x86_promote_qi_regs): Declare.
	(TARGET_HIMODE_MATH, TARGET_QIMODE_MATH, TARGET_PROMOTE_HI_REGS,
	TARGET_PROMOTE_QI_REGS): New macros.
	(PROMOTE_MODE): New macro.
	* i386.c (x86_himode_math, x86_qimode_math, x86_promote_hi_regs,
	x86_promote_qi_regs): New global variables.

Thu Mar 16 16:50:44 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (emit_library_call_value_1): Break out from ...; handle
	VOIDmode function calls too.
	(emit_library_call_value): ... here.
	(emit_library_call): Implement by calling emit_library_call_value_1.

Thu Mar 16 16:01:30 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Do sanity checking on arg_space_so_far.
	Update arg_space_so_far on stack adjustments.
	(emit_library_call, emit_library_call_value): Likewise; take into
	account arg_space_so_far and pending_stack_adjust when calculcating
	the boundary.

Thu Mar 16 09:02:19 2000  Jason Eckhardt  <jle@cygnus.com>

	* flow.c: Move all basic block reordering code into its own file.
	(create_basic_block): Externalize.
	* bb-reorder.c: New file. Copy all basic block reordering code from
	flow.c to this file.
	(reorder_basic_blocks): Fix fencepost error in for-loop.
	(reorder_basic_blocks): Remove braces from single statement for-loops.
	* basic-block.h: Add declaration for create_basic_block.
	* Makefile.in: Add rules for bb-reorder.o.

2000-03-16  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (handle_option):  Implement #unassert directive
	as -A- command line option.
	(print_help):  Update.
	* cpptexi.c:  Update.

Thu Mar 16 02:14:16 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* md.texi (Standard Names): Document `jump'.

2000-03-15  Jason Merrill  <jason@casey.cygnus.com>

	* calls.c (emit_call_1): Nothrow functions can still have nonlocal
	gotos.

2000-03-15  Geoff Keating  <geoffk@cygnus.com>

	Merge changes from newppc-branch onto trunk.

	2000-03-15  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (toc_hash_table): Update for new hash table functions.
	(toc_hash_function): Likewise.
	(toc_hash_eq): Likewise.
	(toc_hash_mark_entry): Likewise.
	(toc_hash_mark_table): Likewise.
	(output_toc): Likewise.
	(rs6000_add_gc_roots): Likewise.

	2000-03-15  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* t-aix43 (AR_FOR_TARGET): Deleted.  Moved `-X32_64'...
	(AR_FLAGS_FOR_TARGET): here.  New macro.

	2000-03-05  Clinton Popetz  <cpopetz@cygnus.com>

	* config/rs6000/rs6000.c (rs6000_fpmem_offset, rs6000_fpmem_size,
	fpmem_operand) Delete.
	(xer_operand) New.
	(rs6000_reg_names, alt_reg_names): Change fpmem to xer.
	(machine_function): Remove fpmem_size, fpmem_offset, save_toc_p.
	(rs6000_save_machine_status, rs6000_restore_machine_status,
	rs6000_init_expanders, rs6000_stack_info, debug_stack_info): Remove
	references to above variables.
	(gpc_reg_operand): Use XER_REGNO_P instead of FPMEM_REGNO_P.
	* config/rs6000/rs6000.h (REG_ALLOC_ORDER, REGISTER_NAMES,
	DEBUG_REGISTER_NAMES): Chagne fpmem to xer.
	(FPMEM_REGNO_P, FPMEM_REGNUM): Delete.
	(XER_REGNO_P, XER_REGNO): New.
	(rs6000_stack): Remove fpmem_p, fpmem_offset, fpmem_size.
	(PREDICATE_CODES): Change fpmem_operand to xer_operand.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK): Change FPMEM_REGNO_P to
	XER_REGNO_P.
	(reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS,
	REG_CLASS_FROM_LETTER, CLASS_MAX_NREGS): Change FPMEM_REGS to XER_REGS,		and remove FLOAT_OR_FPMEM_REGS.
	(CLASS_CANNOT_CHANGE_SIZE): Change to FLOAT_REGS.

	2000-02-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* aix.h (FP_SAVE_INLINE, ASM_OUTPUT_INTERNAL_LABEL_PREFIX,
	TEXT_SECTION_ASM_OP, DATA_SECTION_ASM_OP): Move here...
	* rs6000.h: from here.

	* rs6000-protos.h (rs6000_select_section): Provide prototype.
	(rs6000_select_rtx_section): Likewise.
	(rs6000_encode_section_info): Likewise.
	(sdata_section): Likewise.
	(sdata2_section): Likewise.
	(sbss_section): Likewise.
	* sysv4.h (rs6000_select_section): Delete prototype.
	(rs6000_select_rtx_section): Likewise.
	(rs6000_encode_section_info): Likewise.
	(sdata_section): Likewise.
	(sdata2_section): Likewise.
	(sbss_section): Likewise.
	(REG_SAVE_AREA): Delete definition duplicated in rs6000.h.

	* sysv4.h: Delete various unnecessary #undef's and put a comment
	on the remaining ones.
	Change various comments according to coding standard.

	2000-02-29  Clinton Popetz  <cpopetz@cygnus.com>

	* config/rs6000/rs6000.h (MQ_REGNO, CR0_REGNO, CR1_REGNO, CR2_REGNO,
	CR3_REGNO, CR4_REGNO, MAX_CR_REGNO): Define.
	(CR0_REGNO_P) Remove.
	* config/rs6000/rs6000.c (gpc_reg_operand, and64_operand, and_operand,
	setup_incoming_varargs, mtcrf_operation, print_operand,
	rs6000_stack_info, rs6000_emit_prologue, rs6000_emit_epilogue):
	Use the above macros.

	2000-02-24  Clinton Popetz  <cpopetz@cygnus.com>

	* config/rs6000/rs6000.md: Added a new alternative for each
	pattern that had a 'x' alternative but no 'y' alternative.
	Added a new split for each of the above patterns.

	2000-02-18  Geoff Keating  <geoffk@cygnus.com>

	* aix41.h (ASM_CPU_SPEC): Delete.
	(CPP_CPU_SPEC): Delete.

	* aix.h (RS6000_OUTPUT_BASENAME): Define.
	(ASM_OUTPUT_LABEL): Define.
	(ASM_GLOBALIZE_LABEL): Define.
	(STRIP_NAME_ENCODING): Define.
	* rs6000.h (RS6000_OUTPUT_BASENAME): Don't define.
	(STRIP_NAME_ENCODING): Don't define.
	(ASM_OUTPUT_LABEL): Don't define.
	(ASM_GLOBALIZE_LABEL): Don't define.
	* sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use assemble_name to output
	names, and ASM_OUTPUT_LABEL to output labels, rather than
	asm_fprintf.
	(ASM_OUTPUT_LABEL): Define.
	(ASM_OUTPUT_INT): Use assemble_name.
	(ASM_OUTPUT_DWARF_ADDR): Use assemble_name.
	(STRIP_NAME_ENCODING): Don't undefine first.
	(RS6000_OUTPUT_BASENAME): Make equivalent to assemble_name for
	ELF.
	(ASM_OUTPUT_LABELREF): Don't prepend underscores to labels
	specified with 'asm' even with -fleading-underscore.
	* rs6000.c (print_operand): Use assemble_name when !TARGET_AIX.
	(output_epilog): Likewise.
	(output_toc): Likewise.
	* tramp.asm: Handle -fleading-underscore correctly.

	* rs6000.md (builtin_setjmp_receiver): Also run for -fPIC and
	-mminimal-toc.
	(nonlocal_goto_receiver): Delete.
	* rs6000.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Delete.

	* rs6000.h (ASM_OUTPUT_DEF): Don't define.
	(SET_ASM_OP): Define.
	* sysv4.h (ASM_OUTPUT_DEF): Don't undefine.

	* rs6000.h (ASM_OUTPUT_ADDR_VEC_ELT): Don't define.
	(ASM_LONG): Define.

	* rs6000.c (rs6000_dll_import_ref): Delete, not used.
	* rs6000-protos.h (rs6000_dll_import_ref): Delete.

	* rs6000.h: Add 'u' to more constants.

	2000-02-18  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (mfcr+shift): Delete PowerPC64 version.

	2000-02-15  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (reg_or_u_cint_operand): New function.
	(logical_operand): Handle 64-bit hosts.
	(logical_u_operand): New function.
	(non_logical_cint_operand): Handle 64-bit hosts.
	(non_logical_u_cint_operand): New function.
	* rs6000.h (DATA_SECTION_ASM_OP): Add tab.
	(PREDICATE_CODES): Define new functions.
	* rs6000-protos.h: Declare new functions.
	* rs6000.md (iordi3, xordi3): Constant int must be unsigned 32-bits.
	(movdi_64): Bracket code intended for 64-bit hosts.  Create
	CONST_DOUBLE for 32-bit values.
	(scc insns): Generate DImode compares.
	(mfcr insns): Create DImode versions.
	(sge matchers): New patterns.

	2000-02-15  Gabriel Paubert  <paubert@iram.es>

	* rs6000.md: Correct instructions length attributes and
	constraints on unsigned compare instructions.
	(*ne0): Disable for PowerPC64.

	2000-02-11  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (output_function_profiler): Use .long for a 32-bit
	quantity, fix profile1.C test failure under -fPIC.

	* rs6000.c: Add 'u' to many constants to suppress warnings.
	(constant_pool_expr_1): Make static.
	(rs6000_emit_eh_toc_restore): Remove unused 'r2'.
	* rs6000.h: Add 'u' to many constants to suppress warnings.

	* rs6000.c (rs6000_emit_load_toc_table): Use LCTOC..1 under AIX
	for the start of the TOC, instead of LCTOC..0.
	* aix.h (toc_section): Use LCTOC..1 under AIX for the start
	of the TOC.
	* rs6000.md (load_toc_aix_si): Use LCTOC..1.
	(load_toc_aix_di): Use LCTOC..1.

	* rs6000.h (LEGITIMIZE_ADDRESS): Turn into a function.
	* rs6000.c (rs6000_legitimize_address): New function from
	LEGITIMIZE_ADDRESS.  Only use create_TOC_reference on
	symbols in the constant pool that really are TOC references.
	(print_operand_address): For ELF, write TOC offsets under
	-fPIC as subtractions in the insn.
	(output_toc): For ELF, define symbols in TOC as normal labels,
	to match RTL.
	(create_TOC_reference): Use gen_rtx_PLUS rather than gen_rtx.
	* rs6000-protos.h (rs6000_legitimize_address): Prototype.
	(create_TOC_reference): Prototype only when RTX_CODE is defined.
	* rs6000.md (movsi): Only use create_TOC_reference on
	symbols in the constant pool that really are TOC references.

	* rs6000.h (MACHINE_DEPENDENT_REORG): Don't define.
	* rs6000.c (rs6000_reorg): Delete.
	* rs6000-protos.h (rs6000_reorg): Delete.

	2000-02-09  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.h (INCOMING_RETURN_ADDR_RTX): New macro.

	* aix.h (SETUP_FRAME_ADDRESSES): Define.
	* rs6000.c [TARGET_AIX] (insn_after_throw): New static variable.
	[TARGET_AIX] (rs6000_aix_emit_builtin_unwind_init): New function.
	[TARGET_AIX] (rs6000_emit_eh_toc_restore): New function.
	* rs6000-protos.h: Prototype rs6000_emit_eh_toc_restore,
	rs6000_aix_emit_builtin_unwind_init.
	* rs6000.md (eh_epilogue) [TARGET_AIX]: Call
	rs6000_emit_eh_toc_restore on AIX.
	(return_eh_si): Use r2.
	(return_eh_di): Use r2.

	* aix43.h: Turn on HAS_INIT_SECTION and LD_INIT_SWITCH,
	since we're breaking binary compatibility anyway.

	2000-02-09  Clinton Popetz  <cpopetz@cygnus.com>

	* config/rs6000/rs6000-protos.h: (get_TOC_alias_set, uses_TOC,
	constant_pool_expr_p): Declare them.
	(constant_pool_expr_p): Declare it.
	* config/rs6000/rs6000.c (toc_label_name): Define.
	(rs6000_override_options): Set toc_label_name.
	(input_operand): Allow any TOC_RELATIVE_EXPR_P.
	(get_TOC_alias_set, constant_pool_expr_p, constant_pool_expr_1,
	uses_TOC): New functions.
	(print_operand): Delete old '*' case.
	(print_operand_address): Use LEGITIMATE_CONSTANT_POOL_ADDRESS_P,
	and strip off rtl for TOC before calling output_addr_const.
	(rs6000_emit_load_toc_table): Use toc_label_name.
	* config/rs6000/rs6000.h (TARGET_SWITCHES): Make msched-prolog
	the default.
	(LEGITIMATE_CONSTANT_POOL_BASE_P): Delete.
	(CONSTANT_POOL_EXPR_P, TOC_RELATIVE_EXPR_P): New macros.
	(LEGITIMATE_CONSTANT_POOL_ADDRESS_P): Use CONSTANT_POOL_EXPR_P.
	(LEGITIMIZE_ADDRESS, LEGITIMIZE_RELOAD_ADDRESS): Turn symbol_refs
	into explicit TOC_REGISTER offsets.
	(TOC_REGISTER): New macro.
	* config/rs6000/rs6000.md (movsi, movdi): Emit rtl under
	TARGET_TOC to reference TOC_REGISTER.
	(load_toc_v4_PIC_1b): Add 4 to offset for toc reload.
	* config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Call
	uses_TOC before emitting label references.

	2000-02-05  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (stack_tie): Fix warning.

	* eabi-ctors.c: Use 'asm' names for the start/end variables,
	to handle -fleading-underscore.
	* sysv4.h (ASM_DECLARE_FUNCTION_NAME): Use asm_fprintf and %U.
	(USER_LABEL_PREFIX): New macro.
	(ASM_OUTPUT_INTERNAL_LABEL_PREFIX): Use asm_fprintf and %L.
	(ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
	* t-ppccomm (MULTILIB_MATCHES_SYSV): Note that call-sysv and
	call-linux can use the same multilibs.
	* t-ppcgas (MULTILIB_OPTIONS): Don't need to have separate call-sysv
	and call-linux multilibs.  Do multilib with -fleading-underscore.
	(MULTILIB_DIRNAMES): Follow MULTILIB_OPTIONS change.
	(MULTILIB_EXCEPTIONS): Remove call-linux exceptions.  Add restrictions
	to call-aix.

	* sysv4.h (CPP_SYSV_SPEC): Define _SOFT_FLOAT for all those CPUs that
	have MASK_SOFT_FLOAT set.
	(CPP_FLOAT_DEFAULT_SPEC): New macro.
	(SUBTARGET_EXTRA_SPECS): Set `cpp_float_default' to the value of
	CPP_FLOAT_DEFAULT_SPEC.

	* rs6000.c (ccr_bit): Add some consistency checks and a variable 'reg'.
	* rs6000.md: Whitespace change.
	* sysv4.h (LINK_TARGET_SPEC): Whitespace change.
	* sysv4le.h (LINK_TARGET_SPEC): Whitespace change.

	2000-02-05  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (eh_epilogue): New expander.
	(eh_reg_restore): New expand/split/insn combination.
	(return_eh_si): New insn.
	(return_eh_di): New insn.

	* eabi-ci.asm: Put a label at the start of the .eh_frame section.
	* eabi-cn.asm: Put a zero at the end of the .eh_frame section.
	* eabi-ctors.c (__do_global_ctors): Register this object's
	frame.  Clean up.  Call atexit() after the constructors.
	(__do_global_dtors): Deregister this object's frame.  Clean up.
	Allow for recursive calls to exit().
	* rs6000.c (fixuplabelno): New variable.
	* sysv4.h (ASM_OUTPUT_INT): Don't do .fixup if not
	TARGET_RELOCATABLE, it slows down exec() under linux.
	(ASM_OUTPUT_DWARF_ADDR): Do .fixup if TARGET_RELOCATABLE.

	* aix.h (ASM_OUTPUT_DWARF_ADDR_VAR): New macro.
	(ASM_OUTPUT_DWARF_DELTA_VAR): New macro.
	(ASM_OUTPUT_DWARF_DELTA2): New macro.
	(ASM_OUTPUT_DWARF_DELTA4): New macro.
	(ASM_OUTPUT_DWARF_ADDR_DELTA): New macro.
	(ASM_OUTPUT_DWARF_ADDR): New macro.
	(ASM_OUTPUT_DWARF_DATA4): New macro.
	(ASM_OUTPUT_DWARF_DATA2): New macro.
	(ASM_OUTPUT_DWARF_OFFSET4): New macro.
	(ASM_OUTPUT_DWARF_OFFSET): New macro.
	(UNALIGNED_INT_ASM_OP): New macro, fake definition.

	2000-02-03  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (rs6000_sr_alias_set): New variable.
	(rs6000_override_options): Initialize rs6000_sr_alias_set.
	(rs6000_emit_stack_tie): New function.
	(rs6000_emit_allocate_stack): Specify RTX_FRAME_RELATED_P
	in a way that dwarf2out can understand.
	(rs6000_frame_related): New function.
	(rs6000_emit_prologue): Use rs6000_sr_alias_set.  Specify
	RTX_FRAME_RELATED_P in a way that dwarf2out can understand.
	Use rs6000_emit_stack_tie when needed.
	(rs6000_emit_epilogue): Use rs6000_sr_alias_set.  Don't set
	RTX_FRAME_RELATED_P.  Use rs6000_emit_stack_tie when needed.
	* rs6000.md (stack_tie): New insn.
	(return_internal_si): Allow return value to be in the count
	register.
	(return_internal_di): Likewise.

	* rs6000.c (output_mi_thunk): Remove unused variable `sp'.

	2000-02-03  Geoff Keating  <geoffk@cygnus.com>

	* sysv4.h (LOCAL_LABEL_PREFIX): Define, for the use of dbxelf.h.

	2000-01-31  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): New macro.

	* rs6000.md (stmw): Use the right POWER opcode.
	(lmw): Likewise.

	2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rs6000-protos.h: New file.

	* rs6000.c: Include tm_p.h.  Fix compile time warnings.

	* rs6000.h: Move prototypes to rs6000-protos.h.  Fix compile time
	warnings.

	* sysv4.h: Likewise.

	2000-01-28  Geoff Keating  <geoffk@cygnus.com>

	* ../../configure.in: Delete powerpcle-*-winnt*
	and powerpcle-*-pe|powerpcle-*-cygwin*.
	* ../../configure: Regenerated.
	* cygwin.h: Delete.
	* rs6000.h (OBJECT_WINDOWS_NT): Delete.
	(TARGET_WINDOWS_NT): Delete.
	(ABI_NT): Delete.
	(CALL_NT_DLLIMPORT): Delete.
	Delete NT-specific code.
	* rs6000.md, rs6000.c, sysv4.h: Delete NT-specific code.
	* win-nt.h: Delete.
	* t-winnt: Delete.
	* nt-ci.asm: Delete.
	* nt-cn.asm: Delete.
	* ntstack.asm: Delete.

	2000-01-27  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h (SELECT_RTX_SECTION): Move to aix.h.
	(ASM_FILE_START): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(ASM_OUTPUT_LABELREF): Likewise.
	(ASM_OUTPUT_SKIP): Likewise.
	(ASM_OUTPUT_INTERNAL_LABEL): Likewise.
	(ASM_GENERATE_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_CASE_LABEL): Likewise.
	(ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	(ASM_OUTPUT_ASCII): Likewise.

	2000-01-27  Clinton Popetz  <cpopetz@cygnus.com>

	* rs6000.c (rs6000_emit_load_toc_table): Use "LCG" and
	reload_toc_labelno for non-prologue TOC reloads.  Also, don't
	increment rs6000_pic_labelno here.
	(rs6000_emit_prologue): Pass TRUE to rs6000_emit_load_toc_table,
	and increment rs6000_pic_labelno here.

	2000-01-24  Geoffrey Keating  <geoffk@cygnus.com>

	* rs6000.md (fctiwz): Use (set (reg) (unspec:DI [(fix:SI ...)]))
	rather than (set (subreg:SI (reg)) (fix:SI ...)) so that register
	allocation knows (reg) is dead before the insn.

	2000-01-21  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (movsi_to_cr): Correct typo in output template.

	2000-01-19  Geoffrey Keating  <geoffk@cygnus.com>

	* rs6000.c (rs6000_pic_labelno): Always define.
	(rs6000_pic_func_labelno): Delete.
	(lmw_operation): Check for a zero base register,
	which doesn't mean what we want.
	(stmw_operation): New function.
	(print_operand): Define new 'l' modifier.
	(rs6000_stack_info): We must save all 64 bits of the registers
	if TARGET_POWERPC64.
	(rs6000_output_load_toc_table): Delete.
	(rs6000_emit_load_toc_table): New function.
	(rs6000_allocate_stack_space): Delete.
	(rs6000_emit_allocate_stack): New function.
	(rs6000_emit_prologue): New function.
	(output_prolog): Use rs6000_emit_prologue.
	(rs6000_emit_epilogue): Change a few variable names to be
	more accurate.  Restore all 64 bits of the registers if
	TARGET_POWERPC64.  Only restore the FP registers which were used
	if they are being saved/restored one-at-a-time.
	(output_mi_thunk): Delete inefficient code generation.
	(output_function_profiler): Don't use rs6000_output_load_toc_table.
	* rs6000.h: Declare rs6000_emit_load_toc_table,
	rs6000_allocate_stack_space, stmw_operation.  Don't declare
	rs6000_output_load_toc_table.
	* rs6000.md (elf_high): Allow register 0, but discourage it
	heavily.
	(elf_low): Support loading into register 0.
	(load_toc_aix_si): New pattern.
	(load_toc_aix_di): New pattern.
	(load_toc_v4_pic_si): New pattern.
	(load_toc_v4_pic_di): New pattern.
	(load_toc_v4_PIC_1): New pattern.
	(load_toc_v4_PIC_1b): New pattern.
	(load_toc_v4_PIC_2): New pattern.
	(builtin_setjmp_receiver): Use rs6000_emit_load_toc_table.
	(nonlocal_goto_receiver): Use rs6000_emit_load_toc_table.
	(prologue): New expander.
	(movesi_from_cr): New pattern.
	(stmw): New pattern.
	(save_fpregs_si): New pattern.
	(save_fpregs_di): New pattern.

	2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (movsi): Don't use force_reg when no_new_pseudos.
	(movdi): Likewise.
	(movhi): Likewise.
	(movqi): Likewise.

	2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (movsi_got): 'unspec 8' returns a SImode result,
	at present.
	(movsi_got_internal): Likewise.
	(movsi_got_internal+1): Likewise.
	(set_sp): 'unspec 7' does a SImode clobber.

	2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md (floatsidf2): Don't use the fpmem "register", just
	allocate a stack temporary.
	(floatsidf2_internal): Likewise.
	(floatsidf2_internal+1): Likewise.  Don't do bizzare hacks
	with unspec.
	(floatunssidf2): Don't use the fpmem "register", just
	allocate a stack temporary.
	(floatunssidf2_internal): Likewise.
	(floatunssidf2_internal+1): Likewise.  Don't do bizzare hacks
	with unspec.
	(floatsidf2_loadaddr): Delete.
	(floatsidf2_store1): Delete.
	(floatsidf2_store2): Delete.
	(floatsidf2_load): Delete.
	(fix_truncdfsi2): Don't use the fpmem "register", just
	allocate a stack temporary.
	(fix_truncdfsi2_internal_si): Delete.
	(fix_truncdfsi2_internal_di): Delete.
	(fix_truncdfsi2_internal): New insn.
	(fix_truncdfsi2_internal+1): Don't use the fpmem "register".
	(fix_truncdfsi2_store): Delete.
	(fix_truncdfsi2_load): Delete.
	(fctiwz): Produce gen_fctiwz.

	2000-01-19  Geoffrey Keating  <geoffk@cygnus.com>

	* eabi.h (INVOKE__main): Define.
	* rs6000.c (rs6000_stack_info): Don't handle call to NAME__MAIN
	specially.
	(rs6000_emit_prologue): Likewise.
	* rs6000.h (struct rs6000_stack): Don't keep track of whether
	this is the main program.

	2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (rs6000_va_arg): Delete some unused variables.

	2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (rs6000_va_arg): On AIX, padding for small arguments
	goes after the argument.

	2000-01-12  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.md: Document 'unspec' values used.
	(epilogue): New expander.
	(movesi_to_cr_one): New expander.
	(movesi_to_cr and following): New pattern.
	(lmw): New pattern.
	(return_internal_si): New pattern.
	(return_internal_di): New pattern.
	(return_and_restore_fpregs_si): New pattern.
	(return_and_restore_fpregs_di): New pattern.
	* rs6000.h: Declare new functions.
	* rs6000.c (rs6000_stack_info): Use current_function_is_leaf
	rather than rs6000_calls_p.
	(rs6000_makes_calls): Delete.
	(lmw_operation): New function.
	(mtcrf_operation): New function.
	(rs6000_emit_epilogue): New function.
	(output_epilog): Call rs6000_emit_epilogue and final if
	!TARGET_SCHED_PROLOG, instead of writing text unconditionally.

	2000-01-12  Geoff Keating  <geoffk@cygnus.com>

	* aix43.h (SUBSUBTARGET_SWITCHES): Document switches.
	* aix41.h (SUBSUBTARGET_SWITCHES): Document switches.
	* aix.h (SUBTARGET_SWITCHES): Document switches.
	* rs6000.h: (TARGET_SWITCHES): Don't print options twice.  Make
	sched-prolog and sched-epilog the same.  Document all the
	switches.
	(TARGET_OPTIONS): No longer allow -mdebug-.

	2000-01-12  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.h (ASM_FILE_END): Move to aix.h.
	(EXTRA_SECTIONS): Move to aix.h.
	(READONLY_DATA_SECTION): Move to aix.h.
	(EXTRA_SECTION_FUNCTIONS): Move to aix.h.
	(SELECT_SECTION): Move to aix.h.
	(JUMP_TABLES_IN_TEXT_SECTION): Move to aix.h.
	(INT_REGNO_P): Use symbolic name for ARG_POINTER_REGNUM.
	(LINK_REGISTER_REGNUM): New definition.
	(RETURN_ADDR_RTX): Use symbolic name for LINK_REGISTER_REGNUM.
	(SLOW_UNALIGNED_ACCESS): Define in a way suitable for both
	AIX and SVR4.
	* sysv4.h: Delete the code between the inclusion of rs6000.h
	and svr4.h.
	(DWARF_DEBUGGING_INFO): Don't define, it's defined in elfos.h.
	(FP_ARG_MAX_REG): Move generic definition to rs6000.h.
	(RS6000_REG_SAVE): Move generic definition to rs6000.h.
	(RS6000_SAVE_AREA): Move generic definition to rs6000.h.
	* rs6000.md (floatsidf2_loadaddr): The first arg here is Pmode.
	(fix_truncdfsi2_internal): Rename to fix_truncdfsi2_internal_si.
	(fix_truncdfsi2_internal_di): New pattern.
	(fix_truncdfsi2_store): The second arg here is Pmode too.
	(fix_truncdfsi2_load): The second arg here is Pmode too.
	(tablejumpdi): Now that switch tables hold only SImode values,
	gcc needs to know how to add them to the pc which is DImode.
	* rs6000.c (rs6000_stack_info): Use symbolic name for
	LINK_REGISTER_REGNUM.
	(output_mi_thunk) [!TARGET_ELF]: Don't define sp, it's not used.
	(output_toc): Delete unused variables s1 and s2.
	(output_ascii): Use fputs not fprintf on a variable string.

	2000-01-07  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (processor_target_table): Add power3 as alias for 630.
	* aix43.h: Revert Aug 2 change.
	(HAS_INIT_SECTION): Define, not visible yet.
	(LD_INIT_SWITCH): Define, not visible yet.
	* t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change.

	2000-01-04  Joel Sherrill (joel@OARcorp.com>

	* config/rs6000/rtems.h: Include config/rtems.h.

	2000-01-04  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.h (HANDLE_PRAGMA_PACK): Define.
	(SLOW_UNALIGNED_ACCESS): Define.
	(CASE_VECTOR_MODE): Always use 32-bit offsets.
	(ASM_FILE_END): Generate 64-bit symbol in 64-bit mode.
	(EXTRA_SECTOIN_FUNCTIONS): Indent .csect pseudo-op.
	(toc_section): Likewise and .toc pseudo-op.
	(ASM_DECLARE_FUNCTION): Likewise.  Align text more strictly in
	64-bit mode.
	(TEXT_SECTION_ASM_OP): Likewise.
	(ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use
	32-bit offsets.

	1999-12-17  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.h (TARGET_POWERPC64): Make sure
	UNITS_PER_WORD and BITS_PER_WORD are compile time constants when
	compiling libgcc2.

	2000-01-06  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h: Move more stuff from here...
	* aix.h: to here.
	* sysv4.h: Cleanup accordingly.
	* netware.h: Likewise

	2000-01-05  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h: Continue cleanup.
	* aix.h: Likewise.
	* lynx.h: Likewise.
	* netware.h: Likewise.
	* sol2.h: Likewise.
	* sysv4.h: Likewise.
	* win-nt.h: Likewise.

	* rs6000.h (TARGET_SWITCHES): Add descriptions.
	(TARGET_OPTIONS): Likewise.

	* sysv4.h (SUBTARGET_SWITCHES): Add descriptions.
	(SUBTARGET_OPTIONS): Likewise.

	* rs6000.md: Fix compile time warnings.

	2000-01-04  Geoff Keating  <geoffk@cygnus.com>

	vxworks patches from the Cygnus tree originally by
	Michael Meissner <meissner@cygnus.com> and Vladimir Makarov
	<vmakarov@cygnus.com>.
	* sysv4.h (SUBTARGET_SWITCHES): Add vxworks.
	(ENDFILE_SPEC): Likewise.
	(LIB_VXWORKS_SPEC): New macro.
	(STARTFILE_VXWORKS_SPEC): New macro.
	(ENDFILE_VXWORKS_SPEC): New macro.
	(LINK_START_VXWORKS_SPEC): New macro.
	(LINK_OS_VXWORKS_SPEC): New macro.
	(CPP_OS_VXWORKS_SPEC): New macro.
	(SUBTARGET_EXTRA_SPECS): Add all the vxworks specs.
	* vxppc.h: Rewrite to use proper configuration method.
	* vxppcle.h: New file.
	* ../../configure.in: Add powerpcle-wrs-vxworks*.
	* ../../configure: Rebuilt.

	2000-01-04  Geoff Keating  <geoffk@cygnus.com>

	Lots of changes to rs6000.h, sysv4.h, aix.h,
	aix31.h, aix3newas.h, aix41.h, aix43.h, beos.h,
	with the aim that rs6000.h is the first header
	included and the others override it.
	* aix.h: New file.

	* x-aix41-gld: Remove.
	* x-aix43: Remove.
	* x-aix41: Remove target-specific switches, and don't specify
	-Wl,-bbigtoc as we don't need it any more.
	* ../../configure.in: Use x-aix41 for ppc AIX 4.1 and above.
	Use t-aix43 for AIX 4.3 and above.
	* ../../configure: Regenerated.

	* rs6000.h (TARGET_SWITCHES): Add some initial prolog-scheduling
	options, that don't do anything yet.
	(MASK_SCHED_PROLOG): New macro.
	(MASK_SCHED_EPILOG): New macro.
	(TARGET_SCHED_PROLOG): New macro.
	(TARGET_SCHED_EPILOG): New macro.

	2000-01-04  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c: Correct comment, the `minimal' TOCs are actually
	one per translation unit, not one per function.
	(output_toc): Also do duplicate constant elimination
	for per-translation-unit TOCs.

	* rs6000.md (nonlocal_goto_receiver): Put it back as before.  Add
	a comment explaining _exactly_ when this pattern gets used.
	(builtin_setjmp_receiver): New pattern for better clarity.
	(init_v4_pic): Move it into a section dealing with TOC registers.

	1999-12-30  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (toc_hash_table): New variable.
	(rs6000_hash_constant): New function.
	(toc_hash_function): New function.
	(toc_hash_eq): New function.
	(toc_hash_mark_entry): New function.
	(toc_hash_mark_table): New function.
	(output_toc): Don't output duplicate TOC entries in
	a single file.
	(rs6000_add_gc_roots): Add the hash table as a GC root.
	* t-aix43: Move AR_FOR_TARGET and CLIB here from x-aix43,
	where they clearly shouldn't be.  This may need to be fixed
	later when there is a GNU ar for AIX.
	* x-aix43: Don't define CLIB or AR_FOR_TARGET.
	Don't define BOOT_LDFLAGS as it is now not necessary.

	1999-12-29  Geoff Keating  <geoffk@cygnus.com>

	* rs6000.c (rs6000_build_va_list): Use 'char *' rather than 'void *'
	for va_list on AIX.  Use unsigned_char_type_node rather than
	constructing our own version on svr4.

	1999-12-17  Geoff Keating  <geoffk@cygnus.com>

	* tramp.asm (__trampoline_size): Delete CYGNUS LOCAL comment,
	since patently it's not.

	1999-12-08  Geoff Keating  <geoffk@cygnus.com>

	* config/rs6000/rs6000.md (nonlocal_goto_receiver): Turn into
	define_expand/define_insn pair, and handle restore of the
	SVR4 -fpic register.

Wed Mar 15 15:43:38 2000  Jeffrey A Law  (law@cygnus.com)

	* acconfig.h (HAVE_GAS_WEAK): New define.
	* configure.in (assembler weak support): Check for .weak support.
	* config.in, configure: Rebuilt.
	* pa/som.h (MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Only define if
	HAVE_GAS_WEAK is defined.

2000-03-15  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (arm_output_epilogue): Do not pass %c to
	asm_fprintf().

2000-03-15  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (open_include_file): New function.
	(find_include_file, cpp_read_file): Use it.

2000-03-15  Jason Merrill  <jason@casey.cygnus.com>

	* cpphash.c (dump_hash_helper): Take the slot, not the element.

Wed Mar 15 14:28:54 2000  Jason Eckhardt  <jle@cygnus.com>

	* flow.c (verify_flow_info): Check for unconditional return.

Wed Mar 15 11:34:27 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.md (restore_stack_nonlocal): New.
	* config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop.
	(__ia64_restore_stack_nonlocal): New.
	* config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal.

2000-03-15  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* cpphash.c (collect_formal_parameters): Do not complain about
	parameter names that just start with `__VA_ARGS__'.

Wed Mar 15 13:26:58 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (movhi_1): Promote movw imm, reg to movl imm, reg and
	movw reg, reg to movzwl reg, reg on PARTIAL_REGISTER_STALL machines.
	* i386.c (pentiumpro_cost): Set mul cost to 4.
	(x86_use_movx): Set for PPro.

Wed Mar 15 13:07:05 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (ix86_compute_frame_size): stack_alignment_needed is
	STACK_BOUNDARY for empty frames now.

2000-03-14  Mark Mitchell  <mark@codesourcery.com>

	* stor-layout.c (layout_union): Remove.
	(layout_union_field): New function, split out from layout_union.
	(finish_union_layout): Likewise.
	(layout_field): Handle unions by calling layout_union_field.
	(finish_record_layout): Handle unions.
	(layout_type): Combine RECORD_TYPE, UNION_TYPE, and
	QUAL_UNION_TYPE handling.

Wed Feb 23 13:00:06 CET 2000  Jan Hubicka  <jh@suse.cz>

	* flow.c (fixup_reorder_chain): Avoid double labels in the basic block;
	end of basic block is jump_insn, not barrier; use create_basic_block
	instead of creating basic block by hand.

2000-03-14  Jason Eckhardt  <jle@cygnus.com>

	* flow.c (reorder_basic_blocks): Account for barriers when writing
	over NEXT_INSN (last_bb->end).
	(verify_flow_info): Add check for missing barriers.

2000-03-14  Greg McGary  <gkm@gnu.org>

	* c-lex.h (enum rid): Add RID_BOUNDED & RID_UNBOUNDED.
	* c-lex.c (init_lex): Handle RID_BOUNDED & RID_UNBOUNDED.
	* c-parse.gperf (__bounded, __bounded__, __ptrbase, __ptrbase__,
	__ptrextent, __ptrextent__, __ptrvalue, __ptrvalue__,
	__unbounded, __unbounded__): New keywords.
	* c-parse.in (PTR_VALUE PTR_BASE PTR_EXTENT): New tokens.
	* c-parse.y, c-parse.c, c-parse.h: Regenerate.
	* objc/objc-parse.y, objc/objc-parse.c: Regenerate.

2000-03-14  Bernd Schmidt  <bernds@cygnus.co.uk>

	* cselib.h: New file.
	* alias.c: Include "cselib.h".
	(fixed_scalar_and_varying_struct_p): Accept the addresses of the
	MEMs as two new arguments.
	(get_addr): New static function.
	(find_base_term): Handle VALUEs.
	(memrefs_conflict_p): Likewise.
	(true_dependence): Call get_addr on the addresses.
	Call fixed_scalar_and_varying_struct_p with addresses that have been
	passed through get_addr and canon_rtx.
	(write_dependence_p): Move DIFFERENT_ALIAS_SETS_P test for consistency
	with true_dependence.
	Call get_addr on the addresses; don't call canon_rtx on the MEMs.
	* loop.c: Include "cselib.h".
	(load_mems): Process extended basic block that enters the loop with
	cselib.  Use that information to change initialization of the shadow
	register so that a constant equivalence is seen by later passes.
	* reload1.c: Include "cselib.h".
	(reload_cse_invalidate_regno): Delete function.
	(reload_cse_mem_conflict_p): Likewise.
	(reload_cse_invalidate_mem): Likewise.
	(reload_cse_invalidate_rtx): Likewise.
	(reload_cse_regno_equal_p): Likewise.
	(reload_cse_check_clobber): Likewise.
	(reload_cse_record_set): Likewise.
	(reg_values): Delete static variable.
	(invalidate_regno_rtx): Likewise.
	(reload_cse_delete_noop_set): New static function.
	(reload_cse_simplify): New static function, broken out of
	reload_cse_regs_1.
	(reload_cse_noop_set_p): Delete unused argument INSN.
	Just call rtx_equal_for_cselib_p on set source and destination.
	(reload_cse_regs_1): Break out some code into reload_cse_simplify and
	reload_cse_delete_noop_set.  Delete code to keep track of values; use
	cselib functions instead.  Delete code to push/pop obstacks.
	(reload_cse_simplify_set): Use cselib to find equivalent values.
	Delete code to push/pop obstacks.
	(reload_cse_simplify_operands): Likewise.
	* rtl.def (VALUE): New rtx code.
	* rtl.h (union rtunion_def): New elt rt_cselib.
	(X0CSELIB, CSELIB_VAL_PTR): New macros.
	* simplify_rtx.c: Include "ggc.h", "obstack.h", "cselib.h".
	(new_elt_list, new_elt_loc_list, unchain_one_value, clear_table,
	unchain_one_elt_list, unchain_one_elt_loc_list, check_useless_values,
	discard_useless_locs, discard_useless_values, entry_and_rtx_equal_p,
	hash_rtx, new_cselib_val, add_mem_for_addr, get_value_hash,
	cselib_lookup_mem, cselib_subst_to_values, cselib_invalidate_regno,
	cselib_mem_conflict_p, cselib_invalidate_mem, cselib_invalidate_rtx,
	cselib_record_set, cselib_record_sets): New static functions.
	(cselib_lookup, cselib_update_varray_sizes, cselib_init,
	cselib_finish, cselib_process_insn, rtx_equal_for_cselib_p,
	references_value_p): New functions.
	(MAX_USELESS_VALUES, REG_VALUES): New macros.
	(table, cselib_current_insn, next_unknown_value, cselib_nregs,
	n_useless_values, reg_values, callmem, cselib_obstack,
	cselib_startobj, empty_vals, empty_elt_lists, empty_elt_loc_lists):
	New static variables.
	* varray.h (union varray_data_tag): New elt te.
	(VARRAY_ELT_LIST_INIT, VARRAY_ELT_LIST): New macros.
	* Makefile.in (reload1.o, loop.o, simplify-rtx.o, alias.o): Update
	dependencies.

2000-03-14  Nick Clifton  <nickc@cygnus.com>

	* gcc.c (do_spec_1): Catch the case where %* is used in a
	substitution pattern, but it has not been initialized.
	Issue a meaningful error message if an unrecognized operator
	is encountered in a spec string.

2000-03-14  Richard Earnshaw <rearnsha@arm.com>

	* function.c (prepare_function_start): Correctly initialize
	cfun->stack_alignment_needed.

2000-03-14  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (find_include_file): Don't assume nshort is a
	substring of name.

Tue Mar 14 08:42:21 2000  Jeffrey A Law  (law@cygnus.com)

	* configure.in (hppa configurations): Add pa32-regs.h to the
	list of tm files as appropriate.
	* configure: Rebuilt.
	* pa.c (compute_frame_size): Remove explicit knowledge about FP
	register numbering.
	(hppa_expand_prologue, hppa_expand_epilogue): Likewise.
	(fmpyaddoperands, fmpysuboperands): Likewise.
	* pa.h: Remove various definitions which depend on knowing
	how registers are numbered.
	* pa32-regs.h: New file with PA32 register numbering specific
	definitions.

2000-03-14  Richard Henderson  <rth@cygnus.com>

	* regmove.c (combine_stack_adjustments): New.
	(stack_memref_p, single_set_for_csa): New.
	(free_csa_memlist, record_one_stack_memref): New.
	(try_apply_stack_adjustment): New.
	(combine_stack_adjustments_for_block): New.
	* rtl.h (combine_stack_adjustments): Declare.
	* toplev.c (rest_of_compilation): Call it.

	* i386.md: Revert 2000-01-16 change.

2000-03-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* gccbug.in: Add web category, gcc specific classes.

2000-03-14  Nathan Sidwell  <nathan@codesourcery.com>

	* stor-layout.c (finalize_record_size): Fix typo.

2000-03-14  Stan Shebs  <shebs@apple.com>

	* c-typeck.c (c_alignof): Error on incomplete types.
	* extend.texi (Alignment): Document this.

2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c: Include mkdeps.h.
	(find_include_file, read_include_file): Remove _cpp_ prefix
	from name, make static.
	(_cpp_execute_include): New function, broken out of
	do_include.

	* cpplib.c: Don't include mkdeps.h.
	(struct directive): Remove type field. Reorder entries.  The
	function takes only one argument.
	(struct if_stack): Make type field an int.
	(directive_table): Rename to dtable.  Generate it, the
	prototypes of the directive handlers, and the enum for the
	directive numbers, from a template macro.
	(do_ifndef, do_include_next, do_import): New functions.
	(do_define, do_include, do_endif, do_ifdef, do_if, do_else,
	do_undef, do_line, do_elif, do_error, do_pragma, do_warning,
	do_ident, do_assert, do_unassert, do_sccs): Take only one
	argument.
	(do_sccs): Define always, but alter behavior based on
	SCCS_DIRECTIVE.
	(_cpp_handle_directive, consider_directive_while_skipping):
	Restructure for new directive table layout.

	(pass_thru_directive): Take a directive number, not a pointer
	to a struct directive.
	(parse_include): New function, broken out of do_include.
	(do_include, do_import, do_include_next): Use parse_include
	and _cpp_execute_include.
	(do_elif, do_else): Test for T_ELSE specifically when checking
	for #elif/#else after #else.
	(parse_ifdef): New function, broken out of do_ifdef.
	(validate_else): Expect a name arg without a leading #.
	(if_directive_name): Delete.
	(cpp_define, cpp_assert, cpp_undef, cpp_unassert): Call
	directive handlers with only one argument.

	* cpphash.h: Update prototypes.
	(enum node_type): Remove entries for directives.
	* Makefile.in: Update dependencies.

	* cpphash.c (dump_hash_helper): Only dump nodes of type
	T_MACRO.  Emit a newline after each definition.

2000-03-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* gccbug.in: New file.
	* configure.in (all_outputs): Add gccbug.
	* Makefile.in (install-common): Install gccbug.
	(GCCBUG_INSTALL_NAME): New variable.
	* configure: Rebuilt.

2000-03-13  Jason Merrill  <jason@casey.cygnus.com>

	* function.c (put_var_into_stack): Use type_for_mode to calculate
	part_type.  Use MEM_SET_IN_STRUCT_P.
	* expr.c (store_field): Handle CONCAT.
	(store_constructor): Use fields_length.
	* tree.c (fields_length): New fn.
	* tree.h: Declare it.

2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (LIBCPP_OBJS): Add cpplex.o.
	(cpplex.o): New target.
	* po/POTFILES.in: Add cpplex.c.

	* cpplex.c (_cpp_grow_token_buffer, null_cleanup,
	cpp_push_buffer, cpp_pop_buffer, cpp_scan_buffer,
	cpp_expand_to_buffer, cpp_buf_line_and_col, cpp_file_buffer,
	skip_block_comment, skip_line_comment, skip_comment,
	copy_comment, _cpp_skip_hspace, _cpp_skip_rest_of_line,
	_cpp_parse_name, skip_string, parse_string,
	_cpp_parse_assertion, cpp_get_token, cpp_get_non_space_token,
	_cpp_get_directive_token, find_position,
	_cpp_read_and_prescan, _cpp_init_input_buffer): Move here.
	(maybe_macroexpand, _cpp_lex_token): New functions.

	* cpplib.c (SKIP_WHITE_SPACE, eval_if_expr, parse_set_mark,
	parse_goto_mark): Delete.
	(_cpp_handle_eof): New function.
	(_cpp_handle_directive): Rename from handle_directive.
	(_cpp_output_line_command): Rename from output_line_command.
	(do_if, do_elif): Call _cpp_parse_expr directly.
	* cppfiles.c (_cpp_read_include_file): Don't call
	init_input_buffer here.
	* cpphash.c (quote_string): Move here, rename _cpp_quote_string.
	* cppexp.c (_cpp_parse_expr): Diddle parsing_if_directive
	here; pop the token_buffer and skip the rest of the line here.
	* cppinit.c (cpp_start_read): Call _cpp_init_input_buffer
	here.

	* cpphash.h (CPP_RESERVE, CPP_IS_MACRO_BUFFER, ACTIVE_MARK_P):
	Define here.
	(CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK, CPP_SET_MARK,
	CPP_GOTO_MARK): New macros.
	(_cpp_quote_string, _cpp_parse_name, _cpp_skip_rest_of_line,
	_cpp_skip_hspace, _cpp_parse_assertion, _cpp_lex_token,
	_cpp_read_and_prescan, _cpp_init_input_buffer,
	_cpp_grow_token_buffer, _cpp_get_directive_token,
	_cpp_handle_directive, _cpp_handle_eof,
	_cpp_output_line_command): Prototype them here.
	* cpplib.h (enum cpp_token): Add CPP_MACRO.
	(CPP_RESERVE, get_directive_token, cpp_grow_buffer,
	quote_string, output_line_command): Remove.

2000-03-13  Bernd Schmidt  <bernds@cygnus.co.uk>

	* stmt.c (expand_end_case): RANGE may be signed, and when checking
	whether it is too large we must also verify that it isn't negative.

2000-03-13  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md: Remove all traces of TARGET_LIVE_G0.
	(movsi_zero_liveg0): Remove.
	(movsf_insn_novis_liveg0): Remove.
	(negsi2): Remove.
	(negsi2_not_liveg0): Rename to negsi2.
	(one_cmplsi2): Remove.
	(one_cmplsi2_not_liveg0): Rename to one_cmplsi2.
	(one_cmplsi2_liveg0): Remove.
	* config/sparc/sparc.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE,
	MASK_LIVE_G0, MASK_BROKEN_SAVERESTORE): Remove.
	(CONDITIONAL_REGISTER_USAGE): Remove TARGET_LIVE_G0 if.
	(PREDICATE_CODES): Remove zero_operand.
	* config/sparc/sparc.c: Remove all traces of TARGET_LIVE_G0 and
	TARGET_BROKEN_SAVERESTORE.
	(zero_operand): Remove.
	* config/sparc/splet.h (SUBTARGET_SWITCHES): Remove -mlive-g0,
	-mno-live-g0, -mbroken-saverestore and -mno-broken-saverestore
	options.
	(SUBTARGET_OVERRIDE_OPTIONS): Remove.
	* config/sparc/linux-aout.h (TARGET_LIVE_G0,
	TARGET_BROKEN_SAVERESTORE): Remove.
	* config/sparc/linux.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
	Remove.
	* config/sparc/linux64.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
	Remove.
	* config/sparc/sol2.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
	Remove.

	* config/sparc/sparc.md (return_df_no_fpu): New pattern.

2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_pragma_implementation): Fix off-by-one error
	truncating a string.  Don't assume tokens are nul terminated.
	Problem noted by Andreas Jaeger <aj@suse.de>

2000-03-13  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (add_name_and_src_coords_attributes): Only add
	DW_AT_MIPS_linkage_name for TREE_PUBLIC decls.
	(ASM_OUTPUT_DWARF_ADDR_CONST): Don't output trailing newline.

2000-03-13  Richard Earnshaw <rearnsha@arm.com>

	* stor-layout.c (new_record_layout_info): Fix typo inside ifdef
	STRUCTURE_SIZE_BOUNDARY.

2000-03-13  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (record_layout_info_s): New structure.
	(record_layout_info): New type.
	(new_record_layout_info): New function.
	(layout_field): Likewise.
	(finish_record_layout): Likewise.
	* stor-layout.c (layout_record): Remove.
	(new_record_layout_info): New function.
	(layout_field): New function, broken out from layout_record.
	(finalize_record_size): Likewise.
	(compute_record_mode): Likewise.
	(finalize_type_size): New function, broken out from layout_type.
	(finish_record_layout): Likewise.
	(layout_type): Use them.

2000-03-12  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c: Don't include version.h.
	(special_symbol) [case T_VERSION]: Look for the string in
	hp->value.cpval; don't use version_string.
	* cppinit.c (initialize_builtins): Set hp->value.cpval for
	__VERSION__ to version_string.
	* Makefile.in (cpphash.o): Update deps.

2000-03-12  Zack Weinberg  <zack@wolery.cumb.org>

	Convert cpplib to use libiberty/hashtab.c.

	* cpplib.h (struct cpp_reader): Make hashtab and
	all_include_files of type 'struct htab *'.  Delete HASHSIZE
	and ALL_INCLUDE_HASHSIZE macros.

	* cpphash.h: Update prototypes.
	(struct hashnode): Remove next, prev, and bucket_hdr members.
	Make length a size_t.  Add hash member.
	(struct ihash): Remove next member.  Add hash member.  Make
	name a flexible array member.

	* cppfiles.c: Include hashtab.h.
	(include_hash): Delete.
	(IHASHSIZE): New macro.
	(hash_IHASH, eq_IHASH, _cpp_init_include_hash): New functions.
	(cpp_included): Do the hash lookup here.
	(_cpp_find_include_file): Rewrite.
	(cpp_read_file): Put the "fake" hash entry into the hash
	table.  Honor the control_macro, if it turns out we've seen
	the file before.  Don't push the buffer here.
	(_cpp_read_include_file): Push the buffer here.
	(OMODES): New macro.  Use it whenever we call open(2).

	* cpphash.c: Include hashtab.h.
	(hash_HASHNODE, eq_HASHNODE, del_HASHNODE, dump_hash_helper,
	_cpp_init_macro_hash, _cpp_dump_macro_hash, _cpp_make_hashnode,
	_cpp_lookup_slot): New functions.
	(HASHSIZE): new macro.
	(hashf, _cpp_install, _cpp_delete_macro): Delete.
	(_cpp_lookup): Use hashtab.h routines.

	* cppinit.c: Include hashtab.h.
	(cpp_reader_init): Call _cpp_init_macro_hash and
	_cpp_init_include_hash.  Don't allocate hashtab directly.
	(cpp_cleanup): Just call htab_delete on pfile->hashtab and
	pfile->all_include_files.
	(initialize_builtins): Use _cpp_make_hashnode and
	htab_find_slot to add hash entries.
	(cpp_finish): Just call _cpp_dump_macro_hash.
	* cpplib.c: Include hashtab.h.
	(do_define): Use _cpp_lookup_slot and _cpp_make_hashnode to
	create hash entries.
	(do_pragma_poison, do_assert): Likewise.
	(do_include): Don't push the buffer here.  Don't increment
	system_include_depth unless _cpp_read_include_file succeeds.
	(do_undef, do_unassert): Use _cpp_lookup_slot and htab_clear_slot
	or htab_remove_elt.
	(do_pragma_implementation): Use alloca to create copy.

	* Makefile.in: Update dependencies.

2000-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cppinit.c (cl_directive_handler): More K&R fixing.

Sat Mar 11 23:54:26 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.c (ia64_compute_frame_size): Align size to
	STACK_BOUNDARY.
	* config/ia64/ia64.h (REGISTER_MOVE_COST): Add missing parentheses.

2000-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cppinit.c (no_arg, no_ass, no_dir, no_fil, no_mac, no_pth):
	Change from char[] to macros.

2000-03-12  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (cpp_start_read): Update indirect function
	call to K&R C.

Sat Mar 11 16:18:12 2000  Jim Wilson  <wilson@cygnus.com>

	* config/ia64/ia64.h (ADDITIONAL_REGISTER_NAMES): Fix typo in loc79
	entry.

	* config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/ia64/ia64.md, config/ia64/xm-ia64.h: Fix copyright messages.

2000-03-11  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (struct pending option): Replace undef with a
	pointer to a directive handling routine.
	(struct cpp_pending): Replace separate assert_ and define_
	lists with one directive_ list.
	(new_pending_define): Rename new_pending_directive. Extra
	argument is the directive's handling routine.
	(handle_option): Update to use new_pending_directive.

2000-03-11  Neil Booth  <NeilB@earthling.net>

	* cppfiles.c (file_cleanup, _cpp_find_include_file,
	remap_filename, _cpp_read_include_file, actual_directory,
	hack_vms_include_specification): Replace bcopy(), index() etc
	calls.  Add casts to some allocations.  Make some variables
	pointers to const [unsigned] char.
	* cpphash.c (_cpp_install, macro_cleanup, collect_expansion,
	collect_formal_parameters): Similarly.
	* cppinit.c (struct pending_option, append_include_chain,
	cpp_options_init, cpp_reader_init, initialize_standard_includes,
	cpp_start_read, new_pending_define, handle_option): Similarly.
	* cpplib.c (cpp_define, copy_comment, do_define, do_include,
	do_undef, do_error, do_warning, do_pragma, do_pragma_once,
	do_pragma_implementation, detect_if_not_defined,
	do_ifdef, skip_if_group, cpp_get_token, parse_string,
	do_assert, do_unassert): Similarly.
	* cpplib.h (cpp_buffer, cpp_options): Update types.  Update
	function prototypes.
	* mkdeps.c (deps_add_target, deps_add_dep): cast allocations.

2000-03-10  Richard Henderson  <rth@cygnus.com>

	* builtins.c (expand_builtin_strlen): Revert last change.
	Use emit_insn_before if we're at the beginning of a sequence.

2000-03-10  Jason Merrill  <jason@casey.cygnus.com>

	* builtins.c (expand_builtin_strlen): Make sure that we have something
	at the beginning of the sequence.

	* toplev.c (rest_of_compilation): Also set TREE_NOTHROW for
	deferred inlines.

	* invoke.texi (C++ Dialect Options): Document -fno-enforce-eh-specs.

2000-03-10  Richard Henderson  <rth@cygnus.com>

	* except.c (can_throw): Use INTVAL on a CONST_INT.
	(reachable_handlers): Likewise.
	* flow.c (count_basic_blocks, find_basic_blocks_1): Likewise.

2000-03-10  Andreas Jaeger  <aj@suse.de>

	* config/mips/linux.h: Undefine MD_EXEC_PREFIX and
	MD_STARTFILE_PREFIX since those are not needed on linux.
	(ASM_FILE_START): New, from mips/gnu.h.

2000-03-09  Richard Henderson  <rth@cygnus.com>
	    Alex Samuel  <samuel@codesourcery.com> and others

	* Makefile.in (ssa.o): New rule.
	(OBJS): Add ssa.o.
	(STAGESTUFF): Add *.ssa and *.ussa.
	(mostlyclean): Delete *.ssa, *.ussa, */*.ssa, */*.ussa.
	* rtl.def (PHI): New RTL expression.
	* rtl.h (clear_log_links): New declaration.
	(convert_to_ssa): Likewise.
	(convert_from_ssa): Likewise.
	* flow.c (split_edge): If the entry node falls through to the
	split edge's source block, split the entry edge.
	(clear_log_links): New function.
	* toplev.c (ssa_dump): New variable.
	(flag_ssa): Likewise.
	(f_options): Add "ssa".
	(compile_file): Create SSA dump files.
	(rest_of_compilation): Go to and from SSA if enabled.
	(decide_d_option): Handle -de for SSA dump files.
	* ssa.c: New file.

Thu Mar  9 20:01:38 2000  Jim Wilson  <wilson@cygnus.com>

	* expr.c (expand_assignment): For a CALL_EXPR, special case PARM_DECL
	same as VAR_DECL.

2000-03-09  Benjamin Kosnik  <bkoz@cygnus.com>

	* config/alpha/linux.h (WCHAR_TYPE): Make consistent.

Thu Mar  9 18:10:02 2000  Jeffrey A Law  (law@cygnus.com)

	* config/pa/pa-hpux10.h (LIB_SPEC): Correct typo in !p case.
	(MD_STARTFILE_PREFIX_1): New macro.

2000-03-09  Robert Lipe  <robertl@sco.com>

	* config/ia64/ia64.c: Include system.h.

2000-03-09  Jason Merrill  <jason@casey.cygnus.com>

	* except.c (nothrow_function_p): If -fno-exceptions, just return.
	(init_eh_nesting_info): Likewise.

	* tree.h (struct tree_common): Rename raises_flag to nothrow_flag.
	(TREE_NOTHROW): Rename from TREE_RAISES.
	* toplev.c (rest_of_compilation): Set it.
	* print-tree.c (print_node): Adjust.
	* tree.c (stabilize_reference, build, build1): Don't set TREE_RAISES.
	(stabilize_reference_1, get_unwidened, get_narrower): Likewise.
	* calls.c (emit_call_1): Add 'nothrow' parm.  Add
	REG_EH_REGION note as appropriate.
	(libfunc_nothrow): New fn.
	(emit_library_call, emit_library_call_value): Use it.
	(expand_call): Check TREE_NOTHROW.

	* varasm.c (make_decl_rtl): Skip initial '*' when setting
	DECL_ASSEMBLER_NAME.

2000-03-09  Andreas Jaeger  <aj@suse.de>

	* mips/linux.h (NO_IMPLICIT_EXTERN_C): Define.
	(TARGET_MEM_FUNCTIONS): Define.

2000-03-09  Jason Merrill  <jason@casey.cygnus.com>

	* i386.c (ix86_valid_type_attribute_p): Use compare_tree_int.

	* except.c (can_throw): See through a SEQUENCE.
	(nothrow_function_p): New fn.
	* except.h: Declare it.
	* function.c (current_function_nothrow): New var.
	(prepare_function_start): Initialize it.
	* output.h: Declare it.
	* toplev.c (rest_of_compilation): Set it.
	* dwarf2out.c (dwarf2out_begin_prologue): Use it.

2000-03-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (collect_formal_parameters): strncmp returns 0 for
	match.  (cpp_compare_defs): Count the nul separator when
	advancing over argument names.

2000-03-09  Bernd Schmidt  <bernds@cygnus.co.uk>

	* recog.c (preprocess_constraints): Matching constraints affect
	same alternative/different operand, not same operand/different
	alternative.

	* reload1.c (eliminate_regs_in_insn): Handle additions of eliminable
	register and a constant specially.

2000-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* libgcc2.h: New file.
	* libgcc2.c: Move macros, typedefs and prototypes to libgcc2.h.

Wed Mar  8 16:19:42 2000  Jim Wilson  <wilson@cygnus.com>

	* configure.in (ia64*-*-elf*, ia64*-*-linux*): New.
	* configure: Regenerate.
	* config/ia64: New.

2000-03-08  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (LIBCPP_DEPS): New macro.
	(cpplib.o, cpphash.o, cpperror.o, cppexp.o, cppfiles.o): Use
	it to declare deps.
	* cpperror.c: Include cpphash.h.
	* cppexp.c: Include cpphash.h.  Remove MULTIBYTE_CHARS
	dingleberry.
	(lex): Don't use CPP_WARN_UNDEF.
	(_cpp_parse_expr): Return an int, the truth value.
	* cppfiles.c: Include cpphash.h.
	(_cpp_merge_include_chains): Move to cppinit.c and make static.
	* cppinit.c (include_defaults_array): Disentangle.
	(cpp_cleanup): Don't free the if stack here.
	(cpp_finish): Pop off all buffers, not just one.
	* cpplib.c (eval_if_expr): Return int.
	(do_xifdef): Rename do_ifdef.
	(handle_directive): Don't use CPP_PREPROCESSED.
	(cpp_get_token): Don't use CPP_C89.
	* fix-header.c: Don't use CPP_OPTIONS.

	* cpplib.h: Move U_CHAR, enum node_type, struct
	file_name_list, struct ihash, is_idchar, is_idstart,
	is_numchar, is_numstart, is_hspace, is_space, CPP_BUF_PEEK,
	CPP_BUF_GET, CPP_FORWARD, CPP_PUTS, CPP_PUTS_Q, CPP_PUTC,
	CPP_PUTC_Q, CPP_NUL_TERMINATE, CPP_NUL_TERMINATE_Q,
	CPP_BUMP_BUFFER_LINE, CPP_BUMP_LINE, CPP_PREV_BUFFER,
	CPP_PRINT_DEPS, CPP_TRADITIONAL, CPP_PEDANTIC, and prototypes
	of _cpp_simplify_pathname, _cpp_find_include_file,
	_cpp_read_include_file, and _cpp_parse_expr to cpphash.h.
	Move struct if_stack to cpplib.c.  Move struct cpp_pending to
	cppinit.c.
	Change all uses of U_CHAR to be unsigned char instead.
	Delete CPP_WARN_UNDEF, CPP_C89, and CPP_PREPROCESSED.

2000-03-08  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (dw_fde_struct): Add 'nothrow'.
	(dwarf2out_begin_prologue): Set it.
	(output_call_frame_info): Don't emit EH unwind info for leaves.

	* flow.c (count_basic_blocks, find_basic_blocks_1): A rethrow
	can occur outside of an EH region.
	* except.c: Correct comments about rethrow behavior.
	(rethrow_symbol_map): Do nothing if !flag_new_exceptions.

2000-03-08  Andrew MacLeod  <amacleod@cygnus.com>

	* flow.c (make_edges): Always call make_eh_edge for calls.

2000-03-08  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (parse_underflow_t, CPP_NULL_BUFFER): Delete.
	(struct cpp_buffer): Remove fname and underflow fields.
	(struct cpp_reader): Remove get_token field.
	(struct include_hash): Rename to struct ihash.  Add typedef to
	IHASH.
	(struct if_stack): Remove fname field.
	(IF_STACK_FRAME): Rename to IF_STACK.

	* cpperror.c (print_containing_files): Trust that there are no
	macro buffers below the top file buffer.
	* cppfiles.c: Replace all references to 'struct include_hash'
	with 'IHASH'.  Rename initialize_input_buffer to
	init_input_buffer.  Don't set or reference cpp_buffer->fname,
	use buffer->ihash->name instead.
	* cpphash.c (special_symbol): Use cpp_file_buffer.  Use NULL
	not CPP_NULL_BUFFER.
	* cppinit.c: Use NULL not CPP_NULL_BUFFER, IF_STACK not
	IF_STACK_FRAME, IHASH not struct include_hash.
	* cpplib.c: Rename eval_if_expression to eval_if_expr.  Remove
	null_underflow.  Use IF_STACK not IF_STACK_FRAME, IHASH not
	struct include_hash, NULL not CPP_NULL_BUFFER.  Remove all
	references to cpp_buffer->fname (delete entirely, or use
	->ihash->name instead) and IF_STACK->fname.
	(cpp_push_buffer): Don't set new->underflow.
	(do_include): Use cpp_file_buffer.

	* cpphash.c (collect_formal_parameters): Remove duplicate
	increment of argslen.  Pedwarn in C99 mode if __VA_ARGS__ is
	used as a macro argument name.  Don't append "..." to namebuf
	for varargs macros.  After we're done scanning, go through
	namebuf and make it NUL separated, not comma separated.
	(_cpp_compare_defs): Remove register tag from variables.
	Expect defn->argnames to be NUL separated.
	(_cpp_dump_definition): Expect defn->argnames to be NUL
	separated and in forward order.
	* cpphash.h: Update documentation of argnames field.

2000-03-08  Richard Henderson  <rth@cygnus.com>

	* builtins.c (expand_builtin_strlen): Be prepared for strlensi
	to fail.  Don't pre-expand the source operand.

	* i386.md (strlensi): Initialize eoschar and align before use.

2000-03-08  Jason Merrill  <jason@casey.cygnus.com>

	* expr.c (expand_expr, case ARRAY_REF): Still check for missing
	CONSTRUCTOR element.

2000-03-08  Gavin Romig-Koch  <gavin@cetus.cygnus.com>

	* mips.c (mips_expand_prologue): If the last
	named argument is the vararg marker "va_list", treat it as
	an unnamed argument.

2000-03-08  Clinton Popetz  <cpopetz@cygnus.com>

	* dbxout.c (dbxout_parms): When correcting for promoted
	big-endian parameters, use the mode of the DECL_RTL rather
	than UNITS_PER_WORD.

2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (make_fname_decl): Declare.
	* c-common.c (make_fname_decl): Define.
	(declare_hidden_char_array): Remove.
	(declare_function_name): Use make_fname_decl.
	* c-decl.c (c_make_fname_decl): New function.
	(init_decl_processing): Set make_fname_decl.

Tue Mar  7 23:50:31 2000  Jeffrey A Law  (law@cygnus.com)

	* cccp.c (handle_directive): Initialize backslash_newlines_p.

2000-03-07  Philipp Thomas  <pthomas@suse.de>

	* po/POTFILES.in: Remove cppalloc.c from file list.

2000-03-07  Steve Chamberlain  <sac@pobox.com>

	* pj.c (pj_expand_prologue): current_function->args_info is
	now current_function_args_info.

	* pj.h (STORE_FLAG_VALUE, USER_LABEL_PREFIX,
	LOCAL_LABEL_PREFIX, ASM_GENERATE_INTERNAL_LABEL,
	ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_SKIP): Define.

2000-03-08  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (PUT_SDB_TYPE): Define so that the type info is
	output as hexadecimal rather than the default octal.

2000-03-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (special_symbol): Fix thinko in previous commit.

2000-03-07  Neil Booth  <NeilB@earthling.net>

	* cppexp.c (struct operation, left_shift, right_shift,
	cpp_parse_expr): Change some "char"s to "U_CHAR"s, and some
	"int"s to "unsigned int"s.
	* cpplib.c (detect_if_not_defined, do_assert, do_unassert):
	Similarly.
	* cpplib.h: Update for above.
	* mkdeps.c (deps_init, deps_calc_target): Cast pointers
	returned from allocations.

	* cppinit.c (opt_comp, parse_options): New functions.
	(handle_option): Use parse_option to parse a single command
	line option, that possibly takes an argument.
	(cpp_handle_options): Sort the array of command line options on
	first invocation (non-ASCII hosts only).
	(print_help): Update.

2000-03-07  Zack Weinberg  <zack@wolery.cumb.org>

	* mkdeps.c (munge): Fix off-by-one bug and inconsistencies in
	backslash counting loops.  Problem noted by Matt Kraai <kraai@ghs.com>.

	* cppfiles.c (_cpp_find_include_file): Make sure ih->name is
	initialized.
	* cppinit.c (cpp_cleanup): Free imp->nshort also.

	* cpperror.c (cpp_print_containing_files,
	cpp_print_file_and_line, v_cpp_message): Rename to
	print_containing_files, print_file_and_line, and v_message.
	* cppexp.c (cpp_parse_expr, cpp_parse_escape, cpp_lex): Rename
	to _cpp_parse_expr, parse_escape, and lex.
	(parse_charconst): Remove broken multibyte support.
	* cppfiles.c (include_hash): Make static.
	(cpp_included): New function.
	(merge_include_chains, find_include_file, finclude,
	simplify_pathname): Rename to _cpp_merge_include_chains,
	_cpp_find_include_file, _cpp_read_include_file, and
	_cpp_simplify_pathname.
	* cpphash.c (cpp_lookup, free_definition, delete_macro,
	cpp_install, create_definition, macroexpand, compare_defs,
	dump_definition): Rename to _cpp_lookup, _cpp_free_definition,
	_cpp_delete_macro, _cpp_install, _cpp_create_definition,
	_cpp_macroexpand, _cpp_compare_defs, and _cpp_dump_definition.
	* cppinit.c (cpp_handle_option): Rename to handle_option, make
	static.
	* cpplib.c: Remove extern prototype of cpp_parse_expr.

	* cpphash.h: Update prototypes.
	* cpplib.h: Likewise.  Prototype _cpp_parse_expr here.

2000-03-07  Andrew Haley  <aph@cygnus.com>

	* config/mips/mips.h (PTRDIFF_TYPE): Revert broken change;
	PTRDIFF_TYPE should be based solely on Pmode.
	(SIZE_TYPE): ditto.

2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.h (rtunion_def): Constify member `rtstr'.
	(emit_line_note_after, emit_line_note, emit_line_note_force,
	emit_note, decode_asm_operands): Constify.

	* cse.c (canon_hash): Likewise.

	* dbxout.c (dbxout_block): Likewise.

	* diagnostic.c (file_and_line_for_asm, v_error_for_asm,
	v_warning_for_asm): Likewise.

	* dwarfout.c (function_start_label): Likewise.

	* emit-rtl.c (emit_line_note_after, emit_line_note, emit_note,
	emit_line_note_force): Likewise.

	* final.c (last_filename, asm_insn_count, final_scan_insn,
	output_source_line): Likewise.

	* function.h (struct emit_status): Likewise.

	* gcse.c (hash_expr_1): Likewise.

	* genattr.c (gen_attr, main): Likewise.

	* genattrtab.c (struct function_unit, current_alternative_string,
	write_attr_valueq, n_comma_elts, next_comma_elt, attr_eq,
	attr_numeral, check_attr_test, check_attr_value,
	convert_set_attr_alternative, convert_set_attr,
	compute_alternative_mask, simplify_by_exploding, gen_attr,
	gen_unit): Likewise.

	* genflags.c (gen_insn): Likewise.

	* gengenrtl.c (type_from_format): Likewise.

	* genopinit.c (gen_insn): Likewise.

	* genoutput.c (n_occurrences, process_template, process_template):
	Likewise.

	* ggc-page.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size):
	Likewise.

	* ggc-simple.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size):
	Likewise.

	* ggc.h (ggc_mark_string, ggc_mark, ggc_mark_if_gcable,
	ggc_set_mark, ggc_get_size): Likewise.

	* objc/objc-act.c (build_module_descriptor, finish_objc): Likewise.

	* optabs.c (init_one_libfunc): Likewise.

	* output.h (assemble_start_function): Likewise.

	* recog.c (decode_asm_operands): Likewise.

	* toplev.c (rest_of_compilation): Likewise.

	* tree.h (emit_line_note_after, emit_line_note,
	emit_line_note_force): Likewise.

	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	asm_emit_uninitialised, assemble_start_function,
	assemble_variable, const_hash, compare_constant_1,
	find_pool_constant, mark_constant_pool, assemble_alias): Likewise.

	* xcoffout.h (DBX_FINISH_SYMBOL): Likewise.

	* alpha/alpha.md (call_vms, call_value_vms): Likewise.

	* arm/aof.h (ASM_OUTPUT_ASCII): Likewise.

	* arm/aout.h (ASM_OUTPUT_ASCII): Likewise.

	* arm/arm-protos.h (output_ascii_pseudo_op, arm_dllexport_name_p,
	arm_dllimport_name_p): Likewise.

	* arm/arm.c (arm_encode_call_attribute, output_ascii_pseudo_op):
	Likewise.

	* arm/arm.h (ASM_OUTPUT_MI_THUNK): Likewise.

	* arm/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* arm/pe.c (arm_dllexport_name_p, arm_dllimport_name_p,
	arm_mark_dllexport, arm_mark_dllimport,
	arm_pe_encode_section_info): Likewise.

	* arm/telf.h (ASM_OUTPUT_DEF_FROM_DECLS,
	ASM_FINISH_DECLARE_OBJECT): Likewise.

	* arm/thumb.c (thumb_function_prologue): Likewise.

	* arm/thumb.h (ASM_OUTPUT_ASCII): Likewise.

	* avr/avr.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* clipper/clix.h (ASM_OUTPUT_ASCII): Likewise.

	* fx80/fx80.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/cygwin.h (ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/freebsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* i386/i386-interix.h (ASM_OUTPUT_LIMITED_STRING,
	ASM_OUTPUT_ASCII, ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/i386-protos.h (asm_output_function_prefix): Likewise.

	* i386/i386.c (asm_output_function_prefix): Likewise.

	* i386/i386elf.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/osfrose.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* i386/ptx4-i.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/sco5.h (ASM_FINISH_DECLARE_OBJECT,
	ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII,
	ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/sysv4.h (ASM_OUTPUT_ASCII): Likewise.

	* i860/paragon.h (ASM_OUTPUT_ASCII): Likewise.

	* i860/sysv3.h (ASM_OUTPUT_ASCII): Likewise.

	* m32r/m32r.c (m32r_encode_section_info): Likewise.

	* mcore-elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mcore/mcore.c (mcore_encode_section_info): Likewise.

	* mips/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/elf64.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/iris6.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/mips.h (ASM_OUTPUT_IDENT): Likewise.

	* mips/mips.md (movdi, movsi): Likewise.

	* mips/netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* openbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* ptx4.h (ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING,
	ASM_OUTPUT_ASCII): Likewise.

	* rs6000/rs6000.c (rs6000_allocate_stack_space, output_epilog,
	output_mi_thunk, output_toc): Likewise.

	* rs6000/rs6000.md (movsi): Likewise.

	* rs6000/sysv4.h (ASM_OUTPUT_INT, ASM_OUTPUT_SECTION_NAME): Likewise.

	* tahoe/harris.h (ASM_OUTPUT_ASCII): Likewise.

	* v850/v850.c (print_operand, print_operand_address,
	v850_encode_data_area): Likewise.

2000-03-07  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.md (zero_extendsidi2): Always force operand
	one to memory for mips16.

Mon Mar  6 15:22:29 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (INT_CST_LT, INT_CST_LT_UNSIGNED): Remove unneeded casts.
	(struct tree_int_cst): int_cst_low is now unsigned HOST_WIDE_INT.
	(attribute_hash_list, type_hash_canon): hashcode is now unsigned.
	(type_hash_lookup, type_hash_add, type_hash_list): Likewise.
	(min_precision): Result is unsigned.
	(add_double, neg_double, mul_double): Low word is unsigned.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double): Likewise.
	(tree_floor_log2, compare_tree_int): New functions.
	(preserve_rtl_expr_temps): New declaration.
	* c-common.c (declare_hidden_char_array): Use compare_tree_int.
	(decl_attributes): Use tree_log2 to find alignment.
	Check for TREE_INT_CST_HIGH for format args.
	(min_precision): Now unsigned.
	Use tree_floor_log2.
	(truthvalue_conversion): Delete long-disabled code.
	* c-decl.c (finish_struct): Clean up tests on field width.
	(finish_function): Use compare_tree_int.
	* c-pragma.c (handle_pragma_token): Use tree_log2 for alignment.
	* c-typeck.c (comptypes): Use tree_int_cst_equal.
	(default_conversion, digest_init): Use compare_tree_int.
	(build_binary_op): Use integer_all_onesp and compare_tree_int.
	Fix type errors in forming masks.
	* calls.c (initialize_argument_information): Use compare_tree_int.
	* dbxout.c (dbxout_type): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* except.c (expand_eh_region_start_tree): Use compare_tree_int.
	* expr.c (is_zeros_p, case INTEGER_CST): Use integer_zerop.
	(store_field): Use compare_tree_int.
	(expand_expr, case CONSTRUCTOR): Use TYPE_SIZE_UNIT.
	(expand_expr, case ARRAY_REF): Use compare_tree_int.
	(do_jump, case BIT_AND_EXPR): Use tree_floor_log2.
	(do_store_flag): Use compare_tree_int.
	* fold-const.c (encode, decode): Low part is always unsigned.
	(force_fit_type, add_double, neg_double, mul_double): Likewise.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double, int_const_binop): Likewise.
	(fold_convert): Use compare_tree_int.
	(operand_equal_p, case INTEGER_CST): Use tree_int_cst_equal.
	(invert_truthvalue, case INTEGER_CST): Likewise.
	(fold): Use compare_tree_int; add casts for unsigned TREE_INT_CST_LOW.
	* mkdeps.c (deps_dummy_targets): Make I unsigned.
	* rtl.h (add_double, neg_double, mul_double): Low words are unsigned.
	(lshift_double, rshift_double, lrotate_double, rrotate_double):
	Likewise.
	* stmt.c (expand_decl): Use compare_tree_int and mode_for_size_tree.
	(expand_end_case): Use compare_tree_int.
	(estimate_case_costs): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size_tree): Use compare_tree_int.
	(layout_decl): Likewise.
	(layout_record, layout_union): Make sizes unsigned.
	(layout_type, case VOID_TYPE): TYPE_SIZE must be bitsizetype.
	(layout_type, case QUAL_UNION_TYPE): Use compare_tree_int.
	* tree.c (struct type_hash): hashcode is unsigned.
	(build_type_attribute_variant, type_hash_list): Likewise.
	(type_hash_lookup, type_hash_add, type_hash_canon): Likewise.
	(attribute_hash_list, build_array_type, build_method_type): Likewise.
	(build_complex_type): Likewise.
	(real_value_from_int_cst): Remove unneeded casts.
	(integer_all_onesp): Add casts.
	(tree_floor_log2, compare_tree_int): New functions.
	(build_index_type): Use tree_int_cst_sgn.
	* varasm.c (assemble_variable): Use compare_tree_int.

2000-03-06  Jason Merrill  <jason@casey.cygnus.com>

	* cpphash.c (collect_expansion): Also catch ## at start of macro.

	* varasm.c (make_decl_rtl): Don't add a number to members of
	local classes.
	(make_function_rtl): Likewise.

2000-03-06  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* gcse.c (compute_can_copy): Adjust if/else blocks from rth's
	patch from 2000-01-28.

2000-03-06  Clinton Popetz  <cpopetz@cygnus.com>

	* config/sh/sh.c: (barrier_align): Handle a delay slot that is
	filled with an insn from the jump target.

2000-03-07  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x-protos.h (c4x_global_name): Constify char *.
	(c4x_external_ref): Likewise.
	* config/c4x/c4x.c (struct name_list): Likewise.

1999-12-16  Ben Collins  <bcollins@debian.org>

	* Makefile.in: Pass a new MULTILIB_EXCLUSIONS option as the sixth
	argument to genmultilib.
	* genmultilib: accept new MULTILIB_EXCLUSIONS option and output
	the contents into the multilib.h header.
	* gcc.c: Declare multilib_exclusions for the specs file.
	(set_multilib_dir): Use it.
	(print_multilib_info): Likewise.
	* t-linux64: Declare arguments for new MULTILIB_EXCLUSIONS option
	to pass to genmultilib.

2000-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (built_in_class_names, built_in_names): Constify a
	char*.

	* gmon-sol2.c (monstartup, moncontrol): Cast ptrs to long, not
	int.
	(_mcleanup): Ensure value matches format specifier in sprintf.

	* cpphash.c (special_symbol): Don't needlessly cast away
	const-ness.

	* cppinit.c (base_name): Delete unused prototype.

	* mkdeps.c (deps_init): Make definition K&R safe.

	* tree.h (built_in_class_names, built_in_names): Constify a
	char*.

2000-03-06  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (eligible_for_epilogue_delay): Accept
	floating point instructions for epilogue delay.

	* config/sparc/sparc.h (ASM_ARCH64_SPEC): Pass -no-undeclared-regs
	to gas if it supports .register pseudo.

	* real.h (MAX_LONG_DOUBLE_TYPE_SIZE): Define to
	LONG_DOUBLE_TYPE_SIZE if not defined.
	Use MAX_LONG_DOUBLE_TYPE_SIZE instead of
	LONG_DOUBLE_TYPE_SIZE in preprocessor if clauses.
	* real.c: Likewise.
	* gengenrtl.c: Likewise.
	* print-rtl.c: Likewise.
	* rtl.c: Likewise.
	* config/sparc/sol2-sld-64.h (TARGET_DEFAULT): Set
	MASK_LONG_DOUBLE_128.
	* config/sparc/sol2.h (TARGET_DEFAULT): Likewise.
	* config/sparc/sp64-elf.h (TARGET_DEFAULT): Likewise.
	* config/sparc/linux64 (TARGET_DEFAULT): Likewise.
	(SUBTARGET_SWITCHES): Define.
	(CPP_ARCH32_SPEC): Define __LONG_DOUBLE_128__ if compiling
	with -mlong-double-128.
	(LONG_DOUBLE_TYPE_SIZE): Define depending on target_flags.
	(MAX_LONG_DOUBLE_TYPE_SIZE): Define.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define depending on CPP macros.
	(CC1_SPEC): Include -mlong-double-{64,128} as needed.
	* config/sparc/linux.h (SUBTARGET_SWITCHES): Define.
	(CPP_SUBTARGET_SPEC): Define __LONG_DOUBLE_128__ if compiling
	with -mlong-double-128.
	(LONG_DOUBLE_TYPE_SIZE): Define depending on target_flags.
	(MAX_LONG_DOUBLE_TYPE_SIZE): Define.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define depending on CPP macros.
	* config/sparc/sparc.h (MASK_LONG_DOUBLE_128,
	TARGET_LONG_DOUBLE_128): Define.
	* config/sparc/linux-aout.h (LONG_DOUBLE_TYPE_SIZE): Remove.
	* config/sparc/sparc.c (sparc_override_options): Disallow 64bit
	long double on TARGET_ARCH64.

2000-03-06  Mark Mitchell  <mark@codesourcery.com>

	* function.c (free_temps_for_rtl_expr): Don't free slots
	that have been pushed into a higher level.

	Revert this patch:
	2000-03-05  Mark Mitchell  <mark@codesourcery.com>

2000-03-05  Mark Mitchell  <mark@codesourcery.com>

	* basic-block.h (ALLOCA_REG_SET): Remove.
	(INITIALIZE_REG_SET): New macro.
	* flow.c (update_life_info): Use it.
	(calculate_global_regs_live): Likewise.
	(propagate_block): Likewise.
	* global.c (build_insn_chain): Likewise.
	* haifa-sched.c (schedule_region): Likewise.

2000-03-05  Stephane Carrez  <stcarrez@worldnet.fr>

	* dwarf2out.c (UNALIGNED_WORD_ASM_OP): Support 2 bytes pointer.
	(ASM_OUTPUT_DWARF_ADDR_CONST): Use UNALIGNED_WORD_ASM_OP.
	(DWARF_ARANGES_PAD_SIZE): New define.
	(output_aranges): Use it to pad the address range header.
	(DWARF_ROUND): Fix for non power of 2 rounding.

2000-03-05  Jason Merrill  <jason@casey.cygnus.com>

	* mkdeps.c (deps_calc_target): Remove incorrect 'const'.

2000-03-05  Mark Mitchell  <mark@codesourcery.com>

	* tree.def (RTL_EXPR): Update documentation.
	* tree.h (RTL_EXPR_HAS_NO_SCOPE): New macro.
	* expr.c (expand_expr): Handle RTL_EXPR_HAS_NO_SCOPE.
	* function.c (preserve_rtl_expr_temp): New function.
	(preserve_rtl_expr_temps): Likewise.
	(preserve_rtl_expr_result): Use it.

	Revert this patch:
	2000-03-04  Mark Mitchell  <mark@codesourcery.com>

2000-03-04  Thomas Schuster <Thomas.Schuster@gmx.net>

	* regmove.c (copy_src_to_dest)  Do not create src->dest move
	for unchanging destination.

2000-03-04  Mark Mitchell  <mark@codesourcery.com>

	* function.h (struct sequence_stack): Remove rtl_expr.
	(struct emit_staus): Likewise.
	(seq_rtl_expr): Remove.
	* tree.h (free_temps_for_rtl_expr): Don't declare.
	(start_sequence_for_rtl_expr): Likewise.
	* rtl.h (preserve_rtl_expr_result): Likewise.
	* emit-rtl.c (start_sequence): Don't set sequence_rtl_expr.
	(start_sequence_for_rtl_expr): Remove.
	(push_topmost_sequence): Don't save sequence_rtl_expr.
	(pop_topmost_sequence): Remove comment about not restoring it.
	(end_sequence): Don't set seq_rtl_expr.
	(init_emit): Don't initialize it.
	(mark_sequence_stack): Don't mark it.
	(mark_emit_status): Likewise.
	* except.c (protect_with_terminate): Use
	start_sequence_for_rtl_expr, not start_sequence.
	* expr.c (expand_expr, case RTL_EXPR): Don't call
	preserve_rtl_expr_result or free_temps_for_rtl_expr.
	* function.c (assign_stack_temp_for_type): Don't set rtl_expr.
	(preserve_rtl_expr_result): Remove.
	(free_temps_for_rtl_expr): Likewise.
	(pop_temp_slots): Likewise.
	(mark_temp_slot): Don't mark the rtl_expr.
	* stmt.c (expand_start_stmt_expr): Use start_sequence, not
	start_sequence_for_rtl_expr.

2000-03-04  Zack Weinberg  <zack@wolery.cumb.org>

	* mkdeps.c, mkdeps.h: New files.
	* po/POTFILES.in: Add them.
	* Makefile.in (LIBCPP_OBJS): Add mkdeps.o.
	(cpplib.o, cppinit.o): Depend on mkdeps.h.
	(mkdeps.o): New target.

	* cppfiles.c: Delete deps_output.
	* cppinit.c: Include mkdeps.h.  Delete known_suffixes,
	OBJECT_SUFFIX, and base_name.
	(cpp_cleanup): Use deps_free.  Free ihash->name when clearing
	the include hash.
	(initialize_dependency_output): Use deps_init,
	deps_add_target, deps_calc_target, and deps_add_dep.  Remove
	all the unnecessary string bashing.
	(cpp_finish): Use deps_write.  Remove an unnecessary nesting
	level.
	* cpplib.c (do_include): Use deps_add_dep.
	* cpplib.h (struct cpp_reader): Replace deps_buffer,
	deps_allocated_size, deps_size, deps_column members with
	single pointer to a struct deps.  Delete prototype of
	deps_output.

	* cppinit.c: Fix thinko in previous patch.

Sat Mar  4 11:32:30 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* machmode.h (mode_for_size, smallest_mode_for_size): SIZE now signed.
	* stor-layout.c (mode_for_size, smallest_mode_for_size): Likewise.
	(mode_for_size_tree): New function.
	(layout_decl, layout_type): Call it and clean up BLKmode checks.
	* tree.h (mode_for_size_tree): New declaration.

	* toplev.c (debug_ignore_block): Mark arg BLOCK as possibly unused.

2000-03-04  Jason Merrill  <jason@casey.cygnus.com>

	* stmt.c (is_body_block): Move...
	* dwarfout.c, dwarf2out.c: ...from here.
	* tree.h: Declare it.
	* emit-rtl.c (remove_unnecessary_notes): Don't remove the body block.
	* final.c (final_start_function): Do call remove_unnecessary_notes
	when scheduling.

2000-03-03  Zack Weinberg  <zack@wolery.cumb.org>

	* config/vax/xm-vms.h: Define OBJECT_SUFFIX and EXECUTABLE_SUFFIX.

	* cpplib.h (_dollar_ok): New macro.
	(is_idchar, is_idstart): Use it.
	(IStable): Rename to _cpp_IStable.  Declare it const if
	gcc >=2.7 or C99.  Delete all references to FAKE_CONST.
	(is_idchar, is_idstart, is_numchar, is_numstart, is_hspace,
	is_space): Update for renamed IStable.

	* cppinit.c: Delete all references to FAKE_CONST and CAT
	macros. Define init_IStable as empty macro if gcc >=2.7 or
	C99. Change TABLE() to ISTABLE and hardcode name of table.
	(cpp_start_read): Don't change the IStable based on
	dollars_in_ident.

	* cpphash.c (unsafe_chars): Add pfile argument.  All callers
	changed.  Handle '$' for char1 correctly.
	* cpplib.c (cpp_get_token): Use is_numchar when parsing numbers.

	* cppexp.c (tokentab2): Make const.
	(cpp_lex): Make toktab const.
	* cppinit.c (include_defaults_array): Make const.
	(initialize_standard_includes): Make default_include const.

2000-03-03  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (dwarf2out_frame_debug): Add cast to silence warning.
	(dwarf2out_decl): Functions can now have DECL_IGNORED_P.
	(gen_decl_die): Likewise.
	* dwarfout.c (dwarfout_file_scope_decl): Likewise.
	(output_decl): Likewise.

	* varasm.c (make_function_rtl): If we change the name used in the
	rtl, update DECL_ASSEMBLER_NAME accordingly.
	(make_decl_rtl): Likewise.

	* toplev.c (rest_of_compilation): Tweak formatting.

	* toplev.c (rest_of_compilation): find_loop_tree_blocks before
	remove_unnecessary_notes.
	(debug_ignore_block): New fn.
	* toplev.h: Declare it.
	* emit-rtl.c (remove_unnecessary_notes): Call it.
	* dwarf2out.c (dwarf2out_ignore_block): New fn.
	* dwarf2out.h: Declare it.
	* final.c (final_start_function): Don't call remove_unnecessary_notes
	if we did insn scheduling.

2000-03-03  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_handle_option): Set opts->pedantic directly.
	* cpplib.h: Delete SET_CPP_PEDANTIC.

Fri Mar  3 14:56:12 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): Use bitfield case if
	result is a RECORD_TYPE.

2000-03-03  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* mips/elf.h (CTOR_LISTS_DEFINED_EXTERNALLY): Added.

2000-03-03  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_emit_set_const_1): Re-order cases to prefer
	addition over compliments over shifts.

Fri Mar  3 12:49:28 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* reload1.c (reload_combine_note_use): Handle return register USEs.
	REG case: Handle multi-hard-register hard regs.

Fri Mar  3 07:38:34 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* md.texi: Document use of '*' in insn pattern name.

2000-03-03  Jason Merrill  <jason@casey.cygnus.com>

	* calls.c (special_function_p): operator new may not be malloc-like.

	* gcse.c (dump_hash_table): Really fix error in last change.

2000-03-02  Denis Chertykov  <denisc@overta.ru>

	* avr.c (print_operand): Use print_operand_address instead of
	output_addr_const.
	* avr/libgcc.S: Cleanup code.

2000-03-02  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_emit_set_const_1): Also try c + small constant.

2000-03-02  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (TYPE_ALIGN_UNIT): New macro.

2000-03-02  Clinton Popetz  <cpopetz@cygnus.com>

	* i386.c: (constant_call_address_operand): Reject CONST_INT.

2000-03-02  Jason Merrill  <jason@casey.cygnus.com>

	* cpplib.h (CPP_PEDANTIC): Only true if system_header_p is not set
	for the buffer.
	(SET_CPP_PEDANTIC): New macro.
	* cpplib.c (do_include): Don't bother checking system_header_p.
	(do_warning, do_ident, do_assert, do_unassert): Likewise.
	* cppinit.c (cpp_handle_option): Use SET_CPP_PEDANTIC.

	* function.h (struct expr_status): Add x_arg_space_so_far.
	(arg_space_so_far): New macro.
	* expr.c (init_expr): Initialize it.
	* calls.c (emit_call_1): Reset it.
	(compute_argument_block_size, expand_call): Use it.
	(expand_call, store_one_arg): Increment it.

Thu Mar  2 17:27:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* varasm.c (output_constant): Strip off a CONVERT_EXPR to
	a UNION_TYPE.

2000-03-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (cpp_read_file): New function.

	* cpphash.c (collect_expansion): Make sure to reset last_token
	to NORM when we hit a string.  Handle trailing whitespace
	properly when the expansion is empty.
	(create_definition): Disable line commands while parsing the
	directive line.
	(dump_definition): If pfile->lineno == 0, output a line
	command ahead of the dump, and add a trailing newline.

	* cppinit.c (append_include_chain): Add fifth argument, which
	indicates whether or not system headers are C++ aware.
	(initialize_standard_includes): New function,
	broken out of read_and_prescan.  Pass 'cxx_aware' value from
	the include_defaults_array on to append_include_chain.
	(dump_special_to_buffer): Const-ify char array.
	(builtin_array): Don't dump __BASE_FILE__.
	(cpp_start_read): Use cpp_read_file.  Reorder code for
	clarity.  Don't output line commands here for -D/-A/-U
	switches.  Don't call deps_output for files included with
	-include or -imacros.

	* cpplib.c (do_define): Don't pay any attention to the second
	argument.
	(cpp_expand_to_buffer): Disable line commands while scanning.
	(output_line_command): Work in the file buffer.
	* cpplib.h: Remove no_record_file flag from struct cpp_reader.
	Fix formatting of comments.  Prototype cpp_read_file.

Thu Mar  2 13:29:46 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (c_common_nodes_and_builtins): Make sizetype_endlink
	reference the language-equivalent of sizetype.
	* c-typeck.c (comptypes): Treat sizetype like its language equivalent.
	* fold-const.c (size_binop, size_diffop): Put back checks.
	* gcse.c (dump_hash_table): Fix minor error in last change.
	* stor-layout.c (set_sizetype): Set TYPE_DOMAIN of sizetype.
	Clear TYPE_{NEXT,MAIN}_VARIANT and TYPE_{POINTER,REFERENCE}_to of
	all sizetypes.

Thu Mar  2 12:48:45 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call)  Do not attempt to combine stack adjustments
	with inhibit_defer_pop set.

2000-03-01  Mark Mitchell  <mark@codesourcery.com>

	* stor-layout.c (layout_decl): Allow front-ends to explicitly set
	the DECL_SIZE for a FIELD_DECL.

2000-03-01  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.tpl: remove unused symlinks
	* fixinc/README: GCC Maintainer info
	* fixinc/inclhack.sh: regen
	* fixinc/fixincl.sh: regen

2000-03-01  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (collect_expansion): Trim trailing white space
	from macro definitions, but don't go past the last insertion
	point.

Wed Mar  1 12:14:31 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (mulqi3): New pattern.

2000-02-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (CPP_ASSERTION, CPP_STRINGIZE, CPP_TOKPASTE): New
	token types.
	(struct cpp_reader): Add parsing_if_directive and
	parsing_define_directive flags.
	(struct cpp_options): Remove output_conditionals flag.
	(check_macro_name): Delete prototype.

	* cpphash.h (struct macrodef): Delete.
	(struct reflist): Separate from struct definition.
	(struct definition): Remove unused fields.  Add column number.
	(create_definition): Returns a DEFINITION *.  Takes a
	cpp_reader * and an int.

	* cpphash.c (SKIP_WHITE_SPACE): Delete.
	(PEEKC): Copy defn from cpplib.c.
	(rest_extension, REST_EXTENSION_LENGTH): Delete.
	(struct arg): New.
	(struct arglist): Simplify.
	(collect_expansion): Rewrite.  Get tokens by calling
	cpp_get_token.  Add more error checking.
	(collect_formal_parameters): New function, broken out of
	create_definition and reworked to use get_directive_token.
	(create_definition): All real work is now in collect_expansion
	and collect_formal_parameters.  do_define handles finding the
	macro name.  Return a DEFINITION, not a MACRODEF.
	(macroexpand): Replace bcopy with memcpy throughout.  Replace
	character-at-a-time copy loop with memcpy and pointer increments.
	(compare-defs): d1->argnames / d2->argnames might be null.

	* cpplib.c (copy_rest_of_line): Delete function.
	(skip_rest_of_line): Do all the work ourselves.
	(skip_string): New function.
	(parse_string): Use skip_string.
	(get_macro_name): New function.
	(check_macro_name): Delete.
	(copy_comment): Use CPP_RESERVE and CPP_PUTC_Q.
	(cpp_skip_hspace): Use CPP_BUMP_LINE.
	(handle_directive): ICE if we're called on a macro buffer.
	(do_define): Determine macro name and type (funlike/objlike)
	here.  Expunge all uses of MACRODEF.
	(cpp_push_buffer): Set line_base to NULL.
	(do_undef, read_line_number): Don't worry about getting a POP token.
	(eval_if_expression): Set/reset parsing_if_directive around
	cpp_parse_expr. Don't clear only_seen_white.
	(skip_if_group): Remove output_conditionals logic.  Use
	skip_rest_of_line.
	(cpp_get_token): Return ASSERTION, STRINGIZE, and TOKPASTE
	tokens under appropriate conditions.
	(cpp_unassert): Call do_unassert not do_assert.  Oops.

	* cppexp.c (parse_defined): New function, break out of
	cpp_lex.
	(cpp_lex): We now get CPP_ASSERTION tokens and can check them
	ourselves, with cpp_defined.
	* cppinit.c (cpp_handle_option, print_help): Delete -ifoutput.

	* gcc.dg/20000209-2.c: Turn off -pedantic-errors.
	* gcc.dg/strpaste-2.c: New.

2000-02-29  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (size_binop): Don't asert inputs are the same and
	have TYPE_IS_SIZETYPE set.
	(size_diffop): Likewise.

2000-02-29  Jason Merrill  <jason@casey.cygnus.com>

	* dwarfout.c (output_block): Output abstract blocks even if they
	don't have TREE_ASM_WRITTEN set.

	* calls.c (emit_library_call): Check for null REG.

2000-03-01  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* c-decl.c (current_function_decl): Move to toplev.c.
	(init_decl_processing): Don't add current_function_decl as a ggc
	root here.
	* dbxout.c (dbxout_symbol): Change return type to int.
	(dbxout_symbol_location, dbxout_syms): Likewise.
	(dbxout_block): Don't emit LBRAC/RBRAC pairs for blocks without
	any locals. Use current_function_func_begin_label if set.
	* dbxout.h (dbxout_symbol, dbxout_syms): Change return type.
	* dwarf2out.c (dwarf2out_begin_prologue): Set
	current_function_func_begin_label.
	* final.c (final_start_function): Reset it.
	* toplev.c (current_function_decl): Define it here.
	(current_function_func_begin_label): New variable.
	(main): Add both as ggc roots.
	* tree.h (current_function_func_begin_label): Declare.

Tue Feb 29 14:07:04 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c: Cleanups throughout: mostly white-space, but also
	some minor rearrangement of code.

Tue Feb 29 10:45:59 2000  Jeffrey A Law  (law@cygnus.com)

	* calls.c (emit_library_call): Do not abort if FUNCTION_ARG
	returns a PARALLEL.  Use emit_group_load and use_group_regs
	as needed.
	(emit_library_call_value): Similarly.

	* pa/t-pa: Use quadlib.c instead of quadlib.asm.
	* pa/quadlib.asm: Remove.
	* pa/quadlib.c: New file.

	* configure.in (hpux10, hpux11, PA32 mode): Use i128 float format.
	* configure: Rebuilt.

2000-02-29  Philip Blundell  <pb@futuretv.com>

	* config/arm/conix-elf.h: New file.
	* configure.in (arm*-*-conix*): New configuration.
	* configure: Regenerate.

2000-02-28  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (gen_block_die): Output abstract blocks even if they
	don't have TREE_ASM_WRITTEN set.

Mon Feb 28 21:07:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Eliminate DECL_FIELD_SIZE.
	* builtins.c (built_in_class_names, built_in_names): New variables.
	* c-decl.c (finish_struct): Set specified size in DECL_SIZE.
	* expr.c (expand_expr, case COMPONENT_REF): Get field size from
	DECL_SIZE, not DECL_FIELD_SIZE.
	* print-tree.c (print_node): Remove code that prints extra blank
	lines in some cases.
	Properly handle inline and builtin function cases.
	* stor-layout.c (layout_decl): Get specified size from DEC_SIZE.
	* tree.h (built_in_class_named, built_in_names): New declarations.
	(union tree_decl): Rename internal unions to u1 and u2 and change
	some of their components.
	Add new field built_in_class.
	(DECL_ALIGN, DECL_INCOMING_RTL, DECL_SAVED_INSNS, DECL_FRAME_SIZE):
	Reflect above changes.
	(DECL_FUNCTION_CODE, DECL_BUILT_IN_CLASS): Likewise.
	(DECL_SET_FUNCTION_CODE, DECL_FIELD_SIZE): Deleted.
	* objc/objc-act.c (objc_copy_list): Use DECL_SIZE, not DECL_FIELD_SIZE.
	(encode_field_decl): Likewise; also remove obsolete test for bitfield.

2000-02-28  Dmitri Makarov  <dim@windriver.com>

	* extend.texi: Document ARM's support for long/short calls.

	* invoke.texi: Document ARM's -mlong-calls command line switch.

	* config/arm/arm-protos.h (arm_is_longcall_p): Add prototype.
	(arm_encode_call_attribute): Add prototype.
	(arm_set_default_type_attribute): Add prototype.
	(arm_strip_name_encoding): Add prototype.

	* config/arm/arm.c (arm_init_cumulative_args): replace
	initialisation og 'long_calls' field with initialisation of
	'call_cookie' field.
	(enum arm_pragma_enum): New enum.
	(arm_pragma_long_calls): New static variable.
	(arm_process_pragma): Also process "#pragma long_calls_off".
	(arm_valid_type_attribute_p): Accept short_call attribute.
	(arm_comp_type_attributes): Check long/short call attributes.
	(arm_encode_call_attribute):  New function:  Encode long_call
	or short_call attribute in function name.
	(arm_set_default_type_attributes): New function: Assign
	default attributes to newly defined type.
	(current_file_function_operand): New function: Return true if
	the symbol is a function which has already been compiled.
	(arm_is_longcall_p): New function: Return true if the
	indicated function should be called via a long call.
	(arm_get_strip_length): New function.  Returns number of
	prefix characters to be stripped from a function's name.
	(arm_strip_name_encoding): New function.  Strip prefix characters
	from a function's name.

	* config/arm/arm.h (CUMULATIVE_ARGS): Replace 'long_call' field
	with 'call_cookie'.
	(SHORT_CALL_FAG_CHAR): Define.
	(LONG_CALL_FAG_CHAR): Define.
	(ENCODED_SHORT_CALL_ATTR_P): Define.
	(ENCODED_LONG_CALL_ATTR_P): Define.
	(ARM_NAME_ENCODING_LENGTHS): Define.
	(STRIP_NAME_ENCODING): Define.
	(ASM_OUTPUT_LABELREF): Define, and use to strip name encoding.
	(ARM_ENCODE_CALL_TYPE): Define.
	(ENCODE_SECTION): Invoke ARM_ENCODE_CALL_TYPE.
	(ARM_DECLARE_FUNCTION_SIZE): Define.
	(SET_DEFAULT_TYPE_ATTRIBUTES): Define.

	* config/arm/arm.md (call): Call arm_is_longcall_p to decide
	if a long call is needed.
	(call_value): Ditto.
	(call_symbol): Ditto.

	* config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Add invocation of
	ARM_DECLARE_FUNCTION_SIZE.

	* config/arm/pe.h (ARM_PE_FLAG_CHAR): Define.
	(SUBTARGET_NAME_ENCODING_LENGTHS): Define.
	(ARM_STRIP_NAME_ENCODING): Undefine.
	(STRIP_NAME_ENCODING): Undefine.
	(ASM_OUTPUT_LABELREF): Use arm_strip_name_encoding.
	(ASM_DECLARE_FUNCTION_NAME): Ditto.
	(ASM_OUTPUT_COMMON): Ditto.
	(ASM_DECLARE_OBJECT_NAME): Ditto.

	* config/arm/pe.c (arm_dllexport_name_p): Check for
	ARM_PE_FLAG_CHAR.
	(arm_dllimport_name_p): Ditto.
	(arm_mark_dllexport): Use ARM_PE_FLAG_CHAR.
	(arm_mark_dllimport): Ditto.

Mon Feb 28 22:11:12 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (DWARF_LINE_MIN_INSTR_LENGTH): Define.

2000-02-28  Mark Mitchell  <mark@codesourcery.com>

	* xcoffout.c (xcoffout_begin_function): Fix typo in previous change.

2000-02-28  Zack Weinberg  <zack@wolery.cumb.org>

	* tm.texi: Document new target switch, NO_BUILTIN_WCHAR_TYPE.
	* cppinit.c (builtin_array): Define __WCHAR_TYPE__ only if
	NO_BUILTIN_WCHAR_TYPE is not defined.
	(CPP_WCHAR_TYPE): Delete.
	* cccp.c (main): Don't change wchar_type if cplusplus.
	(special_symbol, initialize_builtins): Honor NO_BUILTIN_WCHAR_TYPE.

2000-02-28  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm-wince-pe.h (SIZE_TYPE): Define to "unsigned long".

Mon Feb 28 14:21:15 2000  Catherine Moore  <clm@cygnus.com>

	* config/pa/som.h (MAKE_DECL_ONE_ONLY): Define.
	(ASM_WEAKEN_LABEL): Define.

Mon Feb 28 13:07:19 MET 2000  Jan Hubicka  <jh@suse.cz>

	* expr.c (store_constructor): Do not emit USE.
	* rtl.h (stupid_life_analysis): Remove.

Mon Feb 28 07:03:27 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (number_blocks): Reset next_block_index based on
	what debugging format is used, not what is defined.

	* lcm.c: Minor reformatting throughout.
	(reg_dies, reg_becomes_live): Properly handle multiple hard regs.

	* toplev.c (rest_of_compilation): Account for time in
	optimize_mode_switching.

	* jump.c (jump_optimize_1): Don't call delete_barrier_successors
	if only marking labels.

Mon Feb 28 12:53:57 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Attempt to combine stack adjustments with
	pending stack adjustments.

Mon Feb 28 11:34:43 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* loop.c (reg_in_basic_block_p): Don't abort when falling through
	to the end of the function.

2000-02-27  Mark Mitchell  <mark@codesourcery.com>

	* emit-rtl.c (remove_unnecessary_notes): Remove notes for empty
	blocks.
	* final.c (next_block_index): Remove.
	(max_block_depth): Likewise.
	(pending_blocks): Likewise.
	(init_final): Don't initialize them.
	(final_start_function): Don't set next_block_index.  Set up
	BLOCK_NUMBER.
	(final_scan_insn): Use BLOCK_NUMBER, not next_block_index.
	* function.h (number_blocks): New function.
	* function.c (get_block_vector): New function.
	(identify_blocks): Use it.
	(reorder_blocks): Set NOTE_BLOCK.
	(number_blocks): New function.
	* tree.def (BLOCK): Add documentation for TREE_ASM_WRITTEN flag.
	* tree.h (BLOCK_NUMBER): New macro.
	(tree_block): Add block_num field.
	* dbxout.c (next_block_number): Remove.
	(dbxout_init): Don't set it.
	(dbxout_block): Only output blocks that have TREE_ASM_WRITTEN
	set.  Use BLOCK_NUMBER, rather than next_block_num, to determine
	block numbers.
	* toplev.c (rest_of_compilation): Always call
	find_loop_tree_blocks.  Fix indentation.
	* dwarf2out.c (next_block_number): Remove.
	(gen_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(gen_inlined_subroutine_die): Likewise.
	(gen_block_die): Only output blocks that have TREE_ASM_WRITTEN set.
	(decls_for_scope): Don't increment next_block_number.
	* dwarfout.c (next_block_number): Remove.
	(output_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(output_inlined_subroutine_die): Likewise.
	(output_block): Only output blocks that have TREE_ASM_WRITTEN set.
	(output_decls_for_scope): Don't increment next_block_number.
	* sdbout.c (next_block_number): Remove.
	(sdbout_block): Use BLOCK_NUMBER.
	(sdbout_begin_block): Simplify.
	* xcoffout.c (next_block_number): Remove.
	(xcoffout_block): Use BLOCK_NUMBER, not next_block_number.
	(xcoffout_begin_block): Don't set next_block_number.
	(xcoffout_begin_function): Likewise. Use BLOCK_NUMBER, not
	next_block_number.

Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
	(expand_builtin_strcpy): Pass correct type to size_binop.
	(expand_builtin_strcmp): Likewise.
	Clean up conditional structure.
	* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
	(complete_array_type): Don't use size_binop for MAXINDEX.
	* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
	(c_sizeof_nowarn, c_size_in_bytes): Likewise.
	(c_alignof): Use size_one_node.
	(build_unary_op): Pass arg of proper type to size_binop.
	(really_start_incremental_init, push_init_level): Use sizetype for
	constructor{,_bit,_unfilled}_index.
	(pop_init_label, output_init_element): Likewise.
	(output_pending_init_elements, process_init_element): Likewise.
	* calls.c (compute_argument_block_size): Field VAR is ssizetype.
	* expr.c (store_expr): Use size_int.
	(store_constructor): Use proper types for size_binop args.
	(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
	(expand_expr_unaligned): Likewise.
	(string_contant): Return object of sizetype.
	* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
	(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
	(ARGS_SIZE_TREE): Pass proper types to size_binop.
	* fold-const.c (int_const_binop): Refine when size_int is called.
	(fold_convert): Likewise.
	(size_int_wide): Rework to take KIND as arg, only take low order
	bits, handle new sizetype_tab datatype, and chain entries in
	size_table.
	(size_int_type_wide): New function.
	(size_binop): Validate types of arguments.
	(ssize_binop): Deleted.
	(size_diffop): New function.
	(extract_muldiv): Only fold division into multiplication for sizetypes.
	* function.c (assign_parms): Use size_diffop and make sure
	VAR field is of ssizetype; also pass proper type to size_binop.
	(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
	(round_down): Deleted from here.
	* store-layout.c (sizetype_tab): Now an array.
	(sizetype_set, early_root_list): New variables.
	(variable_size): Use size_one_node.
	(round_up): Pass proper type to size_binop.
	(round_down): Moved to here and corrected as above.
	(layout_record): Pass proper arg types to size_binop.
	(layout_type): Likewise.
	If sizetype_set is zero, record the type just laid out.
	(make_unsigned_type): Don't call set_sizetype;
	(make_signed_type): Likewise; also, call fixup_signed_type.
	(initialize_sizetypes): New function.
	(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
	set name of bitsizetype to "bit_size_type".
	Fix up type of sizes of all types made before call.
	* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
	* tree.c (fix_sizetype): Deleted.
	(build_common_tree_nodes): Call initialize_sizetypes.
	(build_common_tree_nodes_2): Don't call fix_sizetype.
	* tree.h (TYPE_IS_SIZETYPE): New macro.
	(initialize_sizetype): New declaration.
	(enum size_type_kind): New type.
	(struct sizetype_tab): Deleted.
	(sizetype_tab): Now array; adjust sizetype macros.
	(size_diffop, size_int_type_wide): New functions.
	(size_int_wide): Change number of args and type; access macros changed.
	(ssize_int, sbitsize_int): New macros.
	* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
	(ROUND_TYPE_SIZE_UNIT): New macro.

2000-02-27  Zack Weinberg  <zack@wolery.cumb.org>

	* c-lex.c (putback_buffer): Make 'buffer' an unsigned char *.

Sun Feb 27 07:44:17 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcov-io.h (__fetch_long, __store_long, __read_long, __write_long):
	Mark as possibly unused.

	* cse.c (cse_insn): Delete dead code involving tablejump.
	Pass CODE_LABEL, not LABEL_REF to gen_jump and reset INSN_CODE.

	* Makefile.in (libcpp.a): Start by deleting it.

2000-02-27  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* cpplib.h (enum file_change_code): Added rename_file.
	* cpplib.c (do_line): If a filename is given, set file_change to
	rename_file.
	(output_line_command): If file_change is rename_file, always
	output a # directive with the file name.

	* cpplib.c (do_pragma): Accept #pragma without consecutive token.

2000-02-26  Mark Mitchell  <mark@codesourcery.com>

	* integrate.c (copy_decl_for_inlining): Preserve TREE_ADDRESSABLE
	when copying a PARM_DECL or RESULT_DECL.

2000-02-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fix-header.c (recognized_function): Also fix prototypes for
	functions taking "void".

2000-02-26  Geoff Keating  <geoffk@cygnus.com>

	* reload1.c (do_output_reload): Check reg_reloaded_valid before
	looking at reg_reloaded_contents.

2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (STMP_FIXINC): New toggle.
	(LIBGCC2_DEPS): Delete all references.
	(stmp-headers): Delete target.  All references either deleted
	or changed to stmp-int-headers.
	(all.cross): Don't depend on stmp-headers or STMP_FIXPROTO.
	(LIBCPP_OBJS): Take out cppalloc.o.
	(cppalloc.o): Delete target.
	(stmp-int-hdrs): Depend on $(STMP_FIXINC).
	(gen-protos, fix-header): Link with libiberty.a.
	* build-make: Don't change FIXINCLUDES.  Override STMP_FIXINC
	to empty.

	* configure.in: Remove refs to strerror.
	* acconfig.h: Take out NEED_DECLARATION_STRERROR.
	* system.h: Take out strerror stanza.

	* cpperror.c (my_strerror): Delete function.
	(cpp_error_from_errno, cpp_notice_from_errno): Use xstrerror.
	* cppmain.c (main): Call xmalloc_set_program_name first thing.
	* cppalloc.c: Delete file.
	* gen-protos.c: Don't provide xrealloc.

	* fixinc/fixincl.c, fixinc/fixlib.c, fixinc/procopen.c: Use
	xstrerror throughout.

2000-02-26  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (undefine_null): the bypass pattern needs to
	match for DOS headers, too.
	* fixinc/inclhack.sh,fixincl.x: Regenerate.

2000-02-26  Geoff Keating  <geoffk@cygnus.com>

	* config/elfos.h (ASM_OUTPUT_LABELREF): Don't define.  The default
	is right for most ELF targets.
	* config/ns32k/ns32k.h (ASM_OUTPUT_LABELREF): Don't define.
	Let the default file use %U properly.
	* config/sh/elf.h (ASM_OUTPUT_LABELREF): Don't define.  Use the
	default.

	* config/fp-bit.c (pack_d): Properly handle rounding of denormal
	numbers.

Sat Feb 26 09:39:16 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (documented_lang_options): Correct spelling error.
	(decode_d_option, decode_f_option, main): Likewise.

	* toplev.c (print_time): Avoid SIGFPE when all_time is zero.

	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Use .set at
	to tell assembler it is permitted to expand large constants.

2000-02-25  Mumit Khan  <khan@xraylith.wisc.edu>

	* protoize.c: (AUX_INFO_SUFFIX): New macro.
	(aux_info_suffix): Use.
	(SAVE_SUFFIX): New macro.
	(save_suffix): Use.
	(munge_compile_parms): Fix typo in NUL. DJGPP supports /dev/null.
	(gen_aux_info_file): Use aux_info_suffix instead of ".X".
	(edit_file): Handle 8.3 restriction for DOS/DJGPP filenames.

	* invoke.texi (Running Protoize): Update documentation.

2000-02-25 Mark Elbrecht <snowball3@bigfoot.com>

	* i386/djgpp.h (CPP_PREDEFINES): Remove Unix defines.

2000-02-25  John Wehle  (john@feith.com)

	* rtlanal.c (find_last_value): Allow NULL_RTX for valid_to.

2000-02-25  Anthony Green  <green@cygnus.com>

	* toplev.c (rest_of_compilation): Rebuild jump labels if
	combine_instructions has created a new direct jump.
	* combine.c (try_combine): Add new_direct_jump_p argument.  Set it
	when appropriate.
	(combine_instructions): Call try_combine with new argument.
	Return non-null value when new direct jump instruction is created.
	* rtl.h: combine_instructions returns an int.

Fri Feb 25 19:49:08 2000  Jeffrey A Law  (law@cygnus.com)

	* cse.c (cse_insn): Replace the PATTERN of the insn with an new
	jump when changing a computed jump into a jump to a known
	target.

Fri Feb 25 19:22:44 2000  Graham Stott <grahams@rcp.co.uk>

	* resource.c (mark_referenced_resources): Changed use SET_DEST (...)
	to XEXP (..., 0) on RTL nodes which are not SET or CLOBBER.

	* i386.md (define_expand "clrstrsi"): Fix typo.

Fri Feb 25 18:49:39 2000  "K. Richard Pixley" <rich@microunity.com>

	* rtl.texi: Fix typo.

Fri Feb 25 20:02:35 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by
	UNITS_PER_WORD.  Change caller initial_elimination_offset.
	(rounded_frame_size): Take into account that argument pushed has
	changed.  Fix TARGET_ALIGN_DOUBLE problem.

2000-02-25  Geoff Keating  <geoffk@cygnus.com>

	* haifa-sched.c (schedule_block): Explain the real reason
	we delete REG_SAVE_NOTEs on the first insn of a block.
	Don't delete REG_SAVE_NOTES for NOTE_INSN_SETJMP.

2000-02-24  Mark Mitchell  <mark@codesourcery.com>

	* input.h (push_srcloc): New function.
	(pop_srcloc): Likewise.
	* toplev.c (push_srcloc): Define it.
	(pop_srcloc): Likewise.

2000-02-24  Richard Henderson  <rth@cygnus.com>

	* flow.c (life_analysis): When collecting reg info, clear
	regs_ever_live.

Thu Feb 24 22:06:52 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	Fix bug exposed by reload.c no longer rounding the frame
	size to BIGGEST_ALIGNMENT:
	* sh.c (rounded_frame_size): New function.
	(sh_expand_prologue, sh_expand_epilogue): Use it.
	(initial_elimination_offset): Likewise.

Thu Feb 24 20:04:11 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	Fix breakage from 6th Feb thread_prologue_and_epilogue_insns change:
	* sh-protos.h (sh_need_epilogue): Declare.
	* sh.c (sh_need_epilogue_known): New static variable.
	(sh_need_epilogue): New function.
	(function_epilogue): Clear need_epilogue_known.
	* sh.md (return): Split into expander / insn pattern.
	Make the expander conditional on ! sh_need_epilogue ().

2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>

	* machmode.h (get_mode_alignment): Declare.
	(GET_MODE_ALIGNMENT): Call it.
	* stor-layout.c (get_mode_alignment): New function. Make
	sure alignment is always power of 2.

2000-02-23  Zack Weinberg  <zack@wolery.cumb.org>

	* i386.h: Remove useless definition of "I386" and misleading
	comment above it.

2000-02-23  Zack Weinberg  <zack@wolery.cumb.org>

	* tree.h (TREE_SET_PERMANENT): New macro.  Document conditions
	under which TREE_PERMANENT will be set.
	* tree.c (make_node, copy_node, make_tree_vec, tree_cons,
	build1): Use TREE_SET_PERMANENT.
	* print-tree.c (print_node): Don't report value of
	TREE_PERMANENT if ggc_p is true.

	* c-common.c (c_get_alias_set): Don't use TREE_PERMANENT to
	decide whether to give a type a new alias set.
	* objc/objc-act.c (build_objc_string_object): Never copy the string.
	* tree.c (make_node): Set DECL_IN_SYSTEM_HEADER irrespective
	of value of 'obstack'.


2000-02-24  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_process_after_reload): Split all insns.

2000-02-23  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* cpplib.h (enum cpp_token): Added CPP_WCHAR and CPP_WSTRING.
	* cpplib.c (cpp_get_token): Produce them.
	* cppexp.c (cpp_lex): Handle them.

2000-02-23  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c (arm_comp_type_attributes): Simply and
	comment tests on type attributes.

Wed Feb 23 16:42:21 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* final.c (shorten_branches): Make value passed to LOOP_ALIGN
	conform to documentation.
	* sh.h (LOOP_ALIGN): If aligning loops, call sh_loop_align
	to check for special cases.
	* sh-protos.h (sh_loop_align): Declare.
	* sh.c (sh_loop_align): Define.

2000-02-22  Andrew Haley  <aph@cygnus.com>

	* config/mips/mips.h (GAS_ASM_SPEC): Pass -mgp32/-mgp64 to gas.
	(SIZE_TYPE): Is 32 bits when using -mgp32.
	(PTRDIFF_TYPE): Ditto.

Wed Feb 23 07:26:27 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (init_output_buffer): Handle case of null PREFIX.

2000-02-23  Zack Weinberg  <zack@wolery.cumb.org>

	* config/i386/i386.h: If IN_TARGET_LIBS is defined, make
	BIGGEST_FIELD_ALIGNMENT a constant.

2000-02-21  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (output_line_info): Put the marker for the end of
	the line number info at the actual end.
	(gen_struct_or_union_type_die): Use decl_function_context
	to check for local classes.
	* dwarfout.c (output_type): Likewise.

Tue Feb 22 01:38:57 2000  Jeffrey A Law  (law@cygnus.com)

	* pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Handle pass-by-reference
	for arguments with a mode, but no type.
	(FUNCTION_ARG_CALLEE_COPIES): Similarly.
	* t-pa (LIB2FUNCS_EXTRA): Add quadlib.asm.
	* pa/long_double.h: New file.
	* configure.in (hpux10, hpux11 configurations): hpux10 and hpux11
	both have 128bit wide long doubles.
	* configure: Rebuilt.

2000-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* defaults.h (ASM_OUTPUT_ASCII): Constify a char*.

	* flow.c (get_common_dest, chain_reorder_blocks, make_reorder_chain,
	fixup_reorder_chain, skip_insns_between_block): Add static prototypes.
	(life_analysis): Wrap variable `i' with macro ELIMINABLE_REGS.

	* haifa-sched.c (rank_for_schedule): Don't cast away const-ness.

	* integrate.c (compare_blocks, find_block): Likewise.

	* rtl.c (fatal_with_file_and_line): Add ATTRIBUTE_PRINTF_2.

	* rtl.h (set_file_and_line_for_stmt): Constify a char*.

	* stmt.c (stmt_status, set_file_and_line_for_stmt,
	expand_asm_operands): Likewise.

Mon Feb 21 17:06:27 2000  Jason Eckhardt  <jle@cygnus.com>

	* predict.c (estimate_probability): Added the pointer heuristic to
	the collection of static branch predictors.

2000-02-21  Catherine Moore  <clm@cygnus.com>

	* config/mips/mips.h (ASM_SPEC): Add -mfix700.
	* invoke.texi (-mfix7000): Document.

2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (init_output_buffer): Make it possible to output at
	least 32 characters if we're given a too long prefix.

2000-02-20  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (initializer_constant_valid_p): Call
	lang_expand_constant to	simplify the constant.

2000-02-20  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def(stdio_va_list):
	typedef needs to be disabled.
	* fixinc/inclhack.sh: regen
	* fixinc/fixincl.x: regen

2000-02-20  Geoff Keating  <geoffk@cygnus.com>

	* print-rtl.c (print_rtx): Don't print addresses when
	flag_dump_unnumbered.

2000-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.c (sparc_output_scratch_registers): Mark parameter with
	ATTRIBUTE_UNUSED.
	(sparc_va_arg, sparc_flat_output_function_prologue,
	sparc_flat_output_function_epilogue): Cast value to unsigned in
	comparison.
	(sparc_emit_float_lib_cmp): Remove unused variable `cmp'.

	* sparc.md: Add default case in switch.

2000-02-19  Richard Henderson  <rth@cygnus.com>

	* c-typeck.c (add_pending_init): Don't abort for multiple
	fields at the same offset.
	(pending_init_member): Test the correct member.

2000-02-19  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* except.c (start_dynamic_handler) : Use TYPE_MODE (integer_type_node)
	instead of SImode.
	(start_catch_handler) : Same.

2000-02-19  Brad Lucier  (lucier@math.purdue.edu)

	* Makefile.in: Have flow.o depend on $(EXPR_H)

Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (decl_attributes): Set DECL_SIZE_UNIT.
	* c-decl.c (duplicate_decls, finish_enum): Likewise.
	(finish_decl): Remove -Wlarger-than code from here.
	* flags.h (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	* fold-const.c (size_int_wide): No more HIGH parm; NUMBER is signed.
	Clean up checking to see if in table.
	(make_bit_field_ref): Remove extra parm to bitsize_int.
	* ggc-common.c (ggc_mark_tree_children): Mark DECL_SIZE_UNIT.
	* print-tree.c (print_node): Print DECL_SIZE_UNIT and TYPE_SIZE_UNIT.
	* stmt.c (expand_decl): Use DECL_SIZE_UNIT for stack checking size
	and for computing size of decl.
	* stor-layout.c (layout_decl): Set DECL_SIZE_UNIT.
	Move -Wlarger-than code to here.
	(layout_record): Remove extra arg to bitsize_int.
	Set TYPE_BINFO_SIZE_UNIT.
	(layout_union): Remove extra arg to bitsize_int.
	Use proper type for size of QUAL_UNION.
	(layout_type): Remove extra arg to bitsize_int.
	* toplev.c (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	(decode_W_option): Clean up id-clash and larger-than- cases.
	* tree.c (get_identifier, maybe_get_identifier): Remove unneeded casts.
	(expr_align, case FUNCTION_DECL): DECL_ALIGN is not defined.
	* tree.h (BINFO_SIZE_UNIT, TYPE_BINFO_SIZE_UNIT, DECL_SIZE_UNIT): New.
	(struct tree_decl): New field size_unit.
	(size_int_wide): No HIGH operand; NUMBER is now signed.
	(size_int_2): Deleted.
	(size_int, bitsize_int): Don't use it and rework args.
	* varasm.c (assemble_variable, output_constructor): Use DECL_SIZE_UNIT.

Fri Feb 18 20:01:58 2000  Jeffrey A Law  (law@cygnus.com)

	* pa/quadlib.asm (_U_QFgt, _U_Qfge): Fix flags for _U_Qfcmp call.

2000-02-18  Geoff Keating  <geoffk@cygnus.com>

	* invoke.texi (Warning Options): Add an explanation of why
	you might want the -Wfloat-equal flag.

Fri Feb 18 20:08:57 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
	* cppinit.c (new_pending_define): Add cast to avoid warning.
	* expmed.c (extract_bit_field): Likewise.
	* flow.c (enum reorder_skip_type): New type.
	(skip_insns_between_blcok): New it.
	Rework to avoid warning about possibly undefined variable.
	* function.c (assign_parms): Make thisparm_boundary unsigned.
	* genrecog.c (write_switch): Cast XWINT result to int.
	* lcm.c: Many static fcns and vars now #ifdef OPTIMIZE_MODE_SWITCHING.
	* mips-tfile.c (init_file): Make two versions of FDR initializer:
	one for MIPS and one for Alpha.
	(get_tag, copy_object): Add casts to avoid warnings.
	* optabs.c (init_one_libfunc): Cast NAME to (char *).
	* reload.c (find_reloads): Make TYPE enum reload_type.
	* sbitmap.c (dump_sbitmap): J is unsigned; don't use "1L".
	* unroll.c (unroll_loop): Initialize UNROLL_NUMBER.
	* varasm.c (compare_constant_1): Add cast to avoid warning.
	* config/alpha/alpha.c (alpha_emit_xfloating_libcall): Cast FUNC
	to (char *).
	(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
	Cast switch operand of size to int.
	(alpha_expand_epilogue): Always initialize fp_offset and sa_reg.
	* config/alpha/alpha.h (INITIAL_ELIMINATION_OFFSET): Add abort
	in unhandled case.

2000-02-18  Nick Clifton  <nickc@cygnus.com>

	* config/arm/elf.h (ASM_OUTPUT_ALIGN): Do not generate
	anything for an alignment of zero.

	* config/arm/thumb.h (ASM_OUTPUT_ALIGN): Do not generate
	anything for an alignment of zero.

2000-02-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* gcc.texi (Bug Reporting): Refer to bugs.html.
	(Bug Lists): Likewise.
	* system.h (GCCBUGURL): New preprocessor define.
	* rtl.c (fancy_abort): Use it.
	* gcc.c (main): Likewise.

2000-02-18  Richard Henderson  <rth@cygnus.com>

	* flow.c (INSN_VOLATILE, SET_INSN_VOLATILE, uid_volatile): Remove.
	(life_analysis_1): Subsume into ...
	(life_analysis): ... here.  Force PROP_REG_INFO off after reload.
	Use update_life_info for the relaxation.
	(update_life_info): Update REG_BASIC_BLOCK for registers live on
	entry and regs_live_at_setjmp.
	(set_noop_p): Simplify.
	(notice_stack_pointer_modification_1): Renamed from s/_1//.
	(record_volatile_insns): Split into ...
	(delete_noop_moves): ... here,
	(notice_stack_pointer_modification): ... here,
	(insn_dead_p): ... and here.
	(propagate_block): Don't query INSN_VOLATILE.
	(mark_used_regs): Mind !PROP_REG_INFO.
	* toplev.c (rest_of_compilation): Call mark_constant_function here,
	not in life_analysis.

Fri Feb 18 01:29:22 EST 2000  John Wehle  (john@feith.com)

	* loop.c (canonicalize_condition): New function,
	broken out of get_condition.
	(get_condition): Use it.
	* expr.h (canonicalize_condition): Prototype it.

	* tree.h (tree_int_cst_msb): Declare.
	* tree.c (tree_int_cst_msb): New function.

2000-02-17  Mark Mitchell  <mark@codesourcery.com>

	* stmt.c (set_file_and_line_for_stmt): Don't crash if cfun->stmt
	isn't set.

	* invoke.texi (-fmessage-length=n): Document.

2000-02-17  Jason Merrill  <jason@casey.cygnus.com>

	* bitmap.c (bitmap_operation): Don't leak bitmap elements.

2000-02-17  Mark Mitchell  <mark@codesourcery.com>

	* function.c (thread_prologue_and_epilogue_insns): Put a line note
	after the prologue.

2000-02-17  Nick Clifton  <nickc@cygnus.com>

	* config/arm/thumb.c: Replace includes of system headers with
	#include "system.h".

2000-02-16  Richard Henderson  <rth@cygnus.com>

	* configure.in (alpha-linux*, alpha-netbsd) [extra_parts]:
	Add crtbeginS.o and crtendS.o.
	* alpha/elf.h (STARTFILE_SPEC): Use crtbeginS.o.
	(ENDFILE_SPEC): Use crtendS.o.
	* alpha/t-crtbe (crtbeginS.o, crtendS.o): New targets.

	* alpha/crtbegin.asm (__do_frame_takedown): Merge into ...
	(__do_global_dtors_aux): ... here.  Call __cxa_finalize if
	shared and present.
	(__dso_handle): New variable.
	* alpha/crtend.asm (__do_global_ctors_aux): Remove runtime
	bias to __CTOR_END__.

2000-02-16  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (s-crtS, crtbeginS, crtendS): Prefix usage with $(T).

Wed Feb 16 21:40:04 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* longlong.h (__clz_tab): Declare as static to match definition.

2000-02-16 Mark Elbrecht <snowball3@bigfoot.com>

	* i386/xm-djgpp.h (LIBSTDCXX): Delete. Moved to config/i386/djgpp.h.
	(XREF_FILE_NAME): Define.

	* i386/djgpp.h (DATA_SECTION_ASM_OP): Define.
	(EH_FRAME_SECTION_ASM_OP): Define.
	(IDENT_ASM_OP): Define.
	(TEXT_SECTION_ASM_OP): Define.
	(CPP_SPEC): Define.
	(CTORS_SECTION_ASM_OP): Define.
	(CTOR_SECTION_FUNCTION): Use it.
	(DTORS_SECTION_ASM_OP): Define.
	(DTOR_SECTION_FUNCTION): Use it.

2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>

	* reg-stack.c (emit_swap_insn): Do not put a new insn before a
	NOTE_BASIC_BLOCK.

	* flow.c (dump_regset, debug_regset, dump_bb, debug_bb,
	debug_bb_n): New functions.
	(dump_flow_info, print_rtl_with_bb): Use dump_regset.
	* basic-block.h: Prototype new functions.

Wed Feb 16 21:07:53 2000  Denis Chertykov  <denisc@overta.ru>

	* configure.in: Add support for avr target.
	* configure: Rebuilt.

	* invoke.texi: Add AVR invocation docs.
	* install.texi: Add information about AVR.
	* md.texi: Add AVR constraint letters description.
	* extend.texi: Add description for AVR specific attributes.

2000-02-16  Jason Merrill  <jason@casey.cygnus.com>

	* fixinc/fixinc.svr4: Wrap byteorder.h with extern "C".

2000-02-16  Nick Clifton  <nickc@cygnus.com>

	* emit-rtl.c (emit_insn): Move RTL check into make_insn_raw.
	(make_insn_raw): Move RTL check here.

2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* version.c: Include gansidecl.h and version.h.

	* version.h: Wrap entire file in macro __GCC_VERSION_H__.

	* configure.in (gcc_version): When setting, narrow search to
	lines containing `version_string'.

	* Makefile.in (mainversion): Likewise.
	(GCC_H): New variable.
	(gcc.h): Delete target.
	(gcc.o, gccspec.o, cppspec.o): Depend on $(GCC_H), not gcc.h.
	(version.o): Depend on version.h.
	(dbxout.o): Don't depend on gcc.h.

Wed Feb 16 15:04:49 2000  Hans-Peter Nilsson  <hp@bitrange.com>
			  Michael Meissner  <meissner@cygnus.com>

	* md.texi (Simple Constraints): Add item about whitespace.
	* genoutput.c (strip_whitespace): New.
	(scan_operands) [MATCH_OPERAND, MATCH_SCRATCH]: Call
	strip_whitespace for constraints.
	Test pointer using NULL, not 0.

2000-02-16  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* cpplib.c (do_line): Pedwarn for #line > 32767.

	* c-lex.c (readescape): Warn about '\x', but do not reject it.

2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* gcc.c (default_compilers): Add new __GNUC_PATCHLEVEL__ define
	to default cpp spec.
	(do_spec_1): Add support for %v3 spec used by __GNUC_PATCHLEVEL__.
	* cpp.texi: Document __GNUC_PATCHLEVEL__.
	* cpp.1: Likewise.

	* objc/lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to
	default spec.

2000-02-15  Denis Chertykov  <denisc@overta.ru>

	* configure.in: Add support for avr target.

Wed Feb 16 03:21:43 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (OVERRIDE_OPTIONS): Don't set sh_addr_diff_vec_mode.
	(sh_addr_diff_vec_mode): Don't declare.
	* sh.c (sh_addr_diff_vec_mode): Delete.

Wed Feb 16 01:27:52 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.md (mulsi3_highpart): Add REG_EQUAL note to last insn.

Wed Feb 16 00:58:06 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.md (udivsi3_i1, divsi3_i1, umulhisi3_i, mulhisi3_i): Name.
	(smulsi3_highpart_i): Name.
	(udivsi3): Wrap emitted insns in REG_LIBCALL / REG_RETVAL notes.
	(divsi3, mulhisi3, umulhisi3, mulsidi3, umulsidi3): Likewise.
	(smulsi3_highpart, umulsi3_highpart): Likewise.

	(mulsidi3_i, umulsidi3_i): Make rtl describe operation
	correctly independent of endianness.
	(mulsidi3, umulsidi3): Now define_insn.  Hide details that
	confuse the optimizers.
	(mulsidi3+1, umulsidi3+1): New define_split.

Tue Feb 15 23:22:26 2000  Andrew Haley  <aph@cygnus.com>

	* config/sh/sh.md: Guard insn splits against illegal registers.
	* config/sh/sh.h: Correct comment about macros.

Tue Feb 15 22:30:36 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
			  Andrew MacLeod  <amacleod@cygnus.com>

	* Makefile.in (lcm.o): Depend on insn-attr.h.
	* basic-block.h (optimize_mode_switching): Declare.
	* lcm.c (tm_p.h, insn-attr.h): #include.
	(seginfo, bb_info): New structs.
	(antic, transp, comp, delete, insert) : New file-scope static variables.
	(new_seginfo, add_seginfo, make_preds_opaque, reg_dies): New functions.
	(reg_becomes_live, optimize_mode_switching): Likewise.
	* tm.texi: Add description of mode switching macros.
	* toplev.c (rest_of_compilation): Call optimize_mode_switching.

	* sh-protos.h (remove_dead_before_cse): Remove prototype.
	(fldi_ok, fpscr_set_from_mem): New prototypes.
	* sh.h (OPTIMIZATION_OPTION): Remove sh_flag_remove_dead_before_cse set.
	(CONST_DOUBLE_OK_FOR_LETTER_P, SECONDARY_INPUT_RELOAD_CLASS):
	Disable fldi for (TARGET_SH4 && ! TARGET_FMOVD).
	(sh_flag_remove_dead_before_cse): Remove declaration.
	(NUM_MODES_FOR_MODE_SWITCHING, OPTIMIZE_MODE_SWITCHING): New macros.
	(MODE_USES_IN_EXIT_BLOCK, MODE_NEEDED, MODE_AT_ENTRY): Likewise.
	(MODE_PRIORITY_TO_MODE, EMIT_MODE_SET): Likewise.
	* sh.c (broken_move): Disable fldi for (TARGET_SH4 && ! TARGET_FMOVD).
	(barrier_align): Allow for JUMP_INSNS containing a parallel.
	(machine_dependent_reorg): Remove sh_flag_remove_dead_before_cse set.
	(fldi_ok): New function.
	(get_fpscr_rtx): Add fpscr_rtx as GC root.
	(emit_sf_insn): Only generate fpu switches when optimize < 1.
	(emit_df_insn): Likewise.
	(expand_fp_branch, emit_fpscr_use, remove_dead_before_cse): Delete.
	(sh_flag_remove_dead_before_cse): Delete.
	(get_free_reg, fpscr_set_from_mem): New functions.
	* sh.md (movdf, movsf): Remove no_new_pseudos code.
	(return): Remove emit_fpscr_use / remove_dead_before_cse calls.

2000-02-15  Loren Rittle  <ljrittle@acm.org>

	* ginclude/stddef.h: Correct usage of _BSD_RUNE_T_ for FreeBSD.

2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (TREE_H, collect2.o, gcc.h, mips-tfile.o, cccp.o,
	cpphash.o, cppinit.o, protoize.o, unprotoize.o): Depend on version.h.

	* cccp.c: Include version.h and/or don't declare `version_string'.
	* collect2.c: Likewise.
	* alpha.c: Likewise.
	* arm/aof.h: Likewise.
	* arm/coff.h: Likewise.
	* arm/elf.h: Likewise.
	* arm/pe.h: Likewise.
	* arm/tcoff.h: Likewise.
	* arm/telf.h: Likewise.
	* arm/tpe.h: Likewise.
	* arm/vxarm.h: Likewise.
	* convex/convex.c: Likewise.
	* i386/dgux.c: Likewise.
	* i386/sun386.h: Likewise.
	* m88k/m88k.c: Likewise.
	* mcore/mcore-pe.h: Likewise.
	* mips/mips.h: Likewise.
	* romp/romp.h: Likewise.
	* sh/sh.c: Likewise.
	* cpphash.c: Likewise.
	* cppinit.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* gcc.c: Likewise.
	* gcc.h: Likewise.
	* mips-tfile.c: Likewise.
	* protoize.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.

	* version.c (version_string): Constify a char*.

	* version.h: New file.

2000-02-14  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add mcore-elf and mcore-pe targets.
	* configure: Regenerate.

	* NEWS: Add note that MCore port has been contributed.

	* invoke.texi: Document command line switches for MCore port.
	* install.texi: Add MCore to list of supported targets.

2000-02-14  Geoff Keating  <geoffk@cygnus.com>

	* collect2.c (main) [COLLECT_EXPORT_LIST]: If we have frames,
	then we will need to import the frame handling functions.
	(scan_prog_file) [COLLECT_EXPORT_LIST]: We will also need
	to import the frames themselves.

Mon Feb 14 13:31:01 2000  Stan Cox  <scox@cygnus.com>
			  Jason Eckhardt  <jle@cygnus.com>

	* basic_block.h: Added prototype for reorder_basic_blocks.
	* toplev.c: Changes to add -freorder-blocks and graph dump after
	block reordering is done.
	* flow.c (reorder_block_def): New structure for use during block
	reordering.
	(REORDER_BLOCK_*): New macros to access members of above structure.
	(skip_insns_between_block, get_common_dest, chain_reorder_blocks,
	make_reorder_chain, fixup_reorder_chain, reorder_basic_blocks): New
	functions for block reordering.

Mon Feb 14 11:24:44 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* gcc.texi (Passes): Fix typo.
	* md.texi (Standard Names): Ditto.
	* tm.texi (Storage Layout): Ditto.

2000-02-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (do_define): Only free the old definition if it
	actually had one.

2000-02-13   Neil Booth  <NeilB@earthling.net>

	* cppfiles.c (read_and_prescan): When emitting deferred
	newlines, test speccase[] again instead	of checking each
	possible whitespace character in turn.  When we encounter \r,
	look behind for \n first, then ahead.

2000-02-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cse.c (cse_altered): New internal flag.
	(cse_insn): Set it if we changed an insn.
	(cse_main): Clear cse_altered before each basic block.
	Only garbage collect if cse_altered is true afterward.

Sun Feb 13 14:12:28 2000  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sparc/sol2.h (LIB_SPEC): Link -ldl if profiling.

Sun Feb 13 13:21:55 2000  Jeffrey A Law  (law@cygnus.com)

	* combine.c (simplify_comparison): Fix typo.

Sun Feb 13 12:57:52 2000  Neil Booth <NeilB@earthling.net>

	* prefix.c (concat, lookup_key): Use xmalloc and xrealloc
	consistently.

2000-02-13  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* flow.c (flow_loop_tree_node_add): Use better algorithm by passing
	previously inserted node instead of root node.	Caller changed.

2000-02-13  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* basic-block.h (FLOW_LOOP_FIRST_BLOCK, FLOW_LOOP_LAST_BLOCK): Delete.

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

	* crtstuff.c (__do_global_ctors_aux, __reg_frame_ctor,
	__dereg_frame_dtor): Add prototype argument.

	* gthr-dce.h (__gthread_active_p, __gthread_once): Likewise.

	* gthr-posix.h (__gthread_active_p, __gthread_once): Likewise.

	* gthr-solaris.h (__gthread_active_p, __gthread_once): Likewise.

	* gthr-vxworks.h (__gthread_once): Likewise.

	* gthr-win32.h (__gthread_active_p, __gthread_once): Likewise.

Sat Feb 12 01:44:26 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_emit_restore_regs_using_mov): Break out from ...
	(ix86_expand_epilogue): ... here. Use mov instead of add to restore
	stack pointer in functions w/o saved registers, output LEAVE more often
	on TARGET_USE_LEAVE machines.

2000-02-07  Dmitri Makarov  <dim@wrs.com> & Bernd Schmidt <bernds@redhat.com>

	* config/arm/arm.c (arm_init_cumulative_args); New function:
	Initlaise the CUMULATIE_ARGS strcuture for a function
	definition.
	(arm_function_arg): New function: Determine where to place a
	function's argument.  Also handles deciding the function's
	call cookie.
	(current_file_function_operand): New function: Return true if
	the symbol is a function which has already been compiled.
	(arm_is_long_call_p): New function: Return true if the
	indicated function should be called via a long call.
	(arm_valid_type_attribute_p): New function: Return true if the
	attribute is a valid, arm specific, attribute.
	(arm_comp_type_attribute): New function: Return true if the
	two types have compatible, arm specific, attributes.

	* config/arm/arm.h (CUMULATIVE_ARGS): Redefine to be a
	structure.
	(FUNCTION_ARG): Redefine to call arm_function_arg.
	(FUNCTION_ARG_PARTIAL_NREGS): Redefine to use correct
	structure field.
	(INIT_CUMULATIVE_ARGS): Redefine to call
	arm_init_cumulative_args.
	(FUNCTION_ARG_ADVANCE): Redefine to use correct structure
	field.
	(SETUP_INCOMING_VARARGS): Redefine to use correct structure
	field.
	(ARM_MARK_NEARBY_FUNCTION): New macro: Mark already compiled
	functions.
	(ENCODE_SECTION): Add call to ARM_MARK_NEARBY_FUNCTION.
	(VALID_MACHINE_TYPE_ATTRIBUTE): Define.
	(COMP_TYPE_ATTRIBUTES): Define.

	* config/arm/arm.md (call): Call arm_is_long_call_p to decide
	if a long call is needed.
	(call_value): Call arm_is_long_call_p to decide if a long call
	is needed.
	(call_symbol): Call arm_is_long_call_p to decide if a long call
	is needed.

	* config/arm/arm-protos.h: Add prototype for arm_is_long_call_p.

2000-02-11  Denis Chertykov  <denisc@overta.ru>

	* README.AVR: New file with information about the avr ports.
	* config/avr: New directory with avr port files.

2000-02-11  Andreas Jaeger  <aj@suse.de>

	* fixinc/Makefile.in (FIXINC_DEFS): Remove unneeded @fixinc_defs@.

2000-02-11  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c: Fix formatting, update commentary.
	(dump_definition): Take three separate arguments instead of a
	MACRODEF structure argument.
	* cpphash.h: Update prototype of dump_definition.
	* cppinit.c (cpp_finish): Update call of dump_definition.

	* cpplib.c (do_define): Always create new hash entry with
	T_MACRO type.  Remove redundant check for redefinition of
	poisoned identifier.  Update call of dump_definition.
	(do_undef): Don't call check_macro_name.  Rename sym_length to
	len.
	(do_error, do_warning): Don't use copy_rest_of_line or
	SKIP_WHITE_SPACE.
	(do_warning): Don't use pedwarn for the actual warning,
	only the notice about its not being in the standard.  (Fixes
	bug with #warning in system headers.)
	(do_ident): Stricter argument checking - accept only a single
	string after #ident.  Also, macro-expand the line.
	(do_xifdef): Use cpp_defined.  De-obfuscate.

	(do_pragma): Split out specific pragma handling to separate
	functions.  Use get_directive_token.  Update commentary.  Do
	not pass on #pragma once or #pragma poison to the front end.
	(do_pragma_once, do_pragma_implementation, do_pragma_poison,
	do_pragma_default): New.

Feb 11 12:30:53 2000  Jeffrey A Law  (law@cygnus.com)

	* jump.c (jump_optimize_1): The first operand in a relational
	can be a CONST_INT.
	* optabs.c (emit_conditional_move): Handle relationals which
	have a known true/false result.

2000-02-11  Geoff Keating  <geoffk@cygnus.com>

	* function.c (thread_prologue_and_epilogue_insns): Don't insert
	a RETURN insn into a block which already ends with a jump.

2000-02-11  Geoff Keating  <geoffk@cygnus.com>

	* haifa-sched.c (BUF_LEN): Increase a lot.

2000-02-11  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add tm_p_file specification for thumb targets.
	* configure: Regenerate.

	* config/arm/thumb-protos.h: New file: Prototypes for exported
	functions defined in thumb.c.

2000-02-11  Robert Lipe  <robertl@sco.com>

	* Makefile.in (bootstrap-lean): Remove additional files.
	(bootstrap2-lean): Likewise.
	(VOL_FILES): List of files for above.

2000-02-11  Nathan Sidwell  <nathan@acm.org>

	* cpphash.c (special_symbol): Remove spurious argument to
	cpp_lookup.

2000-02-11  Joel Sherrill (joel@OARcorp.com>

	* configure.in: (i*86-*-rtems*): Swapped elf and coff
	stanzas.
	* configure: Rebuilt.

2000-02-11  Rodney Brown  <RodneyBrown@pmsc.com>

	* pa-protos.h: Wrap function_arg_padding in TREE_CODE #ifdef.

Fri Feb 11 02:59:05 2000  Jeffrey A Law  (law@cygnus.com)

	* pa.c, pa.h: Remove trigraph sequences within comments.

Fri Feb 11 02:51:56 2000  Pavel Roskin <pavel_roskin@geocities.com>

	* invoke.texi (PPC Options): -mno-new-mnenomics -> -mold-mnemonics.

Fri Feb 11 02:48:30 2000  Brad Lucier  (lucier@math.purdue.edu)

	* sbitmap.h: Make SBITMAP_ELT_BITS unsigned.

2000-02-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (fp_zero_operand): Check for CONST_DOUBLE.

2000-02-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (ASM_GLOBALIZE_LABEL): Use c4x_global_label.
	(ASM_OUTPUT_EXTERNAL): Use c4x_external_ref.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.
	(ASM_FILE_END): Use c4x_file_end.
	* config/c4x/c4x.c (c4x_global_label): New function.
	(c4x_external_ref, c4x_file_end): Likewise.

	* config/c4x/c4x-protos.h (c4x_global_label): Add prototype.
	(c4x_external_ref, c4x_end_file): Likewise.

2000-02-10  Zack Weinberg  <zack@wolery.cumb.org>

	* cppexp.c: Don't include cpphash.h.
	(parse_charconst, cpp_lex): Use cpp_defined.
	(cpp_lex): Use get_directive_token throughout.  Remove
	unnecessary cases from switch.  Move assertion-handling code
	down to OTHER case.
	(cpp_parse_expr): If we see '+' or '-', check the context to
	determine if they are unary or binary operators.  Streamline
	the jumps a bit.  Do not call skip_rest_of_line.

	* cpplib.c: Make skip_rest_of_line and cpp_skip_hspace
	static.  Export get_directive_token.  Update commentary.
	(cpp_defined): New function.
	(do_define): Remove reference to T_PCSTRING.  Call
	free_definition to release memory for old definition, when
	redefining a macro.
	(eval_if_expression): Set only_seen_white to 0 before calling
	cpp_parse_expr.  Call skip_rest_of_line after it returns.
	(cpp_read_check_assertion): Don't preserve a pointer into the
	token buffer across a call to cpp_get_token.

	* Makefile.in (cppexp.o): Don't depend on cpphash.h.
	* cppfiles.c (redundant_include_p): Use cpp_defined.
	* cpphash.c (free_definition): New function.
	(delete_macro): Use it.  Update commentary.
	* cpphash.h: Typedef HASHNODE here.  Prototype cpp_lookup and
	free_definition.
	* cpplib.h: Don't typedef HASHNODE here. Delete T_PCSTRING
	from enum node_type.  Prototype cpp_defined and get_directive_token.
	Don't prototype cpp_lookup, skip_rest_of_line, or cpp_skip_hspace.

	* fix-header.c (check_macro_names): Use cpp_defined.
	(read_scan_file): Set inhibit_warnings and inhibit_errors in
	the options structure.

2000-02-10  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* c-pragma.c (maximum_field_alignment): Remove duplicate declaration.

2000-02-10  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (add_abstract_origin_attribute): Check TREE_CODE (origin)
	rather than die->die_tag.

Thu Feb 10 16:26:49 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (make_extraction, force_to_mode): Avoid warning on
	mixed-signedness conditionals.
	(make_field_assignment, nonzero_bits): Likewise.
	* expmed.c (store_fixed_bit_field): ALIGN arg now unsigned.
	(store_split_bit_field, extract_split_bit_field): Likewise.
	(extract_fixed_bit_field, store_bit_field,
	* expr.c: Change alignment to be unsigned everywhere.
	(move_by_pieces, store_constructor_field, store_constructor):
	Alignment parm is unsigned.
	(emit_block_move, emit_group_load, emit_group_store): Likewise.
	(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump): Likewise.
	(move_by_pieces_ninsns, clear_by_pieces): Likewise.
	Compare align with GET_MODE_ALIGNMENT.
	(expand_expr_unaligned): Pointer to alignment is pointer to unsigned.
	(get_inner_reference): Likewise.
	(copy_blkmode_from_reg, emit_push_insn): Remove unneeded casts.
	(expand_assignment): Local vars for alignment now unsigned.
	(store_constructor, store_field, expand_expr, do_jump): Likewise.
	(do_compare_and_jump): Likewise.
	(store_field): Call new function expr_align.
	* expr.h (emit_block_move, emit_group_load, emit_group_store):
	Alignment arg now unsigned.
	(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump, store_bit_field): Likewise.
	(extract_bit_field): Likewise.
	* fold-const.c (add_double): Add cast to eliminate signedness warning.
	* machmode.h (GET_MODE_ALIGNMENT): Result is unsigned.
	(get_best_mode): Alignment arg is unsigned.
	* rtl.h (move_by_pieces): Likewise.
	* store-layout.c (maximum_field_alignment, set_alignment):
	Now unsigned.
	(layout_decl): Alignment arg is now unsigned.
	Remove unneeded casts.
	(layout_record, layout_union, layout_type): Remove unneeded casts.
	Local alignment variables now unsigned.
	(get_best_mode): Alignment arg now unsigned.
	* tree.c (expr_align): New function.
	* tree.h (expr_align): Likewise.
	(maximum_field_alignment, set_alignment): Now unsigned.
	(get_inner_reference): Alignment argument is now pointer to unsigned.
	* varasm.c (assemble_variable): Add cast to eliminate warning.

Thu Feb 10 12:56:47 2000  Jim Wilson  <wilson@cygnus.com>

	* expmed.c (store_bit_field): If op0 and fieldmode are the same size,
	then store directly into op0.

	* calls.c (expand_call): When emitting a NOTE_INSN_SETJMP, search for
	the CALL_INSN, and emit the note immediately after it.

2000-02-10  Nick Clifton  <nickc@cygnus.com>

	* config/arm/thumb.md (epilogue): Include a (return) in the
	generated insn, and emit it using emit_jump_insn not
	emit_insn.

Thu Feb 10 18:28:59 MET 2000  Jan Hubicka  <jh@suse.cz>

	* function.c (assign_temp): Change zero-sized arrays to size 1.
	* integrate.c (expand_inline_function): Do not update
	stack_alignment_needed
	* i386.c (compute_frame_size): Remove #ifdef PREFERRED_FRAME_BOUNDARY,
	add some sanity checking, remove optimization for function with
	zero frame size.

2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* flow.c (mark_regs_live_at_end): Delete unused variables.

	* ggc-page.c (ggc_page_print_statistics): bzero -> memset.

	* integrate.c (copy_rtx_and_substitute): Wrap variable `alignment'
	in macro FRAME_GROWS_DOWNWARD.

	* stmt.c (expand_end_bindings): Delete unused variable.

	* unroll.c (iteration_info): Mark parameter `loop' with
	ATTRIBUTE_UNUSED.

2000-02-10  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* fixinc/server.c (load_data): Return NULL if the marker line is
	not found.
	(run_shell): If load_data returns NULL, retry the command once, in
	a new shell.

	* configure: Rebuilt.

2000-02-09  Bruce Korb  <bkorb@gnu.org>

	* gcc/fixincludes:  ** DELETED **
	* gcc/fixcpp:  ** DELETED **
	* gcc/fixinc-nt.sed:  ** DELETED **
	* gcc/just-fixinc:  ** DELETED **
	* gcc/Makefile.in:  Removed out-dated commentary
	* gcc/configure.in: Removed fast-fixincludes disablement.
	* MAINTAINERS(Ian Taylor) moved to "Write after approval" group.

2000-02-09  Clinton Popetz  <cpopetz@cygnus.com>
	* function.c (thread_prologue_and_epilogue_insns): Uncomment
	last change.

2000-02-09  Richard Henderson  <rth@cygnus.com>

	* jump.c (delete_insn): Don't delete user labels at -O0.

2000-02-09  Robert Lipe  <robertl@sco.com>

	* Makefile.in (gen-protos): Don't depend on HOST_LIBDEPS.
	Don't link with HOST_LIBS.

2000-02-09  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in: Correct --help text for --with-dwarf2.
	Put tm-dwarf2.h after other tm files, if it's requested.
	* configure: Regenerate.
	* config/tm-dwarf2.h: #undef PREFERRED_DEBUGGING_TYPE before
	defining it.

2000-02-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h: Provide HASHNODE typedef and forward decl of
	struct hashnode only.  Kill cpp_hashnode typedef.  MACRODEF,
	DEFINITION, struct hashnode, struct macrodef, struct
	definition, scan_decls prototype, default defn of
	INCLUDE_LEN_FUDGE moved elsewhere.

	* cpphash.h: MACRODEF, DEFINITION, struct macrodef, struct
	definition, and struct hashnode moved here. Remove the unused
	'predefined' field from struct definition.  Replace the 'args'
	union with its sole member.  All users updated (cpphash.c).
	Delete HASHSTEP and MAKE_POS macros, and hashf prototype.  Add
	multiple include guard.

	* cpphash.c (hashf): Make static; use better algorithm; drop
	HASHSIZE parameter; return an unsigned int.
	(cpp_lookup): Drop HASH parameter.  PFILE parameter is
	used. Calculate HASHSIZE modulus here.
	(cpp_install): Drop HASH parameter. Calculate HASHSIZE modulus
	here.
	(create_definition): Drop PREDEFINITION parameter.
	* cpplib.c (do_define): Don't calculate a hash value here.
	Don't pass (keyword == NULL) to create_definition.

	* scan.h: Prototype scan_decls here.
	* cppfiles.c: Move INCLUDE_LEN_FUDGE default defn here.
	* cppexp.c, cppfiles.c, cppinit.c, cpplib.c, fix-header.c: All
	callers of cpp_lookup and cpp_install updated.

	* cpphash.c (macarg): Hoist all the flag diddling out of the
	function...
	(macroexpand): ... and out of the loop that calls macarg.
	Skip over the initial paren before macro arguments with
	cpp_get_non_space_token; point may be some distance before
	that paren.  Abort if it's not there.

	* cpplib.c (parse_clear_mark): Delete function.
	(parse_set_mark, parse_goto_mark): Make static.
	(ACTIVE_MARK_P): New macro.
	(skip_block_comment, skip_line_comment): Do not bump the line
	if ACTIVE_MARK_P is true.
	(cpp_pop_buffer): The buffer to be popped may not have an
	active mark.
	(cpp_get_token): When looking for the initial paren before
	macro arguments, only set a mark in a file buffer, Always
	return to that mark before proceeding to call macroexpand or
	return a NAME token.

	* cpplib.h: Remove prototypes of parse_set_mark,
	parse_clear_mark, parse_goto_mark.
	(struct cpp_options): Rename 'put_out_comments' to
	'discard_comments' and invert its sense.
	* cppinit.c, cpphash.c, cpplib.c: All users of
	put_out_comments changed to use discard_comments, with
	opposite sense.

2000-02-09  Clinton Popetz  <cpopetz@cygnus.com>

	* function.c (thread_prologue_and_epilogue_insns): Don't delete
	the edge from a block that both jumps and falls through to the
	fallthru block.

2000-02-09  Scott Bambrough  <scottb@netwinder.org>

	* config/arm/arm.md (movsi): In PIC mode, make sure that a
	constant source address is legitimate.

2000-02-09  Philip Blundell  <pb@futuretv.com>

	* config/arm/arm.c (legitimize_pic_address): Handle LABEL_REF
	correctly.

	* config/arm/arm.h (LEGITIMATE_CONSTANT_P): Allow anything when
	generating PIC.
	(LEGITIMATE_PIC_OPERAND): Disallow references to labels.

2000-02-09  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (cpp_define, cpp_undef): Make sure the stacked buffer
	ends with a newline and a NUL.  Don't be so clever manipulating
	strings.

Wed Feb  9 14:18:08 MET 2000  Jan Hubicka  <jh@suse.cz>

	* reload1.c (reload) Align stack frame to cfun->stack_alignment_needed,
	not to BIGGEST_ALIGNMENT.

2000-02-08  Geoff Keating  <geoffk@cygnus.com>

	* dwarf2.h (DW_CFA_GNU_negative_offset_extended): New constant.
	* dwarf2out.c (dwarf_cfi_name): Print name of new constant.
	(reg_save): Use DW_CFA_GNU_negative_offset_extended when needed.
	(output_cfi): Handle output of DW_CFA_GNU_negative_offset_extended.
	* frame.c (execute_cfa_insn): Handle
	DW_CFA_GNU_negative_offset_extended.

2000-02-08  Richard Henderson  <rth@cygnus.com>

	* flow.c (tidy_fallthru_edges): Split out from ...
	(delete_unreachable_blocks): ... here.
	(find_basic_blocks): Use it.

Tue Feb  8 15:51:50 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (expand_decl): Do set RTX_UNCHANGING_P for TREE_READONLY.

2000-02-08  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (GEN_PROTOS_OBJS): Remove libcpp.a.
	(gen_protos.o): Don't depend on cpplib.h or cpphash.h.
	(fix-header.o): Don't depend on cpphash.h.

	* scan.c (hashstr): New function.
	* scan.h: Prototype it.
	* fix-header.c: Don't include cpphash.h.  Use hashstr.
	* gen-protos.c: Don't include cpphash.h or cpplib.h.  Use
	hashstr.  Report hash table statistics.  Add private
	definition of xrealloc.

2000-02-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i386.h (TARGET_SWITCHES): Fix typo in option name.

2000-02-08  Clinton Popetz  <cpopetz@cygnus.com>

	* function.c (thread_prologue_and_epilogue_insns): Don't replace
	jumps with returns unless they are jumps to the fallthru block.

Tue Feb  8 07:53:55 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (addqi3_cc): Fix constraints.

Tue Feb  8 01:39:45 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* function.c (emit_return_into_block): Wrap in #ifdef HAVE_return.

2000-02-07  Mark Mitchell  <mark@codesourcery.com>

	* cpplib.c (cpp_get_token): Call CPP_BUMP_LINE after reading a
	carriage return after a macro name.

2000-02-07  Fred Fish  <fnf@be.com>

	* i386/beos-elf.h: (ASM_IDENTIFY_GCC): Define to nothing
	so the gcc2_compiled symbol doesn't confuse BeOS debuggers.

2000-02-07  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (deps_output): Count spacers in deps_column.

2000-02-07  Neil Booth  <NeilB@earthling.net>

	* cppinit.c (initialize_dependency_output): If there is no
	suffix, don't try to look for known suffixes.  Use strrchr.
	(cpp_start_read): Remove duplicate initialization.

Mon Feb  7 18:36:41 MET 2000  Jan Hubicka  <jh@suse.cz>

	* calls.c (compute_argument_block_size): New argument
	preferred_stack_boundary.
	(expand_call): update cfun->preferred_stack_boundary, update call of
	compute_argument_block_size
	(emit_library_call): Increate cfun->preferred_stack_boundary
	to PREFERRED_STACK_BOUNDARY
	(emit_library_call_value): Likewise.
	* explow.c (allocate_dynamic_stack_spave): Likewise.
	* function.c (prepare_function_start): Set
	cfun->preferred_stack_boundary
	* function.h (struct function): Add preferred_stack_boundary field.
	* integrate.c (expand_inline_function): Update
	cfun->preferred_stack_boundary and cfun->stack_alignment_needed.
	(copy_rtx_and_substitute): Align frame to stack_alignment_needed only.
	* i386.c (compute_frame_size): Use cfun->preferred_stack_boundary.

2000-02-06  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.c (my_strerror, cpp_error, cpp_error_with_line,
	cpp_error_from_errno, cpp_warning, cpp_warning_with_line,
	cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Move to cpperror.c.
	(cpp_print_file_and_line, v_cpp_error, v_cpp_warning,
	v_cpp_error_with_line, v_cpp_warning_with_line,
	cpp_message_from_errno, cpp_perror_with_name): Delete.

	* cpperror.c (cpp_print_containing_files): Take starting
	buffer as argument.
	(cpp_file_line_for_message): Rename to cpp_print_file_and_line.
	(v_cpp_message): Now called directly by all entry points.
	Remove -1 case.
	(cpp_pfatal_with_name, cpp_message): Delete.
	(cpp_notice_from_errno, cpp_ice): New functions.
	(cpp_notice): Is now for reporting error conditions, just
	without an associated file.
	(cpp_error, cpp_error_with_line): Don't do anything if
	opts->inhibit_errors is on.
	(cpp_pedwarn_with_file_and_line): Take column argument also.

	* cpplib.h: Update prototypes of exported functions.
	(struct cpp_options): Add inhibit_errors.

	* cppalloc.c, cppfiles.c: Use fprintf not cpp_notice for
	non-error messages.  Include intl.h.

	* cppinit.c, cppmain.c: Likewise.  Also, use
	cpp_notice_from_errno instead of cpp_perror_with_name or
	cpp_pfatal_with_name, and cpp_notice instead of cpp_message.

	* cppexp.c, cpphash.c, cppinit.c, cpplib.c: Use cpp_ice to
	report internal errors.

	* cpplib.c (do_define): Switch bcopy to memcpy.
	Give cpp_pedwarn_with_file_and_line a dummy column argument.

	* cpplib.c (copy_rest_of_line): Revert previous change: don't
	bail out early if we hit a line comment.

2000-02-06  Richard Henderson  <rth@cygnus.com>

	* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
	* basic-block.h: Declare them.
	* emit-rtl.h (active_insn_p): New.
	(next_active_insn, prev_active_insn): Use it.
	* rtl.h: Declare it.
	* function.c (emit_return_into_block): New.
	(thread_prologue_and_epilogue_insns): Insert return insns instead
	of epilogues when possible.
	* jump.c (jump_optimize_1): Remove code to insert a return insn
	on the fallthru to the exit block.

	* i386.c (ix86_can_use_return_insn_p): Fail for large poped args
	and for non-empty stack frames.
	* i386.md (return): Expand to return-pop as needed.

2000-02-06  Richard Henderson  <rth@cygnus.com>

	* simplify-rtx.c (simplify_relational_operation): Canonicalize
	constant to op1 for testing.

2000-02-06  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (*ldi_on_overflow): New pattern.
	(fixuns_truncqfqi2): Use it.

2000-02-06  Richard Henderson  <rth@cygnus.com>

	* i386.c (ix86_agi_dependant): Handle pro_epilogue_adjust_stack
	as a TYPE_LEA insn.

	* i386.md (widening and peepholes): Mask the constant instead of
	using gen_lowpart.

2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (read_and_prescan) [case SPECCASE_QUESTION]: Bump
	input pointer before possibly branching off to the backslash
	code.
	* cpphash.c (macroexpand): Correctly delete \r escapes when
	stringifying parameters.
	* cpplib.c (copy_rest_of_line): Go directly to skip_block_comment
	if we can; bail out early if we hit a line comment.
	(handle_directive): Treat '# 123' in an .S file just like
	'# <punctuation>'.  Discard the shifted '#' if we hit '#\n'.
	Return 1 for '# not_a_directive'.
	(get_directive_token): Pop macro buffers here, so that
	cpp_get_token can't sneakily move past a newline.
	Add sanity checks.
	(cpp_get_token): goto randomchar if handle_directive returns 0.

	* cppalloc.c: Update copyright.
	* cpplib.c: Merge all the static function prototypes into one
	block.
	* cpplib.h: Remove #if 0 block.

	* cpperror.c: Remove #ifdef EMACS block.
	* cppmain.c: Likewise.
	* cpphash.c: Remove #if 0 blocks.
	* cppinit.c: Remove #if 0 blocks, and the -lint option.
	* cpplib.c: Remove #if 0 blocks and code referencing
	pcp_inside_if or for_lint.  Remove duplicate error message.
	Fix error messages for #else after #else or #elif.  Reformat.
	Remove archaic TODO list.
	* cpplib.h: Remove pcp_inside_if and for_lint flags.

2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>

	* i386/osf1elf.h: Add missing backslash to multiline string.

2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* longlong.h [sparc] (udiv_qrnnd): Avoid stringifying macro arg.

2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (c-common.o): Depend on $(EXPR_H).

	* c-common.c: Include expr.h.

	* c-pragma.c (mark_align_stack): Add prototype.

	* caller-save.c (add_stored_regs): Likewise.

	* combine.c (record_promoted_value): Likewise.

	* i386.c (ix86_sched_reorder_pentium, ix86_sched_reorder_ppro):
	Likewise.

	* cppinit.c (new_pending_define): Likewise.

	* cpplib.c (skip_block_comment, skip_line_comment): Likewise.

	* dwarf2out.c (save_rtx, splice_child_die, reverse_die_lists,
	AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
	AT_addr, AT_lbl, get_AT_ref, free_AT, free_die, local_scope_p,
	class_scope_p): Likewise.

	* dwarf2out.h (dwarf2out_set_demangle_name_func,
	dwarf2out_add_library_unit_info): Likewise.

	* ggc.h (ggc_page_print_statistics): Likewise.

	* haifa-sched.c (propagate_deps): Likewise.

	* reg-stack.c (next_flags_user, record_label_references): Likewise.

	* rtl.h (set_stack_check_libfunc): Likewise.

	* toplev.h (set_fatal_function): Likewise.

	* toplev.c (set_fatal_function): Delete prototype.

	* diagnostic.c: Deconstify functions returning malloc'ed ptrs.

2000-02-05  Geoff Keating  <geoffk@cygnus.com>

	* ginclude/ppc-asm.h (FUNC_START): Use USER_LABEL_PREFIX.
	(FUNC_END): Likewise.

2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* caller-save.c: Include tm_p.h.

2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* Makefile.in (libgcc.a): Add $(LIBGCC1) to libgcc.a after $(LIBGCC2).

2000-02-04  Neil Booth  <NeilB@earthling.net>

	* cccp.c (main): Check 'dir' for a NULL pointer before passing
	it to strcmp.

2000-02-04  Zack Weinberg  <zack@wolery.cumb.org>

	* recog.h: Remove NO_MD_PROTOTYPES ifdefs.
	* genflags.c: Use the max_operand_1 logic from genemit.c to
	calculate how many arguments gen_insn prototypes have.  Remove
	NO_MD_PROTOTYPES ifdefs from the generated file.
	* genoutput.c: Don't define NO_MD_PROTOTYPES in the generated
	file.  Cast gen_insn initializers to insn_gen_fn.
	* config/alpha/vms.h: Don't define NO_MD_PROTOTYPES.
	* gcc.texi: Remove documentation of NO_MD_PROTOTYPES.

2000-02-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/Makefile.in (HDR): Add machname.h.
	(clean): Likewise.

2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (c4x_compare_op0, c4x_compare_op1): Move ...
	(c4x_regclass_map, c4x_caller_save_map, c4x_rpts_cycles): Ditto.
	(c4x_cpu_version): Ditto.
	* config/c4x/c4x-protos.h: ... here.

2000-02-04  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c (add_abstract_origin_attribute): Don't call
	gen_abstract_function on our context if we're a nested function.

2000-02-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (fixuns_truncqfqi2): Rewrite.
	* config/c4x/libgcc.S (ufix_truncqfhi2n): Fix.

2000-02-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes(machname.h):
	Move the functionality from gen-machine.h into this file.
	UNdef MN_NAME_PAT if there are no names to change.
	Also, be a little kinder when AutoGen is not present.

	* fixinc/Makefile.in(machname.h):
	Change the generation rule to use genfixes.

	* fixinc/fixfixes.c(machine_name):
	machine_name_fix's functionality now dependent upon whether
	MN_NAME_PAT is defined.

	* fixinc/fixtests.c(machine_name):
	ditto.

	* fixinc/fixlib.c(mn_get_regexps): conditional on definition
	of MN_NAME_PAT.

	* fixinc/fixlib.h(mn_get_regexps):
	ditto

	* fixinc/gen-machine.h: DELETED

2000-02-04  Jan Hubicka  <jh@suse.cz>
	    Richard Henderson  <rth@cygnus.com>

	* i386.c (SAVE_REGS_FIRST): Remove.
	(ix86_initial_elimination_offset): Handle only SAVE_REGS_FIRST mode.
	(ix86_compute_frame_size): Likewise.
	(ix86_expand_prologue): Likewise.  Use pro_epilogue_adjust_stack.
	(ix86_emit_restore_regs): Remove.
	(ix86_emit_epilogue_esp_adjustment): Use pro_epilogue_adjust_stack
	when a frame pointer is in use.
	(ix86_expand_epilogue): Handle only SAVE_REGS_FIRST mode.  Use mov
	instead of pop to restore a register when profitable; emit leave
	when profitable.
	(ix86_attr_length_default): Handle pro_epilogue_adjust_stack
	as a TYPE_LEA insn.
	(ix86_adjust_cost): Handle pro_epilogue_adjust_stack as TYPE_ALU.
	* i386.md (prologue_allocate_stack): Remove.
	(epilogue_deallocate_stack): Remove.
	(pro_epilogue_adjust_stack): New.

2000-02-04  Richard Henderson  <rth@cygnus.com>

	* function.c (diddle_return_value): Rework to use a callback function.
	Use current_function_return_rtx if it's been set up.
	(do_clobber_return_reg, clobber_return_register): New.
	(do_use_return_reg, use_return_register): New.
	(expand_function_end): Use them.
	* stmt.c (expand_null_return): Likewise.
	* function.h: Declare them.
	* flow.c (mark_regs_live_at_end): Use diddle_return_value.
	(mark_reg): Change arguments as appropriate for callback.
	* integrate.c (expand_inline_function): Revert 19 Jan change.

Fri Feb  4 20:25:42 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* tm.texi (Values in Registers): Fix typo: "fo" "for".
	(Misc): Say the scheduler, not the Haifa scheduler.

2000-02-04  Clinton Popetz  <cpopetz@cygnus.com>

	* jump.c (mark_jump_label): Add in_mem param, check SYMBOL_REFs
	when in_mem is set.  Update all callers.

2000-02-04  Richard Henderson  <rth@cygnus.com>

	* i386/openbsd.h (INT_ASM_OP): Define.

Fri Feb  4 10:51:30 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* tm.texi: Fix various typos.

Thu Feb  3 17:17:32 2000  Steve Ellcey <sje@cup.hp.com>

	* config/pa/pa-hpux11.h (LIB_SPEC): Correct typo in !p case.
	(MD_STARTFILE_PREFIX_1): New macro.

Thu Feb  3 15:08:13 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.md (movstrsi, clrstrsi): Support variable sized copies, align
	destination when needed.
	(strmovsi, strsetsi): New expander.
	(strmovsi_1, strsetsi_1): New pattern.
	* i386.h (MASK_NO_ALIGN_STROP, MASK_INLINE_ALL_STROP,
	TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS): New macros.
	(TARGET_SWITCHES) Add align-stringops and inline-all-stringops.
	* invoke.texi (align-stringops, inline-all-stringops): Document.

Wed Feb  2 23:04:47 2000   Krister Walfridsson <cato@df.lth.se>

	* i386/netbsd.h (INT_ASM_OP): Define.

2000-02-02  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (cpp_reader): Add new flag, no_directives.
	* cpphash.c (macarg): Set it.
	* cpplib.c (handle_directive): If no_directives is on and we
	find a directive, issue an error and discard the line.

Wed Feb  2 13:07:10 2000  Jim Wilson  <wilson@cygnus.com>

	* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Delete 'E' check for
	FP constants.  Add ! TARGET_FPU check for FP constants.

2000-02-02  Clinton Popetz  <cpopetz@cygnus.com>

	* flow.c (find_basic_blocks): Don't kill label_value_list
	here.
	(cleanup_cfg): Kill it here.

Wed Feb  2 08:12:30 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_field): Ensure ALIGN is no stricter than the
	alignment of EXP.

2000-02-02  Richard Henderson  <rth@cygnus.com>

	* jump.c (delete_insn): Partially revert 19 Jan change;
	don't convert unused code labels to notes at -O0.

2000-02-02 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* toplev.c (rest_of_compilation): Run rebuild_jump_labels after
	split_all_insns to recreate REG_LABEL notes for flow2 pass.

2000-02-01  Richard Henderson  <rth@cygnus.com>

	* i386.c (general_no_elim_operand): New.
	(nonmemory_no_elim_operand): New.
	(ix86_expand_move): Copy eliminable operands before a push.
	* i386-protos.h: Declare new functions.
	* i386.h (CAN_ELIMINATE): Simplify.
	(PREDICATE_CODES): Update.
	* i386.md (push insns): Don't allow eliminable register operands.

2000-02-01  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_regs_live_at_end): Follow expand_function_end and
	replace BLKmode with DECL_RTL's mode.

2000-02-01  Zack Weinberg  <zack@wolery.cumb.org>

	* frame.c (find_fde): Convert for loop to do-while so compiler
	sees it's always executed at least once.
	* libgcc2.c (BBINBUFSIZE): Kill.
	(__bb_init_prg): Use fgets.
	(__bb_exit_trace_func): Don't paste strings.
	* unroll.c (unroll_loop): Initialize unroll_type, not
	unroll_number, and tweak logic to match.

	* i386.c (ix86_expand_int_movcc): Add explicit 'return 0' in
	all failure paths.
	(ix86_flags_dependant): Likewise.  Disentangle control flow.
	(ix86_sched_reorder): Break guts out to
	ix86_sched_reorder_pentium and ix86_sched_reorder_ppro.
	(ix86_sched_reorder_ppro): Initialize pair2 and insnp before
	any possible use.

	* i386.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Don't
	use string concatenation.  Don't save and restore esi.

	* fixinc/Makefile.in (fixincl.sh): Don't depend on inclhack.def.
	(machname.h): Remove script to separate file.  Use two-step
	sequence so target is not created if script fails.
	* fixinc/gen-machname.h: New file.  Handle case where no non-reserved
	identifiers are defined.
	* fixinc/fixlib.c (mn_get_regexps): Return a flag: if MN_NAME_PAT is
	an empty string, machine_name doesn't need to do anything at
	all.
	(is_cxx_header): Add more cases to regexp.
	* fixinc/fixlib.h: Update prototype.
	* fixinc/fixtests.c, fixinc/fixfixes.c: Update callers of
	mn_get_regexps.
	* fixinc/fixincl.c: Define NO_BOGOSITY.

	* fixinc/inclhack.def (no_double_slash, else_endif_label): Ifdef out.
	(hp_sysfile): Add missing comma.
	(math_exception): Put the wrapper ifdefs at the beginning and
	the end of the file.
	* fixinc/fixincl.x, fixinc/inclhack.sh: Regenerate.

2000-02-01  Richard Henderson  <rth@cygnus.com>

	* sparc.c (fp_zero_operand): Turn into a normal predicate.
	Use CONST0_RTX.  Update all callers.
	* sparc.h, sparc-protos.h: Update accordingly.
	* sparc.md (fp mov insns): Use fp_zero_operand directly
	where applicable.

Wed Feb  2 02:59:45 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* tm.texi (Values in Registers): Fix typo in HARD_REGNO_NREGS
	example.

2000-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (specs.ready): New target.
	(fixinc.sh): Depend on `specs.ready' instead of `specs'.

2000-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc.irix: Use unique filenames for writing into /tmp,
	* fixinc.ptx: Likewise.
	* fixinc.sco: Likewise.
	* fixinc.svr4: Likewise.
	* fixinc.winnt: Likewise.

2000-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tsystem.h: New file.

	* Makefile.in (libgcc2.a, stmp-multilib, crtbegin.o, crtend.o,
	s-crtS): Depend on tsystem.h.

	* crtstuff.c: Include tsystem.h.
	* frame.c: Likewise.
	* libgcc2.c: Likewise.

Tue Feb  1 19:53:27 CET 2000  Jan Hubicka  <jh@suse.cz>

	* builtins.c (expand_builtin_memset): Expand for variable sized
	lengths too.

2000-02-01  David Billinghurst <David.Billinghurst@riotinto.com.au>

	* config/mips/iris6.h (SUBTARGET_ASM_SPEC) : Default ISA based
	on ABI.

Tue Feb  1 00:57:40 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* dwarfout.c (SHORT_TYPE_SIZE): Correct default.

	* tm.texi (Type Layout): Correct entry for CHAR_TYPE_SIZE.

2000-01-31  Chandra Chavva <cchavva@cygnus.com>

	* combine.c (try_combine) [HAVE_cc0]: Trying to check the missed
	case 3->2 combining (combining with splitting) in which 2 is CC0
	setter/user and 3 is user. The rest of cases 2->1 and 3->2 are
	checked at the begining of the function with the aid of calling
	function 'can_combine_p'.

2000-01-31  Dave Brolley  <brolley@redhat.com>

	* cccp.c (struct argdata): Redeclare 'newlines' field as 'int'.

2000-01-31  Jason Merrill  <jason@casey.cygnus.com>

	* jump.c (redirect_jump): Move a NOTE_INSN_FUNCTION_END to the
	new label.

2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gansidecl.h (PROTO, VPROTO, PVPROTO): Delete macros.

	* sbitmap.h (sbitmap_first_set_bit, sbitmap_last_set_bit):
	PROTO -> PARAMS.

2000-01-30  Zack Weinberg  <zack@wolery.cumb.org>

	* i386/386bsd.h, i386/beos-pe.h, i386/bsd386.h, i386/crtdll.h,
	i386/cygwin.h, i386/dgux.h, i386/djgpp-rtems.h, i386/djgpp.h,
	i386/freebsd.h, i386/gnu.h, i386/i386-aout.h, i386/i386-coff.h,
	i386/i386-interix.h, i386/i386elf.h, i386/linux.h, i386/lynx-ng.h,
	i386/lynx.h, i386/mach.h, i386/mingw32.h, i386/moss.h,
	i386/netbsd.h, i386/next.h, i386/openbsd.h, i386/osf1elf.h,
	i386/ptx4-i.h, i386/rtems.h, i386/rtemself.h, i386/sco.h,
	i386/sequent.h, i386/sun.h, i386/sysv4.h, i386/uwin.h, i386/vsta.h,
	i386/vxi386.h, i386/win-nt.h, i386/win32.h:
	Remove -Di386 -Acpu(i386) -Amachine(i386) from CPP_PREDEFINES.

	* i386/osf1elf.h, i386/scodbx.h, i386/seq-sysv3.h, i386/sysv5.h:
	Add %(cpp_cpu) to CPP_SPEC.

	* i386/osf1elf.h, i386/osfelf.h, i386/osfrose.h:
	Add %(cc1_cpu) to CC1_SPEC.

2000-01-28  Ulrich Drepper  <drepper@redhat.com>

	* c-decl.c (c_decode_option): Accept optional numeric argument to
	-Wformat and set warn_format.
	* c-common.c: Don't emit warning about non-constant printf format
	string unless warn_format > 1.

2000-01-30  Richard Henderson  <rth@cygnus.com>

	* alpha.md (return_internal): Allow after reload only.

2000-01-30  Richard Henderson  <rth@cygnus.com>

	* i386.c (ix86_compute_frame_size): Omit padding1 if the
	local frame size is zero.

2000-01-30  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_expand_epilogue): Don't emit the return insn.
	* alpha.h (EPILOGUE_USES): New.  Mark $26 live.
	* alpha.md (return): Turn into an expander.
	(return_internal): Don't use $26.
	(epilogue): Emit the return insn.

2000-01-30  Richard Henderson  <rth@cygnus.com>

	* alpha.md (negtf2, abstf2): Fix word order thinko.
	(extendsftf2): New.
	(trunctfsf2): Avoid intermediate rounding errors.

2000-01-30  Zack Weinberg  <zack@wolery.cumb.org>

	* cppfiles.c (find_position): Drop 'colp' argument, return the
	new line base.
	(read_and_prescan): Adjust to match.  Don't ever manipulate
	line or line_base except via find_position.

2000-01-29  Zack Weinberg  <zack@wolery.cumb.org>

	* c-parse.in: Apply Ulrich's changes from c-parse.y.
	* c-parse.y, objc/objc-parse.y, c-parse.c, objc/objc-parse.c:
	Regenerate.

2000-01-29  Zack Weinberg  <zack@wolery.cumb.org>

	* cpperror.c (cpp_file_line_for_message): If 'line' is zero,
	just print "<command line>".  If 'filename' is null or an
	empty string, print "<stdin>" for the filename.
	* cpplib.c (do_define): Don't print the 'location of the
	previous definition' message if we're still parsing the
	command line.
	(cpp_pedwarn_with_file_and_line): Always call
	cpp_file_line_for_message.

2000-01-29  Mark Mitchell  <mark@codesourcery.com>

	* flow.c (mark_regs_live_at_end): Fix typo.

2000-01-28  Ulrich Drepper  <drepper@redhat.com>

	* c-common.c: Adjust variable names, comments, help strings to c99.
	* c-lex.c: Likewise.
	* c-parse.y: Likewise.
	* c-tree.h: Likewise.
	* cccp.c: Likewise.
	* cpplib.h: Likewise.
	* c-decl.c: Likewise.  Recognize options with names "*99" as well.
	* cppinit.c: Likewise.

2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
	* c4x.c: Define the optab rtx values.
	(c4x_add_gc_roots): Add the ggc roots for these optab rtx values.
	(c4x_emit_libcall): Use new optab rtx values.
	(c4x_emit_libcall3): Likewise.
	(c4x_emit_libcall_mulhi): Likewise.
	* c4x-protos.h: Add prototypes for optab rtx values and change
	prototypes for above c4x_emit_libcall functions.

2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_output_ascii): Restrict line length of output when TI
	syntax is used.
	(c4x_function_prologue): Use regnames intead of float_reg_names when
	TI syntax is used.
	(c4x_function_epilogue): Likewise.
	(c4x_print_operand): Likewise.
	* c4x.h (HOST_WIDE_INT_PRINT_HEX): Redefine.
	* c4x.md (set_high): Disable for TARGET_TI.

2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h (PREFERRED_RELOAD_CLASS): Change to restrict the reloading
	of framepointer + constant to ADDR_REGS class.
	* c4x.md (addqi3, addqi3_noclobber_reload): Update.
	* c4x.c (std_or_reg_operand): New function.
	* c4x-protos.h (std_or_reg_operand): Prototype it.

2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* t-c4x: Change qi,qf,di,df into si,sf,hi,hf to generate same
		object names as libgcc2.c.
	* libgcc.S: Use newly defined names.

Fri Jan  7 19:48:04 CET 2000  Jan Hubicka  <jh@suse.cz>
	* sbitmap.c (sbitmap_first_set_bit, sbitmap_last_set_bit): New
	function.
	* sbitmap.h (sbitmap_first_set_bit, sbitmap_last_set_bit): Declare.
	* basic_block.h (FLOW_LOOP_FIRST_BLOCK): New macro.
	(FLOW_LOOP_LAST_BLOCK): Likewise.

2000-01-21  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* basic-block.h (struct loop): New fields 'first' and 'last'.
	* flow.c (flow_loops_find): Compute loop->first and loop->last.
	(flow_loops_dump): Use loop->first to check for NOTE_INSN_LOOP_BEG
	and loop->last to check for NOTE_INSN_LOOP_END.

Fri Jan 28 10:57:58 2000  Jason Eckhardt  <jle@cygnus.com>

	* predict.c (estimate_probability): Use the new FIRST and LAST fields
	of the loop descriptor rather than HEADER and LATCH. Also added
	missing break statements as well making some coding style modifications
	as suggested by Michael Hayes.

2000-01-28  Richard Henderson  <rth@cygnus.com>

	* flow.c (find_basic_blocks): Remove do_cleanup argument.
	Break out that code ...
	(cleanup_cfg): ... here.
	(commit_one_edge_insertion): Detect a return instruction being
	emitted to an edge.  Emit a barrier following; clear fallthru.
	(commit_edge_insertions): Verify CFG consistency.
	* function.c (expand_function_start): Kill unused variable.
	(expand_function_end): Likewise.
	(thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
	to insert the epilogue.

	* gcse.c (gcse_main): Adjust for find_basic_blocks change.
	(delete_null_pointer_checks): Likewise.
	* output.h: Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	* toplev.c (rest_of_compilation): Likewise.  Run
	thread_prologue_and_epilogue_insns after rebuilding the CFG.

2000-01-28  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (flow.o): Revert 24 Jan change.
	* flow.c (mark_regs_live_at_end): Likewise.  Force BLKmode
	FUNCTION_VALUE result to DECL_RESULT's mode.

	* haifa-sched.c (schedule_insns): Don't recompute reg info
	after reload.

2000-01-28  Zack Weinberg  <zack@wolery.cumb.org>

	* configure.in: Make --enable-cpplib the default.
	* configure: Regenerate.
	* gcc.dg/990119-1.c: No longer expected to fail.

2000-01-28  Bernd Schmidt  <bernds@cygnus.co.uk>

	* jump.c (jump_optimize_1): Delete an optimization that is also done
	by merge_blocks in flow.

2000-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* diagnostic.c (build_message_string, output_printf,
	line_wrapper_printf): Add ATTRIBUTE_PRINTF_*.
	(build_location_prefix): Fix non-literal format string.

2000-01-27  Richard Henderson  <rth@cygnus.com>

	* alpha.md (trunctfsf2): New.

2000-01-27  Andrew Hobson  <ahobson@eng.mindspring.net>

	* configure.in (alpha-dec-osf5): Enable MASK_SUPPORT_ARCH.

2000-01-27  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_handle_option): Recognize C++ comments under
	-std=gnu89.
	* cpplib.c (skip_block_comment, skip_line_comment): Split code
	out of...
	(skip_comment) ... here.  Permit C++ comments in system
	headers always.  Warn about C++ comments in user code under
	-std=gnu89 -pedantic.
	(copy_comment): Use skip_comment.
	(cpp_skip_hspace, cpp_get_token): skip_comment can no longer
	return EOF.
	(consider_directive_while_skipping, do_else, do_endif): Call
	validate_else unconditionally.
	(validate_else): Check CPP_PEDANTIC here.  Accept non-comment
	text after the conditional in a system header.
	* cpplib.h (struct cpp_buffer): Add flag
	warned_cplusplus_comments.

2000-01-27  Geoffrey Keating  <geoffk@cygnus.com>

	* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
	Use unshare_all_rtl_1.
	(unshare_all_rtl_again): New function.
	(unshare_all_rtl_1): New function split out of unshare_all_rtl.

	* function.c (purge_addressof_1): Use unshare_all_rtl_again
	rather than resetting the 'used' flags ourself.

	* toplev.c (rest_of_compilation): Add current_function_decl
	to the unshare_all_rtl call.
	* tree.h: Prototype unshare_all_rtl.
	* rtl.h: Prototype unshare_all_rtl_again here.

2000-01-27  Geoffrey Keating  <geoffk@cygnus.com>

	* genoutput.c (output_prologue): Include ggc.h in generated
	files.
	* Makefile.in (insn-output.o): Depends on ggc.h.

2000-01-27  Ian Dall  <ian@sibyl.beware.dropbear.id.au>
	    Hans-Peter Nilsson  <hp@bitrange.com>

	* ns32k/xm-ns32k.h (memcpy, memset, memcmp): Delete.
	Remove redundant include of xm-ns32k.h.
	* ns32k/xm-genix.h (memcpy, memset, memcmp): Add definitions.
	Remove redundant include of xm-ns32k.h.
	* ns32k/xm-netbsd.h (memcpy, memset, memcmp): No longer undefine.
	Remove redundant include of xm-ns32k.h.
	* ns32k/netbsd.h (TARGET_DEFAULT): Enable multiply-add instructions.

	* ns32k/ns32k.h: Update comment on multiply-add instructions.
	(TARGET_SWITCHES): Add documentation strings.
	(DWARF_FRAME_REGNUM): Override default definition.
	(REG_CLASS_CONTENTS): Add comments.
	(SUBSET_P): Format to reduce line length.
	(SMALL_REGISTER_CLASSES): Make a run time option.
	(GO_IF_NONINDEXED_ADDRESS): Reformat.
	(GO_IF_LEGITIMATE_ADDRESS): Ensure that cfun is non NULL before
	dereferencing it.  Braces to avoid "ambiguous else" were misplaced.
	(regclass_map): fix typo in comment.
	* ns32k/ns32k.c: Add spaces before parentheses for consistant style.
	Prefer gen_rtx_FOO(...) to gen_rtx(FOO,...).
	(trace, reg_or_mem_operand): Delete, unused function.
	(calc_address_cost): Small offsets are cheaper than large ones.
	(expand_block_move): Generate more efficient code when bytes is a
	known at compile time.
	* ns32k/ns32k.md: Alternate constraints for multiply-add instructions.
	(udivmodsi4, udivmodhi4, udivmodqi4): Use nonimmediate_operand
	instead of reg_or_mem_operand.

	* ns32k/ns32k.md: Use nonimmediate_operand or stricter for outputs,
	not general_operand.  Similarly use "=rm" or stricter, not "=g".
	For input operands, use stricter constraints than "g" if not
	general_operand.  Similarly use stricter predicate than
	"general_operand" when stricter constraints than "g" are present,
	except for matching constraints.
	(movstrsi): Use "memory_operand" for operands 0 and 1.
	(truncsiqi2, truncsihi2, trunchiqi2): Remove.
	(udivmoddisi4_internal): Use nonimmediate_operand for operand 0,
	not reg_or_mem_operand.
	(udivmoddisi4): Ditto.
	Use nonimmediate_operand for operand 1, not reg_or_mem_operand.
	Use nonimmediate_operand for operand 3, not register_operand.
	(udivmoddiqi4_internal): Use register_operand for operand 1, not
	reg_or_mem_operand.

2000-01-27  Fred Fish  <fnf@be.com>

	* gthr-posix.h: Fix typo; compatibily -> compatibility.
	* gthr-single.h: Likewise.
	* gthr-solaris.h: Likewise.
	* gthr-vxworks.h: Likewise.
	* gthr-win32.h: Likewise.
	* gthr.h: Likewise.

2000-01-27  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c: Add " (cpplib)" to end of string printed by
	-v / --version.

2000-01-27  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_emit_conditional_move): Use VOIDmode when
	testing for a signed comparison.
	(alpha_emit_floatuns): New.
	* alpha-protos.h: Declare it.
	* alpha.md (floatunsdisf2, floatunsdidf2): New.
	(extendsfdf2): Tidy.

2000-01-27  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/linux64.h (CC1_SPEC): If compiling -m32 with -g but
	no -g option specifying debugging format, default to -gstabs+.

Wed Jan 26 22:19:14 1999  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* calls.c (special_function_p): New argument fork_or_exec.
	(expand_call): When profile_arc_flag is set and the function
	is in the fork_or_exec group, call __bb_fork_func first.
	* libgcc2.c, _bb module (__bb_fork_func): New function.
	(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
	output file.
	* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
	* tree.h (special_function_p): Update prototype.

2000-01-26  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_split_tfmode_pair): New.
	* alpha-protos.h: Declare it.
	* alpha.md (abstf2, negtf2): New.
	(movtf insn): Add input G constraint.
	(movtf splitter): Use alpha_split_tfmode_pair.

2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i386/cygwin.h: PROTO -> PARAMS.

2000-01-26  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (sparc_emit_float_lib_cmp): Handle
	TARGET_ARCH32 again. Handle ORDERED, UN* and LTGT comparisons
	using _Qp_cmp/_Q_cmp and testing the return value.
	(print_operand): Call reverse_condition_maybe_unordered if
	we are handling CCFPmode or CCFPEmode.
	Handle ORDERED, UN* and LTGT comparisons.
	* config/sparc/sparc.md (cmptf): Use even on TARGET_ARCH32
	if not TARGET_HARD_QUAD.
	(seq, sne, sgt, slt, sge, sle, beq, bne, bgt, blt, bge, ble,
	bunordered, bordered, bungt, bunlt, buneq, bunge, bunle, bltgt):
	Call sparc_emit_float_lib_cmp even on TARGET_ARCH32.
	Adjust gen_b* calls so that they reflect return comparison of
	sparc_emit_float_lib_cmp.

2000-01-26  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/alpha/alpha.c (alpha_emit_xfloating_cvt): Do not assume
	incoming operands array is large enough for one more operand.
	(alpha_emit_xfloating_arith): Likewise.

2000-01-25  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/Makefile.in (machname.h): SunOS 4 sed can't handle a
	file with one line and no trailing newline.
	Patch by Kaveh Ghazi <ghazi@caip.rutgers.edu>.
	* fixinc/fixtests.c (machine_name_test): Fix fencepost error
	checking if the match is on the line.
	* fixinc/gnu-regex.c: Provide regerror not __regerror.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* sparc.c (output_cbranch): Fix accidental squashing of the
	fp branch pre-delay nop.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* tree.def (UNNE_EXPR): Remove.
	* c-typeck.c (build_binary_op): Don't handle it.
	* expr.c (expand_expr, do_jump, do_store_flag): Likewise.

	* rtl.def (UNNE): Remove.
	(LTGT): Add.
	* jump.c (reverse_condition): Update accordingly.
	(swap_condition): Likewise.
	(comparison_dominates_p): Handle unordered comparisons.
	(reverse_condition_maybe_unordered): New.
	* rtl.h (reverse_condition_maybe_unordered): Declare.

	* sparc.c (select_cc_mode): Update for UNNE/LTGT.
	(output_cbranch): Use reverse_condition_maybe_unordered and LTGT.
	* sparc.h (REVERSIBLE_CC_MODE): Always true.  Update docs.
	* sparc.md (bltgt): New.

2000-01-25  Nick Clifton  <nickc@redhat.com>

	* emit-rtl.c (emit_insn): Only check machine class insns for
	improper emission of a RETURN.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (flow.o): Depend on $(EXPR_H).
	* flow.c (mark_regs_live_at_end): Use hard_function_value, i.e.
	duplicate the structure of diddle_return_value for keeping regs live.

2000-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.c (current_loop_info): Delete.
	(consec_sets_invariant_p): Add loop argument, update callers.
	(get_condition_for_loop): Likewise.
	(count_nonfixed_reads, update_giv_derive): Likewise.
	(simplify_giv_expr, general_induction_var): Likewise.
	(consec_sets_giv, recombine_givs): Likewise.
	(move_movables): Delete loop_start and loop_end arguments,
	add loop argument, and update callers.
	(find_mem_givs, check_final_value): Likewise.
	(record_giv, maybe_eliminate_biv, maybe_eliminate_biv_1): Likewise.
	(loop_invariant_p): Rename from invariant_p, add loop argument, and
	update callers.
	(basic_induction_var): Add loop argument, delete loop_level argument,
	and update callers.
	* unroll.c (iteration_info): Delete loop_start and loop_end arguments,
	add loop argument, and update callers.
	(find_splittable_regs, find_splittable_givs): Likewise.
	(reg_dead_after_loop, loop_find_equiv_value): Likewise.
	(final_biv_value, final_giv_value, back_branch_in_range_p): Likewise.
	(biv_total_increment): Delete loop_start and loop_end arguments;
	update callers.
	(precondition_loop_p): Delete loop_start and loop_info arguments;
	update callers.
	* loop.h (get_condition_for_loop): Add loop argument.
	(biv_total_increment): Delete loop_start and loop_end arguments.
	(precondition_loop_p): Delete loop_start and loop_info arguments;
	add loop argument.
	(final_biv_value): Delete loop_start and loop_end arguments;
	add loop argument.
	(final_giv_value, back_branch_in_range_p): Likewise.

2000-01-25  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/mips/mips.h (LEGITIMATE_CONSTANT_P): Fix for mips16.

2000-01-25  Gavin Romig-Koch  <gavin@cygnus.com>

	* Makefile.in (c-gperf.h) : Change the "See" pointer to
	point to the new "generated_files" doc.

2000-01-25  Clinton Popetz  <cpopetz@cygnus.com>

	* config/fp-bit.c (_unord_f2): Fix typo.

2000-01-25  Zack Weinberg  <zack@wolery.cumb.org>

	* c-common.c, c-decl.c, c-lang.c, c-lex.c, c-parse.in, c-pragma.c,
	c-typeck.c, objc/objc-act.c: Remove all references to obstack
	functions obsoleted by GC, such as push_obstacks_nochange,
	end_temporary_allocation, savealloc, saveable_tree_cons, etc.
	and code which existed only to decide whether or not to call
	them.  Remove now-unused NESTED argument from start_function;
	all callers changed.  Do not change behavior based on ggc_p.
	The use of the ixp_obstack in c-iterate.c and the util_obstack
	in objc/objc-act.c remain; these are not obsoleted by garbage
	collection.
	* c-tree.h: Update prototype for start_function.

	* c-parse.y, c-parse.c, objc/objc-parse.c, objc/objc-parse.y: Rebuild.

2000-01-25  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.md (zero_extendsidi2_internal): Disable for
	mips16.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* sparc-protos.h (select_cc_mode): Declare.
	* sparc.c (select_cc_mode): New.  Handle unordered compares.
	(output_cbranch): Always reverse via code change.  Handle
	unordered compares.  Factor tests and string updates.
	* sparc.h (SELECT_CC_MODE): Split out to select_cc_mode.
	(REVERSIBLE_CC_MODE): Also exclude CCFPmode.
	* sparc.md (bunordered, bordered): New.
	(bungt, bunlt, buneq, bunge, bunle): New.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* dwarf2out.c (dwarf2out_init): Use ggc_add_rtx_varray_root.
	* ggc-common.c (ggc_add_rtx_varray_root): New.
	(ggc_mark_rtx_varray): New.
	(ggc_mark_rtx_varray_ptr): New.  Shift all ggc_mark_foo_ptr
	functions down below ggc_mark_foo.
	* ggc.h (ggc_add_rtx_varray_root, ggc_mark_rtx_varray): Declare.

2000-01-25  Richard Henderson  <rth@cygnus.com>

	* alpha.c (secondary_reload_class): Don't allocate a secondary
	for integral mode memories into FLOAT_REGS.  Rearrange the more
	complicated memory expression inward.

2000-01-25  Zack Weinberg  <zack@wolery.cumb.org>

	* inclhack.def: Fixes to play nicer with FreeBSD, and
	corrections to comments.
	(cxx_unready): Add select expression.
	(irix_sockaddr): Add bypass expression.
	(machine_ansi_h_va_list): New fix.
	(stdio_va_list): No need to edit _BSD_VA_LIST_.
	Split out addition of "#include <stdarg.h>" to...
	(stdio_stdarg_h): ... here.
	(systypes_for_aix): Rename to systypes_stdlib_size_t.  Apply
	to stdlib.h also.  Do not munge _BSD_SIZE_T_.
	(sysz_stdlib_for_sun): Delete duplicate fix for unprotected
	size_t.
	(ultrix_ifdef): Tighten up select expression.

	* fixincl.tpl: Exorcise 'exesel'.  Rewrite calculations of
	re_ct and max_mach to avoid use of shell.  Make printed names
	match names in inclhack.def.  Use static copyright date.
	Don't count c_test and test expressions as requiring regex_t
	slots.  Add some commentary.
	* inclhack.tpl: Do not include the 'This script contains N
	fixup scripts' line if PROGRAM is defined.  Use static
	copyright date.

2000-01-24  Jason Merrill  <jason@casey.cygnus.com>

	* dwarf2out.c: include "varray.h", not dyn-string.h.
	(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_NAME_TO_STRING): Lose.
	(addr_const_to_string, addr_to_string): Lose.
	(ASM_OUTPUT_DWARF_ADDR_CONST): Copy from dwarfout.c.
	(struct dw_val_struct): val_addr is now an rtx.
	(add_AT_addr, AT_addr, free_AT, output_aranges): Adjust.
	(used_rtx_varray): New varray.
	(dwarf2out_init): Initialize it.
	(save_rtx): New fn.
	(mem_loc_descriptor, add_const_value_attribute): Call it instead of
	addr_to_string.
	* arm/telf.h, arm/unknown-elf.h, mn10200.h, mn10300.h,
	sparc/sp64-elf.h: Remove definition of ASM_OUTPUT_DWARF2_ADDR_CONST.
	* Makefile.in (dwarf2out.o): Update dependencies.

2000-01-24  Richard Henderson  <rth@cygnus.com>

	* i386.c (i386_dwarf_output_addr_const): New.
	* i386.h (ASM_OUTPUT_DWARF_ADDR_CONST): New.

	* dwarf2out.c (mem_loc_descriptor): Call ASM_SIMPLIFY_DWARF_ADDR
	if defined.
	* dwarfout.c (output_mem_loc_descriptor): Likewise.
	* i386.c (i386_simplify_dwarf_addr): New.
	* i386.h (ASM_SIMPLIFY_DWARF_ADDR): New.

Mon Jan 24 16:56:10 2000  Jim Wilson  <wilson@cygnus.com>

	* dwarf2out.c (gen_struct_or_union_type_die): Set complete if
	TYPE_STUB_DECL is NULL.

2000-01-24  Richard Henderson  <rth@cygnus.com>

	* builtins.c (expand_tree_builtin): Move ...
	* c-common.c (expand_tree_builtin): ... here.

2000-01-25  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.h (LOOP_INFO): New accessor macro.
	* basic-block.h (struct loop): Rename field `info' to `aux'.
	* loop.c (scan_loop): Replace loop->info with LOOP_INFO (loop).
	(prescan_loop, strength_reduce, check_dbra_loop, insert_bct): Likewise.
	* unroll.c (loop_iterations, unroll_loop): Likewise.

2000-01-24  Christopher Faylor <cgf@cygnus.com>

	* config/i386/t-cygwin: Accommodate new winsup directory layout
	when searching for include files.

2000-01-24  Richard Henderson  <rth@cygnus.com>

	* rtl.def: Add unordered fp comparisons.
	* tree.def: Likewise.
	* tree.h: Add ISO C 9x unordered fp comparison builtins.

	* builtins.c (expand_tree_builtin): New function.
	* c-typeck.c (build_function_call): Use it.
	(build_binary_op): Support unordered compares.
	* c-common.c (c_common_nodes_and_builtins): Add unordered compares.

	* combine.c (known_cond): Handle reverse_condition returning UNKNOWN.
	(reversible_comparison_p): Allow UNORDERED/ORDERED to be reversed.
	* cse.c (fold_rtx): Check FLOAT_MODE_P before reversing.
	(record_jump_equiv): Handle reverse_condition returning UNKNOWN.
	* jump.c (reverse_condition): Don't abort for UNLE etc, but
	return UNKNOWN.
	(swap_condition): Handle unordered compares.
	(thread_jumps): Check can_reverse before reversing.
	* loop.c (get_condition): Likewise.  Allow UNORERED/ORDERED to be
	reversed for FP.

	* optabs.c (can_compare_p): New argument CODE.  Verify branch or
	setcc is present before acking for cmp_optab.  Update all callers.
	(prepare_float_lib_cmp, init_optabs): Handle UNORDERED.
	* expmed.c (do_cmp_and_jump): Update for can_compare_p.
	* expr.c (expand_expr): Likewise.  Support unordered compares.
	(do_jump, do_store_flag): Likewise.
	* expr.h (enum libfunc_index): Add unordered compares.

	* Makefile.in (FPBIT_FUNCS): Add _unord_sf.
	(DPBIT_FUNCS): Add _unord_df.
	* config/fp-bit.c (_unord_f2): New.
	* fp-test.c (main): Try unordered compare builtins.

	* alpha-protos.h (alpha_fp_comparison_operator): Declare.
	* alpha.c (alpha_comparison_operator): Check mode properly.
	(alpha_swapped_comparison_operator): Likewise.
	(signed_comparison_operator): Likewise.
	(alpha_fp_comparison_operator): New.
	(alpha_emit_conditional_branch): Handle unordered compares.
	* alpha.h (PREDICATE_CODES): Update.
	* alpha.md (fp compares): Use alpha_fp_comparison_operator.
	(bunordered, bordered): New.

2000-01-24  Richard Henderson  <rth@cygnus.com>

	* alpha.c (alpha_emit_xfloating_cvt): Thinko in operand manipulation.
	* alpha.md (movtf): New expander, insn, and splitter.

Mon Jan 24 19:49:47 MET 2000  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of
	dead registers.

Mon Jan 24 17:37:31 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.h (FIRST_PSEUDO_REGISTER): Set to 21.
	(FIXED_REGISTERS, CALL_USED_REGISTERS,
	 REG_ALLOC_ORDER): Add frame pointer
	(FRAME_POINTER_REGNUM): Set to 20
	(HARD_FRAME_POINTER_REGNUM): New macro.
	(ELIMINABLE_REGS): Eliminate ARG_POINTER and FRAME_POINTER
	to HARD_FRAME_POINTER.
	(REGNO_OK_FOR_BASE_P): Accept FRAME_POINTER_REGNUM
	(REG_OK_FOR_INDEX_NONSTRICT_P): Likewise.
	(REG_OK_FOR_BASE_NONSTRICT_P): Likewise.
	(HI_REGISTER_NAMES): Add "frame".
	(CAN_ELIMINATE): Handle FRAME_POINTER_REGNUM elimination.
	(debug_reg): Handle FRAME_POINTER_REGNUM.
	(reg_class): Add arg pointer and frame pointer to NON_Q_REGS,
	GENERAL_REGS and INDEX_REGS.
	* i386.c (SAVED_REGS_FIRST): new macro.
	(AT_BP): Use hard_frame_pointer_rtx instead of frame_pointer_rtx
	(ix86_decompose_address, memory_address_length): Likewise.
	(regclass_map): Add frame pointer.
	(call_insn_operand): Handle frame_pointer_rtx.
	(reg_no_sp_operand): Likewise.
	(ix86_decompose_address): Handle frame_pointer_rtx as stack_pointer_rtx.
	(print_operand, legitimize_pic_address): Fix formating.
	(ix86_compute_frame_size): Make static, update prototype, new
	parameters padding1, padding2, use ix86_nsaved_regs, use
	stack_alignment_needed.
	(ix86_initial_elimination_offset): Handle FRAME_POINTER_REGNUM
	to HARD_FRAME_POINTER_REGNUM conversions.
	(ix86_expand_prologue): Handle SAVED_REGS_FIRST prologues.
	(ix86_expand_epilogue): Handle SAVED_REGS_FIRST epilogues.
	(print_reg): Abort on FRAME_POINTER_REGNUM

Mon Jan 24 16:50:08 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386.h (PREDICATE_CODES): Add aligned_operand.
	* i386.c (aligned_operand): New function.
	(ix86_aligned_p): Kill.
	* i386.md (movhi_1): Emit mov for aligned operands.
	(promoting peep2s): Use aligned_operand.

2000-01-23  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/fixfixes.c (fix_char_macro_uses): Correct regular
	expression to allow underscores in macro names.
	(fix_char_macro_defines): Increment scanning pointer.

2000-01-23  Richard Henderson  <rth@cygnus.com>

	* alpha/osf.h (TARGET_HAS_XFLOATING_LIBS): Define.
	* alpha/osf5.h: New file.
	* configure.in (alpha-*-osf5): Add it to tm_file.

	* emit-rtl.c (operand_subword): Support TFmode on a 64-bit target.

	* alpha-protos.h (alpha_emit_xfloating_arith): Declare.
	(alpha_emit_xfloating_cvt, function_arg): Declare.
	* alpha.c (alpha_emit_conditional_branch): Call
	alpha_emit_xfloating_compare for TFmode compares.
	(alpha_lookup_xfloating_lib_func): New.
	(alpha_compute_xfloating_mode_arg): New.
	(alpha_emit_xfloating_libcall): New.
	(alpha_emit_xfloating_arith): New.
	(alpha_emit_xfloating_compare): New.
	(alpha_emit_xfloating_cvt): New.
	(print_operand): Add default abort case.
	(function_arg): Mind FUNCTION_ARG_PASS_BY_REFERENCE.
	* alpha.h (TARGET_HAS_XFLOATING_LIBS): New.
	(BIGGEST_ALIGNMENT): Increase to 128 bits.
	(RETURN_IN_MEMORY): True for TF/TCmode.
	(ALPHA_ARG_SIZE): TF/TCmode is passed indirect.
	(FUNCTION_ARG): Move to function_arg.
	(FUNCTION_ARG_PASS_BY_REFERENCE): New.
	(ASM_OUTPUT_LONG_DOUBLE): New.
	(ASM_OUTPUT_DOUBLE): Always output bits.
	* alpha.md (addtf3, divtf3, multf3, subtf3, cmptf): New.
	(fix_trunctfdi2, floatditf2, floatunsditf2): New.
	(extenddftf2, trunctfdf2): New.

2000-01-23  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/sparc/sol2-sld-64.h (TRANSFER_FROM_TRAMPOLINE): Moved...
	* config/sparc/sol2.h: ... here.

2000-01-24  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* basic-block.h (struct loops): New field `levels'.
	* flow.c (flow_loops_level_compute): Traverse all outer loops.
	(flow_loop_level_compute): Initialize level to 1.
	(flow_loops_find): Set loops->levels.
	(flow_loops_dump): Print loops->levels.

2000-01-23  Richard Henderson  <rth@cygnus.com>

	* libgcc2.c (dwarf_reg_size_table): Size with DWARF_FRAME_REGISTERS.
	(throw_helper): Iterate over DWARF_FRAME_REGISTERS.

2000-01-23  Richard Henderson  <rth@cygnus.com>

	* i386.c (dbx_register_map, svr4_dbx_register_map): New.
	* i386.h (DBX_REGISTER_NUMBER): Use them.
	* i386/beos-elf.h, i386/freebsd-elf.h, i386/i386elf.h: Likewise.
	* i386/linux.h, i386/osfrose.h, i386/ptx4-i.h: Likewise.
	* i386/rtemself.h, i386/sco5.h, i386/sysv4.h: Likewise.
	* i386/sequent.h: Kill incorrect comment.

2000-01-23  Mark Mitchell  <mark@codesourcery.com>

	* ggc-page.c (struct page_entry): Make `context_depth' an
	`unsigned short'.
	(struct globals): Likewise.

2000-01-23  Clinton Popetz  <cpopetz@cygnus.com>

	* loop.c (check_dbra_loop): When checking a loop for
	reversability, check the source of any stores to ensure
	they don't depend on an initial value.

2000-01-23  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (ASM_OUTPUT_BSS): Redefine.

2000-01-22  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/fixincl.c: Move declarations of 'pz_fname' and
	'pz_scan' into scope of entire function.  Only affects
	compiles with -DDEBUG.

2000-01-22  Alan Modra <alan@SPRI.Levels.UniSA.Edu.Au>

	* config/elfos.h (UNIQUE_SECTION): Restore uninitialized data
	section naming to that prior to 2000-01-07 patch.
	* config/mips/elf.h (UNIQUE_SECTION): Ditto.
	* config/mips/elf64.h (UNIQUE_SECTION): Ditto.
	* config/mips/iris6gld.h (UNIQUE_SECTION): Ditto.
	* config/i386/interix.c (UNIQUE_SECTION): Ditto.
	* config/i386/winnt.c (UNIQUE_SECTION): Ditto.

2000-01-22  Bernd Schmidt  <bernds@cygnus.co.uk>

	* config/arm/arm.c (soft_df_operand): Reject SUBREGs containing a
	constant.

2000-01-21  Jim Wilson  <wilson@cygnus.com>

	* fixinc/inclhack.tpl: Test for directory before trying to cd into it.
	* fixinc/fixincl.sh, fixinc/inclhack.sh: Regenerate.

2000-01-21  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c (change_newlines): Delete function.
	(struct argdata): Delete 'newlines' and 'use_count' fields.
	(macroexpand): Remove code referencing those fields.

2000-01-22  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.c (loops_info): New variable.
	(loop_optimize): Allocate loops->array and free it on exit.
	Allocate memory for loops_info and assign to each loop,
	replacing alloca.
	(find_and_verify_loops): Do not allocate loops->array.

2000-01-21  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/fixfixes.c (machine_name_fix): Don't free 'scratch'.

2000-01-21  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (movsi_pic_label_ref): Avoid creating new
	pseudos if expanded after first flow.
	(movdi_pic_label_ref): Likewise.

2000-01-20  Richard Henderson  <rth@cygnus.com>

	* jump.c (jump_optimize_1): Don't do addr_vec optimizations at -O0.

2000-01-20  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (fixinc.sh): Depend on specs.
	* fixinc/Makefile.in: Add rule to create machname.h.
	(fixlib.o): Depend on machname.h.
	* fixinc/fixtests.c (machine_name): New test.
	* fixinc/fixfixes.c (machine_name): New fix.
	* fixinc/fixlib.c (mn_get_regexps): New helper function for
	the machine_name test and fix.
	* fixinc/fixlib.h: Prototype it.
	* fixinc/inclhack.def (machine_name): Use the C test and fix.
	* fixinc/fixincl.x, fixinc/inclhack.sh: Rebuild.

	* gcc.c (do_spec_1) [case P]: Take care not to create
	identifiers with three leading or trailing underscores.

	* fixinc/Makefile.in (FIXINC_DEFS): Add -DIN_GCC.
	(fixincl): Don't specify libraries twice on link line.
	(gnu-regex.o): Remove special rule.
	* fixinc/gnu-regex.c: Define REGEX_MALLOC if C_ALLOCA was
	defined by config.h.  Do not define _REGEX_RE_COMP.
	(regcomp): Allocate and initialize a fastmap.
	* fixinc/gnu-regex.h: Do not define _REGEX_RE_COMP.

2000-01-20  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in (predict.o): Depend on $(EXPR_H), not expr.h.

2000-01-19  Richard Henderson  <rth@cygnus.com>

	* flow.c (propagate_block): Replace FIRST, LAST and BNUM
	arguments with BB.  Update all callers.  Tidy line wrapping.

2000-01-19  Clinton Popetz  <cpopetz@cygnus.com>

	* emit-rtl.c (try_split): Return last_insn if we split the
	last_insn.

Thu Jan 20 01:01:23 MET 2000  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_compute_frame_size): Remove prototype.
	(ix86_initial_elimination_offset): Declare.
	* i386.c (ix86_nsaved_regs): Break out from ...
	(ix86_can_use_return_insn_p): ... here.
	(ix86_emit_save_regs): Break out from ...
	(ix86_expand_prologue): ... here.
	(ix86_emit_epilogue_esp_adjustment, ix86_emit_restore_regs): Break
	out from ...
	(ix86_expand_epilogue): ... here.
	(ix86_compute_frame_size): Make static, add prototype.
	(ix86_initial_elimination_offset): Break out from ...
	* i386.h (INITIAL_ELIMINATION_OFFSET): ... here.

2000-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* recog.h (OUT_FCN): Delete.

	* vax.md: Call `get_insn_template' instead of OUT_FCN.

2000-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cppalloc.c: PROTO -> PARAMS.
	* cpperror.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.c: Likewise.
	* cpplib.h: Likewise.

	* config/arm/arm-protos.h: PROTO -> PARAMS.
	* config/arm/arm.c: Likewise.
	* config/c4x/c4x.c: Likewise.
	* config/fr30/fr30-protos.h: Likewise.
	* config/nextstep.c: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pj/pj.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/v850/v850-protos.h: Likewise.
	* config/v850/v850.c: Likewise.

2000-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i370-protos.h: New file.

	* i370.c: Include tm_p.h.  Fix compile time warnings.

	* i370.h: Move prototypes to i370-protos.h.  Fix compile time
	warnings.

	* i370.md: Likewise.

2000-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* real.c (enan, einan, eiisnan, eiisneg, make_nan): Wrap in NANS.
	(target_isinf, target_isnan, eisnan): Mark parameter with
	ATTRIBUTE_UNUSED.
	(eiisinf): Wrap in INFINITY.
	(etoe113, etoe64, etoe53, etoe24): Wrap label `nonorm' in INFINITY.
	(ibmtoe): Remove unused variable `rndsav'.

Wed Jan 19 20:23:06 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.h (PASS_IN_REG_P): Remove extraneous paranthesis.
	(GO_IF_LEGITIMATE_ADDRESS): Added missing tab.

2000-01-19  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
	* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
	(fix_char_macro_defines, fix_char_macro_uses): New functions.

	* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
	Recognize Emacs mode markers also.
	* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
	C++ comments in C++ headers.  Call is_cxx_header only if
	necessary.

	* fixinc/inclhack.def (avoid_bool): Add select for the problem and
	bypass for ncurses.
	(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
	(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
	... these, which use the new C fixes.
	(math_exception): Escape literal '+' in bypass expression.

	* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
	Regenerate.

2000-01-19  Geoff Keating  <geoffk@cygnus.com>

	* rtlanal.c (reg_referenced_p): A CLOBBER of a MEM uses any REGs
	inside the MEM.

2000-01-20  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.c (loop_optimize): Allocate loop_info structure for each loop
	prior to calling scan_loop.

Wed Jan 19 19:54:38 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.c (find_barrier, gen_block_redirect): Fix indentation.
	(split_branches, calc_live_regs): Likewise.

Wed Jan 19 19:12:36 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* sh.md (fpu_single, fp_mode): New attributes.

2000-01-20  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.c (current_loop_info): Renamed from loop_info_data
	and changed to a pointer.
	(loop_optimize): Allocate loop_info structure for each loop
	and initialize to zero.
	(scan_loop): Set current_loop_info.

	* unroll.c (loop_iterations): Don't abort if REG_USERVAR_P set
	on iteration_var.

2000-01-19  Richard Henderson  <rth@cygnus.com>

	* stupid.c: Die die die.
	* Makefile.in (OBJS): Remove stupid.o.
	(stupid.o): Likewise.

	* except.c (emit_eh_context): Don't emit USEs for stupid.
	* explow.c (probe_stack_range): Likewise.
	* flags.h (obey_regdecls): Remove.
	* flow.c (find_basic_blocks): Don't run try_merge_blocks
	when not optimizing.
	(life_analysis): Limit data collection when not optimizing.
	(mark_regs_live_at_end): Always mark the return value registers.
	(mark_used_regs): Remove dummy RETURN case.
	(print_rtl_with_bb): Don't consult obey_regdecls.
	* function.c (use_variable, use_variable_after): Remove.
	(assign_parms): Consult optimize not obey_regdecls.
	(expand_function_start): Don't emit USEs for stupid.
	(expand_function_end): Likewise.
	* global.c (build_insn_chain): Export.
	* integrate.c (expand_inline_function): Kill return-value USE
	handling code.
	* jump.c (jump_optimize_1): Do simple jump optimizations and
	dead code elimination.
	(calculate_can_reach_end): Remove check_deleted argument.
	(delete_insn): Patch out insns even when not optimizing.
	* local-alloc.c (block_alloc): Don't do tying when not optimizing.
	* rtl.h (use_variable, use_variable_after): Remove declarations.
	(build_insn_chain): Declare.
	* stmt.c (expand_value_return): Don't emit USEs for stupid.
	(expand_end_bindings): Likewise.
	(expand_decl): Likewise.  Consult optimize not obey_regdecls.
	* toplev.c (obey_regdecls): Remove.
	(rest_of_compilation): Don't set it.  Kill stupid in favor of
	flow1, local-alloc, and reload.
	(main): Don't set obey_regdecls.

	* config/nextstep.c (handle_pragma): Likewise.

	* alpha/alpha.md (allocate_stack): Don't emit USEs for stupid.

	* arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't fix reg 0 for stupid.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha-protos.h: PROTO -> PARAMS.
	* alpha.c: Likewise.
	* elf.h: Likewise.
	* h8300.c: Likewise.
	* i386-protos.h: Likewise.
	* i386.c: Likewise.
	* m32r-protos.h: Likewise.
	* m32r.c: Likewise.
	* mips.c: Likewise.
	* mips.md: Likewise.
	* gmon-sol2.c: Likewise.
	* sparc.c: Likewise.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ns32k-protos.h: New file.

	* ns32k.c: Fix compile time warnings.

	* ns32k.h: Move prototypes to ns32k-protos.h.  Fix compile time
	warnings.

	* ns32k.md: Likewise.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* vax-protos.h: New file.

	* vax.c: Fix compile time warnings.

	* vax.h: Move prototypes to vax-protos.h.  Fix compile time
	warnings.

	* vax.md: Likewise.

	* vaxv.md: Likewise.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* romp-protos.h: New file.

	* romp.c: Fix compile time warnings.

	* romp.h: Move prototypes to romp-protos.h.  Fix compile time
	warnings.

	* romp.md: Likewise.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* we32k-protos.h: New file.

	* we32k.c: Fix compile time warnings.

	* we32k.h: Move prototypes to we32k-protos.h.  Fix compile time
	warnings.

2000-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calls.c (emit_call_1): Mark parameter with ATTRIBUTE_UNUSED.

	* except.c (eh_regs): Likewise.

	* final.c (output_operand): Likewise.

	* fold-const.c (target_isinf, target_isnan): Likewise.

Tue Jan 18 16:19:55 MET 2000  Jan Hubicka  <hubicka@freesoft.cz>

	* i386.h (BIGGEST_ALIGNMENT): Set to 128.
	(BIGGEST_FIELD_ALIGNMENT): Set to (TARGET_ALIGN_DOUBLE ? 64 : 32)

	* i386.md (memstr): Do not use rep stosb for counts divisible by 4
	when optimize_size.
	(clrstrsi): Rewrite.
	(strsethi, strsetqi): New expanders.
	(strsethi_1, strsetqi_1, rep_stossi, rep_stosqi): New insn patterns.
	(cmpstrsi): Emit compare insn before cmpstrsi_1
	(cmpstrsi_nz): use flags, set type to str, prefix_length to 1.
	(strlensi_1): Likewise.
	(cmpstrsi_1): Likewise; do not output compare.
	(strlen expander): Do not unroll when optimizing for size.
	(*subsi3_carry): Rename to subsi3_carry
	(addqi3_cc): New pattern.
	* i386.h (processor_costs): Add move_ratio field.
	(MOVE_RATIO): Use move_ratio field, set to 3 for OPTIMIZE_SIZE
	* i386.c (*_cost): Set move_ratio.
	(x86_unroll_strlen): Enable for Athlon, PPro and K6 too.
	(x86_expand_strlensi_1): Rewrite the main loop.

2000-01-17  Richard Henderson  <rth@cygnus.com>

	* combine.c (combine_simplify_rtx): Give FLOAT_STORE_FLAG_VALUE a mode.
	* cse.c (find_comparison_args, fold_rtx): Likewise.
	* integrate.c (subst_constants): Likewise.
	* loop.c (get_condition): Likewise.

	* tm.texi (FLOAT_STORE_FLAG_VALUE): Update docs.

	* alpha.h (FLOAT_STORE_FLAG_VALUE): Use REAL_VALUE_ATOF.

2000-01-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
	(RESTORE_WARN_FLAGS): Unpack it.
	Change semantic type of extension to ttype.
	* c-common.c (split_specs_attrs): Expect an INTEGER_CST.
	* c-parse.y, c-parse.c, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

2000-01-17  Zack Weinberg  <zack@wolery.cumb.org>

	* fixinc/fixlib.c: Add copyright notice.
	(compile_re): New function.
	* fixinc/fixlib.h: Prototype compile_re.

	* fixinc/fixfixes.c, fixinc/fixtests.c, fixinc/fixincl.c:
	Use compile_re to compile regular expressions.

	* fixinc/fixincl.c (egrep_test): Don't bother asking regexec
	where the pattern matched.

	* fixinc/inclhack.def (sun_memcpy): Move to AAB_sun_memcpy,
	use 'replace'.
	(ultrix_ansi_compat): Likewise.
	(interactv_add1): Rename to 'isc_omits_with_stdc', remove shell test,
	add egrep test.
	(interactv_add2, interactv_add3): Delete.
	(x11_sprintf): Don't use filename glob.
	* fixinc/fixincl.x, fixinc/inclhack.sh, fixinc/fixincl.sh:
	Regenerate.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* print-rtl.c: PROTO -> PARAMS.
	* real.c: Likewise.
	* reg-stack.c: Likewise.
	* resource.c: Likewise.
	* sdbout.h: Likewise.
	* simplify-rtx.c: Likewise.
	* stor-layout.c: Likewise.
	* stupid.c: Likewise.
	* xcoffout.c: Likewise.
	* xcoffout.h: Likewise.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.c: PROTO -> PARAMS.
	* toplev.h: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* unroll.c: Likewise.
	* varasm.c: Likewise.
	* varray.c: Likewise.
	* varray.h: Likewise.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* reload.c: PROTO -> PARAMS.
	* reload.h: Likewise.
	* reload1.c: Likewise.
	* reorg.c: Likewise.
	* resource.h: Likewise.
	* rtl.c: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.
	* sbitmap.h: Likewise.
	* sdbout.c: Likewise.
	* stack.h: Likewise.
	* stmt.c: Likewise.
	* system.h: Likewise.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* machmode.h: PROTO -> PARAMS.
	* mbchar.h: Likewise.
	* mips-tdump.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* output.h: Likewise.
	* prefix.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* regs.h: Likewise.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ggc-common.c: PROTO -> PARAMS.
	* ggc-page.c: Likewise.
	* ggc-simple.c: Likewise.
	* ggc.h: Likewise.
	* global.c: Likewise.
	* graph.c: Likewise.
	* gthr-win32.h: Likewise.
	* haifa-sched.c: Likewise.
	* halfpic.h: Likewise.
	* integrate.c: Likewise.
	* integrate.h: Likewise.
	* jump.c: Likewise.
	* lcm.c: Likewise.
	* local-alloc.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.

2000-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattr.c: PROTO -> PARAMS.
	* genattrtab.c: Likewise.
	* gencheck.c: Likewise.
	* gencodes.c: Likewise.
	* genconfig.c: Likewise.
	* genemit.c: Likewise.
	* genextract.c: Likewise.
	* genflags.c: Likewise.
	* gengenrtl.c: Likewise.
	* genopinit.c: Likewise.
	* genoutput.c: Likewise.
	* genpeep.c: Likewise.
	* genrecog.c: Likewise.

2000-01-16  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (BINFO_VPTR_FIELD): Augment documentation.

2000-01-16  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* aclocal.m4 (AC_FUNC_MMAP_ZERO): New macro.
	* configure.in (AC_FUNC_MMAP_ZERO): Use instead of AC_FUNC_MMAP.
	* ggc-page.c: Replace HAVE_MMAP with HAVE_MMAP_ZERO.
	* configure, config.in: Rebuilt.

2000-01-16  Zack Weinberg  <zack@wolery.cumb.org>

	* config/i386/i386.md: Add peephole to merge successive stack
	adjusts.

Sat Jan 15 15:41:14 EST 2000  John Wehle  (john@feith.com)

	* gcse.c (insert_insn_end_bb): Use emit_block_insn_before
	instead of emit_insn_before.  Also handle NOTE_INSN_BASIC_BLOCK
	when walking backwards to find all the parameter loads when
	the basic block ends in a call.

2000-01-15  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* loop.c (this_loop_info): Delete.
	(uid_loop): Add in place of uid_loop_num.  All uses updated.
	(loop_number_exit_count): Delete and replace with entry in loop
	structure.  All uses updated.
	(loop_number_loop_starts, loop_number_loop_ends): Likewise.
	(loop_number_loop_cont, loop_number_cont_dominator): Likewise.
	(loop_outer_loop): Likewise.
	(loop_invalid, loop_number_exit_labels): Likewise.
	(loop_used_count_register): Delete and replace with entry in
	loop_info structure.
	(find_and_verify_loops): Add loops argument.
	(verify_dominator, mark_loop_jump, prescan_loop): Replace loop_start,
	loop_end, etc. arguments with loop structure pointer.  All callers
	changed.
	(loop_reg_used_before_p, scan_loop, strength_reduce): Likewise.
	(check_dbra_loop, next_insn_in_loop, try_copy_prop): Likewise.
	(load_mems_and_recount_loop_regs_set, load_mems): Likewise.
	(insert_bct): Likewise.
	(basic_induction_var): New argument level.
	* loop.h (struct loop_info): Delete fields num, loops_enclosed,
	vtop, and cont.  Add used_count_register.
	(uid_loop): Delete declaration.
	(loop_number_exit_count): Likewise.
	(loop_number_loop_starts, loop_number_loop_ends): Likewise.
	(loop_number_loop_cont, loop_number_cont_dominator): Likewise.
	(loop_outer_loop, loop_used_count_register): Likewise.
	(loop_invalid, loop_number_exit_labels): Likewise.
	(unroll_loop): Replace loop_start and loop_end arguments
	with loop structure pointer.
	(loop_precondition_p, loop_iterations): Likewise.
	Include basic-block.h.
	* unroll.c: (unroll_loop): Replace loop_start and loop_end arguments
	with loop structure pointer.
	(loop_precondition_p, loop_iterations): Likewise.
	* basic-block.h (struct loop): New entries vtop, cont,
	cont_dominator, start, end, top, scan_start, exit_labels,
	exit_count.
	* Makefile.in (LOOP_H): Add basic-block.h to dependencies.

2000-01-15  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* defaults.h (ASM_OUTPUT_ASCII): Use ISDIGIT.

2000-01-14  Nathan Sidwell  <sidwell@codesourcery.com>

	* config.in: Rebuilt for 2000-01-13 change to acconfig.h.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pdp11-protos.h: New file.

	* pdp11.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* pdp11.h: Move prototypes to pdp11-protos.h.  Fix compile time
	warnings.

	* pdp11.md: Likewise.

	* 2bsd.h: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mn10300-protos.h: New file.

	* mn10300.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* mn10300.h: Move prototypes to mn10300-protos.h.  Fix compile time
	warnings.

	* mn10300.md: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mn10200-protos.h: New file.

	* mn10200.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* mn10200.h: Move prototypes to mn10200-protos.h.  Fix compile time
	warnings.

	* mn10200.md: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* h8300-protos.h: New file.

	* h8300.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* h8300.h: Move prototypes to h8300-protos.h.  Fix compile time
	warnings.

	* h8300.md: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* varasm.c (asm_output_bss): Mark parameters with ATTRIBUTE_UNUSED.
	(asm_emit_uninitialised): Likewise.

2000-01-13  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/mips/mips.h (ISA_HAS_INT_CONDMOVE): New.
	* config/mips/mips.md: Use ISA_HAS_INT_CONDMOVE.

2000-01-14  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.c (override_options): Don't turn on extra
	alignment for mips16.

2000-01-14  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.c (mips_va_arg): Fix fprv for the 32 bit
	eabi, and make sure queued POSTINCREMENT rtl is emitted at
	the right point.

2000-01-14  Clinton Popetz  <cpopetz@cygnus.com>

	* builtins.c (PAD_VARARGS_DOWN): Define.
	(std_expand_builtin_va_arg): Use the above macro.
	* config/mips/mips.h (PAD_VARARGS_DOWN): Define.
	* tm.texi (Register Arguments): Document the above macro.

2000-01-14  Nick Clifton  <nickc@cygnus.com>

	* emit-rtl.c (emit_insn): If checking is enabled, make sure
	that this function has not been used to emit a jump
	instruction.

	* jump.c (return_jump_1): Cope with being passed a null rtx.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* eh-common.h: PROTO -> PARAMS.
	* emit-rtl.c: Likewise.
	* errors.c: Likewise.
	* errors.h: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* final.c: Likewise.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sh-protos.h: New file.

	* sh.c: Include insn-config.h, toplev.h, recog.h and tm_p.h.
	Add static prototypes.  Fix compile time warnings.

	* sh.h: Move prototypes to sh-protos.h.  Fix compile time warnings.
	* sh.md: Likewise.
	* elf.h: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arc-protos.h: New file.

	* arc.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* arc.h: Move prototypes to arc-protos.h.  Fix compile time
	warnings.

	* arc.md: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dsp16xx-protos.h: New file.

	* dsp16xx.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* dsp16xx.h: Move prototypes to dsp16xx-protos.h.  Fix compile time
	warnings.

	* dsp16xx.md: Likewise.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* convex-protos.h: New file.

	* convex.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* convex.h: Move prototypes to convex-protos.h.  Fix compile time
	warnings.

2000-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* elxsi-protos.h: New file.

	* elxsi.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* elxsi.h: Move prototypes to elxsi-protos.h.  Fix compile time
	warnings.

	* elxsi.md: Likewise.

2000-01-14  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.h (REGISTER_MOVE_COST): Remove redundant
	case for moving from HI/LO/HI_LO_REG.  This makes the behavior
	match the comment for MIPS16.

Fri Jan 14 00:28:06 2000  Jeffrey A Law  (law@cygnus.com)

	* flow.c (split_edge): Do not call set_block_for_insn if we
	do not have a basic_block_for_insn structure.

	* fr30.h (TRAMPOLINE_TEMPLATE): Use nops to ensure the static chain
	and destination functions are 32bit aligned within the trampoline.
	(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes.
	(TRAMPOLINE_ALIGNMENT): Define.

	* cse.c (cse_insn): When changing (set (pc) (reg)) to
	(set (pc) (label_ref)), verify the change creates a valid insn.

	* fr30.c (call_operand): Tighten and rework to match rules for
	call RTL expressions.
	* fr30.h (PREDICATE_CODES, case call_operand): Only allow MEMs.
	* fr30.md (call patterns): Improve constraints.

Thu Jan 13 23:44:03 2000  Richard Henderson  <rth@cygnus.com>

	* fr30.c (fr30_expand_epilogue): Revert last change.
	Use emit_jump_insn for the return insn.

Thu Jan 13 14:46:03 2000  Jason Eckhardt  <jle@cygnus.com>
			  Stan Cox  <scox@cygnus.com>

	* predict.c: New file. Preliminary infrastructure work for static
	branch prediction and basic block reordering.
	* basic-block.h: Add prototype for estimate_probability.
	* Makefile.in: Add rules for predict.o.

2000-01-13  Jason Merrill  <jason@yorick.cygnus.com>

	* fixincludes (va_list): Use __not_va_list__ for the dummy.
	* fixinc/*: Likewise.

2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cccp.c: PROTO -> PARAMS.
	* cexp.y: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* convert.h: Likewise.
	* cse.c: Likewise.
	* dbxout.c: Likewise.
	* dbxout.h: Likewise.
	* diagnostic.c: Likewise.
	* doprint.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarf2out.h: Likewise.
	* dwarfout.c: Likewise.
	* dwarfout.h: Likewise.
	* dyn-string.h: Likewise.

2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in
	macro conditionals guarding use.

	* dwarf2out.c: Include "tm_p.h".

	* function.c (locate_and_pad_parm): Mark parameter with
	ATTRIBUTE_UNUSED.
	(expand_function_end): Likewise for variable `context'.

	* reorg.c (make_return_insns): Wrap prototype in macro HAVE_return.

2000-01-13  Nick Clifton  <nickc@cygnus.com>

	* config/fr30/fr30.c (fr30_expand_epilogue): Emit USEs of pop'ed
	register to prevent compile time warnings.

2000-01-13  Zack Weinberg  <zack@wolery.cumb.org>

	* longlong.h [i386] (udiv_qrnnd): Rename 'd' argument to 'dv'
	to avoid -Wtraditional warning.

2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* 1750a-protos.h: New file.

	* 1750a.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* 1750a.h: Move prototypes to 1750a-protos.h.  Fix compile time
	warnings.

	* 1750a.md: Likewise.

2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* a29k-protos.h: New file.

	* a29k.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* a29k.h: Move prototypes to a29k-protos.h.  Fix compile time
	warnings.

2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* clipper-protos.h: New file.

	* clipper.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* clipper.h: Move prototypes to clipper-protos.h.  Fix compile time
	warnings.

Thu Jan 13 16:03:06 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* reload1.c (reload_combine_note_store): Use HARD_REGNO_NREGS.

2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>

	* configure.in (--enable-new-gxx-abi): New option.
	* acconfig.h (ENABLE_NEW_GXX_ABI): New define.
	* Makefile.in (GXX_ABI_FLAG): New variable.
	* configure: Regenerate.

2000-01-13  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* stor-layout.c (layout_type): Use FORCE_STRUCT_BLK.
	* tm.texi (FORCE_STRUCT_BLK): Document.
	* config/c4x/c4x.h (FORCE_STRUCT_BLK): New macro.

Wed Jan 12 23:12:47 2000  Hans-Peter Nilsson  <hp@axis.com>

	* config/ns32k/ns32k.md: Revert Jan 9 change.

	* genrecog.c (maybe_both_true_2): Do not compare a predicate-test
	to a mode-test, if the predicate is address_operand.

Wed Jan 12 22:34:00 2000  Jeffrey A Law  (law@cygnus.com)

	* combine.c (if_then_else_cond): Be careful about what kinds
	of RTL expressions are passed to operand_subword.

	* flow.c (split_edge): If we have to insert a new jump, make
	sure to associate it with a basic block.

	* flow.c (commit_one_edge_insertion): A block with one successor
	can end in a JUMP_INSN that is not a simplejump.

2000-01-12  Robert Lipe  <robertl@sco.com>

	* i386/sco5.h (INIT_SECTION_ASM_OP_COFF): Rename section to "ctor".
	(BUILD_VA_LIST_TYPE): Define.
	(EH_FRAME_SECTION_ASM_OP): Explictly define to better interact
	with crtstuff.c.

2000-01-12  Jason Merrill  <jason@casey.cygnus.com>

	* cccp.c (do_pragma): Add cast to (char *).

2000-01-12  Richard Henderson  <rth@cygnus.com>
	    Fred Fish  <fnf@be.com>
	    Jason Merrill  <jason@cygnus.com>

	* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
	* i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
	* i386/beos-elf.h, i386/beos-pe.h: New files.

	* Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
	* cross-make (SYSTEM_HEADER_DIR): Define using
	CROSS_SYSTEM_HEADER_DIR.

	* gcc.c (LIBRARY_PATH_ENV): Provide default.
	(process_command): Use it.
	(main): Likewise.  Kill trailing = from env vars.
	(build_search_list): Put it back.
	* collect2.c (main): Use LIBRARY_PATH_ENV.

	* configure.in (GCC_NEED_DECLARATIONS): Add environ.
	* toplev.c: Use NEED_DECLARATION_ENVIRON.

	* tm.texi (Frame Layout): Document SMALL_STACK.
	* c-common.c (c_common_nodes_and_builtins): Check it.

	* system.h: Undef alloca after including glibc's <stdlib.h>,
	if USE_C_ALLOCA is defined.

	* gcc.c (set_input): New fn.
	(main): After all input files are compiled, reset the input file
	info to the first.

	* aclocal.m4 (rindex, index): If already defined, don't attempt
	to redefine.

	* ginclude/varargs.h: (__va_list__): Define ifndef.
	* ginclude/stdarg.h: Likewise.

	* ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int
	instead of unsigned char.

	* hash.h (true, false, boolean): Undef before enum.

	* expmed.c (choose_multiplier): Cast &mhigh_lo and &mhigh_hi to be
	proper type of "HOST_WIDE_INT *", rather than their natural type of
	"unsigned HOST_WIDE_INT *".

2000-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* svr3.h (ASM_FILE_START): Wrap if-clause in squigly brackets.

	* recog.c (memory_address_p): Mark parameter with ATTRIBUTE_UNUSED.

	* regclass.c (choose_hard_reg_mode): Likewise.

	* reload.c (find_valid_class, strict_memory_address_p): Likewise.

	* reorg.c (optimize_skip): Wrap prototype in macro conditionals.

2000-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c: PROTO -> PARAMS.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-iterate.c: Likewise.
	* c-lang.c: Likewise.
	* c-lex.c: Likewise.
	* c-lex.h: Likewise.
	* c-parse.in: Likewise.
	* c-pragma.c: Likewise.
	* c-pragma.h: Likewise.
	* c-tree.h: Likewise.
	* c-typeck.c: Likewise.
	* objc/objc-act.c: Likewise.
	* objc/objc-act.h: Likewise.

2000-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m88k-protos.h: New file.

	* m88k.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* m88k.h: Move prototypes to m88k-protos.h.  Fix compile time warnings.

	* m88k.md: Likewise.

	* tekXD88.h: Likewise.

2000-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m68k-protos.h: New file.

	* m68k.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* m68k.h: Move prototypes to m68k-protos.h.  Fix compile time warnings.

	* mot3300.h: Likewise.

2000-01-12  Richard Earnshaw <rearnsha@arm.com>

	* haifa-sched.c (split_edges): Pass edgeset_size as second arg to
	extract_bitlst.
	(extract_bitlist): Declare bitlen.

2000-01-12  Zack Weinberg  <zack@wolery.cumb.org

	* cccp.c: Accept and ignore -lang-fortran.

	* c-typeck.c (build_c_cast): Issue -Wcast-qual warnings if the
	qualifiers don't match at any level of pointerness.

2000-01-12  Robert Lipe  <robertl@sco.com>

	* i386/sysv5.h (CPP_SPEC, LIBSPEC): Add -pthreadT.

2000-01-12  Bernd Schmidt  <bernds@cygnus.co.uk>

	* reload1.c (reload_reg_unavailable): New static variable.
	(reload_reg_free_p): Test it.
	(reload_reg_free_for_value_p): Test it instead of
	reload_reg_used.
	(choose_reload_regs_init): Compute it.

Wed Jan 12 03:24:41 2000  Toshiyasu Morita (toshi.morita@sega.com)

	* reorg.c (fill_slots_from_thread): Check modified_in_p
	before replacing.

Wed Jan 12 03:20:31 2000  John Marshall <john_w_marshall@palm.com>

	* gcc.texi (Funding, GNU/Linux, Copying, Contributors): Format
	these nodes even if INTERNALS is not set.

Wed Jan 12 09:39:22 2000  Nick Burrett  <nick.burrett@btinternet.com>

	* gcse.c (delete_null_pointer_checks_1): Cope when
	get_condition cannot determine the condition.

2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.h (set_message_length): Declare.

	* diagnostic.c (obstack_chunk_alloc): Define macro.
	(obstack_chunk_free): Likewise.
	(struct output_buffer): New data structure.
	(vmessage): Remove.
	(output_maximum_width): New variable.
	(doing_line_wrapping, set_message_length, init_output_buffer,
	get_output_prefix, output_space_left, emit_output_prefix,
	output_newline, output_append, output_puts, dump_output,
	vbuild_message_string, build_message_string, build_location_prefix,
	voutput_notice, output_printf, line_wrapper_printf,
	vline_wrapper_message_with_location):  New functions. Implement
	automatic line wrapping.
	(v_message_with_decl): Make it handle automatic line wrapping.
	(v_error_with_file_and_line): Likewise.
	(v_warning_with_file_and_line): Likewise.
	(announce_function): Likewise.
	(default_print_error_function): Likewise.

2000-01-11 16:24 -0800  Zack Weinberg  <zack@wolery.cumb.org>

	* cpplib.h (struct cpp_options): Change lang_asm to char.
	Add lang_fortran.
	* cppinit.c (builtin_array): Take out __STDC_VERSION__, it's
	done in cpp_handle_option now.
	(initialize_builtins): Take out special case code used only by
	__STDC_VERSION__.
	(cpp_handle_option): Turn off trigraphs and trigraph warnings
	if -traditional.  Recognize -lang-fortran and set
	lang_fortran, also turn off cplusplus_comments.
	(print_help): Document -lang-fortran.
	* cpplib.c (handle_directive): Ignore `# 123 "file"' if
	lang_asm. Ignore all directives other than `# 123 "file"' if
	CPP_PREPROCESSED.
	(cpp_get_token): If -traditional, don't recognize directives
	unless the # is in column 1.
	(parse_string): If lang_fortran or lang_asm, silently
	terminate strings ('' or "") at end of line.
	Remove unnecessary braces.

2000-01-11  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
	    Richard Henderson  <rth@cygnus.com>

	* resource.c (mark_referenced_resources): Mark a set strict_low_part
	as used.
	* config/i386/i386.c (ix86_expand_setcc): Re-enable clear + set
	strict_low_part when possible.

2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alias.c: PROTO -> PARAMS.
	* basic-block.h: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* builtins.c: Likewise.
	* c-aux-info.c: Likewise.
	* caller-save.c: Likewise.
	* calls.c: Likewise.

2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (toplev.o): Depend on regs.h.

	* output.h (tdesc_section): Prototype.

	* regclass.c (copy_cost): Mark parameters with ATTRIBUTE_UNUSED.

	* sdbout.c: Include "tm_p.h".

	* toplev.c: Include "regs.h".

Tue Jan 11 11:37:58 2000  Mike Stump  <mrs@wrs.com>

	* unroll.c (unroll_loop): Add EH support.

2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* pa-protos.h: New file.

	* pa.c: Include recog.h and tm_p.h.
	(compute_zdepwi_operands, compute_movstrsi_length,
	remove_useless_addtr_insns, store_reg, load_reg, set_reg_plus_d,
	find_addr_reg, import_milli): Add static prototypes.
	(pa_cpu_string, pa_arch_string): Constify a char*.
	(legitimize_pic_address): Pass argument `mode' to pic_label_operand.
	(read_only_operand): Add argument `mode'.
	(singlemove_string, output_move_double, output_fp_move_double,
	output_block_move, output_and, output_ior, output_ascii,
	remove_useless_addtr_insns, milli_names, output_mul_insn,
	output_div_insn, output_mod_insn, output_arg_descriptor,
	output_cbranch, output_bb, output_bvb, output_dbra, ,
	output_millicode_call, output_call, hppa_encode_label,
	output_parallel_movb, output_parallel_addb): Constify a char*.
	(hppa_va_start): Mark parameter `stdarg_p' with ATTRIBUTE_UNUSED.
	(output_parallel_addb): Remove extra arg to `constrain_operands'

	* pa.h:  Move all prototypes to pa-protos.h.
	(pa_cpu_string, pa_arch_string): Constify a char*.
	(LEGITIMIZE_ADDRESS): Call `symbolic_operand' with mode argument.

	* pa.md: Call `function_label_operand' with mode argument.
	Likewise for `read_only_operand'.
	Fix nesting of parens in call to `symbolic_operand'.

2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i860-protos.h: New file.

	* i860.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* i860.h: Move prototypes to i860-protos.h.  Fix compile time warnings.

	* i860.md: Likewise.

Tue Jan 11 18:59:35 MET 2000  Jan Hubicka <jh@suse.cz>

	* i386.md (movstrsi expander): Rewrite.
	(movstrsi_1 insn): Deleted.
	(strmovhi, strmovqi expander): New expanders.
	(movshi_1, movsqi_1, rep_movsi, rep_movqi): New patterns.
	* i386.c (x86_single_stringop): New global variable.
	* i386.h (x86_single_stringop): Declare.
	(TARGET_SINGLE_STRINGOP): New macro.

2000-01-11  Clinton Popetz  <cpopetz@cygnus.com>

	* config/mips/mips.c (mips_va_arg): For EABI, emit the queued
	integer vararg POSTINCREMENT before the destination of the jump
	for the hard fp case.
	(function_arg_pass_by_reference): Pass a copy of CUM to
	FUNCTION_ARG.

	* config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Move check
	for CONSTANT_ADDRESS_P above while loop for subreg.

2000-01-11  Clinton Popetz  <cpopetz@cygnus.com>

	* flow.c (propagate_block): When a prologue/epilogue insn
	is marked dead, unconditionally clear libcall_is_dead and
	insn_is_dead, and only dump rtl if warnings aren't being
	suppressed.

Tue Jan 11 16:26:47 MET 2000  Jan Hubicka <jh@suse.cz>

	* i386.c (ix86_attr_length_default): Handle TYPE_STR and TYPE_CLD.
	* i386.md (FIRST_PSEUDO_REGISTER): Set to 20.
	(FIXED_REGISTERS): Set dirflag as fixed.
	(CALL_USED_REGISTERS): Set dirflag as used.
	(REG_ALLOC_ORDER): Set dirflag as last one.
	(DIRFLAG_REG): New macro.
	(MD_ASM_CLOBBERS): Asm clobber dirflag for backward compatibility.
	(HI_REGISTER_NAMES): Add dirflag.
	(DEBUF_PRINT_REG): Handle dirflag.
	* i386.md (type attribute): New cld and str types.
	(length_opcode attribute): Set cld and str to 1.
	(memory attribute): Set str to unknown - it is not clear from the
	patterns.
	(pent_np function unit): Prefixed string operations takes 12 cycles
	minimally; cld takes 2 cycles.
	(ppro_uops attribute): Str is "many" and cld is "few".
	(ppro_p0 unit): Handle cld here.
	(k6_alux unit): Handle cld and str types.
	(k6_load unit): It is ocupied by str opcodes.
	(k6_store unit): It is ocupied by str opcodes.
	(athlon_decode): Str is vector decoded.
	(athlon_ieu): Handle str and cld.
	(cld pattern): New.
	(movstrsi, clrstr, cmpstr, strlen expander): Emit cld instruction
	(movstrsi_1, clrstrsi_1, cmpstrsi_1, strlensi_1,
	cmpstrsi_nz_1 insn): Do not output cld instruction

Tue Jan 11 06:14:39 2000  David Starner <dstarner98@aasaa.ofe.org>

	* gcc.texi (G++ and GCC): Add Java and Chill.
	(Bug Critera): Don't list languages.

	* gcc.texi (Incompatibilities): No longer claim most C compilers
	are K&R.

	* gcc.texi (G++ and GCC): Update other front-ends list.

Tue Jan 11 05:49:01 2000  Jeffrey A Law  (law@cygnus.com)

	* i386.c (ix86_expand_setcc): Fix typo.
	(ix86_expand_movcc): Similarly.

	* Band-aid until haifa's bitset implementation is nuked.
	* haifa-sched.c (extract_bitlst): New parameter for size of the
	bitset in bits.  All callers changed.  Avoid looking at undefined
	bits in the bitset.
	(edgeset_bitsize): New variable.
	(schedule_region): Initialize edgeset_bitsize.

2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (optabs.o): Depend on real.h
	(resource.o): Depend on insn-attr.h

	* builtins.c (result_vector): Wrap prototype in macro conditions
	governing definition and use.

	* c-common.c: Include tm_p.h.

	* c-lex.c: Likewise.

	* elfos.h: Constify a char*.

	* final.c (align_fuzz): Wrap prototype in macro HAVE_ATTR_length.
	(get_attr_length, shorten_branches, profile_after_prologue): Mark
	parameter with ATTRIBUTE_UNUSED.

	* fold-const.c (exact_real_inverse): Wrap variable `i' in
	CHECK_FLOAT_VALUE.

	* haifa-sched.c (schedule_insns): Mark parameter with
	ATTRIBUTE_UNUSED.

	* optabs.c: Include real.h.

	* real.h (ereal_atof): Add prototype arguments.

	* resource.c: Include insn-attr.h.

	* sdbout.c (sdbout_queue_anonymous_type,
	sdbout_dequeue_anonymous_types): Wrap in macro
	SDB_ALLOW_FORWARD_REFERENCES.
	(sdbout_init, sdbout_start_new_source_file): Mark parameter with
	ATTRIBUTE_UNUSED.

	* stmt.c (expand_return): Wrap variable `op0' in macro HAVE_return.

	* stupid.c: Include tm_p.h.

	* tree.c (real_value_from_int_cst): Mark parameter with
	ATTRIBUTE_UNUSED.

2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i960-protos.h: New file.

	* i960.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.

	* i960.h: Move prototypes to i960-protos.h.  Fix compile time warnings.

2000-01-10  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* combine.c (expand_field_assignment): Do not discard SUBREGs
	while computing nonzero_bits.

2000-01-09  Nick Clifton  <nickc@cygnus.com>

	* config/arm/arm.c: Fix compile time warnings about signed vs
	unsigned constants.
	* config/arm/arm.h: Fix compile time warnings about signed vs
	unsigned constants.

2000-01-09  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (output_return_instruction): Use `ldr' rather
	than `ldm' with only one register.
	* config/arm/arm.md (push_multi): Use `str' rather than `stm' with
	only one register.

	* config/arm/linux-gas.h (CLEAR_INSN_CACHE): Say that R0 is
	clobbered.

Sun Jan  9 17:50:23 2000  Hans-Peter Nilsson  <hp@axis.com>

	* config/ns32k/ns32k.md (load or push effective address): Operand 1
	must have SImode.

2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
	assignment used as truth value.

	* function.c (assign_temp): Mark parameter `dont_promote' with
	ATTRIBUTE_UNUSED.  Wrap variable `unsignedp' with macro
	PROMOTE_FOR_CALL_ONLY.

	* genrecog.c (write_subroutine): Mark variable `operands' with
	ATTRIBUTE_UNUSED.

	* optabs.c (prepare_cmp_insn): Mark parameter `align' with
	ATTRIBUTE_UNUSED.

	* sdbout.c (sdbout_init): Likewise for parameter `asm_file'.
	(sdbout_begin_block, sdbout_end_block): Likewise for `file'.

	* toplev.c (note_deferral_of_defined_inline_function): Likewise
	for `decl'.

2000-01-09  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x.h: Tidy up comments.
	* config/c4x.c: Likewise.

Sun Jan  9 01:02:55 EST 2000  John Wehle  (john@feith.com)

	* fold-const.c (lshift_double, rshift_double): Handle
	shifting by 2 * HOST_BITS_PER_WIDE_INT correctly.

2000-01-08  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* toplev.c (rest_of_compilation): Initialize cse_not_expected as
	in prepare_function_start().

Sat Jan  8 12:12:46 2000  Nick Clifton  <nickc@cygnus.com>

	* config/v850/v850.c (expand_epilogue): Interrupt functions no
	longer allocate extra stack for function calls.

2000-01-08  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (*subqf3_set): Fix typo.

2000-01-08  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (CALLER_SAVE_PROFITABLE): Define as 0.

2000-01-07  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (processor_target_table): Add power3 as alias for 630.
	* aix43.h: Revert Aug 2 change.
	(HAS_INIT_SECTION): Define, not visible yet.
	(LD_INIT_SWITCH): Define, not visible yet.
	* t-aix43 (MULTILIB_OPTIONS): Revert Aug 2 change.

	* glimits.h (__LONG_MAX__): Recognize 64-bit AIX too.

	* collect2.c (main): Expand ld2 size further.
	(export_object_lst): Cast assignment to avoid warning.
	(main, LD_INIT_SWITCH): Add AIX 4.2+ -binitfini support.
	(scan_prog_file, COFF): Do not collect initialization or
	finalization functions generated for entire shared object if
	init/fini support present.

2000-01-07  Nick Clifton  <nickc@cygnus.com>

	* config/elfos.h: Tidy up formatting of marcos.  Make sure
	that .section directives are always prefixed by a tab.

	* config/svr4.h: Add #include "elfos.h" and remove duplicate
	definitions.

2000-01-07  Matt Austern  <austern@sgi.com>

	* fold-const.c (real_hex_to_f): Remove duplicate declaration of
	expon.

Fri Jan  7 01:55:34 2000  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (crtend.o): Pass @inhibit_libc@ to compilation of
	crtstuff.c.
	(crtbegin.o, s-crtS): Likewise.

2000-01-06  Richard Henderson  <rth@cygnus.com>

	* alpha.md (adddi_2+1): Limit offset such that it will be
	loadable with a single ldah+lda pair.
	(adddi_2+2): Explicitly fail split if we can't make it work.

2000-01-06  Mumit Khan  <khan@xraylith.wisc.edu>

	* protoize.c: Conditionally include unistd.h.
	(IS_SAME_PATH_CHAR): New macro.
	(IS_SAME_PATH): New macro.
	(CPLUS_FILE_SUFFIX): New macro.
	(cplus_suffix): New static variable.
	(is_abspath): New static function.
	(in_system_include_dir): Handle DOS style pathnames.
	(file_could_be_converted): Likewise.
	(file_normally_convertible): Likewise.
	(directory_specified_p): Likewise.
	(file_excluded_p): Likewise.
	(abspath): Likewise.
	(shortpath): Likewise.
	(referenced_file_is_newer): Likewise.
	(save_def_or_dec): Likewise.
	(do_processing): Likewise.
	(main): Likewise.
	(edit_file): Likewise. Use rename instead of link.
	(rename_c_file): Likewise. Don't rename syscalls file.
	(munge_compile_params): Define null device for DOS based systems.
	(process_aux_info_file): Use binary mode if appliable.
	(edit_file): Likewise.
	* invoke.texi (Running Protoize): Document C++ suffixes used.

	* cccp.c: Delete PATH_SEPARATOR, DIR_SEPARATOR and
	IS_DIR_SEPARATOR macros.
	* collect2.c: Likewise.
	* cppinit.c: Likewise.
	* dwarf2out.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c: Likewise.
	* prefix.c: Likewise.
	* rtl.c: Likewise.
	* toplev.c: Likewise.
	* system.h: And move to here.

	* prefix.c (update_path): Fix typo in variable name.

2000-01-06  Richard Henderson  <rth@cygnus.com>

	* flow.c (mark_set_1): Use loop_depth+1 as reference weight.
	(find_auto_inc, mark_used_regs, try_pre_increment_1): Likewise.
	(count_reg_sets_1, count_reg_references): Likewise.
	(flow_loops_level_compute): Start counting actual loop depth at 1.
	(flow_loops_find): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* regclass.c (regclass): Re-instate Jan 4 0-based loop_depth change.

2000-01-06  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>

	* defaults.h (DWARF_FRAME_REGISTERS): if not defined, default to
	FIRST_PSEUDO_REGISTER
	* dwarf2out.c: Don't include frame.h
	* dwarfout.c: Likewise
	* Makefile.in (dwarfout.o, dwarf2out.o): Remove dependence on
	frame.h

Thu Jan  6 13:44:59 CET 2000  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of
	dead registers.

	* i386.c (movsf splitter): Fix typo in my last checkin.

2000-01-05  Nick Clifton  <nickc@cygnus.com>

	* varasm.c (IN_NAMED_SECTION): Allow targets to provide their
	own definition of this macro.
	(asm_emit_uninitialised): Invoke UNIQUE_SECTION if either
	flag_data_sections or UNIQUE_SECTION_P are true.

	* tm.texi (UNIQUE_SECTION): Document that it can be called for
	uninitialized data decls.

	* config/i386/winnt.c (i386_pe_unique_section): Cope with
	being called for uninitialized data.

	* config/i386/interix.c (i386_pe_unique_section): Cope with
	being called for uninitialized data.

	* config/mips/elf.h (UNIQUE_SECTION): Cope with being called
	for uninitialized data.

	* config/mips/elf64.h (UNIQUE_SECTION): Cope with being called
	for uninitialized data.

	* config/mips/iri6gld.h (UNIQUE_SECTION): Cope with being called
	for uninitialized data.

	* config/arm/unknown-elf.h (IN_NAMED_SECTION): Define.
	(UNIQUE_SECTION_P): Always generate a unique section if
	flag_data_sections is true.
	(UNIQUE_SECTION): Also generate unique sections for
	uninitialized data.
	(ASM_OUTPUT_ALIGNED_BSS): Redefine to use named_section().
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Redefine to use
	named_section().

2000-01-06  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/t-c4x (TARGET_LIBGCC2_CFLAGS): Don't redefine SF, DF,
	SI, or DI.

2000-01-06  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (udivqi3, divqi3): Delete.
	(umodqi3, modqi3, udivhi3, divhi3, umodhi3, modhi3, ffsqi2): Likewise.
	(*smulqi3_highpart_noclobber, *umulqi3_highpart_noclobber): New.
	(*lshrqi3_const_noclobber, *lshrqi3_nonconst_noclobber): Likewise.
	(*ashrqi3_const_noclobber, *ashrqi3_nonconst_noclobber): Likewise.

	* c4x.h (INIT_TARGET_OPTABS): Define to init libcalls.

2000-01-05 11:25 -0800  Zack Weinberg  <zack@rabi.columbia.edu>

	* c-decl.c (finish_enum): Simplify code to determine minimum and
	maximum values of the enum, and calculate the type.  Remove check
	for FUNCTION_DECLs in the values list, which cannot happen.  Replace
	the DECL_INITIAL of each enumeration constant with a copy converted
	to the enumeration type.  When updating variant types, don't bother
	updating the type itself.

	* c-typeck.c (build_binary_op): Simplify conditional expressions
	when weeding out spurious signed-unsigned warnings.  Add new
	spurious warning category: if the unsigned quantity is an enum
	and its maximum value fits in signed_type(result_type).  Update
	commentary.
	(build_conditional_expr): Warn here if one alternative is signed
	and the other is unsigned.

2000-01-05  Nick Clifton  <nickc@cygnus.com>

	* config/fr30/fr30.h: Remove extraneous comments.

2000-01-05  Bernd Schmidt  <bernds@cygnus.co.uk>

	* reload1.c (choose_reload_regs): When disabling a reload, also
	set reload_spill_index to -1.

2000-01-04  Joel Sherrill (joel@OARcorp.com>

	* configure.in (m68*-*-rtemscoff*): New target, formal name for
	old m68*-*-rtems*.
	(m68*-*-rtemself*): New target.
	(mips64orion-*-rtems*): Remove duplicate definition of tm_file.
	(sparc*-*-rtemsaout*): New target, formal name for old sparc*-*-rtems*.
	(sparc*-*-rtemself*): New target.
	(sparc*-*-rtems*): Now elf not a.out.
	* config/i386/rtems.h: Include config/rtems.h.
	* config/i386/rtemself.h: Include config/rtems.h.
	* config/i960/rtems.h: Include config/rtems.h.
	* config/m68k/rtems.h: Include config/rtems.h.
	* config/m68k/rtemself.h: Include config/rtems.h.
	* config/mips/rtems64.h: Include config/rtems.h.
	* config/pa/rtems.h: Include config/rtems.h.
	* config/rs6000/rtems.h: Include config/rtems.h.
	* config/sh/rtems.h: Include config/rtems.h.
	* config/sh/rtemself.h: Include config/rtems.h.
	* config/sparc/rtems.h: Include config/rtems.h.
	* config/sparc/rtemself.h: Include config/rtems.h

Tue Jan  4 23:59:26 2000  Denis Chertykov <denisc@overta.ru>

	* final.c (shorten_branches): Correctly compute length of
	asms without operands.

Tue Jan  4 22:55:41 2000  Steve Chamberlain <sac@pobox.com>

	* configure.in: Add pj target.
	* configure: Regenerate.
	* config/pj: New directory.
	* config/pj/lib1funcs.S: New file.
	* config/pj/linux.h: New file.
	* config/pj/pj.c: New file.
	* config/pj/pj.md: New file.
	* config/pj/pjl.h: New file.
	* config/pj/t-pj: New file.
	* config/pj/xm-pj.h: New file

Tue Jan  4 22:30:16 2000  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (rest_of_compilation): Run shorten-branches before
	reg-stack for now.

2000-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (IS_XXX_REG, IS_XXX_REGNO): Swap behavior of
	macros so that they're consistent with their names.
	* config/c4x/c4x.c (IS_XXX_REG, IS_XXX_REGNO): Likewise.
	* config/c4x/c4x.md (IS_XXX_REG, IS_XXX_REGNO): Likewise.

2000-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (*addqi3_noclobber_reload): Ensure that CC never
	modified inadvertently.

2000-01-04  Joel Sherrill <joel@OARcorp.com>

	* configure.in (v850*-*-rtems*): New target.
	* configure: Regenerate.
	* config/v850/rtems.h: New file.

2000-01-04  Mumit Khan  <khan@xraylith.wisc.edu>

	* gthr-win32.h (__gthread_active_p): Support Mingw MT runtime.
	(__gthread_key_create): Likewise.
	(__gthread_key_dtor):  Likewise.
	(__gthread_once): Fix logic.
	(__gthread_key_delete): Cast away constness.

	* i386/cygwin.h (SUBTARGET_SWITCHES): Add -mthreads option.
	* invoke.texi: Document.
	* i386/mingw32.h (CPP_SPEC): Use.
	(LIBGCC_SPEC): Likewise.
	* i386/crtdll.h (LIBGCC_SPEC): Likewise.

2000-01-04  David Edelsohn  <edelsohn@gnu.org>

	* rs6000/sysv4.h (ASM_OUTPUT_DEF): Undefine.
	(HANDLE_PRAGMA_PACK): Undefine.
	(SLOW_UNALIGNED_ACCESS): Define.

2000-01-04  David Edelsohn  <edelsohn@gnu.org>

	* expmed.c (SLOW_UNALIGNED_ACCESS): Add mode and align parameters
	to default definition.
	(store_bit_field): Call SLOW_UNALIGNED_ACCESS with mode and alignment.
	(store_fixed_bit_field): Call macro with word_mode and alignment.
	(extract_bit_field): Call macro with relevant mode and alignment.
	* expr.c (SLOW_UNALIGNED_ACCESS): Add mode and align parameters
	to default definition.
	(move_by_pieces): Call SLOW_UNALIGNED_ACCESS with word_mode
	and alignment.
	(move_by_pieces_ninsns): Likewise.
	(clear_by_pieces): Likewise.
	(emit_push_insn): Likewise.
	(store_field): Call macro with relevant mode and alignment.
	(expand_expr): Likewise.
	(expand_expr_unaligned): Likewise.

	* rs6000.h (HANDLE_PRAGMA_PACK): Define.
	(SLOW_UNALIGNED_ACCESS): Define.
	(CASE_VECTOR_MODE): Always use 32-bit offsets.
	(ASM_FILE_END): Generate 64-bit symbol in 64-bit mode.
	(EXTRA_SECTION_FUNCTIONS): Indent .csect pseudo-op.
	(toc_section): Likewise and .toc pseudo-op.
	(ASM_DECLARE_FUNCTION): Likewise.  Align text more strictly in
	64-bit mode.
	(TEXT_SECTION_ASM_OP): Likewise.
	(ASM_OUTPUT_ADD_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Always use
	32-bit offsets.

	* a29k.h (SLOW_UNALIGNED_ACCESS): Add MODE and ALIGN parameters.
	* alpha.h (SLOW_UNALIGNED_ACCESS): Likewise.
	* arm/thumb.h (SLOW_UNALIGNED_ACCESS): Likewise.
	* gmicro.h (SLOW_UNALIGNED_ACCESS): Likewise.
	* fr30.h (SLOW_UNALIGNED_ACCESS): Likewise.

Tue Jan  4 11:44:13 2000  Jeffrey A Law  (law@cygnus.com)

	* regclass.c: Revert my Jan 4 change to loop cost computation.

Tue Jan  4 19:22:39 MET 2000  Jan Hubicka  <hubicka@freesoft.cz>

	* regclass.c (regclass): Do not obey REG_N_REFS in non-optimizing
	compilation.

2000-01-04  Stan Cox  <scox@cygnus.com>

	* haifa-sched.c (build_control_flow): Change unreachable simple
	loop test to check if current block has only one predecessor.
	(find_rgns): Initialize degree.  Use dest as degree index, not src.

2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strlen): Initialize variable `icode'.

	* calls.c (expand_call): Likewise for
	`old_stack_arg_under_construction'.

	* cpphash.c (macroexpand): Likewise for `args' and `rest_zero'.

	* function.c (pad_to_arg_alignment): Likewise for `save_var' and
	`save_constant'.

	* gcc.c (execute): Likewise for `ut' and `st'.

	* genattrtab.c (attr_rtx): Likewise for `rt_val'.

	* genopinit.c (gen_insn): Likewise for `m1', `m2' and `op'.

	* jump.c (jump_optimize_1): Likewise for `temp2'.

	* local-alloc.c (block_alloc): Likewise for `r1'.

	* loop.c (recombine_givs): Likewise for `life_start' and `life_end'.

	* reg-stack.c (check_asm_stack_operands): Likewise for `clobber_reg'.
	(subst_asm_stack_regs): Likewise for `clobber_reg' and `clobber_loc'.

	* regmove.c (fixup_match_1): Likewise for `insn_const', `dst_node'
	and `set2'.

	* reload.c (find_reloads): Likewise for `goal_alternative_number'
	and `goal_earlyclobber'.

	* scan-decls.c (scan_decls): Likewise for `prev_id_end'.

	* sdbout.c (sdbout_one_type): Likewise for `member_scl'.

	* stupid.c (stupid_life_analysis): Likewise for `chain'.

	* unroll.c (copy_loop_body): Likewise for `copy'.

	* varasm.c (output_constructor): Likewise for `byte'.

Tue Jan  4 15:34:34 MET 2000  Jan Hubicka  <hubicka@freesoft.cz>

	* i386.c (ix86_expand_move): Allow pushes of memory, offload to memory
	all FP constants for constant->reg moves.
	(ix86_split_to_parts): Try to convert memory address into immediate
	when available in the constant pool.
	* i386.h (PREFERRED_RELOAD_CLASS): Allow CONST_DOUBLE->integer reg
	moves.
	(LEGITIMATE_CONSTANT_P): Return 1.
	* i386.md (pushsf): New splitter to convert constant pool memory
	reference to immediate.
	(mov?f): Likewise; do not allow CONST_DOUBLE for reg moves before
	reload.

2000-01-04  Bernd Schmidt  <bernds@cygnus.co.uk>

	* i386.md (ashlsi3_cmpno): Don't accept variables shifts.
	(ashlhi3_cmpno, ashlqi3_cmpno, ashrsi3_cmpno, ashrhi3_cmpno,
	ashrqi3_cmpno, lshrsi3_cmpno, lshrhi3_cmpno, lshrqi3_cmpno): Likewise.
	(rotlsi3_cmpno, rotlhi3_cmpno, rotlqi3_cmpno, rotrsi3_cmpno,
	rotrhi3_cmpno, rotrqi3_cmpno): Likewise.

2000-01-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* ginclude/stdbool.h:  Support compilation as C++.

Tue Jan  4 01:35:13 2000  J"orn Rennecke <amylaar@cygnus.co.uk>

	* fold-const.c (make_range): Don't try to reverse an unbounded range.

Tue Jan  4 00:18:46 2000  Jeffrey A Law  (law@cygnus.com)

	* regclass.c (regclass): Properly compute loop_cost.  Adjust
	comments.

	* regclass.c: Fix minor whitespace problems.

2000-01-03  Anthony Green  <green@cygnus.com>

	* config/i386/i386.md (builtin_setjmp_receiver): New pattern.
	Restore the pic register if required.

2000-01-03  Ulrich Drepper  <drepper@cygnus.com>

	* c-common.c (format_char_info): Update comment.
	(check_format_info): Recognize 'z' modifier in the same way 'Z'
	was recognized.  Emit warning for formats new in ISO C99 only
	if flag_isoc9x is not set.

Mon Jan  3 12:59:54 2000  Mark P. Mitchell  <mark@codesourcery.com>

	* config/mips/iris6gld.h: Fix typo in -mabi=n32 specs.

Mon Jan  3 15:33:37 MET 2000  Jan Hubicka  <hubicka@freesoft.cz>

	* combine.c (expand_compound_operation): Do not convert ZERO_EXTEND to
	SIGN_EXTEND, convert SIGN_EXTEND to ZERO_EXTEND.
	(make_compound_operation): Choose cheaper alternative between
	ZERO_EXTEND and SIGN_EXTEND when sign bit is not set.

	* regclass.c (op_costs): Remove global variable.
	(record_reg_classes): New parameter "op_costs" and "reg_pref".
	(record_operand_costs): Break out from ...
	(scan_one_insn): ... here.
	(dump_regclass): Make dumps nicer.
	(regclass): Dump preferrences choosed and changes done during passes.

2000-01-03  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (gen_df_reg): Fix for 32bit SPARC.

2000-01-03  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (gen_df_reg): New function.
	* config/sparc/sparc-protos.h (gen_df_reg): Add prototype.
	* config/sparc/sparc.md (movtf_no_e_insn_sp64+1,
	movtf_no_e_insn_sp64+2, movtf_no_e_insn_sp64+3, movtf_cc_sp64+1,
	movtf_cc_reg_sp64+1): Use it.

2000-01-02  Mark Mitchell  <mark@codesourcery.com>

	* integrate.c (copy_decl_for_inlining): Clear TREE_ADDRESSABLE on
	copied LABEL_DECLs.

Mon Jan  3 02:54:40 2000  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/i386/i386.c (ix86_expand_unary_operator): Function
	definition made void.
	(ix86_expand_binary_operator): Update outdated preceding comment.
	* config/i386/i386-protos.h (ix86_expand_unary_operator): Update
	prototype.

	* config/i386/i386.c (override_options): Fix option-name typo.

2000-01-02  Mark Mitchell  <mark@codesourcery.com>

	* system.h (CEIL): Define.
	* builtins.c (CEIL): Remove.
	* expmed.c (CEIL): Likewise.
	* expr.c (CEIL): Likewise.
	* stor-layout.c (CEIL): Likewise.

2000-01-02  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>

	* expr.c (store_constructor_field): Fix typo introduced with last
	gcc2 merge.

2000-01-01  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (BINFO_N_BASETYPES): New macro.

2000-01-01  Bernd Schmidt  <bernds@cygnus.co.uk>

	* expmed.c (emit_store_flag): Prevent losing a pending stack
	adjust the same way we prevent losing queued increments.


Copyright (C) 2000 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
