2003-12-31  Jan Hubicka  <jh@suse.cz>

	PR opt/13473
	* recog.c (validate_replace_rtx_1):  Take care for RTL sharing inside
	ASM input operands

	PR opt/12617
	* toplev.c (dump_file_index): Reorder ce3 and bbro.
	(dump_file): Likewise.
	(rest_of_compilation): Likewise.

	PR debug/13367
	* cgraph.c (cgraph_function_possibly_inlined):  Even with
	flag_really_no_inline we inline always_inline functions.
	* cgraphunit.c (cgraph_analyze_function): Clear inlinable flag
	for non-always_inline functions when there is flag_really_no_inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_optimize_function): Check whether something got inlined.
	* c-objc-common.c (c_disregard_inline_limits): Do not always inline
	extern inline functions when not inlining.

	* opts.c (decode_options):  Disable crossjumping at -O1
	* invoke.texi (-O1): Document change.

2003-12-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* print-rtl.c (print_rtx): For hard register, write out register
	number and register name instead of calling PRINT_REG.
	* defaults.h (PRINT_REG): Deleted.
	* config/i386/i386.c (print_reg): Remove handling of CODE of -1.
	Move comments here from i386.h.
	(print_operand, print_operand_address): Call print_reg directly.
	* config/i386/i386.h (PRINT_REG): Deleted.

2003-12-31  Roger Sayle  <roger@eyesopen.com>

	* config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Define
	_INCLUDE_LONGLONG.

2003-12-31  Zack Weinberg  <zack@codesourcery.com>

	* gcc.c (init_spec): Add -lunwind to shared case too if
	USE_LIBUNWIND_EXCEPTIONS.

2003-12-31  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/include/texinfo.tex: Update to version 2003-12-21.10.
	* doc/gcc.texi, doc/gccint.texi: Don't set font for
	@def... commands.
	* doc/invoke.texi: Don't use empty @opindex.

2003-12-31  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (c_expand_expr): Remove code to return a value
	different from that returned by expand_expr.
	* expr.c (store_expr): Use the validity of a target MEM, rather
	than checking DECL_RTL (exp), to figure out if a copy is
	required.

2003-12-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/v850/lib1funcs.asm: Fix comment formatting.
	* config/v850/v850.c: Likewise.
	* config/v850/v850.h: Likewise.
	* config/v850/v850.md: Likewise.

2003-12-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.md (*movqi_insv_2): Remove AND in the
	set source.

2003-12-31  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config.gcc: Added m32r-linux m32rle-elf and m32le-linux targets.
	* doc/invoke.texi: Document -mflush-func, -mflush-trap options.
	Also add documentation for -mdebug, -malign-loops, -missue-rate,
	and -mbranch-cost options.
	* config/m32r/t-linux: New file: m32r-linux support.
	* config/m32r/xm-linux.h: Likewise.
	* config/m32r/xm-m32r.h: Likewise.
	* config/m32r/linux.h: Likewise.
	* config/m32r/little.h: New file: Little endian code generation
	support.
	* config/m32r/m32r-protos.h (m32r_legitimize_pic_address,
	m32r_legitimate_pic_operand_p, load_pic_register): Add
	prototypes.
	* config/m32r/m32r.c (m32r_init): Add options for cache-flush.
	(addr24_operand): Changes for PIC code generation.
	* config/m32r/m32r.h (LABEL_ALIGN): Define to calculate PNOP
	length at labels.
	(ASM_SPEC): Add PIC support.
	(FUNCTION_PROFILER): New define.
	(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Changed to support
	trampoline.
	(CONDITIONAL_REGISTER_USAGE, CONSTANT_ADDRESS_P,
	 LEGITIMIZE_ADDRESS, JUMP_TABLES_IN_TEXT_SECTION,
	 PIC_OFFSET_TABLE_REGNUM, FINALIZE_PIC, LEGITIMATE_PIC_OPERAND_P,
	 ASM_OUTPUT_ADDR_DIFF_ELT, CASE_VECTOR_MODE): Define for PIC.
	(move_src_operand, m32r_compute_frame_size, m32r_expand_prologue,
	 m32r_finalize_pic): Changes for PIC and profile support.
	(global_offset_table, load_pic_register, m32r_legitimate_pic_operand_p,
	 m32r_legitimize_pic_address): Add for PIC support.
	(m32r_file_start): Changed for little-endian-target.
	* config/m32r/m32r.md (mvqi, movhi, movsi, movdi, movsf, movdf,
	tablejump, tablejump_insn, call, call_value, call_value_via_label):
	Changes for PIC.
	(pic_load_addr, get_pc, builtin_setjmp_receiver): Added for PIC.
	(flush_icache): Changes for cache-flush trap.

2003-12-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.h: Remove an unnecessary #undef.

2003-12-30  Roger Sayle  <roger@eyesopen.com>

	* cppfiles.c (pch_open_file): Minor tweak to work-around native
	HPPA compiler bug.

2003-12-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/rs6000/aix.h: Fix comment formatting.
	* config/rs6000/rs6000-modes.def: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.md: Likewise.

2003-12-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386-protos.h: Remove prototype for
	const_int_1_operand.
	* config/i386/i386.c (const_int_1_operand): Remove.
	* config/i386/i386.h (PREDICATE_CODES): Remove
	const_int_1_operand.
	* config/i386/i386.md: Replace all uses of const_int_1_operand
	with const1_operand.
	* config/i386/pentium.md: Likewise.

2003-12-30  Geoffrey Keating  <geoffk@greed.local>

	* doc/tm.texi (PREFERRED_RELOAD_CLASS): Describe use of NO_REGS
	with constants.

2003-12-30  Mark Mitchell  <mark@codesourcery.com>

	* stor-layout.c (layout_decl): Turn bitfields into ordinary
	fields, even if they are the first field in a structure.

2003-12-30  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <COND_EXPR>: Don't require strict type
	equality, instead just prevent replacing a COND_EXPR of non-void
	type by one of its operands of void type.

2003-12-30  Andreas Schwab  <schwab@suse.de>

	* doc/c-tree.texi: Fix @item vs. @itemx.
	* doc/cpp.texi: Likewise.
	* doc/install.texi: Likewise.
	* doc/invoke.texi: Likewise.

2003-12-30  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Fix typo in previous
	change.

2003-12-30  Jan Hubicka  <jh@suse.cz>

	PR target/11936
	* i386.h (CLASS_LIKELY_SPILLED_P): Return true for
	FP_TOP_REG/FP_SECOND_REG.

2003-12-30  Steven Bosscher  <steven@gcc.gnu.org>

	Backport from tree-ssa (relevant changes only):
	2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* et-forest.h (et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons): Declarations removed.
	(struct et_node): New.
	(et_new_tree, et_free_tree, et_set_father, et_split, et_nca,
	et_below): Declare.
	* et-forest.c (struct et_forest_occurrence, struct et_forest,
	struct et_forest_node): Removed.
	(et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons, splay, remove_all_occurrences,
	find_leftmost_node, find_rightmost_node, calculate_value): Removed.
	(struct et_occ): New.
	(et_nodes, et_occurences): New.
	(set_depth, set_depth_add, set_prev, set_next, et_recomp_min,
	et_check_occ_sanity, et_check_sanity, et_check_tree_sanity,
	record_path_before_1, record_path_before, check_path_after_1,
	check_path_after, et_splay, et_new_occ, et_new_tree,
	et_free_tree, et_set_father, et_split, et_nca, et_below): New.
	* basic-block.h (struct basic_block_def): New field dom.
	(struct dominance_info): Type removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators): Declarations
	changed.
	(enum dom_state): New.
	(dom_computed): New variable.
	(first_dom_son, next_dom_son): Declare.
	* dominance.c (struct dominance_info): Removed.
	(BB_NODE, SET_BB_NODE): Removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators,
	debug_dominance_info): Work over new datastructure.  Access
	dominance datastructures through CFG.
	(assign_dfs_numbers, compute_dom_fast_query, first_dom_son,
	next_dom_son): New.
	* bt-load.c (dom): Variable removed.
	(augment_live_range, combine_btr_defs, migrate_btr_def,
	migrate_btr_defs, branch_target_load_optimize): Updated for the
	new interface for dominance information.
	* cfg.c {exit_entry_blocks): Update initializer.
	* cfglayout.c (copy_bbs): Removed loops argument. Updated for
	the new interface for dominance information.
	* cfglayout.h (copy_bbs): Declaration changed.
	* cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump,
	flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated
	for the new interface for dominance information.
	(flow_loop_scan): Loops argument removed.
	(flow_loops_free): Don't release dominators.
	* cfgloop.h (struct cfg): Dom field removed.
	(flow_loop_scan, loop_split_edge_with, simple_loop_p,
	just_once_each_iteration_p, split_loop_bb): Declaration changed.
	* cfgloopanal.c (simple_loop_exit_p, simple_increment,
	just_once_each_iteration_p, simple_loop_p): Remove loops argument.
	Updated for the new interface for dominance information.
	* cfgloopmanip.c (remove_bbs, find_path, create_preheader,
	split_loop_bb, loopify, duplicate_loop_to_header_edge,
	force_single_succ_latches, loop_split_edge_with): Ditto.
	* gcse.c (dominators): Variable removed.
	(free_code_hoist_mem, compute_code_hoist_data, hoist_code):
	Updated for the new interface for dominance information.
	* ifcvt.c (post_dominators): Variable removed.
	(mark_loop_exit_edges, merge_if_block, find_if_header,
	find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
	Updated for the new interface for dominance information.
	* loop-init.c (rtl_loop_optimizer_init,
	rtl_loop_optimizer_finalize): Ditto.
	* loop-unroll.c (decide_peel_simple, decide_peel_once_rolling,
	decide_peel_completely, decide_unroll_stupid,
	decide_unroll_constant_iterations,
	decide_unroll_runtime_iterations): Loops argument removed.
	Updated for the new interface for dominance information.
	(unroll_and_peel_loops, peel_loops_completely,
	unroll_loop_runtime_iterations): Updated for the new interface for
	dominance information.
	* loop-unswitch.c (may_unswitch_on_p, unswitch_loops,
	unswitch_single_loop, unswitch_loop): Updated for the new
	interface for dominance information.
	* predict.c (process_note_predictions, process_note_prediction,
	estimate_probability, note_prediction_to_br_prob): Ditto.
	* sched-rgn.c (find_rgns, init_regions): Ditto.
	* toplev.c (rest_of_handle_branch_prob): Free the dominators.

2003-12-30  Jan Hubicka  <jh@suse.cz>

	PR target/13456
	* i386.md (allocate_stack_worker):  Use different pattern for pre and
	post reload expansion.
	(allocate_stack_worker_1, allocate_stack_worker_rex64): Use
	match_scratch.
	(allocate_stack_worder_1_postreload,
	allocate_stack_worker_rex64_postreload): New.

2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Add pretend args size
	to the virtual incoming args pointer for downward stacks.

2003-12-29  Roger Sayle  <roger@eyesopen.com>

	PR fortran/12632
	* fold-const.c (fold) <COND_EXPR>: Don't fold a constant condition,
	if the type of the selected branch doesn't match its' parent.

2003-12-29  Jan Hubicka  <jh@suse.cz>

	* coverage.c (read_counts_file): Better error messages; cause corrupted
	profiles to produce hard errors, not just warnings
	(get_coverage_counts): Similarly.

	* toplev.c (rest_of_handle_loop_optimize): Enable LOOP_AUTO_UNROLL.

2003-12-29  Phil Edwards  <phil@codesourcery.com>

	* doc/cppopts.texi:  Use of -idirafter, -iprefix, -iwithprefix, and
	-iwithprefixbefore is not discouraged.

2003-12-28  Mostafa Hagog  <mustafa@il.ibm.com>

	* sbitmap.c (sbitmap_union_of_diff_cg, sbitmap_a_and_b_cg,
	sbitmap_a_xor_b_cg): Accumulate "changed" properly.
	(sbitmap_not): Zero all bits past n_bit.

2003-12-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR opt/13159
	* cfgloopanal.c (mark_irreducible_loops): Fix the strongly connected
	components detection.
	* loop-unswitch.c (unswitch_loop): Preserve simple preheaders.

2003-12-27  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/uclinux.h (LIB_SPEC): Add elf2flt magic required for
	correct linking of executables using id-based shared libraries.

2003-12-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386-interix.h: Remove uses of "register"
	specifier in declarations of arguments and local variables.
	* config/i386/i386.c: Likewise.
	* config/i386/i386elf.h: Likewise.
	* config/i386/ptx4-i.h: Likewise.
	* config/i386/sysv4.h: Likewise.

2003-12-26  Fariborz Jahanian <fjahanian@apple.com>
	    Geoffrey Keating <geoffk@apple.com>
	    David Edelsohn <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (legitimate_offset_address_p): Do not
	restrict DFmode and TFmode to word alignment.
	* config/rs6000/rs6000.md (movdf_hardfloat64): Use 'o' constraint
	for ld/std and order before mr.

2003-12-26  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/darwin.h (LINK_COMMAND_SPEC): Arrange
	-fprofile-generate to imply -lgcov.

2003-12-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (ldm_h8300s_2_normal): Use HImode for
	addresses.

2003-12-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Remove a constraint from a splitter.

2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/13429, C/11944
	* c-common.c (c_build_qualified_type): Return early when type is
	error_mark_node.
	(c_apply_type_quals_to_decl): Likewise.

2003-12-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha-modes.def: Fix comment formatting.
	* config/alpha/alpha.c: Likewise.
	* config/alpha/alpha.h: Likewise.
	* config/alpha/elf.h: Likewise.
	* config/alpha/lib1funcs.asm: Likewise.
	* config/alpha/openbsd.h: Likewise.
	* config/alpha/vms-cc.c: Likewise.
	* config/alpha/vms-crt0-64.c: Likewise.
	* config/alpha/vms-crt0.c: Likewise.
	* config/alpha/vms-ld.c: Likewise.
	* config/alpha/vms-psxcrt0-64.c: Likewise.
	* config/alpha/vms-psxcrt0.c: Likewise.
	* config/alpha/vms.h: Likewise.
	* config/arc/arc.c: Likewise.
	* config/arm/aof.h: Likewise.
	* config/arm/arm-modes.def: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/linux-elf.h: Likewise.
	* config/arm/vxworks.h: Likewise.
	* config/avr/avr.c: Likewise.
	* config/avr/avr.h: Likewise.

2003-12-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/xtensa/elf.h: Fix comment formatting.
	* config/xtensa/xtensa-protos.h: Likewise.
	* config/xtensa/xtensa.c: Likewise.
	* config/xtensa/xtensa.h: Likewise.

2003-12-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.c: Fix comment formatting.
	* config/avr/avr.md: Likewise.

2003-12-24  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/12721.
	* config/avr/avr.c: Include ggc.h.
	(tmp_reg_rtx): Declare with GTY.
	(zero_reg_rtx): Likewise.
	(ldi_reg_rtx): Remove.
	(avr_override_options): Initialize zero_reg_rtx and
	ldi_reg_rtx.
	(avr_init): Remove.
	Include gt-avr.h.
	* config/avr/avr.h (LDI_REG_REGNO): Remove.
	Remove externs for tmp_reg_rtx, zero_reg_rtx, and ldi_reg_rtx.

2003-12-24  David Edelsohn  <edelsohn@gnu.org>

	* doc/md.texi: Document PowerPC vector register constraint letter.

2003-12-23  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (expand_call): Recognize calls to "sqrt" and create
	corresponding notes.

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

	* config/mips/mips.c (override_options): Use `inform' instead
	of `warning' for -g -mabi=32 and native assembler.

	* config/mips/t-iris6 (CRTSTUFF_T_CFLAGS, TARGET_LIBGCC2_CFLAGS):
	Don't pass -Wno-error.

2003-12-23  David Edelsohn  <edelsohn@gnu.org>

	* function.c (assign_parms): Update max_parm_reg and
	parm_reg_stack_loc when adding new parm reg.

2003-12-23  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ns32k/ns32k.c: Convert to ISO-C.

2003-12-23  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/ia64.c (ia64_va_arg): Pass pointer for
	variable-sized type through convert_memory_address.
	(ia64_in_small_data_p): Always return false for FUNCTION_DECLs.

2003-12-23  Jan Hubicka  <jh@suse.cz>

	* common.opt (fprofile-generate,fprofile-use): Add.
	* gcc.c (LINK_COMMAND_SPEC): Arrange -fprofile-generate to imply -lgcov
	* opts.c (profile_arc_flag_set, flag_profile_values_set,
	flag_unroll_loops_set, flag_tracer_set,
	flag_value_profile_transformations_set,
	flag_peel_loops_set): New static variables.
	(common_handle_option): Deal with -fprofile-generate/-fprofile-use
	* invoke.texi (-fprofile-generate, -fprofile-use): Describe.

2003-12-23  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (OBJS-common): Remove dwarfout.o.
	(dwarfout.o): Remove.
	* common.opt: Remove -gdwarf, -gdwarf+.
	* defaults.h (PREFERRED_DEBUGGING_TYPE): Do not check for
	DWARF_DEBUGGING_INFO.
	* dwarf2out.c: Fix typo in comment.
	* dwarfout.c: Remove.
	* opts.c (common_handle_option): Remove OPT_gdwarf, OPT_gdwarf_.
	* toplev.c (process_options): Remove check for
	DWARF_DEBUGGING_INFO.
	* config/elfos.h (DWARF_DEBUGGING_INFO): Do not #define it or
	#undef it.
	* config/netware.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/ptx4.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/vxworks.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/alpha/unicosmk.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/arc/arc.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/i386/sco5.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/i386/x86-64.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/m32r/m32r.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/mcore/mcore-elf.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/sparc/linux64.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/sparc/liteelf.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/sparc/sol26-sld.h (DWARF_DEBUGGING_INFO): Likewise.
	* config/sparc/sp86x-elf.h (DWARF_DEBUGGING_INFO): Likewise.
	* doc/invoke.texi: Do not mention -gdwarf, -gdwarf-1, -gdwarf-1+,
	or -gdwarf+.
	* doc/tm.texi: Likewise.

	* c-common.c (flag_abi_version): Default to 2.
	* c-cppbuiltin.c (c_cpp_builtins): Define __GXX_ABI_VERSION
	uniformly for versions above 2.
	* doc/invoke.texi: Update documentation for -fabi-version.

2003-12-22  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.md: Change many instances of '!
	TARGET_POWERPC64' to 'TARGET_32BIT' when the pattern being guarded
	was guarded only because it changed CR0 or the carry bit in XER.

2003-12-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13394
	* toplev.c (rest_of_compilation): Move call to
	check_function_return_warnings right after the sibcall
	optimization pass.

2003-12-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/13382
	* c-typeck.c (convert_for_assignment): When converting from
	integral type to pointer type, always call convert.

2003-12-22  Mark Mitchell  <mark@codesourcery.com>

	* doc/invoke.texi: Deprecate -fwritable-strings.

	* c-common.c (flag_external_templates): Remove.
	(flag_alt_external_templates): Likewise.
	* c-common.h (flag_external_templates): Remove.
	(flag_alt_external_templates): Likewise.
	* c-opts.c (c_common_handle_option): Unsupport
	-falt-external-templates and -ftemplates.
	* doc/invoke.texi: Remove mention of -fexternal-templates and
	-falt-external-templates.

2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/13466
	* config.gcc (powerpc-*-darwin): Remove overridden value of need_64bit_hwint.

	* emit-rtl.c (copy_rtx_if_shared): Add comment about its use of
	copy_rtx_if_shared_1.
	(copy_rtx_if_shared_1): Add comment about what the function does.

	* c-decl.c (finish_function): Change order of checks.
	(c_expand_body): Likewise.

2003-12-22  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (legitimate_offset_address_p): Correct
	check for the legitimate offset when memory of
	DImode/DFmode/TFmode/TImode mode is being referenced and target
	is TARGET_POWERPC64.

2003-12-22  Dale Johannesen  <dalej@apple.com>

	* reload1.c:  Add reg_reloaded_call_part_clobbered.
	(reload_as_needed):  Use it.
	(forget_old_reloads_1):  Ditto.
	(emit_reload_insns):  Ditto.

2003-12-22  Dale Johannesen  <dalej@apple.com>

	PR optimization/12828
	* loop.c:  Add find_regs_nested to look inside CLOBBER(MEM).
	(scan_loop):  Call it.
	* regclass.c (reg_scan_mark_regs):  Look inside CLOBBER(MEM).

2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/9163
	* c-decl.c (poplevel): Only set DECL_INITIAL of a current function
	if it is non-null.
	(finish_function): Check for error_mark_node or null on DECL_RESULT and
	DECL_RESULT of fndecl.
	(c_expand_body): Only expand when DECL_INITIAL of fndecl is not
	error_mark_node and not null.

2003-12-21  Dan Nicolaescu  <dann@ics.uci.edu>

	* rtl.h (dump_rtx_statistics): Declare it.
	* rtl.c (rtx_alloc_counts, rtx_alloc_sizes, rtvec_alloc_counts,
	rtx_alloc_sizes): New static vars.
	(rtx_alloc, rtvec_alloc): Update them.
	(dump_rtx_statistics): New function.
	* toplev.c (finalize): Call it.
	* ggc-page.c (struct globals): Fix comments. Add new member
	total_allocated_per_order.
	(ggc_alloc): Keep track of the total allocated memory.
	(ggc_print_statistics): Clarify message. Print total allocated
	memory stats.
	* configure.in (gather-detailed-mem-stats): New flag.
	* configure: Regenerate.
	* config.in: Regenerate.
	* doc/install.texi (Configuration): Document
	--enable-gather-detailed-mem-stats.

2003-12-22  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (CONVERT_HARD_REGISTER_TO_SSA_P): Poison.
	* config/i386/i386.h (CONVERT_HARD_REGISTER_TO_SSA_P): Remove.

2003-12-21  Roger Sayle  <roger@eyesopen.com>

	* config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Define _ILP32
	when compiling in ILP32 mode.

2003-12-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (rs6000_tls_referenced_p): Return early if
	TARGET_HAVE_TLS is false.

2003-12-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ip2k/ip2k-protos.h: Remove the prototype for
	asm_output_section_name.
	* config/ip2k/ip2k.c (asm_output_section_name): Remove.

2003-12-21  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Fix comment formatting.
	* alloc-pool.c: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pretty-print.c: Likewise.
	* caller-save.c: Likewise.
	* cfghooks.h: Likewise.
	* cgraph.c: Likewise.
	* collect2.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.h: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genemit.c: Likewise.
	* ggc.h: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* libgcc2.h: Likewise.
	* loop.c: Likewise.
	* predict.h: Likewise.
	* unwind-libunwind.c: Likewise.
	* varasm.c: Likewise.

2003-12-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300.c (mn10300_encode_section_info): Fix
	a warning.

2003-12-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c: Convert to ISO-C.
	* config/avr/avr.h: Likewise.
	* config/fr30/fr30.c: Likewise.
	* config/ip2k/ip2k.c: Likewise.
	* config/mn10300/mn10300.c: Likewise.

2003-12-20  Andrew Pinski  <pinskia@gcc.gnu.org>
	    Matt Thomas  <matt@3am-software.com>

	PR target/12749
	* config/i386/i386.c (print_operand): Print only the first
	8 characters of the float in hex.

2003-12-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (TRAMPOLINE_TEMPLATE): Shorten sequence when generating PA
	2.0 code.
	(TRAMPOLINE_CODE_SIZE, MIN_CACHELINE_SIZE): New defines.
	(INITIALIZE_TRAMPOLINE): Rework to pass line length, and aligned start
	and end addresses to I and D cache instruction patterns.
	* pa.md (anddi3, iordi3): Change predicates of operands 1 and 2 to
	and_operand and ior_operand, respectively.  When generating 64-bit
	code, only one operand needs to be a register operand.
	(xordi3): Change predicates of operands 1 and 2 to register_operand.
	(one_cmpldi2): Change predicate of operand 1 to register_operand.
	(dcacheflush, icacheflush): Revise to flush an arbitrary number of
	cache lines.

2003-12-20  Josef Zlomek  <zlomekj@suse.cz>

	PR optimization/13430, PR optimization/12322
	* bb-reorder.c (copy_bb_p): Do not allow block with many successors to
	be copied.
	(find_traces_1_round): Surround check for fake edges by
	#ifdef ENABLE_CHECKING #endif.

2003-12-20  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/7956
	* genmultilib: New variable disable_multilib.  Set it to 'yes'
	if enable_multilib was set to 'no'.  Emit DISABLE_MULTILIB
	if disable_multilib was set to 'yes'.
	* gcc.c: Include multilib.h before tm.h.
	* config/sparc/sol2-bi.h (LINK_ARCH_SPEC): Emit an error
	message for multiarch options if DISABLE_MULTILIB is set.
	* config/sparc/sol2-gld-bi.h (LINK_ARCH_SPEC): Likewise.

2003-12-20  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/12085
	* c-typeck.c (build_function_call): Issue a warning if a
	function is called through an incompatible prototype and
	replace the call by a trap in this case.

2003-12-19  James E Wilson  <wilson@specifixinc.com>

	* install.texi (ia64-*-linux): Document minimum libunwind version
	number.

2003-12-19  Per Bothner  <per@bothner.com>

	* langhooks.c (lhd_print_error_function):  Fix for PR c/13110.
	Don't do pp_newline; it causes an extra blank line.
	* pretty-print.c (pp_base_flush):  Clear pp_needs_newline.

2003-12-19  Jason Merrill  <jason@redhat.com>

	* tree.c (get_unwidened): Decide whether to narrow a bitfield
	reference based on TYPE_SIZE, not TYPE_PRECISION.

	* stmt.c (parse_output_constraint): Warn about in-out constraint
	that doesn't allow a register.
	(parse_input_constraint): Warn about matching constraint that
	doesn't allow a register.

2003-12-19  James E Wilson  <wilson@specifixinc.com>

	* flow.c (mark_set_regs, case PARALLEL): Scan loop forwards.
	Add case for ASM_OPERANDS.
	* global.c (global_alloc): Set regs_ever_live for regs_asm_clobbered
	registers.

2003-12-19  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (check_max_integer_computation_mode): Remove.
	* dojump.c (do_jump): Don't use MAX_INTEGER_COMPUTATION_MODE.
	* fold-const.c (fold): Likewise.
	* system.h (MAX_INTEGER_COMPUTATION_MODE): Poison.
	* doc/tm.texi (MAX_INTEGER_COMPUTATION_MODE): Remove.

2003-12-19  James E Wilson  <wilson@specifixinc.com>

	* configure.in: Delete libunwind_has_eh_support test.
	* configure: Regenerate.
	* config.gcc (ia64*-*-linux*): Delete reference to t-libunwind-no-eh
	and libunwind_has_eh_support check.
	* config/t-libunwind-no-eh: Delete.

2003-12-19  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-format.c (print_char_table): Allow 'I' flag on floating point
	decimal formats.

2003-12-19  Stuart Hastings  <stuart@apple.com>

	* gcc/config/i386/i386.c (ix86_expand_call, x86_output_mi_thunk):
	Trivial fixes for i386.c on Darwin/x86.

2003-12-19  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Add code to
	recognize macho-style lo_sum adrress patterns.

2003-12-19  Kazu Hirata  <kazu@cs.umass.edu>

	* dwarfout.c: Remove uses of "register" specifier in
	declarations of arguments and local variables.
	* gensupport.c: Likewise.
	* local-alloc.c: Likewise.
	* regclass.c: Likewise.

2003-12-19  Kelley Cook  <kelleycook@wideopenwest.com>

	* config.guess: Remove.

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

	* config/ia64/unwind-ia64.c (ia64_copy_rbs): New function.
	(unw_access_gr): Only call ia64_rse_rnat_addr if addr is above
	regstk_top.
	(uw_frame_state_for): Handle locations inside bundles.
	(uw_init_context_1): Initialize context->rnat.
	Set context->regstk_top to lowest rbs address which has nat collection
	in context->rnat.
	(uw_install_context): Fix rnat restoring.
	Restore ar.rsc to previous state.
	* config/ia64/linux.h (MD_FALLBACK_FRAME_STATE_FOR,
	MD_HANDLE_UNWABI): Handle unwinding through SA_ONSTACK frames.

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

	PR c++/13239
	* builtins.c (expand_builtin_expect_jump): Update
	TREE_VALUE (arglist) if unsave_expr_now langhook
	created a new tree.

2003-12-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_base_register_rtx_p): Use regno in comparison against
	FIRST_PSEUDO_REGISTER.

2003-12-18  Hartmut Penner  <hpenner@de.ibm.com>

	* gcc/config/rs6000/rs6000.c (USE_ALTIVEC_FOR_ARG_P): Don't check
	for SVR4 ABI.

2003-12-18  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/aix.h (OS_MISSING_POWERPC64): Define.
	(OS_MISSING_ALTIVEC): Define.
	* config/rs6000/darwin.h (ASM_SPEC): Be generous about supplying
	-force_cpusubtype_ALL.
	* config/rs6000/rs6000.c (rs6000_override_options): Rearrange
	CPU information table; now always set all CPU-specific values.
	Also, use Altivec and powerpc64 when chip and OS supports them.

2003-12-18  Geoffrey Keating  <geoffk@apple.com>

	* fixinc/inclhack.def (darwin_macho_dyldh): New.
	* fixinc/fixincl.x: Regenerate.

2003-12-18  Dara Hazeghi  <dhazeghi@yahoo.com>

	* version.c (version_string): Renumber as 3.4.0
	* doc/include/gcc-common.texi: Likewise

2003-12-18  Richard Henderson  <rth@redhat.com>

	* genrecog.c (print_host_wide_int): New.
	(write_switch, write_cond): Use it.

2003-12-18  Richard Henderson  <rth@redhat.com>

	* c-decl.c (check_bitfield_type_and_width): Remove enum special
	case suppression of pedwarn.
	* system.h (ENUM_BITFIELD): Use __extension__.
	(CHAR_BITFIELD): Likewise.

2003-12-18  Ulrich Weigand  <uweigand@de.ibm.com>
	    Mark Dettinger  <dettinge@de.ibm.com>

	* config/s390/s390.md (UNSPEC_SRST): New constant.
	("strlendi", "strlensi"): New expanders.
	("*strlendi", "*strlensi"): New insns.

2003-12-18  Mark Mitchell  <mark@codesourcery.com>

	* config/sol2.h (LINK_ARCH32_SPEC): Define in terms of ...
	(LINK_ARCH32_SPEC_BASE): ... this new macro.
	* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC): Define in terms of
	...
	(LINK_ARCH64_SPEC_BASE): ... this new macro.
	* config/sparc/sol2-gld-bi.h (LINK_ARCH32_SPEC): New macro.
	(LINK_ARCH64_SPEC): Likewise.

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

	PR middle-end/13234
	* tree-dump.c (dequeue_and_dump): Handle 'r' and 's' code
	classes.

2003-12-18  Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (tracer.o, bb-reorder.o): Depend on timevar.h
	* toplev.c (rest_of_handle_reorder_blocks, rest_of_handle_tracer):
	Don't push and pop TV_REORDER_BLOCKS timevars, do it...
	* bb-reorder.c (reorder_basic_blocks): ...here, and...
	* tracer.c (tracer): here.

2003-12-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* loop.c (move_movables): Handle combination of m->consec,
	m->move_insn_first, and m->insert_temp all nonzero correctly.

2003-12-18  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c (load_register_parameters): Don't use
	LOAD_ARGS_REVERSED.
	* system.h (LOAD_ARGS_REVERSED): Poison.
	* doc/tm.texi (LOAD_ARGS_REVERSED): Remove.

2003-12-17  Per Bothner  <per@bothner.com>

	* emit-rtl.c (set_new_first_and_last_label_num):  Remove function.
	* rtl.h (set_new_first_and_last_label_num):  Remove declaration.

2003-12-17  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv.c (frv_ifcvt_modify_insn): Don't leave alone
	scratch insns of the then branch that clobber regs needed by the
	else branch.

2003-12-17  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c (expand_call): Update comments.
	* system.h (PRETEND_OUTGOING_VARARGS_NAMED): Poison.
	* targhooks.c: Do not refer to PRETEND_OUTGOING_VARARGS_NAMED.

2003-12-17  James E Wilson  <wilson@specifixinc.com>
	    Roger Sayle  <roger@eyesopen.com>

	* Makefile.in (gcse.o): Add $(TREE_H) to dependencies.
	* gcse.c: Include tree.h.
	(implicit_set_cond_p): New.
	(find_implicit_sets): Call it.

2003-12-17  Santiago Vila  <sanvila@unex.es>

	* config/kfreebsdgnu.h (TARGET_OS_CPP_BUILTINS): Rename from
	TARET_OS_CPP_BUILTINS.

2003-12-16  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c: Fix signed/unsigned comparison warnings.

2003-12-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* predict.c (struct block_info_def, struct edge_info_def): Change
	bit-fields of width 1 to unsigned int.

2003-12-16  Geoffrey Keating  <geoffk@apple.com>

	PR 12480
	* c-pch.c (pch_init): Improve error message when precompiled
	header can't be written.

	PR 12606
	* c-pch.c (pch_init): Make a PCH file appear invalid while it's
	being written.
	(c_common_write_pch): Make it valid once it's done.

2003-12-17  Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/11992
	* config/s390/s390.md ("*cmpmem_long_64"): Use CLCLE instruction
	instead of CLCL.
	("*cmpmem_long_31"): Likewise.

2003-12-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c: Add more comments about insn bundling.

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

	PR optimization/10592
	* caller-save.c (mark_referenced_regs): Don't short-circuit a reg
	or subreg in SET_DEST if it isn't a hard register.

2003-12-17  David Edelsohn  <edelsohn@gnu.org>

	* collect2.c (main): Add -fno-profile-arcs -fno-test-coverage
	-fno-branch-probabilities to arguments when compiling ctors and
	dtors.

2003-12-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sol2.h: Set SUPPORTS_INIT_PRIORITY to 0.
	* config/sparc/sol2-gld.h: Set SUPPORTS_INIT_PRIORITY to 1.

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

	* arm.c (thumb_base_register_rtx_p): Don't allow virtual registers
	as base registers for sub-word operations.
	(thumb_legitimate_address_p): Simplify REG+REG test.

2003-12-17  Segher Boessenkool  <boessen@de.ibm.com>

	* opts.c (wrap_help): Fix overflow.

2003-12-17  Fred Fish  <fnf@redhat.com>

	* configure.in: Remove code to examine linker scripts and set
	HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES.
	* configure, config.in: Regenerate.

2003-12-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/12218
	* varasm.c (initializer_constant_valid_p): Allow a conversion from
	an integral constant to an OFFSET_TYPE.

2003-12-16  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/11012
	* config/m32r/m32r.c (gen_compare): Call gen_addsi3 instead of
	gen_cmp_ne_small_const_insn.
	* config/m32r/m32r.md (cmp_ne_small_const_insn): Remove.

2003-12-17  Neil Booth  <neil@daikokuya.co.uk>
	    Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/3347
	* c-decl.c (enum_decl_context): Remove BITFIELD.
	(grokdeclarator): Take bit-field width as an input.
	Perform bit-field width validation with
	check_bitfield_type_and_width rather than waiting for
	finish_struct.
	(groktypename, groktypename_in_parm_context, start_decl,
	push_parm_decl, grokfield, start_function): Update calls to
	grokdeclarator.
	(check_bitfield_type_and_width): New function.
	(finish_struct): Move bit-field validation to grokdeclarator
	and check_bitfield_type_and_width.

2003-12-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR bootstrap/13386
	* configure.in (gcc_cv_ld_hidden): Set to yes on hppa64*-*-hpux* when
	using HP native linker.
	* configure: Rebuilt.

2003-12-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13275
	* c-common.h (enum rid): Add RID_OFFSETOF.
	* c-parser.in (rid_to_yy): Ignore RID_OFFSETOF.
	* ginclude/stddef.h (offsetof): Reimplement for C++, using
	__offsetof__.
	* doc/extend.texi: Document __offsetof__.

2003-12-16  Stan Cox  <scox@redhat.com>

	* config/iq2000/iq2000.h: Formatting.
	(MAX_INT_TYPE_SIZE, MAX_INT_TYPE_SIZE, CONST_COSTS, RTX_COSTS)
	(ADDRESS_COST, ASM_OUTPUT_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL)
	(IMPLICIT_FIX_EXPR, EASY_DIV_EXPR, SLOW_ZERO_EXTEND): Remove
	* config/iq2000/iq2000.c: Formatting.
	(iq2000_rtx_costs): New.

2003-12-16  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (addsi3_carryin_shift): Add missing register constraints.

2003-12-16  Loren James Rittle  <ljrittle@acm.org>

	* testsuite/g++.old-deja/g++.eh/badalloc1.C: Tweak to
	pass with -pthread on FreeBSD systems.

2003-12-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_file_end): Only write symbols that have
	been referenced at some point.

2003-12-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c: Include langhooks.h
	(mips_build_builtin_va_list): Use lang_hooks.types.make_type.

2003-12-16  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13313
	* combine.c (make_extraction) [REG]: Do not use
	gen_lowpart_for_combine when POS is non-zero.

2003-12-16  Hartmut Penner  <hpenner@de.ibm.com>

	* altivec.h (vec_cmple, vec_all_numeric): Fix typo.
	* testsuite/gcc.dg/altivec-10.c: Test for above.

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

	* Makefile.in (CPPFLAGS): Initialize from configure.

2003-12-15  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/13400
	* ifcvt.c (noce_process_if_block): Disable unconditional write
	optimizations if we could introduce a store to trapping memory
	that wasn't present previously.

2003-12-15  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (DEFAULT_CALLER_SAVES): Poison.
	* toplev.c (flag_caller_saves): Always initialize with 0.
	* doc/tm.texi (DEFAULT_CALLER_SAVES): Remove.

2003-12-15  Kazu Hirata  <kazu@cs.umass.edu>

	* flow.c (EXIT_IGNORE_STACK): Move to ...
	* defaults.h (EXIT_IGNORE_STACK): ... here.
	* dojump.c (clear_pending_stack_adjust): Don't use #ifdef
	EXIT_IGNORE_STACK.
	* function.c (expand_function_end): Likewise.
	* global.c (global_alloc): Likewise.
	* ra.c (init_ra): Likewise.
	* reload1.c (init_elim_table): Likewise.
	* reorg.c (fill_simple_delay_slots): Likewise.
	* resource.c (init_resource_info): Likewise.
	* doc/tm.texi (EXIT_IGNORE_STACK): Document that the default
	is 0.

2003-12-15  J"orn Rennecke <joern.rennecke@superh.com>

	* reload.c (reg_overlap_mentioned_for_reload_p):
	When looking at a PLUS in X, avoid spuriously returning nonzero
	when IN is a REG or another simple PLUS, or a MEM containing one.

	* loop.c (loop_invariant_p): Amend comment about where new registers
	might come from.

2003-12-15  Andreas Jaeger  <aj@suse.de>

	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Remove
	handling of obsolete language CHILL.

2003-12-15  Waldek Hebisch  <hebisch@math.uni.wroc.pl>

	* tree.c (initializer_zerop): Add test for empty set.
	* integrate.c (function_cannot_inline_p): Forbid inlining
	functions calling `longjmp'.

2003-12-15  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/11773
	* doc/gcov.texi (Gcov and Optimization): Document inline function
	behaviour. Fix some file suffixes.

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

	* config/i386/i386.h (__amd64, __amd64__): Remove duplicates.

2003-12-14  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (c_parse_error): Declare it.
	* c-common.c (c_parse_error): New function.
	* c-parse.y (yyerror): Use it.

2003-12-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/13054
	* pa-protos.h (indexed_memory_operand, borx_reg_operand,
	move_dest_operand, move_src_operand): New protypes.
	(basereg_operand, move_operand, reg_or_nonsymb_mem_operand): Deleted.
	* pa.c (copy_reg_pointer, indexed_memory_operand, move_dest_operand,
	move_src_operand): New functions.
	(basereg_operand, reg_or_nonsymb_mem_operand, move_operand): Delete.
	(reg_or_0_or_nonsymb_mem_operand): Return false for unscaled indexed
	address until cse is not expected on targets with non-equivalent
	space registers.
	(hppa_legitimize_address): Canonicalize unscaled indexed addresses
	on targets non-equivalent space registers.
	(emit_move_sequence): Break out indexed addresses from destination
	operand.  Similarly, break out unscaled indexed addresses from
	source operand on targets with non-equivalent space registers.  Fix
	REG_POINTER flag when possible.  Mark register pointer when creating
	new pointers.
	(print_operand): Handle unscaled index addresses.
	* pa.h (IS_INDEX_ADDR_P, IS_LO_SUM_DLT_ADDR_P): New macro subroutines
	for EXTRA_CONSTRAINT.
	(EXTRA_CONSTRAINT): Rework to make more readable.
	(MODE_OK_FOR_SCALED_INDEXING_P, MODE_OK_FOR_UNSCALED_INDEXING_P): New
	subroutines for GO_IF_LEGITIMATE_ADDRESS.
	(GO_IF_LEGITIMATE_ADDRESS): Rework using new subroutines.  Allow scaled
	and unscaled addresses.  Canonicalize unscaled indexed addresses on
	targets with non-equivalent space registers.  Document issues in
	handling indexed address modes on PA-RISC.
	(PREDICATE_CODES): Update for new and deleted predicates.
	* pa.md (move_dest_operand, move_src_operand, indexed_memory_operand):
	Use new predicates in move patterns.
	Add peephole2 patterns to optimize floating point stores.  Fix
	constrain preferencing in move patterns.  Delete patterns for handling
	unscaled indexed memory loads.  Add missing load and store with
	base-register modification patterns.  Correct SFmode floating point
	store pattern.  Add missing zero extension loads.

2003-12-13  Steven Bosscher  <stevenb@suse.de>

	* ggc-zone.c (struct alloc_zone): Don't pre-declare, it already
	comes in with ggc.h.  Add a new bool field `dead'.
	(destroy_ggc_zone): Don't destroy a zone at once.  Instead, only
	set the `dead' flag for the dead zone.  Wrap a sanity check in
	ENABLE_CHECKING.
	(ggc_collect_1): Always mark and sweep if a zone has the `dead'
	flag set.
	(ggc_collect): Free dead zones after collecting.

2003-12-13  Jan Hubicka  <jh@suse.cz>

	* coverage.c (get_coverage_counts):  Use inform instead of warning
	about missing profile.

2003-12-12  Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (opts.o, explow.o): Depend on langhooks.h

2003-12-12  Geoffrey Keating  <geoffk@apple.com>

	* config.gcc <i[34567]86-*-darwin*>: Don't use fixproto.
	<powerpc-*-darwin*>: Likewise.

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

	* config/ia64/linux.h (IA64_GATE_AREA_END): Increase by 64K.
	(MD_FALLBACK_FRAME_STATE_FOR): Set fpsr_loc, br_loc[6] and
	br_loc[7].  Update comment.
	(MD_HANDLE_UNWABI): Define.
	* config/ia64/unwind-ia64.c (struct unw_state_record): Add
	unwabi field.
	(struct _Unwind_Context): Increase br_loc array size to 8 entries.
	(desc_abi): Set unwabi.
	(uw_update_reg_address): Allow br up to 7.
	(uw_update_context): Invoke MD_HANDLE_UNWABI if defined.
	(uw_install_context): Load b1..b5 from correct locations.
	Fix insn loading ar.fpsr.
	* doc/tm.texi: Document MD_HANDLE_UNWABI.

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

	PR optimization/13037
	* loop.c (update_giv_derive): Ignore redundant sets of a biv when
	calculating how to derive a giv from a biv.

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

	PR preprocessor/12935 preprocessor/12952 preprocessor/13046
	* cpplib.c (prepare_directive_trad): Clear skipping only in
	#if and #elif directives.
	(do_undef): Call the handler even if the identifier is not a macro.
	* cpptrad.c (scan_parameters): Emit an error message.
	(_cpp_create_trad_definition): Remember the params list even on
	failure.

2003-12-11  Zack Weinberg  <zack@codesourcery.com>

	* arm.c (ARM_ADDRESS_COST, THUMB_ADDRESS_COST): Convert macros
	to inline functions: arm_arm_address_cost, arm_thumb_address_cost
	respectively.
	(arm_address_cost): Use 'em.

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

	* config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Define
	__STDC_VERSION__ to ISO C94 for C++.

	* fixinc/inclhack.def (alpha_wchar): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/wchar.h: New file.

2003-12-11  David Mosberger  <davidm@hpl.hp.com>

	* unwind-libunwind.c (_Unwind_SetGR): Clear the NaT bit as
	required by C++ ABI for Itanium.
	* config/t-libunwind (LIB2ADDEH): Remove unwind-libunwind.c.
	* config/t-libunwind-no-eh: New file.
	* configure.in: Check libunwind for _Unwind_Resume() and if it's
	present, set libunwind_has_eh_support to "yes".
	* configure: Regenerate.
	* config.gcc (ia64*-*-linux*): If $libunwind_has_eh_support is
	set to yes, use t-libunwind, otherwise, use t-libunwind-no-eh.

2003-12-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_global_pointer): Force functions with
	a nonlocal goto to set up $gp.

2003-12-11  James E Wilson  <wilson@specifixinc.com>

	PR target/13132
	* function.c (gen_mem_addressof): When no decl, explicitly clear flag
	bits.

2003-12-12  Nick Clifton  <nickc@redhat.com>

	* config/m32r/m32r.c: Convert to ISO-C

2003-12-12  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* doc/invoke.texi: Replace Mitsubishi with Renesas.
	* config/m32r/m32r.h: Ditto.
	* config/m32r/m32r.c: Ditto.
	* config/m32r/m32r.md: Ditto.

2003-12-11  Steven Bosscher  <steven@gcc.gnu.org>

	* basic-block.h (BLOCK_HEAD, BLOCK_END): Remove.
	(BLOCK_HEAD_TREE, BLOCK_END_TREE): Remove.
	(basic_block_def): Rename `head' to `head_' and `end' to `end_'.
	(BB_HEAD, BB_END): New accessor macros for the `head_' and `end_'
	fields of a basic block.
	* bb-reorder.c, bt-load.c, caller-save.c, cfg.c, cfganal.c,
	cfgbuild.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgloopanal.c,
	cfgloopmanip.c, cfgrtl.c, combine.c, conflict.c, df.c, emit-rtl.c,
	final.c, flow.c, function.c, gcse.c, global.c, graph.c,
	haifa-sched.c, ifcvt.c, lcm.c, local-alloc.c, loop-unswitch.c,
	loop.c, postreload.c, predict.c, profile.c, ra-build.c, ra-debug.c,
	ra-rewrite.c, ra.c, recog.c, reg-stack.c, regclass.c, regmove.c,
	regrename.c, reload1.c, resource.c, sched-ebb.c, sched-rgn.c,
	sibcall.c, tracer.c, config/frv/frv.c, config/i386/i386.c,
	config/ia64/ia64.c: Use the BB_HEAD and BB_END macros instead of
	accessing the `head' and `end' fields of a basic block directly.

	* gengtype.c: Teach about "void**" pointers and "void *" function
	types.  Fixes earlier commit.

2003-12-10  Geoffrey Keating  <geoffk@apple.com>

	* doc/extend.texi (Vector Extensions): Document that bitwise
	operations also work on vectors.

2003-12-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md: New split patterns for optimizing bitfield accesses.

2003-12-10  Steven Bosscher  <stevenb@suse.de>

	* README.Portability: Remove K+R section.

	* gengtype-lex.l: Teach about "void**" pointers and
	"void*" function types.

2003-12-10  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13354
	* config/sparc/sparc.c (sparc_output_mi_thunk): Load DELTA
	manually if one can do that with only one instruction.

2003-12-10  Nick Clifton  <nickc@redhat.com>

	* config.gcc (arm-linux): Include linux.h in tm_file so that
	LINUX_TARGET_OS_CPP_BUILTINS is defined.
	* config/arm/linux-elf.h (LIB_SPEC): Protect the definition.

2003-12-09  James E Wilson  <wilson@specifixinc.com>

	* rtl.def (CODE_LABEL, NOTE): Correct operand numbers in comments.

2003-12-09  Matt Austern  <austern@apple.com>

	PR c/13134
	* c-decl.c (duplicate_decls): Copy visibility flag when appropriate.

2003-12-09  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h: Add support for m32r2 processor.  Including
	a new command line option -m32r2 to select it.
	* config/m32r/m32r.c: Add support for the new processor variant.
	* config/m32r/m32r.md: Likewise.
	* config/m32r/t-m32r: Add m32r2 multilibs.
	* doc/invoke.texi: Document the new command line switch.

2003-12-08  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (LOCAL_REGNO): Give the default definition.
	* flow.c (LOCAL_REGNO): Remove.
	* reload1.c (LOCAL_REGNO): Likewise.

2003-12-08  Geoffrey Keating  <geoffk@apple.com>

	PR target/11848
	* rs6000.h (CANNOT_CHANGE_MODE_CLASS): Allow change of mode
	in floating-point registers between TFmode and DImode.
	* rs6000.c (rs6000_emit_move): Split moves early.
	(secondary_reload_class): Random Whitespace Change.
	(rs6000_split_multireg_move): Support moves involving FP registers.
	Emit instructions directly.
	* rs6000-protos.h (rs6000_split_multireg_move): Update prototype.
	* altivec.md: Update for changes to rs6000_split_multireg_move.
	* rs6000.md: Update for changes to rs6000_split_multireg_move.
	(movtf_internal): Support moves to/from GPRs.

2003-12-08  Stuart Hastings  <stuart@apple.com>

	* config/i386/i386.md: Typo in split of fp-valued if_then_else.

2003-12-08  James E Wilson  <wilson@specifixinc.com>

	PR target/13132
	* expmed.c (extract_bit_field): Only call mode_for_size for scalar
	integer modes.

2003-12-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* doc/install.texi: Revert change of Dec 7; gcc is still a 2.13
	directory.

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

	* config/frv/frv.md (subdi2): Merge with _internal insn_and_split,
	by using match_scratch.
	(negdi2): New.

2003-12-08  Jason Merrill <jason@redhat.com>
	    Daniel Berlin  <dberlin@dberlin.org>

	PR debug/11114
	Support namespaces in DWARF 2 output.
	* dwarf2out.c (gen_namespace_die): New function.
	(force_namespace_die, setup_namespace_context): New fns.
	(declare_in_namespace): New fn.
	(gen_decl_die): Call declare_in_namespace.  Handle namespaces.
	(dwarf2out_decl): Handle namespaces.
	(scope_die_for): Pass through a namespace scope.
	(class_scope_p): Rename to class_or_namespace_scope_p.
	(gen_subprogram_die, gen_variable_die): Adjust.
	(gen_struct_or_union_die): Always emit a declaration
	if context_die is a namespace.

2003-12-08  Jan Hubicka  <jh@suse.cz>

	* unwind-pe.h (read_uleb128): Fix handling of large values
	(read_sleb128): Fix handling of large values

2003-12-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/10060
	* emit-rtl.c (copy_rtx_if_shared): Split out into ...
	(copy_rtx_if_shared_1): here and optimize the last one
	in the sequence into tail-recursion.
	(reset_used_flags): Optimize the last one
	in the sequence into tail-recursion.

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

	* arm.md: New split to transform ((X << y) - 1) into ~(~(X-1) << y)
	for constant X.

2003-12-08  Richard Sandiford  <rsandifo@redhat.com>

	* calls.c (expand_call): Don't try using tail or recursive calls
	after the function body has been expanded.

2003-12-08  Jan Hubicka  <jh@suse.cz>

	* i386.md (cmpstr expander): Obey TARGET_INLINE_ALL_STRINGOPS

2003-12-08  Arnaud Charlet  <charlet@act-europe.fr>

	PR ada/13324, PR ada/12614
	* doc/install.texi: Update requirements for building Ada.

2003-12-07  David Edelsohn  <edelsohn@gnu.org>
	    Graham Reed <greed@pobox.com>

	* collect2.c (GCC_OK_SYMBOL): Add support for AIX C_WEAKEXT.
	(GCC_UNDEF_SYMBOL): Same.

2003-12-07  Kazu Hirata  <kazu@cs.umass.edu>

	* final.c (final_scan_insn): Don't use FINAL_PRESCAN_LABEL.
	* system.h (FINAL_PRESCAN_LABEL): Poison.
	* doc/tm.texi (FINAL_PRESCAN_LABEL): Remove.

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

	* Makefile.in (compare): Combine toplevel and $(SUBDIRS) cases.

2003-12-07  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in, aclocal.m4: Revert to pre-2.5x conversion status.
	* configure: Regenerate with autoconf 2.13.

	* configure.in: Replace AC_INIT, AC_OUTPUT, AC_CANONICAL_SYSTEM
	with modern equivalents.
	* configure: Regenerate.

	* configure.in: Replace gcc_AC_CHECK_TYPE with AC_CHECK_TYPE.
	* aclocal.m4 (gcc_AC_CHECK_TYPE): Remove.
	* configure: Regenerate.

	* configure: Regenerate with (preferred) autoconf 2.57.
	* doc/install.texi: Note that 'gcc' is now a 2.57 directory.

2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12965
	* caller-save.c (save_call_clobbered_regs): Do not save/restore
	registers around no-return calls.

2003-12-07  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Make minimum necessary changes for autoconf 2.5x.
	* aclocal.m4: Make minimum necessary changes for autoconf 2.5x.
	* configure: Regenerate with autoconf 2.58.

2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13318
	* loop.c (express_from): Protect integer division from overflow.

2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13060
	* function.c (fixup_var_refs_1) [SUBREG]: Recognize even if a
	replacement already exists.  Fix again the whole insn if that fails.

2003-12-06  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (macho_branch_islands): Use
	HOST_WIDE_INT_PRINT_UNSIGNED.

2003-12-06  Richard Sandiford  <rsandifo@redhat.com>

	* varasm.c (incorporeal_function_p): New.
	(assemble_external): Use it as a filter.
	* config/mips/mips.c (mips_output_external): Don't check for builtin
	functions here.

2003-12-06  Richard Earnshaw  <reanrsha@arm.com>

	* arm.md (IOR (COMPARISON) (AND)): New define_splits.

2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (program_transform_cross_name): Delete.
	(GCC_CROSS_NAME, CPP_CROSS_NAME): Delete.
	(PROTOIZE_CROSS_NAME, UNPROTOIZE_CROSS_NAME): Delete.
	(AR_FOR_TARGET, RANLIB_FOR_TARGET, NM_FOR_TARGET): Adjust for above.
	(install_cpp, install_driver, install-man, uninstall): Likewise.

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

	PR 13169
	* basic-block.h (PROP_ASM_SCAN): Define.
	* final.c (regs_asm_clobbered): New array.
	* regs.h (regs_asm_clobbered): Declare.
	* flow.c (life_analysis): Init it.
	(mark_set_regs): Set PROP_ASM_SCAN for asms.
	(mark_set_1): Set regs_asm_clobbered.
	* global.c (global_alloc): Don't set eliminable_regset when
	regs_asm_clobbered.

2003-12-05  Mark Mitchell  <mark@codesourcery.com>

	* config/ia64/ia64.h (MUST_PASS_IN_STACK): Define.

	PR c++/13314
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Robustify.

2003-12-05  Andrew Pinski <pinskia@physics.uc.edu>

	PR driver/13211
	* gcc.c (execute) Increment execution_count when returning
	early because verbose_only_flag is true.

2003-12-05  Per Bothner  <pbothner@apple.com>

	* cppfiles.c (file_hash_hash):  New static function.
	(hash_string_eq):  Renamed static function to file_hash_eq.
	(_cpp_init_files):  Create file_hash table with above callbacks.
	(cpp_included):  Must use htab_find_with_hash insead of htab_find.
	(_cpp_find_find, make_cpp_dir):  Must use htab_find_slot_with_hash.

2003-12-05  Per Bothner  <pbothner@apple.com>

	* line-map.h (source_location):  New typedef.
	(fileline):  Redefined as source_location.
	(struct line_map, linemap_add, linemap_lookup):  Replace filefile
	by source_location.
	* line-map.c (linemap_add, linemap_lookup):  Use source_location.

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

	* config/alpha/alpha.c (alpha_build_builtin_va_list): Add dummy
	field to suppress -Wpadded warnings.

2003-12-05  Stuart Hastings  <stuart@apple.com>

	* config/rs6000/rs6000.md: Correct macro test of TARGET_MACHO.

2003-12-05  Stuart Menefy <stuart.menefy@st.com>
	    J"orn Rennecke <joern.rennecke@superh.com>

	PR target/13302
	* sh.c (sh_build_builtin_va_list): Use (*lang_hooks.types.make_type).

2003-12-05  Roger Sayle  <roger@eyesopen.com>

	* dojump.c (do_jump): If the expression being compared against
	zero, is the subreg of a promoted variable, perform the comparison
	in the promoted mode.
	* simplify-rtx.c (simplify_unary_operation): Optimize sign and
	zero-extensions of subregs of promoted variables where the
	extension is identical to that used to promote the variable.

2003-12-05  Hans-Peter Nilsson  <hp@axis.com>

	PR target/13256
	* resource.h (enum mark_resource_type): Remove member MARK_DEST.
	The only user changed as follows:
	* resource.c (mark_set_resources) <case SET>: Always recurse for
	SET_SRC (x).
	<case SIGN_EXTRACT, case ZERO_EXTRACT>: Always recurse on
	operands.
	<case STRICT_LOW_PART>: Delete, deferring to default code.

2003-12-05  Waldek Hebisch <hebisch@math.uni.wroc.pl>

	* stmt.c (expand_nl_goto_receiver): Copy hard register clobbers
	and ASM_INPUT barrier from expand_builtin_setjmp_receiver.

2003-12-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_expand_call): Don't allow laziy binding
	for n32 & n64 abicalls.

2003-12-05  Richard Sandiford  <rsandifo@redhat.com>

	PR bootstrap/13145
	* config/mips/mips.h (FIRST_PSEUDO_REGISTER): Adjust comment.
	* config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Add $fcall.
	(mips_load_got): Always create a constant MEM.
	(mips_expand_call): Use load_callsi and load_calldi.
	* config/mips/mips.md (UNSPEC_LOAD_CALL, FAKE_CALL_REGNO): New consts.
	(load_callsi, load_calldi): New patterns.

2003-12-05  Peter Gerwinski <peter@gerwinski.de>

	* tree.def (PLACEHOLDER_EXPR): Clarify commentary.

2003-12-05  Steven Bosscher  <stevenb@suse.de>

	* config/d30v/d30v-protos.h , config/d30v/d30v.c,
	config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/fr30/fr30-protos.h, config/fr30/fr30.c,
	config/i370/i370-protos.h, config/i370/i370.c,
	config/i960/i960-protos.h, config/i960/i960.c,
	config/ip2k/ip2k-protos.h, config/ip2k/ip2k.c,
	config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
	config/ns32k/ns32k-protos.h, config/ns32k/ns32k.c:
	Convert to ISO C90 function declarations and definitions.

2003-12-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/extend.texi (Constructing Calls): Add warning about
	the limitations of the functions.

2003-12-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/11151
	* function.h (struct function): New field 'x_naked_return_label'.
	* function.c (free_after_compilation): Set it to NULL.
	(expand_function_end): Emit 'naked_return_label' if it exists.
	* rtl.h (expand_naked_return): Declare.
	* stmt.c (expand_naked_return): New function to generate a
	jump to 'naked_return_label'.
	* builtins.c (expand_builtin_return): Call expand_naked_return
	instead of expand_null_return.
	* config/sparc/sparc.md (untyped_return): Likewise.

2003-12-04  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/11322
	* config/sh/netbsd-elf.h (NO_PROFILE_COUNTERS): Define.

	PR target/12467
	* config/rs6000/altivec.md (altivec_vmsummbm): Fix typo.

2003-12-04  Stuart Hastings  <stuart@apple.com>

	* rs6000.c (output_call, macho_branch_islands,
	add_compiler_branch_island, no_previous_def, get_previous_label)
	Revisions of xx_stub functions for branch islands,
	add -fPIC support for Darwin.
	* rs6000-protos.h (output_call) Prototype.
	* rs6000.md Use output_call.
	* invoke.texi Explain Darwin semantics of -longcall.
	* testsuite/gcc.dg/darwin-abi-1.c Revise testcase for -longcall/jbsr.

2003-12-04  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (addqi3_carry): Use q not r constraints.
	(subqi3_carry): Likewise.

2003-12-04  J"orn Rennecke <joern.rennecke@superh.com>

	PR optimization/13260
	* sh-protos.h (sh_expand_t_scc): Declare.
	* sh.h (PREDICATE_CODES): Add cmpsi_operand.
	* sh.c (cmpsi_operand, sh_expand_t_scc): New functions.
	* sh.md (cmpsi): Use cmpsi_operand.  If T_REG is compared to
	something that is not a CONST_INT, copy it into a pseudo register.
	(subc): Fix description of new T value.
	(slt, sgt, sge, sgtu): Don't clobber T after rtl generation is over.
	(sltu, sleu, sgeu): Likewise.
	(seq, sne): Likewise. Use sh_expand_t_scc.

2003-12-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Generalize the CONFIG_HEADERS pattern under which
	we stamp cstamp-h.
	* configure: Regenerate.

	* configure.in: Pull AC_CHECK_HEADER call out of shell if statement
	to avoid trouble when updating to autoconf 2.5x.
	* configure: Regenerate (with autoconf 2.13 still).

2003-12-04  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (truncdiqi2): Use andi opcode for immediate.
	(reload_outdf+1,reload_outdf+2): Remove constraints.
	(movv16sf_i): Fxi multiplier for SUBREG_BYTE.
	(movv8qi_i+2): Zero-extend low byte before adding it to high byte.
	(fipr, ftrv): Add .s suffix to opcode.

2003-12-04  Richard Sandiford  <rsandifo@redhat.com>

	PR target/13186

	Revert all of the following patch, except the addition of
	hook_bool_machine_mode_true:

	2003-11-02  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (targhooks.o, reload.o): Update dependencies.
	(GTFILES): Add targhooks.c.
	(gt-targhooks.h): New rule; depend on s-gtype.
	* target.h (direct_pool_load_p): New hook.
	* target-def.h (TARGET_DIRECT_POOL_LOAD_P): New macro.
	(TARGET_INITIALIZER): Include it.
	* targhooks.h (default_direct_pool_load_p): Declare.
	(hook_bool_machine_mode_true): Declare.
	* targhooks.c: Include insn-config.h, recog.h, ggc.h and
	gt-targhooks.h.
	(pool_symbol): New variable.
	(default_direct_pool_load_p): New function.
	(hook_bool_machine_mode_true): New function.
	* reload.c: Include target.h.
	(find_reloads): If an alternative will force a constant into memory,
	count an extra reload if constant pool symbols are not valid
	addresses.  If an alternative uses memory to move values between
	registers, count the move as two reloads rather than one.
	* config/s390/s390.c (TARGET_DIRECT_POOL_LOAD_P): Define.
	* doc/tm.texi (TARGET_DIRECT_POOL_LOAD_P): Document.

2003-12-03  Mark Mitchell  <mark@codesourcery.com>

	* config/ia64/hpux.h (TARGET_HAVE_TLS): Define it to false.
	* config/ia64/ia64.h (TARGET_HAVE_TLS): Define it to true if
	HAVE_AS_TLS is true.
	* config/ia64/ia64.c (TARGET_HAVE_TLS): Do not define it.

2003-12-03  James E Wilson  <wilson@specifixinc.com>

	* gcc.c (init_spec): Pass -lunwind to init_gcc_specs in eh_name.

	* gcc-page.c (extra_order_size_tab): Correct comment.

2003-12-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (push): Call gen_push_h8300hs_advanced
	instead of gen_push_h8300hs.
	(pop): Call gen_pop_h8300hs_advanced instead of
	gen_pop_h8300hs.
	* config/h8300/h8300.h (TRAMPOLINE_SIZE): Use Pmode.
	* config/h8300/h8300.md (*tablejump_h8300hs_advanced):
	Tighten the predicate.
	(*tablejump_h8300hs_normal): Tighten the predicate.
	(push_h8300hs): Change to
	push_h8300hs_advanced.
	(pop_h8300hs): Change to pop_h8300hs_advanced.

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

	* rtl.c: Fix typo.
	* config/mips/mips.h: Ditto. Fix formatting.

2003-12-04  Ben Elliston  <bje@wasabisystems.com>

	* future.options: Remove. Move to gnu.org web pages.

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

	* c-parse.in (c_in_iteration_stmt, c_in_case_stmt): Move
	from here...
	* c-tree.h: to here.

2003-12-03  Jan Hubicka  <jh@suse.cz>

	PR optimization/12324
	* toplev.c  (rest_of_decl_compilation): Do not deffer when compiling
	in unit-at-a-time mode.

2003-12-03  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (store_constructor): Only set RTX_UNCHANGING_P for
	read-only field if cleared is 0.

2003-12-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Mark obsolete targets for GCC 3.4.

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

	* aclocal.m4 (AM_ICONV): Add explicit check for iconv.h.
	* config.in, configure.in: Regenerate.
	* cpphash.h: Check both HAVE_ICONV and HAVE_ICONV_H before
	including iconv.h.

2003-12-03  Alan Modra  <amodra@bigpond.net.au>

	PR target/11229
	* cse.c (cse_insn): Set classp using src_const_elt if
	src_eqv_elt is NULL.

2003-12-03  Richard Earnshaw  <rearnsha@arm.com>

	* gcse.c (reg_clear_last_set): New function.
	(reg_set_info): If data is non-null, treat it as an sbitmap of
	registers, set the bit for the register being set.
	(compute_store_table): Allocate last_set_in with xcalloc.  Do not
	memset this array on each iteration.  Pass reg_set_in_block[bb->index]
	to note_stores while computing last_set_in instead of scanning
	last_set_in after the first pass through the insns.
	Clear last_set_in using reg_clear_last_set instead of explicitly
	rescanning after each insn.  If checking is enabled, assert that
	last_set_in is completely zeroed after each bb has been processed.

2003-12-02  Geoffrey Keating  <geoffk@geoffk.org>

	* df.c (df_uses_record) <MEM>: The argument of a MEM is read-only,
	never read-write.
	<REG>: Delete incorrect comment.
	<SET>: Remove 'use_flags' variable.

2003-12-03  David Edelsohn  <edelsohn@gnu.org>

	* function.c (assign_parms): Make sure parm PARALLEL combined
	in reg is composed of more than one object and the mode really
	produces a reg.

2003-12-03  Jan Hubicka  <jh@suse.cz>

	* i386.c (classify_argument): Make it 64bit clean.

2003-12-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_output_external): Replace checks for
	specific builtin-in functions with a check for DECL_BUILTIN_IN.

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

	* rtl.h (PUT_CODE, PUT_MODE): Remove ENUM_BITFIELD cast.
	* tree.h (TREE_SET_CODE): Likewise.
	* recog.h (struct insn_operand_data): Move const after ENUM_BITFIELD.

2003-12-02  Ben Elliston  <bje@wasabisystems.com>

	* dbxstclass.h: Rename from this ..
	* xcoff.h: .. to this.
	* xcoffout.c: Include xcoff.h.

2003-12-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (GCC_CFLAGS): Add -Wold-style-definition.

2003-12-01  James Lemke <jim@wasabisystems.com>

	* config/arm/arm.c (arm_rtx_costs): Improve for xscale multiply.

2003-12-01  Roger Sayle  <roger@eyesopen.com>

	PR optimization/11634
	* recog.c (split_insn): Factor test of INSN_P and handling of
	set_noop_p out of here into the two callers.
	(split_all_insns): Add INSN_P test and set_noop_p handling here.
	If deleting a no-op set after reload that has a REG_UNUSED note,
	mark the basic block as changed and recalculate life information.
	(split_all_insns_noflow): Add INSN_P test and set_noop_p handling
	here.

2003-12-01  Roger Sayle  <roger@eyesopen.com>

	PR optimization/12322
	* gcse.c (struct ls_expr): Change type of hash_index from int to
	unsigned int.
	(hash_expr): Document hash_table_size parameter and wrap long line.
	(ldst_entry): Calculate expression's hash_index and record in ptr.
	(trim_ld_motion_mems): Use hash_index to search a single bucket
	instead of scanning the entire hash_table.  Remove the "del" local
	variable and use the equivalent "expr == 0" instead.  Change last
	to be a pointer to the pointer to the current element, to simplify
	and speed-up deleting from a linked list.

2003-12-01  James E Wilson  <wilson@specifixinc.com>

	* doc/contrib.texi: Update David Mosberger.

	* doc/c-tree.texi (CONSTRUCTOR): Clarify element order and handling
	of missing fields.

	PR target/8407
	* config/ia64/ia64.c (ia64_function_arg): For single-reg HFA, call
	gen_rtx_REG to create new reg with argument mode.

2003-12-01  Steven Bosscher  <stevenb@suse.de>

	* ggc.h (struct alloc_zone): Move forward declaration up.
	(new_ggc_zone): New function prototype.
	(destroy_ggc_zone): Ditto.
	* ggc-simple.c (new_ggc_zone): New function, does nothing.
	(destroy_ggc_zone): Ditto.
	* ggc-page.c (new_ggc_zone): New function, does nothing.
	(destroy_ggc_zone): Ditto.
	* ggc-zone.c (struct page_entry): Fix comment.
	(ggc_alloc_typed): Use a switch statement instead of ifs.
	(new_ggc_zone): New function to set up a new GC zone.
	(destroy_ggc_zone): New function to remove a GC zone.
	init_ggc): Use new_ggc_zone to set up the default zones.
	(ggc_collect): Walk a list of zones, instead of just the
	default zones.  Report statistics using the zone name.

2003-12-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* unroll.c (find_splittable_givs): Add missing extend_value_for_giv.

2003-12-01  Roger Sayle  <roger@eyesopen.com>

	PR optimization/12628
	* toplev.c (rest_of_handle_jump_bypass): Call reg_scan.
	* regclass.c (reg_scan): Include allocate_reg_info time in
	TV_REG_SCAN.  Minor clean-ups.
	(reg_scan_update): Minor clean-ups.

2003-12-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* config.gcc (s390x-ibm-tpf*): Add extra_parts.

2003-12-01  James E Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.h (FUNCTION_ARG_REGNO_P): Use AR_REG_FIRST not
	GR_ARG_FIRST.

2003-12-01  Zack Weinberg  <zack@codesourcery.com>

	* common.opt: Remove -fgnu-linker.
	* flags.h: Remove flag_gnu_linker.
	* opts.c: Don't handle OPT_fgnu_linker.
	* toplev.c: Don't initialize flag_gnu_linker.
	Remove gnu-linker entry from f_options.
	* config/dsp16xx/dsp16xx.h (OPTIMIZATION_OPTIONS):
	Don't reset flag_gnu_linker.
	* config/mips/mips.c (override_options): Likewise.
	* doc/invoke.texi: Remove all mention of -fgnu-linker.

2003-12-01  Daniel Berlin  <dberlin@dberlin.org>

	* ggc-zone.c (ggc_pch_write_object): Calculate object size using
	ggc_get_size (which accounts for large objects properly).

2003-12-01  Jeff Sturm  <jsturm@one-point.com>

	PR optimization/13024
	* toplev.c (rest_of_handle_new_regalloc): Remove rebuild_notes
	parameter.
	(rest_of_handle_old_regalloc): Likewise.  Add rebuild_notes
	declaration.  Rebuild jump labels following local_alloc if necessary.
	(rest_of_compilation): Remove rebuild_label_notes_after_reload
	declaration.  Don't pass rebuild_notes parameter to
	rest_of_handle_new_regalloc and rest_of_handle_old_regalloc.
	Don't rebuild jump labels.

2003-12-01  Jeff Law  <law@redhat.com>

	* flow.c (count_or_remove_death_notes_bb): New.  Extracted from
	count_or_remove_death_notes.
	(count_or_remove_death_notes): Use EXECUTE_IF_SET_IN_SBITMAP.

2003-12-01  Andreas Krebbel  <krebbel1@de.ibm.com>

	* builtins.c (expand_builtin_longjmp): Added two memory clobbers.

2003-12-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads_address): Split addresses of type
	(plus (plus (reg) (reg)) (const_int)) only if one register
	is either a valid base register or else one of the stack
	frame related registers (sp/fp/ap).

2003-12-01  Steven Bosscher  <stevenb@suse.de>

	* function.c (update_epilogue_consts): Don't use PARAMS.
	* rtl.h (web_main): Ditto.
	* target.h (is_costly_dependence): Ditto

2003-12-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/7847
	* expr.c (expand_expr) [normal_inner_ref]: When 'offset' is non-zero,
	do not recheck that 'op0' is a MEM.  Move comment.  When testing for
	unaligned objects, take also into account the alignment of 'op0' and
	'mode1' if 'op0' is a MEM.

2003-12-01 Gabriel Dos Reis <gdr@integrable-solutions.net>

	* doc/c-tree.texi (Function Bodies): Update HANDLER documentation.

2003-12-01  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/install.texi: Note that fastjar is built with automake 1.7.x
	and autoconf 2.57.

2003-12-01  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Test
	target_flags directly rather than using TARGET_* defines.

2003-11-30  Ben Elliston  <bje@wasabisystems.com>

	* doschk.c: Remove.

2003-11-30  Richard Sandiford  <rsandifo@redhat.com>

	PR target/12727
	* config/mips/mips.c (mips_save_reg): Fix frame information for sdc1
	on 32-bit big-endian targets.

2003-11-30  Kazu Hirata  <kazu@cs.umass.edu>

	* genemit.c (register_constraints): Remove.

2003-11-30  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("tmdi_reg", "tmsi_reg", "*movdi_64", "*movdi_31",
	"iordi3"): Insns now use multiple letter constraints.
	("*movdi_lhi", "*movdi_lli", "*movdi_lay"): Insns deleted. They are now
	covered by "*movdi_64".
	("*movsi_lhi", "*movsi_lli", "*movsi_lay"): Insns deleted. They are now
	covered by "*movsi_zarch" and "*movsi_esa".
	("*movsi_zarch", "*movsi_!zarch"): New insns.
	("*llgt_sisi_split", "*llgt_didi_split"): Insns deleted. Now covered
	by "*andsi3_zarch" and "anddi3".
	("*anddi3_ni"): Insn merged with "anddi3".
	("*andsi3_ni"): Insn merged with "*andsi3_zarch".
	("*andsi3_zarch", "*andsi3_esa"): New insns.
	("*iordi3_oi"): Insn merged with "iordi3".
	("*iorsi3_oi"): Insn merged with "*iorsi3_zarch".
	("*iorsi3_zarch", "*iorsi3_esa"): New insns.

	* config/s390/s390.c (s390_single_qi, s390_single_hi): Functions
	merged to s390_single_part.
	(s390_single_part): New function.
	NOTE: Semantics have changed a bit. Now the value of the part must
	be different from the others to get a non-negative return value.
	(s390_extract_qi, s390_extract_hi): Functions merged to
	s390_extract_part.
	(s390_extract_part, s390_extra_constraint_str,
	s390_const_ok_for_constraint_p): New functions. The L constraint got a
	new meaning and the N constraint was added as a multiple letter
	constraint.
	(s390_extra_constraint): Function deleted.
	(print_operand): New output modifier 'i' and 'j' added.
	All uses of CONST_OK_FOR_LETTER_P were replaced by
	CONST_OK_FOR_CONSTRAINT_P.

	* config/s390/s390-protos.h: Function prototypes adapted.
	* doc/md.texi: Documentation for new constraint letters added.

2003-11-30  Andreas Schwab  <schwab@suse.de>

	* Makefile.in ($(DESTDIR)$(infodir)/%.info): Fix missing semicolon.

2003-11-29  James E Wilson  <wilson@specifixinc.com>

	* gcc.c (init_spec): Pass -lunwind to init_gcc_specs in eh_name
	instead of in shared_name.

	* final.c (final_start_function): Delete code for NON_SAVING_SETJMP.
	* reload1.c (reload): Re-add it here.

2003-11-30  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Don't
	set SECTION_WRITE on TARGET_RELOCATABLE.

2003-11-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (LIBCALL_VALUE): Use R0_REG.

2003-11-28  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (MOTOROLA): Move from here...
	* config/m68k/m68k.h (MOTOROLA): ... to here.
	(OUTPUT_JUMP): Use do {...} while (0).
	* config/m68k/m68k.md: Replace #ifdef MOTOROLA with C statements.

2003-11-28  Gunther Nikl  <gni@gecko.de>

	* config.gcc (m68020-*-elf*, m68k-*-elf*, m68010-*-netbsdelf*,
	m68k*-*-netbsdelf*, m68k-*-rtems*): Add tm_defines containing
	MOTOROLA and USE_GAS.
	* config/m68k/rtemself.h (MOTOROLA): Delete.
	* config/m68k/netbsd-elf.h (MOTOROLA, USE_GAS): Delete.
	* config/m68k/m68kelf.h (MOTOROLA, USE_GAS, SGS_CMP_ORDER): Delete.

2003-11-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (WORDS_BIG_ENDIAN): Update the comment.

2003-11-29  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (install-info): Install gccinstall.info too.

2003-11-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("cmpint_di"): Fix incorrect instruction lengths.

2003-11-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("movhi"): Do not emit extender pattern
	when loading from a (MEM (ADDRESSOF ...)).
	("movqi"): Likewise.

2003-11-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/10333
	* c-parse.in (typespec_reserved_nonattr): Reject typeof on
	bit-fields.

2003-11-29  Richard Sandiford  <rsandifo@redhat.com>

	* stmt.c (expand_asm_operands): Check whether force_const_mem
	succeeded.

2003-11-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/gnu.h (HURD_TARGET_OS_CPP_BUILTINS): New.
	* config/linux.h (LINUX_TARGET_OS_CPP_BUILTINS): New.

	* config/alpha/gnu.h, config/alpha/linux.h,
	config/arm/linux-elf.h, config/cris/cris.h, config/cris/linux.h,
	config/i370/linux.h, config/i386/gnu.h, config/i386/i386.h,
	config/i386/linux-aout.h, config/i386/linux.h,
	config/i386/linux64.h, config/ia64/linux.h, config/m68k/linux.h,
	config/m68k/uclinux.h, config/mips/linux.h,
	config/mn10300/linux.h, config/pa/pa-linux.h,
	config/rs6000/sysv4.h, config/s390/linux.h, config/sh/linux.h,
	config/sparc/linux.h, config/sparc/linux64.h,
	config/xtensa/linux.h (TARGET_OS_CPP_BUILTINS): Use
	HURD_TARGET_OS_CPP_BUILTINS/LINUX_TARGET_OS_CPP_BUILTINS or ensure
	all necessary assertions are included.

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

	* emit-rtl.c (set_used_flags): New.
	(verify_rtx_sharing, verify_rtl_sharing): New.
	(unshare_all_rtl_1): Rename to....
	(unshare_all_rtl_in_chain): ... this one; make static.
	(copy_rtx_if_shared): LABEL_REF chan be shared.
	* ifcvt.c (unshare_ifcvt_sequence): New.
	(noce_try_move, noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_addcc, noce_try_addcc, noce_try_store_flag_mask,
	noce_try_cmove, noce_try_store_flag_mask, noce_try_minmax,
	noce_try_abs, noce_process_if_block, find_cond_trap
	* rtl.h (verify_rtl_sharing, set_used_flags, unshare_all_rtl_in_chain):
	Declare.

2003-11-28  Kazu Hirata  <kazu@cs.umass.edu>

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

2003-11-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*movsf_h8300h): Change to
	*movsf_h8300hs.
	(addsi_h8300): Change to *addsi_h8300.
	(addsi_h8300h): Change to *addsi_h8300hs.
	(subsi3_h8300): Change to *subsi3_h8300.
	(subsi3_h8300h): Change to *subsi3_h8300hs.
	(neghi2_h8300h): Change to *neghi2_h8300hs.
	(negsi2_h8300h): Change to *negsi2_h8300hs.

2003-11-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*subhi3_h8300): Remove '&' from the
	constraint.
	(*subhi3_h8300hs): Likewise.

2003-11-28  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (MASK_MFCRF): New.
	(TARGET_MFCRF): Test target_flags, not processor type.
	(TARGET_SWITCHES): Add mfcrf and no-mfcrf.
	Change Don't to Do not.
	* config/rs6000/rs6000.c (processors_target_table): Add MASK_MFCRF
	to power4, 970, G5.

2003-11-27  J"orn Rennecke <joern.rennecke@superh.com>

	* cse.c (cse_set_around_loop): When changing a constant load
	to a register -register copy, add a REG_EQUAL note.

2003-11-27  Randolph Chung  <tausq@debian.org>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (hppa_profile_hook): Split gen_call_profiler into separate
	insns.  Use the regular call expander for the call to the profiler.
	* pa.md (call_profiler): Delete.
	(load_offset_label_address): New insn to load the address of the
	current function for the profiler.
	(lcla1, lcla2): New insns to output a code label and load its address.

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* final.c (final_scan_insn): Remove commented-out code.

2003-11-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* doc/install.texi: Remove ADAC reference and make accurate.

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (FUNCTION_VALUE): Use R0_REG.
	(FUNCTION_VALUE_REGNO_P): Likewise.
	* config/h8300/h8300.md: Define R0_REG.

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

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

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (ELIMINABLE_REGS): Update a comment.

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Give names to anonymous insns.

2003-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (extendqisi2): Remove constraints.

2003-11-27  Gunther Nikl  <gni@gecko.de>

	* doc/tm.texi (SYSROOT_HEADERS_SUFFIX_SPEC): Fix typo.

2003-11-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13041
	* final.c (frame_pointer_needed): Fix comment.
	* reload1.c (reload): Decrease alignment of the frame
	pointer if it was used for register allocation.

2003-11-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/12900
	* reg-stack (move_for_stack_reg): New prototype.  Return
	whether a control flow insn was deleted.
	(subst_stack_regs_pat): Likewise, using the information provided
	by move_for_stack_reg.
	(subst_stack_regs): Likewise, using the information provided
	by subst_stack_regs_pat.
	(convert_regs_1): Record whether a control flow insn was deleted,
	using the information provided by subst_stack_regs.  Purge dead
	edges only if a control flow insn was deleted.

2003-11-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/8028
	PR middle-end/9890
	PR middle-end/11151
	PR middle-end/12210
	PR middle-end/12503
	PR middle-end/12692
	* builtins.c (expand_builtin_apply): Use virtual_outgoing_args_rtx
	as the base address to copy the memory arguments to.

2003-11-26  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygming.h (ASM_OUTPUT_DEF_FROM_DECLS): Declare
	function aliases as functions.

2003-11-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* aclocal.m4 (gcc_AC_PROG_GNAT): Rewrite to account for removal
	of ADAC.
	* configure: Regenerate.

	* Makefile.in: Remove references to ADAC.

	* configure.in: Remove check for whether ${ADAC} accepts -Wno-long-long.
	* configure: Regenerate.

2003-11-26  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Olivier Hainque  <hainque@act-europe.fr>

	PR target/6466
	* config/sparc/sparc-protos.h (compute_frame_size): New prototype.
	(sparc_flat_compute_frame_size): Likewise.
	(sparc_flat_save_restore): Move prototype...
	* config/sparc/sparc.c (sparc_flat_save_restore): ...here.
	(save_regs): New prototype.
	(build_big_number): Likewise.
	(apparent_fsize): Change type to HOST_WIDE_INT.
	(actual_fsize): Likewise.
	(frame_base_offset): Likewise.
	(build_big_number): Add support for HOST_BITS_PER_WIDE_INT == 64.
	Change string descriptor to HOST_WIDE_INT_PRINT_DEC.
	[TARGET_ARCH64]: Use the sequence of sparc_emit_set_const64_longway
	to load a 64-bit constant.
	(sparc_nonflat_function_prologue): Change string descriptor to
	HOST_WIDE_INT_PRINT_DEC.  Change offset type to HOST_WIDE_INT.
	(output_restore_regs): Change offset type to HOST_WIDE_INT.
	(sparc_nonflat_function_epilogue): Change string descriptor to
	HOST_WIDE_INT_PRINT_DEC.  Use build_big_number.
	(output_sibcall): Change size type to HOST_WIDE_INT.  Use
	build_big_number.  Change string descriptor to HOST_WIDE_INT_PRINT_DEC.
	(sparc_frame_info): Change types for several components.
	(sparc_flat_compute_frame_size): Update types according to previous
	change.
	(sparc_flat_function_prologue): Change string descriptor to
	HOST_WIDE_INT_PRINT_DEC.  Change offset type to int.  Use
	build_big_number.
	(sparc_flat_function_epilogue): Change offset type to int.
	Rename 'size1' into 'reg_offset1'.  Change string descriptor to
	HOST_WIDE_INT_PRINT_DEC.  Use build_big_number.  Change big number
	limit to 4096 instead of 4095.

	* config/sparc/sparc.c (mems_ok_for_ldd_peep): Change offset type to
	HOST_WIDE_INT.

2003-11-24  Waldek Hebisch <hebisch@math.uni.wroc.pl>

	* function.c: Make outer_function-chain external.
	* function.h: Likewise.

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

	* config.gcc (mips-sgi-irix6*): Add t-iris6gld to tmake_file when
	using GNU ld.
	* config/mips/iris6.h (IRIX6_STARTFILE_SPEC): New, taking the
	whole of the previous STARTFILE_SPEC except crtbegin.o%s.
	(IRIX6_ENDFILE_SPEC): Likewise ENDFILE_SPEC and crtend.o%s.
	(STARTFILE_SPEC, ENDFILE_SPEC): Define in terms of the above.
	(SUBTARGET_EXTRA_SPECS): Define.
	* config/mips/iris6gld.h (LINK_SPEC): Change -init function
	to __gcc_init and -fini function to __gcc_fini.
	(STARTFILE_SPEC): Redefine, including irix6-crti.o before crtbegin.o.
	(ENDFILE_SPEC): Likewise, including irix6-crtn.o after crtend.o.
	(INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Define.
	* config/mips/t-iris6gld,
	* config/mips/irix6-crti.asm,
	* config/mips/irix6-crtn.asm: New files.

2003-11-24  Eric Christopher  <echristo@redhat.com>

	PR C/13014
	* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): New.
	(start_function): Use.
	(c_push_function_context): Ditto.
	(c-pop_function_context): Ditto.
	(language_function): Move...
	* c-tree.h: ... here. Add x_in_iteration_stmt, and
	x_in_case_stmt.
	* c-parse.in (do_stmt_start, select_or_iter_stmt, stmt): Use
	c_in_iteration_stmt, c_in_case_stmt for parser state. Move
	check for valid break or continue statment here...
	* c-semantics.c (genrtl_break_stmt, genrtl_continue_stmt): From
	here. Change original errors to abort.

2003-11-24  Jan Hubicka  <jh@suse.cz>

	* fold-const.c (fold):  Do not return early when optimizing
	COMPONENT_REF and constant.

2003-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (tablejump_h8300): Change to
	*tablejump_h8300.
	(tablejump_h8300h): Change to *tablejump_h8300hs_advanced.
	(tablejump_normal_mode): Change to *tablejump_h8300hs_normal.
	(indirect_jump_h8300): Change to *indirect_jump_h8300.
	(indirect_jump_h8300h): Change to
	*indirect_jump_h8300hs_advanced.
	(indirect_jump_normal_mode): Change to
	*indirect_jump_h8300hs_normal.

2003-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Remove constraints from expanders.

2003-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: (stm_h8300s_2): Change the name to
	stm_h8300s_2_advanced.
	(stm_h8300s_2_normal): New.
	(stm_h8300s_2): Likewise.
	(stm_h8300s_3): Change the name to stm_h8300s_3_advanced.
	(stm_h8300s_3_normal): New.
	(stm_h8300s_3): Likewise.
	(stm_h8300s_4): Change the name to stm_h8300s_4_advanced.
	(stm_h8300s_4_normal): New.
	(stm_h8300s_4): Likewise.
	(ldm_h8300s_2): Change the name to ldm_h8300s_2_advanced.
	(ldm_h8300s_2_normal): New.
	(ldm_h8300s_2): Likewise.
	(ldm_h8300s_3): Change the name to ldm_h8300s_3_advanced.
	(ldm_h8300s_3_normal): New.
	(ldm_h8300s_3): Likewise.
	(ldm_h8300s_4): Change the name to ldm_h8300s_4_advanced.
	(ldm_h8300s_4_normal): New.
	(ldm_h8300s_4): Likewise.
	(two peephole2's): Enable only with !TARGET_NORMAL_MODE.
	(two peephole2's): New.

2003-11-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* genattrtab.c (simplify_cond): Update indices correctly.
	(attr_alt_subset_p, attr_alt_subset_of_compl_p, attr_alt_intersection,
	attr_alt_union, attr_alt_complement, attr_alt_bit_p, mk_attr_alt): New.
	(check_attr_test, encode_units_mask, compute_alternative_mask,
	make_alternative_compare, simplify_and_tree,
	attr_rtx_cost, simplify_test_exp, gen_attr,
	write_test_expr, walk_attr_value): Handle EQ_ATTR_ALT.
	* rtl.def (EQ_ATTR_ALT): New.

2003-11-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* genattrtab.c (strcmp_check, DEF_ATTR_STRING): New macros.
	(length_str, delay_type_str, delay_1_0_str, num_delay_slots_str):
	New variables.
	(main): Initialize them.
	(find_attr): Canonicalize the attribute name string.
	(attr_rtx_1, copy_boolean, expand_delays, gen_unit): Always canonicalize
	string arguments.
	(attr_printf, attr_eq): Use DEF_ATTR_STRING.
	(check_attr_test, check_attr_value, make_length_attrs,
	write_length_unit_log, simplify_by_exploding, gen_attr,
	write_test_expr, write_attr_value, write_eligible_delay,
	write_complex_function, make_internal_attr,
	write_const_num_delay_slots): Changed due to change of type of
	find_attr.
	(fill_attr, evaluate_eq_attr, simplify_and_tree,
	attr_rtx_cost, simplify_by_exploding, walk_attr_value): Use
	strcmp_check.

2003-11-23  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/13122
	* config/h8300/h8300.c (push): Call push_h8300hs_normal in
	normal mode.
	(pop): Call pop_h8300hs_normal in normal mode.
	* config/h8300/h8300.md: Likewise.
	(pushqi1_h8300hs_normal): New.
	(pushqi1): Call pushqi1_h8300hs_normal in normal mode.
	(pushhi1_h8300hs_normal): New.
	(pushhi1): Call pushhi1_h8300hs_normal in normal mode.
	(push_h8300hs_normal): New.
	(pop_h8300hs_normal): Likewise.

2003-11-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* genattrtab.c (count_sub_rtxs): Removed.

2003-11-23  Richard Earnshaw  <rearnsha@arm.com>

	* recog.c (preprocess_constraints): Only zero those elements of
	recog_op_alt that are needed for this insn.
	* arm.c (note_invalid_constants): A function can't contain invalid
	constants if it has no constraints.

2003-11-22  Jan Hubicka  <jh@suse.cz>

	* i386.c (classify_argument): Pass __float128 in memory.
	(ix86_return_in_memory): Likewise.
	(ix86_libcall_value): Likewsie.

2003-11-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (dosize): Convert to ISO-C.

2003-11-22  J"orn Rennecke <joern.rennecke@superh.com>

	* flow.c (update_life_info): Amend comment about when a register
	can become dead.

2003-11-21  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/.cvsignore: Delete.

2003-11-21  Daniel Berlin  <dberlin@dberlin.org>
	    David Edelsohn  <edelsohn@gnu.org>

	* dwarf2out.c (add_location_or_const_value_attribute): Add support
	for PARALLEL.

2003-11-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/t-iris6 (CRTSTUFF_T_CFLAGS): Add -Wno-error.
	(TARGET_LIBGCC2_CFLAGS): Define.

	* crtstuff.c [HAS_INIT_SECTION] (__do_global_dtors): Declare.
	(__do_global_ctors): Likewise.

2003-11-21  Mark Wielaard  <mark@klomp.org>

	* doc/invoke.texi (-O2): Doesn't enable -fweb.

2003-11-21  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Mention dV and dZ.

2003-11-21  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Update dump file names.
	Remove de, dW, and dX.

2003-11-20  James E Wilson  <wilson@specifixinc.com>

	PR c/13133
	* reload1.c (reload): Delete special handling for setjmp.

2003-11-21  Andreas Tobler  <a.tobler@schweiz.ch>

	* mklibgcc.in: Evaluate shlib_slibdir_qual during link
	step too.
	* config/t-slibgcc-darwin: Adjust install path.
	* config/rs6000/t-darwin: Revert multilib matches since
	it is not used on darwin.

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

	* ssa.c, ssa-dce.c, ssa-ccp.c: Remove files.
	* Makefile.in (OBJS-common, GTFILES): Don't reference them.
	(gtype-desc.o, toplev.o, flow.o): Remove ssa.h.
	(ssa.o, ssa-dce.o, ssa-ccp.o): Remove.
	* flow.c: Don't include ssa.h.
	(set_phi_alternative_reg): Remove.
	(calculate_global_regs_live): Don't call it.
	(mark_used_regs): Don't handle PHI.
	* gengtype.c (open_base_files): Don't reference ssa.h.
	* rtl.def (PHI): Remove.
	* timevar.def (TV_TO_SSA, TV_SSA_CCP, TV_SSA_DCE, TV_FROM_SSA): Kill.
	* common.opt: Remove -fssa, -fssa-ccp, -fssa-dce.
	* opts.c (common_handle_option): Likewise.
	* toplev.c (f_options): Likewise.
	(DFI_ssa, DFI_ssa_ccp, DFI_ssa_dce, DFI_ussa): Remove.
	(dump_file): Update to match.
	(flag_ssa, flag_ssa_ccp, flag_ssa_dce): Remove.
	(rest_of_handle_ssa): Remove.
	(rest_of_compilation): Don't call it.
	* toplev.h (flag_ssa, flag_ssa_dce, flag_ssa_ccp): Remove.
	* doc/invoke.texi: Remove -fssa, -fssa-ccp, -fssa-dce.
	* doc/passes.texi (SSA optimizations): Remove.

2003-11-20  Bob Wilson  <bob.wilson@acm.org>

	* configure.in: Add xtensa-*-* targets to test for dwarf2 debug_line.
	* configure: Regenerate.

2003-11-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (Makefile): Pass along CONFIG_SHELL.

2003-11-20 David Mosberger  <davidm@hpl.hp.com>

	* config/t-libunwind (LIB2ADDEH): Add unwind-c.c.
	(SHLIB_LC): Define.
	* unwind-libunwind.c (_Unwind_GetCFA): Implement.
	(_Unwind_GetBSP) [UNW_TARGET_IA64]: New function.

2003-11-20  Fariborz Jahanian  <fjahanian@apple.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* calls.c (expand_call): Allocate new temp in pass1.
	(store_one_arg): If PARALLEL, calculate excess using mode size of
	rtvec elt.
	* expr.c (emit_push_insn): If PARALLEL, calculate offset using
	mode size of rtvec elt.
	* function.c (assign_parms): Use parm in register, if available.

2003-11-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (MOVP): Remove.
	(ADDP): Likewise.
	(CMPP): Likewise.

2003-11-20  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (use_return_insn): New argument, SIBLING.  Support returning
	with a single instruction if the stack has been decremented by 4
	and we have a frame pointer.  Update all callers.
	(output_return_instruction): Likewise.
	(arm_output_epilogue): Change argument to SIBLING.  Calculate
	really_return from the new argument.  Update all callers.
	* arm.h (USE_RETURN_INSN): Pass NULL for the sibling.
	* arm.md (sibcall_epilogue): Call use_return_insn directly, and
	pass the sibling call.
	* arm-protos.h (use_return_insn, arm_output_epilogue): Update
	prototypes.

2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Makefile.in (extraclean): Delete.
	* configure.in (target_list): Remove extraclean.
	* configure: Regenerate.
	* doc/makefile.texi, doc/sourcebuild.texi: Update.
	* objc/Make-lang.in (objc.extraclean): Delete.

2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Makefile.in (lang_checks): Add.
	(check-c++, check-f77, check-java, check-g++, check-g77,
	check-objc): Remove hardcoded targets.
	* doc/sourcebuild.texi: Document testsuite hooks.
	* objc/Make-lang.in (check-objc, lang_checks): Add.

2003-11-19  Scott Snyder  <snyder@fnal.gov>

	PR target/13131
	* dwarf2out.c (gen_array_type_die): DW_AT_declaration should be a
	flag, not a constant.

2003-11-19  Kelley Cook  <kcook@gcc.gnu.org>

	* config/arc/arc-protos.h: Update to C90 prototypes.
	* config/arc/arc.c: Likewise.
	* config/arc/initfini.c: Likewise.

2003-11-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* stmt.c (expand_goto): Memory clobbers added.

2003-11-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* reload.c (find_reloads): Added missing type casts.

2003-11-19  James E Wilson  <wilson@specifixinc.com>

	* combine.c (sets_function_arg_p): Delete unused function.

2003-11-19  Eric Christopher  <echristo@redhat.com>

	* reload1.c (reload): Revert 2 previous checkins.

2003-11-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* cpptrad.c (_cpp_scan_out_logical_line): Improve test for
	whether directive begins at the beginning of a line.

2003-11-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_init_libfuncs): Correct ufix_optab entries.

2003-11-19  Gerald Pfeifer  <gp@suse.de>

	* doc/install.texi (Specific): Remove information on old versions
	of glibc versus old versions of GCC.

2003-11-19  Richard SAndiford  <rsandifo@redhat.com>

	* emit-rtl.c (gen_lowpart): Don't force MEMs into a register unless
	the register lowpart is a TRULY_NOOP_TRUNCATION.

2003-11-19  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (print_reg): Handle QI and HI modes for
	non Q regs.

2003-11-19  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/config.gcc (powerpc-*-darwin*): Add libgcc build
	specification file.
	* config/t-slibgcc-darwin: New file, libgcc build specification.
	* config/t-darwin: Add libgcc2 flag -fPIC.
	* config/rs6000/t-darwin: Multilib matches float.
	* libgcc-darwin.ver: New file, contains libgcc symbols.

2003-11-18  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/ns32k/ns32k.h: Remove obsolete comment.

2003-11-18  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11821
	* config/arm/arm.c (arm_rtx_costs_1): Improve estimate of the code
	size for calls to libgcc's div & mod subroutines when using -Os.

2003-11-18  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (change_decl_assembler_name): Avoid bogus warnings.

2003-11-18  Marc Espie  <espie@openbsd.org>

	* config/rs6000/sysv4.h: OpenBSD hooks.

2003-11-18  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr): Don't look through constant arrays if
	they don't bind locally.

2003-11-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (convert_move): Use GET_MODE_PRECISION instead of bitsize
	when seeing if truncation or extension.

2003-11-17  Eric Christopher  <echristo@redhat.com>

	* reload1.c (reload): Fix previous change.

2003-11-17  Scott Snyder  <snyder@fnal.gov>

	PR debug/11325
	* dwarf2out.c (struct die_struct): Add die_definition field.
	(add_AT_specification): New.
	(gen_subprogram_die, gen_variable_die,
	gen_struct_or_union_type_die): Use it.
	(prune_unused_types_mark): If we're marking a forward declaration,
	also mark the full definition, if it exists.

2003-11-16  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy16.h (BUILD_VA_LIST_TYPE): Delete.
	* config/stormy16/stormy16-protos.h (xstormy16_build_va_list):
	Remove prototype.
	* config/stormy16/stormy16.c (xstormy16_build_va_list): Rename
	to xstormy16_build_builtin_va_list and make static.
	(TARGET_BUILD_BUILTIN_VA_LIST): Define.

2003-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add the prototype for
	same_cmp_following_p.
	* config/h8300/h8300.c (same_cmp_following_p): New.
	* config/h8300/h8300.md (peephole2): Use it.

2003-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Don't use REGNO when its operand is
	not guaranteed to be a REG.

2003-11-16  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (expr.o): Depend on $(TARGET_H).
	* target.h (return_in_msb): New target hook.
	* target-def.h (TARGET_RETURN_IN_MSB): New macro.
	(TARGET_CALLS): Include it.
	* calls.c (shift_returned_value): New function.
	(expand_call): Use it.
	* expr.c: Include target.h.
	(copy_blkmode_from_reg): Check targetm.calls.return_in_msb when
	deciding what padding is needed.  Change the name of the local
	padding variable from big_endian_correction to padding_correction.
	* stmt.c (shift_return_value): New function.
	(expand_return): Use it.  Adjust memory->register copy in the same
	way as copy_blkmode_from_reg.  Only change the return register's
	mode if it was originally BLKmode.
	* doc/tm.texi (TARGET_RETURN_IN_MSB): Document.
	* config/mips/mips.c (TARGET_RETURN_IN_MSB): Define.
	(mips_fpr_return_fields): New, split out from mips_function_value.
	(mips_return_in_msb, mips_return_fpr_pair): New functions.
	(mips_function_value): Rework to use the functions above.
	* config/mips/irix6-libc-compat.c: Delete.
	* config/mips/t-iris6 (LIB2FUNCS_STATIC_EXTRA): Undefine.

2003-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/install.texi (--enable-checking): Update valgrind's URL.

2003-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Fix warnings by replacing -2147483648
	with -2147483647 - 1.

2003-11-16  Gerald Pfeifer  <gerald@pfeifer.com>

	Fix links in online manuals.
	* doc/invoke.texi (H8/300 Options): @xref to ld, not ld.info.
	(Precompiled Headers): @pxref to cpp, not cpp.info.

2003-11-16  Jason Merrill  <jason@redhat.com>

	* Makefile.in, objc/Make-lang.in (objc.tags): Create TAGS.sub
	files in each directory and TAGS files that include them for each
	front end.

2003-11-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (divnorm): Store the sign in bit
	3 of S2L.
	(modnorm): Likewise.
	(exitdiv): Look at bit 3 of S2L only.

2003-11-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (DO_GLOBAL_CTORS_BODY): Fix warnings.
	(DO_GLOBAL_DTORS_BODY): Likewise.

2003-11-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/install.texi (Prerequisites): Refine documentation of
	autoconf, automake and perl requirements.  Document required
	gettext version.

<2003-11-14  Jason Merrill  <jason@redhat.com>

	* function.c (assign_parms): Use TREE_TYPE to determine the real
	type of the argument object.

2003-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (___udivsi3): Peel off the first
	iteration.

2003-11-14  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_move_block_from_reg):
	  New routine to save vararg registers on stack. Support for
	  -mpowerpc64 in mixed mode.

2003-11-14  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c: Use C statements instead of #ifdef's when testing
	for MOTOROLA versus MIT syntax.  Improves readability and provides
	better compile-time error checking for both code paths.

2003-11-14  Kelley Cook  <kcook@gcc.gnu.org>

	* config/frv/frv-protos.h: Update for C90.
	* config/frv/frv.h: Likewise.
	* config/frv/frvbegin.c: Likewise.
	* config/frv/frv.c: Likewise.
	(frv_adjust_field_align): Delete unused variable.

2003-11-14  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.md: Add 'DEFAULT_ABI == ABI_DARWIN'
	to each place where TARGET_LONG_DOUBLE_128 is used with
	DEFAULT_ABI == ABI_AIX.

	* cppfiles.c (_cpp_find_file): Make 'one or more PCH files were found'
	message comply with GNU standards.

2003-11-14  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR/6552
	* function.c (struct epi_info): New field const_equiv.
	(update_epilogue_consts): New function.
	(keep_stack_depressed): Clear new field and verify scratch register
	doesn't have it set.
	Call new function via note_stores.
	(handle_epilogue_set): Allow setting SP equiv reg in different mode.
	Allow PLUS where second operand is register known set to constant.
	(emit_equiv_load): Write load using proper mode if source different.
	* config/mips/mips.md (return_internal): Put (return) first.

2003-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (___udivsi3): Add a comment.

2003-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (modsi3): Don't save unused
	registers.
	(divsi3): Likewise.
	(reti): Don't restore unused registers.

2003-11-14  Nick Clifton  <nickc@redhat.com>

	* config/fr30/fr30.c: Include toplev.h

2003-11-14  Richard Earnshaw  <rearnsha@arm.com>

	* except.c (sjlj_emit_function_enter): Mark internal label as LOCAL.

2003-11-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_emit_vector_const, arm_output_load_gr): Use ISO C
	function definition syntax.

2003-11-14  Eric Christopher  <echristo@redhat.com>

	* reload1.c (reload): Revert previous patch. Make
	check for assignment into reg_equiv_address stricter.

2003-11-14  Arnaud Charlet  <charlet@act-europe.fr>

	* Makefile.in (POSTSTAGE1_FLAGS_TO_PASS): Pass ADAFLAGS.

2003-11-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_in_small_data_p): Return false for unknown
	section names.

2003-11-14  Jason Merrill  <jason@redhat.com>

	PR middle-end/12526
	* tree.c (build): A CALL_EXPR has side-effects if its arguments do.
	* calls.c (call_expr_flags): New fn.
	* tree.h: Declare it.

2003-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (__udivsi3): Remove.
	(divmodsi3): Change the name to ___udivsi3.
	Update all callers.

2003-11-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* libgcc2.c (__negdi2, __addvsi3, __addvdi3, __subvsi3, __subvdi3,
	__mulvsi3, __negvsi2, __negvdi2, __mulvdi3, __lshrdi3, __ashldi3,
	__ashrdi3, __ffsDI2, __muldi3, __clzDI2, __ctzDI2, __parityDI2,
	__udivmoddi4, __divdi3, __moddi3, __cmpdi2, __ucmpdi2,
	__fixunstfDI, __fixunsxfDI, __fixunsdfDI, __fixunssfDI,
	__floatdixf, __floatditf, __floatdidf, __floatdisf, __gcc_bcmp):
	Const-ify and/or initialize automatic variables at declaration.

2003-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (divmodsi4): Replace all the uses
	of er4 with er3.  Adjust all callers.

2003-11-13  Andrew Pinski <apinski@apple.com>

	* config/darwin.c (machopic_output_possible_stub_label):
	Allow stub symbol be not defined when outputting possible
	stub label.

2003-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (___udivsi3): Jump to reti
	instead of exitdiv.
	(___umodsi3): Likewise.
	(exitdiv): Do not restore any register.
	(reti): Restore registers.

2003-11-13  Steven Bosscher  <stevenb@suse.de>

	* tree-inline.c (walk_tree): Handle PLACEHOLDER_EXPR.

2003-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm: Fix comment typos.

2003-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (udivsi3): Don't save/restore
	unused registers.  Don't jump to exitdiv.
	(umodsi3): Likewise.

2003-11-13  Mark Mitchell  <mark@codesourcery.com>
	    Kean Johnston <jkj@sco.com>

	PR c/13029
	* toplev.c (check_global_declarations): Do not warn about unused
	static consts.

2003-11-13  Pavel Pisa  <pisa@cmp.felk.cvut.cz>
	    Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (DenHighNonZero): Optimize using
	the approximate quotient method.

2003-11-13  Richard Earnshaw  <rearnsha@arm.com>

	* combine.c (distribute_notes): When re-distributing the notes from
	an insn we are about to delete, ensure we can't end up with a cyclic
	list of notes.

2003-11-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12926
	* expr.c (expand_assignment) [COMPONENT_REF]: Don't put
	the UNCHANGING_RTX_P flag on memory references to read-only
	components that are not addressable.

2003-11-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (divmodsi4): Clear S0P in
	DenHighNonZero.

2003-11-13  Jan Hubicka  <jh@suse.cz>

	PR opt/12275
	* c-decl.c (finish_decl): Use change_decl_assembler_name.
	* c-pragma.c (handle_pragma_redefine_extname): Likewise.
	* varasm.c (make_decl_rtl): Likewise.
	* cgraph.c (change_decl_assembler_name): New function.
	* tree.h (set_decl_assembler_name): Kill dead declaration.
	(change_decl_assembler_name): Declare.

	* decl.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.
	* decl2.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.

2003-11-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (___mulsi3): Don't save/restore
	an unused register.

2003-11-12  Richard Sandiford  <rsandifo@redhat.com>

	PR bootstrap/12752
	* config/mips/t-iris6 (MULTILIB_OPTIONS): Put -mabi=n32 first.
	(MULTILIB_OSDIRNAMES): Reorder accordingly.

2003-11-12  Janis Johnson  <janis187@us.ibm.com>

	* rs6000-protos.h (rs6000_initial_elimination_offset): Add.
	(rs6000_stack_info): Remove.  (debug_stack_info): Remove.
	(rs6000_emit_eh_reg_restore): Add
	* rs6000.c (rs6000_stack_t): Move from rs6000.h, change data type
	of vars_size and total_size to HOST_WIDE_INT.
	(emit_frame_save): Change parameter size to HOST_WIDE_INT.
	(rs6000_stack_info): Make static; change data size to HOST_WIDE_INT.
	(debug_stack_info): Make static; change output format of HOST_WIDE_INT
	values.
	(rs6000_emit_eh_reg_restore): New, with code formerly in rs6000.md.
	(rs6000_initial_elimination_offset): New, with code formerly in
	INITIAL_ELIMINATION_OFFSET.
	* rs6000.h (rs6000_stack_t): Remove.
	(INITIAL_ELIMINATION_OFFSET): Replace code with call to function
	rs6000_initial_elimination_offset.
	* rs6000.md (UNSPECV_EH_RR split): Replace code with call to
	rs6000_emit_eh_reg_restore.

2003-11-12  Mike Stump  <mrs@apple.com>

	* c-typeck.c (c_convert_parm_for_inlining): Add argnum, which
	is the argumnt we are processing so that warnings and errors
	will have that information.
	* c-tree.h (c_convert_parm_for_inlining): Add argnum.
	* lang-hooks-def.h
	(lhd_tree_inlining_convert_parm_for_inlining): Likewse.
	* langhooks.c (lhd_tree_inlining_convert_parm_for_inlining): Likewise.
	* langhooks.h (convert_parm_for_inlining): Likewise.
	* tree-inline.c (initialize_inlined_parameters): Compute and
	pass argnum down.

2003-11-12  Alexey Starovoytov  <alexey.starovoytov@sun.com>
	    Roger Sayle  <roger@eyesopen.com>

	PR optimization/12953
	* tree-inline.c (inline_forbidden_p_1): Added check for BUILT_IN
	before switch by FUNCTION_CODE.

2003-11-12  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (storehi): Avoid use of explicit subreg.
	(storehi_bigend, storeinthi, movhi_bigend): Likewise.

2003-11-12  J"orn Rennecke <joern.rennecke@superh.com>

	* config/sh/sh.md (prefetch): New pattern.

2003-11-11  Eric Christopher  <echristo@redhat.com>

	* reload1.c (reload): Verify that addresses for
	reg_equiv_* are valid for the architecture.

2003-11-11  Eric Christopher  <echristo@redhat.com>

	* function.c (purge_addressof_1): Add libcall check.
	Remove test for cached replacements on fallback case.
	Simplify mode comparisons. Add libcall test for
	paradoxical subregs.

2003-11-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/t-h8300: Fix an obsolete comment.

2003-11-11  James E Wilson  <wilson@specifixinc.com>

	* expmed.c (store_bit_field, extract_bit_field): Revert last two
	changes.

2003-11-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm: Replace DenHighZero with
	DenHighNonZero.

2003-11-11  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_function_possibly_inlined_p): Use
	really_no_inline.

2003-11-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (TRAMPOLINE_TEMPLATE): Fix flushing of cache lines when
	generating 64-bit code.

2003-11-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Remove
	accidental commit in previous change.

2003-11-10  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.h (STACK_SIZE_MODE): Add definition.
	* config/rs6000/rs6000.c (reg_or_mem_operand): Add macho-style
	address recognition.
	(macho_lo_sum_memory_operand): Routine to recognize macho-style
	address recognition.

2003-11-10  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (gen_label_die): Cope with DECL_RTL not set.

2003-11-10  Matt Austern  <austern@apple.com>

	* config/darwin-protos.h (darwin_assemble_visibility): Declare.
	* config/darwin.c (darwin_assemble_visibility): Define.  Warn for
	anything other than VISIBILITY_DEFAULT and VISIBILITY_HIDDEN.
	* config/darwin.h (TARGET_ASM_ASSEMBLE_VISIBILITY): Use
	darwin_assemble_visibility instead of default.

2003-11-10  Waldek Hebisch  <hebisch@math.uni.wroc.pl>

	PR target/12865
	* config/sparc/sparc.c (sparc_initialize_trampoline): Call
	__enable_execute_stack only after writing onto the stack.
	(sparc64_initialize_trampoline): Likewise.

2003-11-09  Roger Sayle  <roger@eyesopen.com>

	* loop.c (check_dbra_loop): Try swapping the comparison operands
	of the loop condition to identify a suitable induction variable.
	* unroll.c (loop_iterations): Likewise.

2003-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/sparc/sparc.h (TARGET_CPU_CPP_BUILTINS): Fix sparc vs
	sparc64 #cpu and #machine assertions.

2003-11-09  Richard Henderson  <rth@redhat.com>

	* Makefile.in (rtlanal.o): Depend on BASIC_BLOCK_H.

2003-11-09  Jan Hubicka  <jh@suse.cz>

	* tree-optimize.c (tree_rest_of_compilation): Fix warning.

	* cgraphunit.c (cgraph_expand_function): Use
	cgraph_possibly_inlined_p.
	* tree-optimize.c (tree_rest_of_compilation): Do not kill saved tree.

	* opts.c (common_handle_option): Do not set max-inline-insns.
	* params.def: Update comments.
	(PARAM_MAX_INLINE_INSNS): Kill.
	* invoke.texi (max-inline-insns): Kill.

2003-11-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/3190
	PR c/8714
	* c-format.c (set_Wformat): Do not enable -Wformat-y2k by default.
	* invoke.texi: Update.

2003-11-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR optimization/12630
	* pa.c (compute_movstrsi_length): Rename to compute_movstr_length.
	Handle length computation 64-bit moves.
	(compute_clrstr_length, output_block_clear): Implement block clear.
	(output_block_move): Handle 64-bit moves.
	(pa_adjust_insn_length): Use compute_movstr_length and
	compute_clrstr_length.
	* pa.md (movstrsi): Revise operand order and comments.  Don't use
	match_scratch.
	(movstrsi_internal): Delete.
	(movstrsi_prereload, movstrsi_postreload): New insns.  Define splitter
	and peephole2 patterns to transform prereload to postreload form.
	(movstrdi, movstrdi_prereload, movstrdi_postreload, clrstrsi,
	clrstrsi_prereload, clrstrsi_postreload, clrstrdi, clrstrdi_prereload,
	clrstrdi_postreload): New patterns for 64-bit block move, and block
	clear.
	* pa-protos.h (output_block_clear): New prototype.

2003-11-08  Andreas Schwab  <schwab@suse.de>

	* dbxout.c (current_file): Also wrap inside DBX_DEBUGGING_INFO ||
	XCOFF_DEBUGGING_INFO.

2003-11-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dbxout.c (current_file): Wrap declaration in DBX_USE_BINCL.

2003-11-07  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_legitimize_address): Remove
	redundant parens.

	* cppfiles.c (pch_open_file): New parameter 'invalid_pch', set it.
	(find_file_in_dir): Likewise.
	(_cpp_find_file): Print message if no header file is found
	but an invalid PCH file was.

2003-11-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (pedantic_lvalue_warning): Deprecate compound
	expressions as lvalues.
	(internal_build_compound_expr): Remove special handling for
	non-pedantic case.
	* doc/extend.texi: Document that all extended lvalues are now
	deprecated.

2003-11-07  Geoffrey Keating  <geoffk@apple.com>

	PR 11654
	* dbxout.c (struct dbx_file): Do not save for PCH.
	(current_file): Likewise.
	(dbxout_init): Don't allocate struct dbx_file using GC.
	(dbxout_start_source_file): Likewise.

2003-11-07  Falk Hueffner  <falk@debian.org>

	* config/alpha/elf.h, config/alpha/unicosmk.h,
	config/alpha/vms.h: Convert to ISO C90.

2003-11-07  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/arm/pe.h: Convert to ISO C90.

2003-11-07  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-protos.h (sh_pch_valid_p): Declare.
	* sh.c ("intl.h"): Include.
	(TARGET_PCH_VALID_P): Override.
	(sh_target_switches): New variable.
	(target_switches): Define.
	(sh_pch_valid_p): New function.

	* sh.h (MODE_AFTER): Don't change mode unless TARGET_HITACHI.

2003-11-07  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_64_sign_extended_value):  Return false from tls variables.
	(x86_64_zero_extended_value):  likewise.

2003-11-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (loadgp): Take $25 as a second operand.
	* config/mips/mips.c (mips_expand_prologue): Modify accordingly.

2003-11-06  Matt Austern <austern@apple.com>

	* c-common.c (handle_visibility_attribute): Set DECL_VISIBILITY
	field instead of hanging an attribute object off the decl.
	* tree.h (DECL_VISIBLITY): New accessor macro for
	symbol_visibility field in struct tree_decl.
	(enum symbol_visibility): Move definition to before tree_decl.
	(struct tree_decl): Define new two-bit field, symbol_visibility.
	(decl_visibility): Remove declaration.
	* varasm.c (maybe_assemble_visibility): Use DECL_VISIBILITY
	instead of decl_visibility.
	(default_binds_local_p_1):  Use DECL_VISIBILITY	instead of
	decl_visibility.
	(decl_visibility): Remove.

2003-11-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_epilogue): Recognize more cases
	where register 14 will be saved.

2003-11-06  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.h (USE_FP_FOR_ARG_P): Move to rs6000.c.
	(USE_ALTIVEC_FOR_ARG_P): Likewise.
	* config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Move from rs6000.h.
	Take a pointer as the CUM parameter.  Update callers.
	(USE_ALTIVEC_FOR_ARG_P): Likewise.  Also correct for Darwin/AIX
	32-bit ABIs.
	(function_arg_advance): Use USE_ALTIVEC_FOR_ARG_P.  Correct case
	of vector parameters as named arguments of stdarg function.
	(function_arg): Likewise.

	* config/rs6000/darwin.h (ASM_SPEC): Use -force_cpusubtype_ALL when
	-maltivec is specified, not the non-existent -faltivec.

2003-11-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_function_value): Declare.
	* config/s390/s390.c (TARGET_RETURN_IN_MEMORY): Define.
	(s390_return_in_memory): New function.
	(s390_function_value): New function.
	(s390_function_arg_float): Return false for all arguments larger
	than 8 bytes.
	(s390_function_arg_pass_by_reference): Likewise.  Return true for
	all vector arguments.
	(s390_function_arg_integer): New function.
	(s390_function_arg_advance): Call it.  Add sanity checks.
	(s390_function_arg): Likewise.
	* config/s390/s390.h (FUNCTION_VALUE): Call s390_function_value.
	(LIBCALL_VALUE): Likewise.
	(RET_REG): Remove.
	(RETURN_IN_MEMORY): Remove.

2003-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_initial_elimination_offset): Change
	return type to HOST_WIDE_INT.
	* config/mips/mips.c (mips_frame_info): Give sizes type HOST_WIDE_INT.
	Make initialized a bool.  Make register masks unsigned ints.
	(compute_frame_size): Make same mask change here.  Use HOST_WIDE_INT
	where appropriate.
	(mips_initial_elimination_offset): Return a HOST_WIDE_INT.
	(mips_output_function_prologue): Print sizes as HOST_WIDE_INTs.

2003-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_initial_elimination_offset): Remove bogus
	negation.

2003-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.h (ASM_OUTPUT_ALIGN_WITH_NOP): Define.

2003-11-06  Momchil Velikov  <velco@fadata.bg>

	* config/mips/mips.c (override_options): Set MASK_SOFT_FLOAT
	for VR4111 too.

2003-11-06  Jan Hubicka  <jh@suse.cz>

	* builtins.c (simplify_builtin_strrchr, simplify_builtin_strpbrk): Add
	missing casts.

2003-11-06  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c: Change the word "bitsize" to "precision" throughout.
	* machmode.def: Likewise.
	* machmode.h (GET_MODE_SIZE): Cast value to unsigned short.
	(GET_MODE_BITSIZE): Define as GET_MODE_SIZE * BITS_PER_UNIT.
	(GET_MODE_PRECISION): New macro.
	(mode_bitsize): Renamed mode_precision.
	* stor-layout.c (mode_for_size, smallest_mode_for_size):
	Use GET_MODE_PRECISION; clarify comments.

2003-11-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/install-old.texi: Remove old documentation of building
	cross-compilers.
	* doc/install.texi: Move some of it to here.

2003-11-05  Per Bothner  <pbothner@apple.com>

	PR preprocessor/12891
	* c-opts.c (finish_options):  Set include_cursor to disable premature
	calls to push_command_line_include from cpp_scan_nooutput.
	Fixes bug reported by DJ Delorie.

2003-11-05  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (setup_incoming_varargs): Remove
	code supporting old-style varargs.

	* config/rs6000/rs6000.c (rs6000_machopic_legitimize_pic_address): Use
	an intermediate register for better optimisation.

2003-11-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/10080
	* cfgloopanal.c (variable_initial_value, variable_initial_values,
	simple_loop_exit_p): Record the fact that initial value is extended
	from inner mode.
	(count_strange_loop_iterations, count_loop_iterations): Handle
	ivs that iterate in a narrower mode. Fix handling of overflows.
	Improve handling of NE conditions.
	(inverse, fits_in_mode_p): New static functions.
	(simple_increment): Detect variables that iterate in a narrower mode.
	* cfgloop.h (struct loop_desc): Fields inner_mode and extend added.

2003-11-05  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (compute_vrsave_mask): Correct off-by-one
	error.

	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Darwin
	needs VRSAVE.

2003-11-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (pedantic_lvalue_warning): Deprecate use of
	conditional expressions as lvalues.

2003-11-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tsystem.h: Add the prototype of strlen.
	* unwind-pe.h (read_encoded_value_with_base): Add an
	appropriate cast to handle a case where the pointer size is
	smaller than sizeof (int).

2003-11-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_global_pic_constant_p): Delete.
	(mips_delegitimize_address): Delete.
	(mips_gotoff_global, mips_load_got_page): Declare.
	(mips_load_got_global, mips_rewrite_small_data): Declare.

	* config/mips/mips.h (FIND_BASE_TERM): Remove definition.
	(DANGEROUS_FOR_LA25_P): Use global_got_operand.
	(PREDICATE_CODES): Add global_got_operand, local_got_operand and
	small_data_pattern.  Remove CONST from const_arith_operand's entry.

	* config/mips/mips.c (UNSPEC_ADDRESS_P, CONST_GP_P): New macros.
	(UNSPEC_ADDRESS, UNSPEC_ADDRESS_TYPE): Likewise.
	(mips_constant_type): Delete.
	(mips_symbol_type): Add SYMBOL_GOTOFF_PAGE, SYMBOL_GOTOFF_GLOBAL,
	SYMBOL_GOTOFF_CALL and SYMBOL_GOTOFF_LOADGP.
	(NUM_SYMBOL_TYPES): New macro.
	(mips_address_type): Remove ADDRESS_INVALID.
	(machine_function): Add has_gp_insn_p.
	(mips_constant_info): Delete.
	(mips_address_info): Add the address type as an extra field.  Replace
	the c field with symbol_type.
	(mips_split_p, mips_lo_relocs, mips_hi_relocs): New arrays.
	(TARGET_DELEGITIMIZE_ADDRESS): Remove definition.
	(mips_reloc_offset_ok_p, mips_classify_constant): Delete.
	(mips_split_const, mips_symbolic_constant_p): New functions.
	(mips_symbolic_address_p): Take the symbol type and mode as arguments.
	(mips_classify_address): Return true if the address is valid, storing
	its type in INFO.  Use mips_symbolic_constant_p.  Use mips_lo_relocs[]
	to test whether a LO_SUM address is allowed.
	(mips_symbol_insns): Return 0 for general mips16 symbols.
	Reorder SYMBOL_GOT_GLOBAL case to match mips_symbol_type definition.
	Handle the new SYMBOL_GOTOFF_*s.
	(mips_address_insns): Update call to mips_classify_address.
	(mips_const_insns): Be more fussy about HIGH constants.  Remove use
	of mips_classify_constant.  Be more accurate about CONSTs.
	(mips_global_pic_constant_p): Delete.
	(const_arith_operand): Only accept CONST_INTs.
	(call_insn_operand): Remove call to mips_classify_constant.
	Let mips_symbolic_constant_p check for invalid offsets.
	(move_operand): Check for general_operands first.  Only accept symbolic
	constants if they satisfy mips_symbolic_constant_p and cannot be split.
	(symbolic_constant): Use mips_symbolic_constant_p.
	(global_got_operand, local_got_operand): New predicates.
	(stack_operand): Update call to mips_classify_address.
	(mips_legitimate_address_p): Likewise.
	(mips_reloc, mips_lui_reloc): Delete.
	(mips_force_temporary): Only use the given temporary if no_new_pseudos.
	Use emit_move_insn.
	(mips_split_symbol, mips_unspec_address): New functions.
	(mips_unspec_offset_high): New function.
	(mips_load_got): Replace reloc argument with a symbol_type.
	Use mips_unspec_address to create the address and put it in a
	LO_SUM with the base register.
	(mips_load_got16, mips_load_got32): Delete.
	(mips_emit_high, mips_legitimize_symbol): Delete.
	(mips_gotoff_global): New function.
	(mips_load_got_page, mips_load_got_global): New functions.
	(mips_legitimize_symbol): Inline handling of LO_SUM splits.
	(mips_legitimize_const_move): Likewise.  Remove HIGH handling.
	Inline code to handle constants plus invalid offsets.  Use
	mips_split_symbol to legitimize constant pool addresses.
	(mips_delegitimize_address): Delete.
	(mips_rtx_costs): Give legitimate symbolic constants and CONST_DOUBLEs
	a cost of 1 insn.  Give the rest a cost of CONSTANT_POOL_ADDRESS.
	(mips_subword): Pass memrefs through mips_rewrite_small_data.
	(mips_output_move): Remove use of mips_classify_constant.
	(mips_expand_call): Use mips_unspec_offset_high to calculate the
	high part of the GOT address for calls to global functions.
	(override_options): Initialize mips_split_p[], mips_lo_relocs[]
	and mips_hi_relocs[].
	(print_operand): Use print_operand_reloc to handle '%h' and '%R'.
	Remove use of mips_classify_constant.
	(mips_reloc_string): Delete.
	(print_operand_reloc): New function.
	(print_operand_address): Update call to mips_classify_address.
	(mips_rewrite_small_data_p, small_data_pattern_1): New functions.
	(small_data_pattern): New predicate.
	(mips_rewrite_small_data_1, mips_rewrite_small_data): New functions.
	(mips_function_has_gp_insn): New function.
	(mips_global_pointer): Use it.
	(mips_gp_insn): Delete.
	(mips_expand_prologue): When compiling for n32/n64 abicalls, use a
	single loadgp pattern to initialize $gp.  Pass it the offset of _gp
	from the start of the current function.
	(mips16_gp_pseudo_reg): Revert last patch.

	* config/mips/mips.md (RELOC_*): Delete.
	(UNSPEC_LOADGP, UNSPEC_FIRST_ADDRESS): New constants.
	(got): New insn attribute.
	(type): Set to "load" if got == load.
	(length): Set to 4 if got == load, 8 if got == xgot_high.
	(lui[sd]i): Delete.
	(*xgot_hi[sd]i, *xgot_lo[sd]i): New patterns.
	(*got_disp[sd]i, *got_page[sd]i): Likewise.
	(*low[sd]i): Change constraints to "d".  Add a new define_split to
	rewrite small data constants into LO_SUMs.
	(loadgp): New insns.

2003-11-04  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/_tilib.c: Use _ABI* in _MIPS_SIM tests.

2003-11-04  DJ Delorie  <dj@redhat.com>

	* config/v850/v850.md (mulhisi3): Expand the const_int case
	separately to avoid trying to sign extend the const.

2003-11-04  Richard Sandiford  <rsandifo@redhat.com>

	* emit-rtl.c (copy_rtx_if_shared): Don't allow MEMs with constant
	addresses to be shared.
	(force_const_mem): Return a copy of the pool entry.

2003-11-03  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (GCC_CFLAGS): Remove @WERROR@ again.

2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (cpp.dvi): New target split from cpp.info.
	(gcc.dvi):  New target split from gcc.info.
	(gccint.dvi): New target split from gccint.info.
	(cppinternals.dvi): New target split from cppinternals.info
	(gccinstall.info): New specific rule.
	(gccinstall.dvi): Likewise.
	(dvi): Move targets to $(docobjdir).
	($(docobjdir)/%.dvi): New implicit rule.

2003-11-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* doc/gty.texi (tag, desc): Say more about role of desc values in
	selecting between tags.

2003-11-03  Alexander Kabaev  <ak03@gte.com>

	* real.c (encode_ieee_single): Ensure proper promotion.

2003-11-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/contrib.texi: Add Giovanni Bajo, Dara Hazeghi, Falk Hueffner,
	and Andrew Pinski.

2003-11-03  Syd Polk  <spolk@apple.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Add G3, G4, and G5
	marketing names to the list of supported processors.
	* config/rs6000/rs6000.h: Ditto.
	* doc/invoke.texi: Ditto.
	* config.gcc: Ditto.

2003-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (stdio_va_list): Allow tab before va_list.
	Merge two substitutions.
	* fixinc/fixincl.x: Regenerate.
	Fixes PR bootstrap/12666.

2003-11-03  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/install-old.texi: Remove VMS documentation.

2003-11-03  Jan Hubicka  <jh@suse.cz>

	* i386.c (override_options):  Remove hack enabling 128bit long double
	commited by accident.

2003-11-02  Per Bothner  <per@bothner.com>

	* c-opts.c (needValue):  Do cpp_find_main_file before processing
	any imacros flags, so pfile->main_file is set for the latter.

2003-11-03  Andreas Jaeger  <aj@suse.de>
	    Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (GCC_CFLAGS): Allow blacklisting of warnings.
	(SYSCALLS.c.X-warn): Suppress warnings.

2003-11-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR optimization/12845
	* pa.c (output_cbranch): Use cmpb for DImode comparisons with 0.

2003-11-02  Zack Weinberg  <zack@codesourcery.com>

	* print-rtl.c (print_rtx): Call PRINT_REG with second argument -1.
	* config/i386/i386.c (print_reg): Abort on a virtual register
	if code != -1; not if file == asm_out_file.
	* config/i386/i386.h (PRINT_REG): Document meaning of CODE == -1.
	(DEBUG_PRINT_REG): Delete, unused.

2003-11-02  Andreas Schwab  <schwab@suse.de>

	* config/ia64/fde-glibc.c (_GNU_SOURCE): Define to 1 instead of
	empty to avoid conflict with the definition from configure.

2003-11-02  Roger Sayle  <roger@eyesopen.com>

	PR optimization/10817
	* ifcvt.c (noce_emit_move_insn): Improve documentation comment.
	(noce_try_move): New function to optimize an if-the-else into an
	unconditional move, i.e. "if (a!=b) x=a; else x=b" into "x=a".
	(noce_process_if_block): Attempt simplification with noce_try_move.

	* simplify-rtx.c (simplify_ternary_operation): Some minor fixes
	and improvements to the optimizations of IF_THEN_ELSE expressions.
	(simplify_subreg): Silence signed/unsigned comparison warning.

2003-11-02  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (targhooks.o, reload.o): Update dependencies.
	(GTFILES): Add targhooks.c.
	(gt-targhooks.h): New rule; depend on s-gtype.
	* target.h (direct_pool_load_p): New hook.
	* target-def.h (TARGET_DIRECT_POOL_LOAD_P): New macro.
	(TARGET_INITIALIZER): Include it.
	* targhooks.h (default_direct_pool_load_p): Declare.
	(hook_bool_machine_mode_true): Declare.
	* targhooks.c: Include insn-config.h, recog.h, ggc.h and
	gt-targhooks.h.
	(pool_symbol): New variable.
	(default_direct_pool_load_p): New function.
	(hook_bool_machine_mode_true): New function.
	* reload.c: Include target.h.
	(find_reloads): If an alternative will force a constant into memory,
	count an extra reload if constant pool symbols are not valid
	addresses.  If an alternative uses memory to move values between
	registers, count the move as two reloads rather than one.
	* config/s390/s390.c (TARGET_DIRECT_POOL_LOAD_P): Define.
	* doc/tm.texi (TARGET_DIRECT_POOL_LOAD_P): Document.

2003-11-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12799
	* postreload.c (reload_cse_move2add): Generate the add2
	patterns manually.

2003-11-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_partial_nregs) [TARGET_ARCH64]:
	Return 0 for all complex modes whose size is lesser or equal to
	a word.  Add a ??? comment for the condition used with 16-byte
	aligned modes.

2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>

	* .cvsignore: Remove c-parse* and tradcif.c.
	* objc/.cvsignore: Delete.

2003-11-01  Roger Sayle  <roger@eyesopen.com>

	* unwind-sjlj.c (_Unwind_GetCFA): Return (_Unwind_Word)0 instead
	of NULL.

2003-11-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* som.h (DO_GLOBAL_DTORS_BODY): Change to C90 declaration.

	* libgcc2.c (SYMBOL__MAIN): Provide C90 declaration.

	* collect2.c (scan_libraries): Fix typos.

	PR preprocessor/12847
	* cppfiles.c, cppexp.c, cpperror.c, cpplib.h, cpplib.c, cpplex.c,
	cppinit.c, cpptrad.c, cppmacro.c, fix-header.c, cpppch.c, c-pch.c,
	c-incpath.c, cppcharset.c (DL_WARNING, DL_WARNING_SYSHDR, DL_PEDWARN,
	DL_ERROR, DL_ICE, DL_EXTRACT, DL_WARNING_P): Prefix macro names with
	"CPP_".

2003-11-01  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Correct
	no_units calculation.

2003-11-01  Andreas Jaeger  <aj@suse.de>

	* unwind-dw2.c (_Unwind_FrameState): Remove commas at end of
	enumeration list.

2003-11-01  Andreas Schwab  <schwab@suse.de>

	* config/ia64/sysv4.h (SDATA_SECTION_FUNCTION): Update to C90
	prototypes.
	(SBSS_SECTION_FUNCTION): Likewise.

2003-11-01  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (GCC_CFLAGS): Add @WERROR@ for target files.

2003-11-01  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/rs6000/sysv4.h (EXTRA_SECTION_FUNCTIONS): Update to C90
	prototypes.

2003-11-01  Andreas Jaeger  <aj@suse.de>

	* unwind-dw2.c (_Unwind_FindEnclosingFunction): Constify variable.
	(uw_frame_state_for): Constify variables.
	(extract_cie_info): Constify first argument.

	* unwind-dw2-fde-darwin.c: Adjust prototype of
	_Unwind_Find_registered_FDE for recent changes.
	(examine_objects): Constify return value and local variable result.
	(_Unwind_Find_FDE): Constify return value and local variable ret.

2003-10-31  Per Bothner  <pbothner@apple.com>

	* c-opts.c (finish_options):  Change to returns boolean - false iff
	the call to cpp_find_main_file fails.
	(c_common_init):  Skip preprocess_file if finish_options failed.
	(c_common_parse_file):  Break if finish_options failed.
	Fixes PR preprocessor/12545.

2003-10-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* aclocal.m4: Blacklist ultrix* for mmap file.
	* configure: Rebuilt.

	* function.c (assign_parms): Add ATTRIBUTE_UNUSED to variable
	reg_parm_stack_space.
	* toplev.c (default_get_pch_validity): Fix warning.

	* vax.c: Include toplev.h.
	(vax_init_libfuncs): Fix typo (umod).
	* vax.h (ASM_COMMENT_START): Define.
	(PRINT_OPERAND): Fix warning when HOST_WIDE_INT is a long long.

2003-10-31  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11968
	* expr.c (expand_expr <MULT_EXPR>): Remove inappropriate and
	confusing comment; distributivity isn't handled in expand_expr.
	* fold-const.c (extract_muldiv_1 <PLUS_EXPR>):  Allow overflow
	in distributivity, if wrap-around semantics are specified with
	-fwrapv.

2003-11-01  Alan Modra  <amodra@bigpond.net.au>

	PR 12315
	* final.c (profile_function): Allow for NULL svrtx.

2003-10-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_select_section): Use new style declaration.
	* som.h (readonly_data): Likewise.

2003-10-31  Kelley Cook  <kcook@gcc.gnu.org>

	* config/rs6000/rs6000.c: Update to C90 prototypes.

2003-10-31  Richard Earnshaw  <rearnsha@arm.com>

	PR target/7513
	* arm.h (CONDITIONAL_REGISTER_USAGE): Disable use of LR in Thumb
	code.

2003-10-31  Andreas Jaeger  <aj@suse.de>,
	    Zack Weinberg  <zack@codesourcery.com>


	* crtstuff.c (__register_frame_info, __register_frame_info_bases)
	(__deregister_frame_info, __deregister_frame_info_bases):
	Constify void * argument.
	* unwind-dw2-fde.h (struct fde_vector):
	Constify 'orig_data' and 'array' fields.
	(__register_frame_info, __register_frame_info_bases)
	(__deregister_frame_info, __deregister_frame_info_bases):
	Constify void * argument.
	(get_cie, next_fde, _Unwind_Find_FDE): Constify arguments,
	return values, and casts of type fde *, struct dwarf_fde *,
	and struct dwarf_cie *.
	* unwind-dw2-fde.c (__register_frame_info, __register_frame_info_bases)
	(__deregister_frame_info, __deregister_frame_info_bases):
	Constify void * argument.
	(get_cie_encoding, ): Constify struct dwarf_cie * argument.
	(get_fde_encoding, fde_unencoded_compare, fde_single_encoding_compare)
	(fde_mixed_encoding_compare, fde_compare_t, start_fde_sort, fde_insert)
	fde_split, SWAP, frame_downheap, frame_heapsort)
	(classify_object_over_fdes, add_fdes, linear_search_fdes,
	binary_search_unencoded_fdes, binary_search_single_encoding_fdes,
	binary_search_mixed_encoding_fdes, search_object, _Unwind_Find_FDE):
	Constify arguments, local variables, return values, and casts
	of type fde *, fde **, struct dwarf_fde *, and struct dwarf_cie *.
	Use const pointer types in sizeof expressions, for clarity.
	* unwind-dw2-fde-glibc.c
	(_Unwind_find_registered_FDE, _Unwind_find_FDE): Constify return value.
	(struct unw_eh_callback_data): Constify 'ret' field.

2003-10-31  Fariborz Jahanian  <fjahanian@apple.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_mixed_function_arg): New.
	(function_arg): Call it.
	(rs6000_function_value): Widen integral return value to mode based
	on TARGET_32BIT, not word_mode.
	* config/rs6000/rs6000.h (PROMOTE_MODE): Likewise.
	(UNITS_PER_ARG): New.
	(RS6000_ARG_SIZE): Use it.

2003-10-31  Gerald Pfeifer  <gerald@pfeifer.com>

	* .cvsignore: No longer ignore gengtype-lex.c, gengtype-yacc.c,
	and gengtype-yacc.h.

2003-10-31  Richard Earnshaw  <rearnsha@arm.com>

	PR optimization/8896
	* postreload.c (reload_combine): Check that REGY doesn't die in an
	insn of the form (set (regx) (plus (regx) (regy))), ie REGX != REGY.

2003-10-31  Josef Zlomek  <zlomekj@suse.cz>

	PR/10239
	* cfgrtl.c (delete_insn): Decrease LABEL_NUSES for all REG_LABEL notes.

2003-10-31  Josef Zlomek  <zlomekj@suse.cz>

	PR/11640
	* cfgrtl.c (try_redirect_by_replacing_jump): Move jump
	immediatelly before BARRIER.

2003-10-31  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (STRICT2_WARN): Add -Wold-style-definition.

2003-10-31  Richard Earnshaw  <rearnsha@arm.com>

	PR target/11271
	* reload.c (find_reloads_address): Handle any register in
	(PLUS (PLUS (REG) (REG)) (CONST_INT).

2003-10-31  Richard Earnshaw  <rearnsha@arm.com>

	* ggc-page.c (ggc_pch_read): Wrap call to poison_pages in
	ENABLE_GC_CHECKING not in GGC_POISON.

2003-10-31  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/9863
	* configure.in: Bail out if awk is missing.
	* configure: Regenerate.

	PR ada/12761
	* Makefile.in: Move default definitions of X_ADA_CFLAGS,
	T_ADA_CFLAGS, X_ADAFLAGS, T_ADAFLAGS from ada/Make-lang.in to here.

2003-10-30  Richard Henderson  <rth@redhat.com>

	* c-objc-common.c (c_tree_printer): Handle types correctly.
	Factor code a bit.

2003-10-30 Kelley Cook <kcook@gcc.gnu.org>

	* value-prof.c, web.c: Update to C90.

2003-10-30  Eric Christopher  <echristo@redhat.com>

	* function.c (purge_addressof_1): Add case for REG_RETVAL
	notes when modes are unequal.

2003-10-31  Jan Hubicka  <jh@suse.cz>

	* i386-modes.def: Add XFmode format adjustment.

2003-10-30  Jan Hubicka  <jh@suse.cz>

	* real.c (encode_ieee_extended): Back out previous patch.

2003-10-30  Jan Hubicka  <jh@suse.cz>

	* real.c (encode_ieee_extended): Initialize whole array.
	* reg-stack.c (move_for_stack_reg0: Use always XFmode.
	* i386-modes.def: Change definitions of TFmode and XFmode.
	* i386.c (classify_argument): Rename TFmodes to XFmodes; add new TFmode
	code.
	(construct_container): Allow constructing of TFmode integer containers.
	(ix86_return_in_memory):  XFmode is not returned in memory.
	(init_ext_80387_constants): Always use XFmode.
	(print_operand): Likewise.
	(ix86_prepare_fp_compare_regs): Likewise.
	(split_to_parts): Deal with TFmode.
	(split_long_move): Simplify.
	(ix86_init_mmx_sse_builtins): Add __float80, __float128.
	(ix86_memory_move_cost): Do not confuse TFmode.
	* i386.h (LONG_DOUBLE_TYPE_SIZE): Set to 96.
	(IS_STACK_MODE): TFmode is not stack mode.
	(HARD_REGNO_NREGS, CLASS_MAX_NREGS): Deal nicely with XFmode.
	(VALID_SSE_REG_MODE): Allow TFmode.
	(VALID_FP_MODE_P): Disallow TFmode.
	(VALID_INT_MODE_P): Allow TFmode in 64bit mode.
	* i386.md (TFmode patterns): Kill.
	(movtf, motf_rex64): New patterns.

2003-10-30  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (adddi3): Fix typo in mips16 stack pointer code.

2003-10-30  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (mov_lwl): Use memory_operand where appropriate.
	(mov_lwr, mov_swl, mov_swr): Likewise.
	(mov_ldl, mov_ldr, mov_sdl, mov_sdr): Likewise.

2003-10-30  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_global_pointer): Don't try to use $25.

2003-10-30  Richard Henderson  <rth@redhat.com>

	* config/mips/mips.c (mips_build_builtin_va_list): Use runtime
	test for irix6 rather than preprocessor test.

2003-10-30  Richard Henderson  <rth@redhat.com>

	* cppcharset.c (one_utf8_to_utf16): Initialize 's' to silence warning.

2003-10-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (struct machine_function): Use save_return_addr_p
	as a general flag that the return address register needs to be saved,
	not necessarily because of __builtin_return_addr (0).
	(s390_split_branches): Remove TEMP_REG and TEMP_USED arguments,
	remove special handling of zSeries machines.
	(s390_optimize_prolog): Remove TEMP_USED argument, treat the return
	register as a regular register on zSeries machines.
	(s390_reorg): Adjust calls to s390_split_branches and
	s390_optimize_prolog.
	(s390_frame_info): On zSeries machines, do not assume the return
	register is always used.  Update regs_ever_live with current data
	for the special registers.
	(s390_emit_epilogue): Use save_return_addr_p to determine whether
	the return register was saved.
	* config/s390/s390.h (CONDITIONAL_REGISTER_USAGE): Do not mark
	RETURN_REGNUM fixed on zSeries machines.
	(REG_ALLOC_ORDER): Use RETURN_REGNUM last.
	* config/s390/s390.md ("*doloop_si"): Handle branch overflow
	via ahi-jgne pair on zSeries machines.
	("*doloop_di"): Likewise.
	("*doloop_di_long"): Remove.

2003-10-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_override_options): Revert change of arm_constant_limit
	when optimizing for size.

2003-10-29  Richard Henderson  <rth@redhat.com>

	* fold-const.c (fold_single_bit_test): Convert the input to the
	operational intermediate type.

2003-10-29  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_build_builtin_va_list): New.
	* expr.h (std_build_builtin_va_list): Declare.
	* defaults.h (BUILD_VA_LIST_TYPE): New.
	* system.h (BUILD_VA_LIST_TYPE): Poison.
	* target-def.h (TARGET_BUILD_BUILTIN_VA_LIST): New.
	* target.h (struct gcc_target): Add build_builtin_va_list.
	* tree.c (build_common_tree_nodes_2): Use it.

	* config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/alpha/unicosmk.h,
	config/d30v/d30v-protos.h, config/d30v/d30v.c, config/d30v/d30v.h,
	config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.h,
	config/i860/i860-protos.h, config/i860/i860.c, config/i860/i860.h,
	config/i960/i960-protos.h, config/i960/i960.c, config/i960/i960.h,
	config/mips/iris6.h, config/mips/mips-protos.h, config/mips/mips.c,
	config/mips/mips.h, config/rs6000/rs6000-protos.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h,
	config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h,
	config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.h,
	config/xtensa/xtensa-protos.h, config/xtensa/xtensa.c,
	config/xtensa/xtensa.h: Rename foo_build_va_list to
	foo_build_builtin_va_list; make it static.  Define
	TARGET_BUILD_BUILTIN_VA_LIST.  Remove BUILD_VA_LIST_TYPE.
	Update protos.

	* config/i386/i386.c (ix86_expand_carry_flag_compare): Make static.
	* config/iq2000/iq2000.h (BUILD_VA_LIST_TYPE): Remove.

2003-10-29  James E Wilson  <wilson@specifixinc.com>

	* recog.c (asm_operand_ok): Add missing break after case 'X'.
	Change if statements to else if statements in default case.
	(extract_constrain_insn_cached): Fix misspelling of constrain_operands
	in comment.
	(constrain_operands_cached): Likewise.
	(constrain_operands): Change if statements to else if statements in
	default case.
	* reload.c (find_reloads): Likewise.

2003-10-29  Richard Henderson  <rth@redhat.com>

	* config/m68k/m68k.c (notice_update_cc): Clear cc status for
	shifts and rotates.

2003-10-30  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md: Remove duplicate pattern.

2003-10-29  Hans-Peter Nilsson  <hp@axis.com>

	* real.c (do_divide): Initialize result with a 0.

	* configure.in <enable-checking for valgrind>: Look for
	<valgrind/memcheck.h> first.  AC_DEFINE HAVE_VALGRIND_MEMCHECK_H
	if it exists.
	* configure, config.in: Regenerate.
	* ggc-common.c [ENABLE_VALGRIND_CHECKING &&
	HAVE_VALGRIND_MEMCHECK_H]: Include <valgrind/memcheck.h>.  Use
	#elif for other alternatives.
	* ggc-page.c: Ditto.
	* ggc-zone.c: Don't assume <valgrind/memcheck.h>; instead copy
	include structure from ggc-common.c.

2003-10-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-linux.h (ASM_OUTPUT_ADDR_VEC_ELT): Use label in big switch ELTs.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Use label difference in big switch ELTs.
	* pa.c (pa_adjust_insn_length): Check for btable branches using
	attribute TYPE_BTABLE_BRANCH.
	(pa_reorg): Simplify.
	* pa.h (CASE_VECTOR_MODE): Change big switch mode to SImode.
	(ASM_OUTPUT_ADDR_VEC_ELT): As above.
	(ASM_OUTPUT_ADDR_DIFF_ELT): As above.
	* pa.md (btable_branch): New instruction type.
	(in_branch_delay, in_nullified_branch_delay, in_call_delay): Disallow
	btable branches.
	(define_delay): Add btable branches to insn types that may have an
	insn in the delay position.
	(Z2, Z3): Add btable branch to list.
	Simplify unamed pattern set copy pic_label_operand to register.  Add
	PA 2.0 variant.
	(short_jump): New jump for use in branch tables.
	(casesi, casesi0): Revise for new branch table formats.
	(casesi32, casesi32p, casesi64p): New casesi patterns.
	(indirect_jump): Move.

2003-10-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (UNITS_PER_WORD): Revert to
	!TARGET_POWERPC64.
	(UNITS_PER_GPR_WORD): Delete.
	(HARD_REGNO_NREGS): Revert to UNITS_PER_WORD.
	(HARD_REGNO_MODE_OK): Same.
	(CLASS_MAX_NREGS): Same.

2003-10-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (ASM_COMMENT_START): Define.

2003-10-29  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c (complete_mode): Record MODE_CC, MODE_INT,
	MODE_FLOAT, and MODE_PARTIAL_INT modes as having one
	component, not zero.

2003-10-29  Andreas Schwab  <schwab@suse.de>

	* config/ia64/t-ia64 (LIB2ADDEH): Add $(srcdir)/gthr-gnat.c.

2003-10-29  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_partial_nregs) [TARGET_ARCH64]:
	Never return 1 for complex integral modes whose size is lesser or
	equal to a word.
	(function_arg_pass_by_reference) [TARGET_ARCH64]: Mention CTImode
	in the comment.
	(function_arg_advance) [TARGET_ARCH64]: Don't special-case complex
	modes.
	(sparc_va_arg) [TARGET_ARCH64]: Handle any types whose size is
	greater than 16 bytes by reference.

2003-10-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/ia64/ia64.c (ia64_assemble_integer): Test POINTER_SIZE,
	not TARGET_ILP32.
	(ia64_initialize_trampoline): Use globalize_label target call.

2003-10-29  Andreas Schwab  <schwab@suse.de>

	* doc/install.texi (Building): Add a sentence about building Ada
	for a canadian cross.

2003-10-28  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/ia64.c (cmptf_libfunc): New static.
	(ia64_expand_compare): Add logic to open-code calls to
	_U_Qfcmp for TFmode comparisons.
	(ia64_hpux_init_libfuncs): Initialize cmptf_libfunc.
	Set libfuncs for TFmode eq/ne/gt/ge/lt/gt to 0; these should
	never be generated anymore.
	* config/ia64/ia64.md (cmptf): New expander.

2003-10-28  Zack Weinberg  <zack@codesourcery.com>

	* ia64.md (UNSPEC_SETF_EXP,UNSPEC_FR_SQRT_RECIP_APPROX): New constants.
	(*sqrt_approx): New instruction pattern for approximate square roots.
	(*setf_exp_xf): New instruction pattern for exponentiation.
	(*maddxf4_alts_truncsf): New instruction pattern for truncation.
	(sqrtsf2_internal_thr): New define_and_split implementing
	throughput-optimized inline calculation of SFmode square root.
	(sqrtdf2_internal_thr): Likewise for DFmode.
	(sqrtxf2_internal_thr): Likewise for XFmode.
	(sqrtsf2, sqrtdf2, sqrtxf2): New expanders to choose between
	latency- and throughput-optimized square root algorithms.
	* ia64.h (MASK_INLINE_SQRT_LAT, MASK_INLINE_SQRT_THR,
	TARGET_INLINE_SQRT_LAT, TARGET_INLINE_SQRT_THR, TARGET_INLINE_SQRT):
	New macros.
	(TARGET_SWITCHES): Add -minline-sqrt-min-latency and
	-minline-sqrt-max-throughput.
	* ia64.c (ia64_override_options): If both -minline-sqrt-min-latency
	and -minline-sqrt-max-throughput are given, notify the user
	that both options cannot be used simultaneously.
	If -minline-sqrt-min-latency is given, notify the user that
	this mode is not yet implemented.
	(rtx_needs_barrier): Reformat initial comment to obey
	72-character width limit.  Support UNSPEC_SETF_EXP and
	UNSPEC_FR_SQRT_RECIP_APPROX.

2003-10-29  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md (movdf_softfloat64): Allow dummy ctr,ctr
	moves.

2003-10-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR target/11598
	PR libgcj/10610
	* config/rs6000/sysv4.h (PREFERRED_STACK_BOUNDARY): New macro.

2003-10-28  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_output_epilogue): When using a frame pointer, don't emit
	an extra stack adjustment insn if the stack pointer is already
	pointing at the right place.
	(use_return_insn): Allow a return insn to be used when we have a
	frame pointer if the stack pointer is in the right place.
	(output_return_instruction): Handle it.

2003-10-28  Andreas Jaeger  <aj@suse.de>

	* ggc-zone.c (check_cookies): Add missing variable.
	Add void to prototypes.

2003-10-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/mips/irix6-libc-compat.c (inet_makeaddr): Prototype.
	* crtstuff.c (__do_global_ctors_1): Move prototype.
	* unwind-dw2.c (NO_SIZE_OF_ENCODED_VALUE): Define when
	appropriate.
	* unwind-sjlj.c (_Unwind_GetCFA, _Unwind_FindEnclosingFunction):
	Mark parameter with __attribute__((unused)).

2003-10-27  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (pushdecl): Clarify comment.

2003-10-27  Arnaud Charlet  <charlet@act-europe.fr>

	* doc/install.texi: Update instructions for Ada cross builds

	PR ada/5909:
	* doc/sourcebuild.texi: Document Ada test suite.

2003-10-27  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c: Convert to ISO C90.
	* config/m68hc11/m68hc11-protos.h: Likewise.

2003-10-27  Jan Hubicka  <jh@suse.cz>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	* toplev.c (enum dump_file_index, dump_file): Fix ordering of
	webizer pass dump.

2003-10-27  Jakub Jelinek  <jakub@redhat.com>
	    Jan Hubicka  <jh@suse.cz>

	* reload1.c (struct elim_table): Change offset, initial_offset and
	previous_offset fields to HOST_WIDE_INT.
	(offsets_at): Change from int to HOST_WIDE_INT.
	(reload): Adjust offsets_at initialization.
	(eliminate_regs_in_insn): Change type of offset to HOST_WIDE_INT.
	(verify_initial_elim_offsets): Change type of t to HOST_WIDE_INT.
	* config/i386/i386.c (ix86_compute_frame_layout): Change offset type
	to HOST_WIDE_INT.  Don't save regs using mov for huge frame sizes
	if TARGET_64BIT.
	(pro_epilogue_adjust_stack): New function.
	(ix86_expand_prologue, ix86_expand_epilogue): Use it.
	* config/i386/i386.md (pro_epilogue_adjust_stack): Remove.
	(pro_epilogue_adjust_stack_1): Remove * in front of name.
	(pro_epilogue_adjust_stack_rex64): Handle -2147483648 properly.
	(pro_epilogue_adjust_stack_rex64_2): New insn.

	* config/i386/i386.c (ix86_expand_epilogue): Fix comment typo.

	* config/i386/i386.c (ix86_expand_call): Replace 40 with
	FIRST_REX_INT_REG + 3 /* R11 */.

2003-10-26  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (attr cannot_copy): New.
	(call_osf_2_er, call_value_osf_2_er, ldgp_er_1, ldgp_er_2,
	prologue_ldgp_er_2, prologue_ldgp_1): Set it.
	* config/alpha/alpha.c (alpha_cannot_copy_insn_p): Test it.

2003-10-26  Daniel Berlin  <dberlin@dberlin.org>

	* ggc-zone.c:  New file, zone allocating collector.
	* configure: Accept zone option for --with-gc
	* configure.in: Ditto.
	* ggc.h (ggc_pch_count_object): Pass bool indicating
	stringiness. Update all callers.
	(ggc_pch_alloc_object): Ditto.
	(ggc_pch_write_object): Ditto.
	(ggc_alloc_rtx): Use typed allocation, since all RTX's are of a single
	type.
	(ggc_alloc_rtvec): Ditto.
	(ggc_alloc_tree): Use zone allocation, since some things using this macro
	aren't a single typecode.
	* ggc-none.c (ggc_alloc_typed): New function.
	(ggc_alloc_zone): Ditto.
	* ggc-page.c: Ditto on both functions.

2003-10-26  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_compute_frame_layout): Ensure FPU related
	frame information is always valid.
	(m68k_output_function_prologue): Remove superfluous TARGET_68881
	test; fix formatting.

2003-10-26  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_compute_frame_layout): Swap reg_mask and
	reg_rev_mask computation.
	(m68k_output_function_prologue): Fix usage of current_frame (one typo
	and one missing); use reg_rev_mask not reg_mask.
	(m68k_output_function_epilogue): Fix usage of current_frame;
	use fpu_rev_mask not fpu_mask.

2003-10-26  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c (m68k_output_function_prologue): Eliminate
	num_saved_regs, use current_frame.reg_no instead.

2003-10-26  Bernardo Innocenti  <bernie@develer.com>
	    Paul Dale  <pauli@snapgear.com>

	* doc/extend.texi (interrupt_handler): Add m68k to the
	list of processors implementing it.
	* doc/invoke.texi (-msep-data): Document new m68k option.
	(-mno-sep-data): Likewise.
	(-mid-shared-library): Likewise.
	(-mno-id-shared-library): Likewise.
	(-mshared-library-id): Likewise.

2003-10-26  Andreas Jaeger  <aj@suse.de>

	* unwind-dw2.c (_Unwind_GetGR): Avoid warning about unsigned
	comparison.
	(_Unwind_SetGR): Likewise.

2003-10-26  Ottavio Campana <ottavio@campana.vi.it>

	PR target/12690
	* config/i386/mmintrin.h (_mm_set1_pi8): Fix comment.

2003-10-26  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_output_function_prologue): Move front
	comment from here to...
	(m68k_save_reg): ...here. Fix comment formatting.
	(m68k_output_function_prologue): Fix comment formatting.
	(m68k_output_function_epilogue): Likewise.
	(const_method): Likewise.

2003-10-26  Kazu Hirata  <kazu@cs.umass.edu>

	* toplev.c (default_get_pch_validity): Guard the use of
	target_options with #ifdef TARGET_OPTIONS.
	(default_pch_valid_p): Likewise.

2003-10-26  Andreas Jaeger  <aj@suse.de>
	    Zack Weinberg  <zack@codesourcery.com>
	    Andreas Tobler <toa@pop.agri.ch>

	* dwarf2out.c (output_cfi): Use HOST_WIDE_INT_PRINT.
	(output_die): Likewise.
	(print_die): Likewise.

2003-10-26  Andreas Jaeger  <aj@suse.de>

	* tree.h (dwarf2out_def_cfa, dwarf2out_args_size,
	dwarf2out_reg_save, new_loc_descr): Update prototypes for recent
	dwarf2out.c change.

	* toplev.c (default_pch_valid_p): Fix warning.

2003-10-25  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_replace_rtx): Avoid allocating duplicate
	RTL nodes.  If an operator's operands are unchanged, return the
	original argument unchanged.

2003-10-26  Graham Stott  <graham.stott@btinternet.com>

	Fix bootstrap failure.
	* expmed.c (store_bit_field): Don't compare bitsize against
	modes with zero bit-size.

	(extract_bit_field): Likewise

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* dwarf2out.c (dw_cfi_oprnd_struct): Offset is HOST_WIDE_INT.
	(cfa_loc): Likewise.
	(reg_save, stack_adjust_offset, queue_reg_save): Replace long by
	HOST_WIDE_INT.
	(args_size, old_args_size): change type to HOST_WIDE_INT.
	(dwarf2out_def_cfa, dwarf2out_args_size,
	dwarf2out_reg_save, new_loc_descr): offset is HOST_WIDE_INT.
	(dw_val_struct): integers, unsigneds and offsets are HOST_WIDE_INT.
	(add_AT_int, add_AT_unsigned, att_AT_offset, AT_int, AT_unsigned,
	AT_offset): Use HOST_WIDE_INT.
	(based_loc_descr): offset is HOST_WIDE_INT.
	(add_data_member): Likewise.
	(add_const_value_attribute): Simplify.

2003-10-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_eax_live_at_start_p): New.
	(ix86_expand_prologue): Save and restore eax around stack probe
	if it's live.

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* cppcharset.c (one_utf8_to_utf32): Initialize 's' to silence warning.

2003-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/12712
	* reg-stack.c (convert_regs_1): Create an arbitrary input stack
	if the block has no predecessors.
	(convert_regs_2): Document the problem with successors whose
	only predecessor is the block to be processed.
	(convert_regs): Don't create the arbitrary input stack here.

2003-10-24  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c (struct mode_data): Add contained and next_cont
	fields.
	(complete_mode): Maintain linked list of modes that have a
	given component.
	(emit_mode_unit_size): Delete.
	(emit_mode_nunits): New.
	(emit_insn_modes_c): Update to match.
	(emit_mode_adjustments): Propagate size and alignment
	adjustments from component modes to their containers.
	* machmode.h (mode_unit_size): Delete.
	(mode_nunits): New.
	(GET_MODE_NUNITS): Just return the value in the table.
	(GET_MODE_UNIT_SIZE): Compute using GET_MODE_INNER and
	GET_MODE_SIZE.
	* expmed.c (store_bit_field, extract_bit_field): Can use a
	plain move instruction if bitsize >= GET_MODE_BITSIZE of
	destination/source mode, respectively.
	* varasm.c (assemble_real): Write out the full size of the
	constant, not just its bitsize.
	(output_constant): Honor TYPE_MODE of TREE_REAL_CSTs.

	* config/ia64/ia64-modes.def: Define XFmode as well as TFmode.
	Use ADJUST_BYTESIZE and ADJUST_ALIGNMENT to set size and
	alignment of XF and TF modes in compliance with ia64 ABIs.
	Can now hardwire the format of both modes.
	* config/ia64/ia64.c: Change TFmode to XFmode wherever appropriate.
	(general_tfmode_operand, destination_tfmode_operand)
	(tfreg_or_fp01_operand, spill_tfmode_operand): Rename to
	general_xfmode_operand, destination_xfmode_operand,
	xfreg_or_fp01_operand, spill_xfmode_operand respectively.
	(ia64_init_builtins): Make TYPE_PRECISION of fpreg_type
	and float80_type be 96 so they get XFmode.  Use !TARGET_HPUX,
	not INTEL_EXTENDED_IEEE_FORMAT, to decide how to define
	__float128.
	* config/ia64/ia64.h: Default TARGET_HPUX to 0.
	Change TFmode to XFmode wherever appropriate.  Remove all
	references to INTEL_EXTENDED_IEEE_FORMAT.
	(LONG_DOUBLE_TYPE_SIZE): Varies with TARGET_HPUX.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define (always 96).
	(PREDICATE_CODES): Update to match function renames.
	* config/ia64/ia64.md: Change TF to XF throughout; rename all
	patterns to match.  Remove all references to
	INTEL_EXTENDED_IEEE_FORMAT.  Update predicate calls to match
	function renames.
	* config/ia64/ia64-protos.c: Update all prototypes to match
	renamed functions.
	* config/ia64/hpux.h: Redefine TARGET_HPUX to 1.
	Remove all references to INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/lib1funcs.asm: Add __divxf3 as new name for
	__divtf3; keep old name for backward compatibility.
	(L__compat): New section providing forwarding stubs for
	__fixtfti, __fixunstfti, __floattitf.
	* config/ia64/t-ia64: Add __compat to LIB1ASMFUNCS.

2003-10-24  Geoffrey Keating  <geoffk@apple.com>

	PR 10757
	* c-pch.c: Include target.h.  Improve comments.
	(struct c_pch_validity): Add target_data_length.
	(pch_init): Add target's validity data.
	(c_common_valid_pch): Check target's validity data.
	* target-def.h (TARGET_GET_PCH_VALIDITY): New.
	(TARGET_PCH_VALID_P): New.
	(TARGET_INITIALIZER): Add new fields.
	* target.h: Include tm.h.
	(struct gcc_target): Add get_pch_validity, pch_valid_p.
	* toplev.h (default_get_pch_validity): New prototype.
	(default_pch_valid_p): New prototype.
	* toplev.c (default_get_pch_validity): New routine.
	(default_pch_valid_p): New routine.
	* Makefile.in (TARGET_H): Add TM_H.  Replace all users of
	target.h with $(TARGET_H).
	(c-pch.o): Add TARGET_H.
	* doc/tm.texi (PCH Target): New node.
	(TARGET_GET_PCH_VALIDITY): Document.
	(TARGET_PCH_VALID_P): Document.

2003-10-24  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Define a vpath for %.texi.  Remove explicit $(docdir)
	and $(docdir)/include from any *.texi dependencies.
	($(docobjdir)/%.dvi): Depend on stmp-docobjdir.
	($(docobjdir)/%.1): Depend on .pod instead of .texi.
	($(docobjdir)/%.7): Likewise.
	(%.pod): New implicit rule.
	(cpp.pod): New dependency only rule.
	(gcc.pod): New intermediate rule with dependencies and commands.
	(gfdl.pod): Likewise.
	(fsf-funding.pod): Likewise.

2003-10-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/mkfixinc.sh: Remove special cases for svr4 and ptx, and
	related code.
	* fixinc/fixinc.ptx: Remove.
	* fixinc/fixinc.svr4: Remove.

2003-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (load_multiple_operation): Allow both SImode
	and DImode if word_mode is DImode.
	(store_multiple_operation): Likewise.
	* config/s390/s390.md ("load_multiple", "store_multiple"): Likewise.
	("*load_multiple_di"): Allow only if word_mode == DImode.
	("movqi"): Use LLGC whenever TARGET_ZARCH.
	("fix_truncdfsi2"): Fix incorrect temporary size.
	("fix_truncsfsi2"): Likewise.
	("*bras_r", "*brasl_r", "*basr_r"): Remove predicate and constraint
	string for function return value operand.
	("*bras_tls", "*brasl_tls", "*basr_tls"): Likewise.

2003-10-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-parse.in (array_declarator): Use expr_no_commas.
	Fixes PR c/11943.

2003-10-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/linux.h: Wrap MD_FALLBACK_FRAME_STATE_FOR and
	associated includes in #ifndef inhibit_libc.

2003-10-24  Roger Sayle  <roger@eyesopen.com>

	* doc/libgcc.texi: Document some more of the libgcc API.

2003-10-24  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_rtx_costs_1, case TARGET_THUMB): Adjust costs for
	comparing a constant with small negative numbers and add costing
	for constants in conjunction with AND.
	(note_invalid_constants): Tidy previous change.
	(thumb_cmp_operand): Tidy.
	(thumb_cmpneg_operand): New function.
	* arm.h (CONDITIONAL_REGISTER_USAGE): Don't use HI regs if optimizing
	for size.
	(FIRST_LO_REGNUM, FIRST_HI_REGNUM, LAST_HI_REGNUM): Define.
	(PREDICATE_CODES): Add thumb_cmpneg_operand.
	* arm.md (cbranchsi4): Convert to define_expand.  Handle comparison
	with a negative constant.
	(cbranchsi4_insn): Matcher for cbranchsi4.
	(cbranchsi4_scratch): Similar, but a scratch is available for
	handling negative constants.
	(movsi_cbranchsi4): New pattern.
	(tstsi3_cbranch): Renamed from andsi3_cbranch_scratch, remove scratch
	and use the TST instruction.
	(andsi3_cbranch, orrsi3_cbranch, xorsi3_cbranch, cbranchne_decr1)
	(addsi3_cbranch, subsi3_cbranch): Ensure that register preferencing
	cannot see high regs or memory alternatives.
	(bicsi3_cbranch_scratch, bicsi3_cbranch): New patterns.

2003-10-24  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (note_invalid_constants): Try to extract the constant
	pool value using avoid_constant_pool_reference; only use
	get_pool_constant if that returns the original reference.

2003-10-24  Jan Hubicka  <jh@suse.cz>

	PR c++/12624
	* varasm.c (notice_global_symbol): Disqualify global registers.

2003-10-23  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11414
	* loop.c (load_mems): Use redirect_jump to forward jumps from
	the original loop end label to the new "loop sink" block's label.

2003-10-23  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/12705
	* optabs.c (expand_binop): When expanding complex operations
	inline, always calculate result into a new temporary register.
	Minor code clean-ups.

2003-10-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* objc/lang-specs.h: Handle -print-objc-runtime-info.
	* doc/invoke.texi (Objective-C Dialect Options): Document it.

2003-10-24  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygwin.asm: Add copyright notice. Add comment
	on why this code is needed.

2003-10-23  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/clzhi2.c: Fix warnings.
	* config/h8300/ctzhi2.c: Likewise.
	* config/h8300/fixunssfsi.c: Likewise.
	* config/h8300/parityhi2.c: Likewise.
	* config/h8300/popcounthi2.c: Likewise.

2003-10-23  James E Wilson  <wilson@specifixinc.com>

	* gcc.c (option_map): Delete --target and --use-version.

2003-10-23  Fariborz Jahanian  <fjahanian@apple.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (UNITS_PER_WORD): Use TARGET_32BIT, not
	TARGET_POWREPC64.
	(UNITS_PER_GPR_WORD): Define.
	(HARD_REGNO_NREGS): Use UNITS_PER_GPR_WORD.
	(HARD_REGNO_CALL_PART_CLOBBERED): Define.
	(HARD_REGNO_MODE_OK): Use UNITS_PER_GPR_WORD.
	(CLASS_MAX_NREGS): Use UNITS_PER_GPR_WORD.
	* config/rs6000/rs6000.c (function_arg): Generate PARALLEL for
	DFmode and DImode in 32-bit ABI / 64-bit computation mode.
	(rs6000_emit_prologue): Select reg_mode and reg_size using
	TARGET_32BIT, not TARGET_POWERPC64.
	(rs6000_function_value): Generate PARALLEL for DImode in 32-bit
	ABI / 64-bit computation mode

2003-10-22  Andrew Haley  <aph@redhat.com>

	* toplev.c (output_file_directive): Allow for null input_name.

2003-10-22  Waldek Hebisch <hebisch@math.uni.wroc.pl>

	* config/i386/i386.c (classify_argument): Handle SET_TYPE.

2003-10-22  Chris Demetriou  <cgd@broadcom.com>

	* configure.in: In --enable-generated-files-in-srcdir option
	handling, fix default case handling.
	* configure: Regenerate.

2003-10-22  Phil Edwards  <phil@codesourcery.com>

	* config.gcc:  Update *-*-vxworks* generic hook and comments.
	(arm-wrs-vxworks, i[4567]86-wrs-vxworks, mips-wrs-vxworks,
	mips-wrs-windiss, sh-wrs-vxworks):  New stanzas.
	* genmultilib:  Allow the MULTILIB_OSDIRNAMES to be mapped directly.
	* config/svr4.h (SWITCH_TAKES_ARG):  Undefine it before redefining it.
	* config/windiss.h:  New file.
	* config/arm/t-vxworks:  New file.
	* config/arm/vxworks.h:  New file.
	* config/i386/t-vxworks:  New file.
	* config/i386/vxworks.h:  New file.
	* config/mips/t-vxworks:  New file.
	* config/mips/vxworks.h:  New file.
	* config/mips/windiss.h:  New file.
	* config/sh/t-vxworks:  New file.
	* config/sh/vxworks.h:  New file.

2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_output_function_epilogue): Remove.
	(h8300_saveall_function_p): New.
	(h8300_insert_attributes): Insert the saveall attribute if
	#pragma saveall is specified.
	(h8300_attribute_table): Add saveall.
	(TARGET_ASM_FUNCTION_EPILOGUE): Remove.
	* doc/extend.texi: Mention the saveall attribute.

2003-10-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (pedantic_lvalue_warning): Unconditionally warn of
	deprecation of casts as lvalues.
	* fixinc/inclhack.def (obstack_lvalue_cast): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/obstack.h: New test.

2003-10-22  Andreas Schwab  <schwab@suse.de>

	PR target/12676
	* config/m68k/m68k.c (output_addsi3): Fix range check to work on
	LP64 platforms.

2003-10-22  Jan Hubicka  <jh@suse.cz>

	* dwarf2out.c (dwarf2out_abstract_function): Use DW_AT to check
	presence of DW_AT_inline.
	(gen_subprogram_die): Likewise; do not abort instead of emitting
	DW_AT_not_inline.

2003-10-22  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_function_possibly_inlined_p): Be conservative when
	global info is not ready.

2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/extend.texi: Mention H8S wherever H8/300H is mentioned.

2003-10-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("movstr_short_64", "movstr_short_31"): Merge ...
	("*movstr_short"): ... into this insn pattern.
	("movstr_short"): New expander.
	("*movstr_long_64"): Rename from "movstr_long_64", simplify.
	("*movstr_long_31"): Rename from "movstr_long_31", simplify.
	("movstr_long"): New expander.
	("clrstr_short_64", "clrstr_short_31"): Merge ...
	("*clrstr_short"): ... into this insn pattern.
	("clrstr_short"): New expander.
	("*clrstr_long_64"): Rename from "clrstr_long_64", simplify.
	("*clrstr_long_31"): Rename from "clrstr_long_31", simplify.
	("clrstr_long"): New expander.
	("cmpmem_short_64", "cmpmem_short_31"): Merge ...
	("*cmpmem_short"): ... into this insn pattern.
	("cmpmem_short"): New expander.
	("*cmpmem_long_64"): Rename from "cmpmem_long_64".
	("*cmpmem_long_31"): Rename from "cmpmem_long_31".
	("cmpmem_long"): New expander.
	* config/s390/s390.c (s390_expand_movstr): Use new expanders.
	(s390_expand_clrstr): Likewise.
	(s390_expand_cmpmem): Likewise.

2003-10-22  Mark Mitchell  <mark@codesourcery.com>

	* c-pch.c (struct c_pch_validity): Add pch_init field.
	(pch_init): Set it.
	(c_common_valid_pch): Check it.

2003-10-22  David Taylor <dtaylor@emc.com>

	PR debug/12500
	* dbxout.c (dbxout_typedefs): Use COMPLETE_OR_VOID_TYPE_P.

2003-10-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (function_value [ENABLE_CHECKING]): Don't call
	alpha_return_in_memory if no VALTYPE specified.

2003-10-22  Jan Hubicka  <jh@suse.cz>

	PR debug/12389
	* Makefile.in (dwarf2out.o): Depend on cgraph.h.
	* cgraph.c (cgraph_function_possibly_inlined_p): New function.
	* cgraph.h (cgraph_function_possibly_inlined_p): Declare.
	(cgraph_global_info): Add flag inlined
	* dwarf2out.c (gen_subprogram_die, gen_decl_die): Use
	cgraph_function_possibly_inded_p
	* cgraphunit.c (mark_inline): Set inlined flag.
	* toplev.c (rest_of_decl_compilation): Call outlining_inline_function
	only for possibly inlined functions.
	* c-decl.c (duplicate_decls): Never output abstract DIE representing old
	body of function.

2003-10-22  Andrew Haley  <aph@redhat.com>

	* varasm.c (output_constructor): Make constructor annotation
	conditional on ASM_COMMENT_START.

2003-10-21  Jason Merrill  <jason@redhat.com>

	* tree.c (get_unwidened): Check TREE_UNSIGNED on the field's type.
	(get_narrower): Likewise.

	* stor-layout.c (layout_decl): Do packed field alignment for
	bit-fields, too.

2003-10-21  Eric Christopher  <echristo@redhat.com>

	* expr.c (convert_move): Use FLOAT_EXTEND for extensions.

2003-10-21  Geoffrey Keating  <geoffk@apple.com>

	* c-pch.c: Add comments in various places.
	(struct c_pch_validity): Add the lengths of various strings.
	(host_machine): New static.
	(target_machine): New static.
	(get_ident): Bump version number.
	(pch_init): Write out version, host, target validity data.
	(c_common_valid_pch): Check version, host, target.
	* Makefile.in (c-pch.o): Add version.h; define HOST_MACHINE and
	TARGET_MACHINE.

2003-10-21  Jason Merrill  <jason@redhat.com>

	* tree.h (IS_EXPR_CODE_CLASS): Use strchr.
	(EXPR_P): New macro.

2003-10-21  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/ia64.md (cmpxchg_acq_si): Mark operand 3 as DImode.
	* config/ia64/ia64.c (ia64_expand_fetch_and_op,
	ia64_expand_op_and_fetch): Make sure the REG for ar.ccv is
	DImode.   Use convert_move to load ar.ccv.
	(ia64_expand_compare_and_swap): Likewise.
	If expand_expr doesn't put 'old' and 'new' in the proper
	modes, run them through convert_to_mode.

2003-10-21  Eric Christopher  <echristo@redhat.com>

	* config/frv/frv.c (frv_adjust_field_align): Check DECL_ARTIFICIAL
	for too large bitfields.

2003-10-21  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in ($(docobjdir)/%.info): Honor BUILD_INFO.

2003-10-21  Andrew Haley  <aph@redhat.com>

	* varasm.c (output_constructor): Annotate constructor.

2003-10-21  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in ($(DESTDIR)$(infodir)/%.info): Conditionalize chmod
	on existence of destination file.

2003-10-21  Jan Hubicka  <jh@suse.cz>

	* haifa-sched.c (choose_ready): Initialize index.

2003-10-21  Jason Merrill  <jason@redhat.com>

	* tree.c (build1): Fix off-by-one error.

2003-10-21  Robert Millan  <robertmh@gnu.org>

	* config/i386/kfreebsdgnu.h: New. i386-*-kfreebsd-gnu definitions.
	* config/kfreebsdgnu.h: New. *-*-kfreebsd-gnu definitions.
	* config/t-kfreebsd-gnu: New. *-*-kfreebsd-gnu tmake_file.
	* config.gcc: Add *-*-kfreebsd*-gnu and i[34567]86-*-kfreebsd*-gnu.

2003-10-21  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* web.c: Fix various comments.

2003-10-20  Nicolas Pitre <nico@cam.org>

	* config/arm/arm.c (arm_override_options): Set arm_constant_limit
	to 2 instead of 1 when optimize_size is true.  Gather code based on
	optimize_size together.  Add comment about XScale load latency.

2003-10-21  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_output_function_prologue): Remove
	obsolete comments.

2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Get parsedir and docobjdir from configure.
	* configure.in: Recogonize --enable-generated-files-in-srcdir.
	Pass along parsedir and docobjdir.
	* configure: Regenerate.
	* doc/install.texi: Document --enable-generated-files-in-srcdir.

2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Define $(docdir) before the Make-lang.in fragments are
	included.

2003-10-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.c (expand_tree_builtin): Ensure creal and cimag
	functions do not return lvalues.

2003-10-20  Jason Merrill  <jason@redhat.com>

	PR c/12553
	* tree.c (build1) <ADDR_EXPR>: Set TREE_SIDE_EFFECTS
	appropriately.

	PR c/11446
	* stor-layout.c (layout_decl): Fix alignment handling.

2003-10-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/extend.texi: Deprecate casts as lvalues.

2003-10-20  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Fix webizer pass ordering.

	* cgraphunit.c (decide_is_function_needed):  Fix test dealing
	with functions implicitly made inline.

	* cgraphunit.c (cgraph_decide_inlining_incrementally):  New function.
	(cgraph_finalize_function): Use it.
	(cgraph_mark_inline): Allow incrmental decisions
	* invoke.texi (max-inline-slope, min-inline-insns): Kill.
	* params.def (PARAM_MAX_INLINE_SLOPE, PARAM_MIN_INLINE_INSNS): Kill.
	* tree-inline.c (limits_allow_inlining): Kill.
	(expand_call_inline): Always use unit-at-a-time path.

2003-10-20  Zack Weinberg  <zack@codesourcery.com>

	* fixinc/inclhack.def (hpux11_snprintf): New edit.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/stdio.h: Add test for hpux11_snprintf.

2003-10-20  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (install-info): Simplify.
	($(DESTDIR)$(infodir)/%.info): New rule.
	* configure.in (target_list): Remove install-info.
	* doc/.cvsignore (gcc.info*): Remove.
	(gccint.info*): Likewise.
	(gccinstall.info*): Likewise.
	(cpp.info*): Likewise.
	(cppinternals.info*): Likewise.
	(*.info*): Add it.
	* doc/sourcebuild.texi: Update description of install-info.
	* objc/Make-lang.in (objc.install-info): Remove.

2003-10-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Define _ABIO32.
	Use it in _MIPS_SIM definition.
	* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Likewise.

2003-10-20  Zack Weinberg  <zack@codesourcery.com>

	* config/i386/i386.c (print_reg): Abort if REGNO (x) is a
	virtual register, but only if file == asm_out_file.
	* config/i386/i386.h (HI_REGISTER_NAMES): Use "argp", not "",
	for ARG_POINTER_REGNUM.

2003-10-20  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c (registered_builtin_types): New static.
	(c_common_type_for_mode): Consult registered_builtin_types.
	(c_register_builtin_type): Add type to registered_builtin_types.
	* optabs.c (init_floating_libfuncs): Initialize libfuncs for
	all MODE_FLOAT modes, not just the ones corresponding to
	float_type_node, double_type_node, and long_double_type_node.

2003-10-20  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (PREDICATE_CODES): Add normal_memory_operand.
	* config/alpha/alpha-protos.h: Remove PREDICATE_CODES prototypes.

2003-10-20  Dorit Naishlos  <dorit@il.ibm.com>

	* config/rs6000/rs6000.h: (rs6000_sched_insert_nops):
	support new flag -minsert-sched-nops.
	(DEFAULT_SCHED_FINISH_NOP_INSERTION_SCHEME): Define.
	* config/rs6000/rs6000.c: (rs6000_sched_insert_nops):
	support new flag -minsert-sched-nops.
	(is_cracked_insn, is_microcoded_insn): New functions.
	(rs6000_sched_finish): New function.
	(rs6000_issue_rate): Return 5 for power4.
	(get_next_active_insn, insn_terminates_group_p): New
	functions.
	(is_costly_group, force_new_group): New functions.
	(redefine_groups, pad_groups): New functions.
	(rs6000_variable_issue): Use new functions.
	* doc/invoke.texi (-minsert-sched-nops): Document new
	option.

2003-10-20  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (type attribute): Add new insn types
	fpa, fpm_pack, fgm_mul, fgm_pdist, and fgm_cmp for VIS.
	(patterns emitting VIS insns): Use them.
	* config/sparc/ultra1_2.md: Add VIS scheduling rules.
	* config/sparc/ultra3.md: Likewise.

2003-10-20  Falk Hueffner  <falk@debian.org>

	PR target/12654
	* config/alpha/alpha.c (alpha_emit_conditional_branch): Don't do
	comparison against constant by adjusting the argument except for
	EQ and NE.

2003-10-19  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc: Add support for arm926ejs, arm1026ejs, arm1136js,
	arm1136jfs, and armv6j.
	* config/arm/arm.c (FL_ARCH6J): New macro.
	(FL_VFPV2): Likewise.
	(all_cores): Add entries for arm926ejs, arm1026ejs, arm1136js,
	and arm1136jfs.
	(all_architectures): Add entry for armv6j.
	(arm_override_options): Add entries for arm926ejs, arm1026ejs,
	arm1136js, and arm1136jfs.
	* config/arm/arm.h (TARGET_CPU_arm926ej_s): New macro.
	(TARGET_CPU_arm1026ej_s): Likewise.
	(TARGET_CPU_arm1136j_s): Likewise.
	(TARGET_CPU_arm1136jf_s): Likewise.
	* doc/invoke.texi: Document new ARM cores and architecture
	variants.

2003-10-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (toplev.o): Add value-prof.h dependency.
	(value-prof.o): Add REGS_H dependency.
	* common.opt (fprofile-values, fvpt): New.
	* flags.h (flag_value_profile_transformations): Declare.
	* opts.c (common_handle_option): Handle -fprofile_values and
	-fvpt.
	* profile.c (branch_prob): Don't remove death notes here.
	* timevar.def (TV_VPT): New.
	* value-prof.c: Include regs.h.
	(insn_divmod_values_to_profile, gen_divmod_fixed_value, gen_mod_pow2,
	gen_mod_subtract, divmod_fixed_value_transform,mod_pow2_value_transform,
	mod_subtract_transform, value_profile_transformations): New.
	(insn_values_to_profile): Call insn_divmod_values_to_profile.
	(find_values_to_profile): Add dumps.
	* value-prof.h (value_profile_transformations): Declare.
	* toplev.c: Include value-prof.h.
	(rest_of_handle_value_profile_transformations): New.
	(enum dump_file_index): Add DFI_vpt.
	(dump_file): Add vpt dump.
	(flag_value_profile_transformations): New.
	(lang_independent_options): Add flag_profile_values and
	flag_value_profile_transformations.
	(rest_of_compilation): Call
	rest_of_handle_value_profile_transformations.
	(process_options): Let -fvpt imply -fprofile-values.
	* doc/invoke.texi (-fvpt): Document.

2003-10-19  Jan Hubicka  <jh@suse.cz>

	* i386.c (print_reg): Do not abort on certain registers.

	PR optimization/12612
	* reg-stack.c (subst_stack_regs_pat):  Use st(1) for clobbers.
	* i386.md (fpatan, fyl2x, fscale patterns and expanders): Use
	match_scratch; avoid bogus paralles.

	PR target/12674
	* i386.c (ix86_function_regparm): Disable implicit register passing
	conventions when profiling.

2003-10-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Richard Henderson  <rth@redhat.com>

	PR optimization/8178
	* config/i386/i386.md (*movsi_zero): Delete.
	(*ffs_no_cmove): Use ix86_expand_clear to zero the third operand.

2003-10-19  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (fix_operator): New.
	(divmod_operator): Tidy.
	(alpha_emit_xfloating_cvt): Handle UNSIGNED_FIX.
	* config/alpha/alpha.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
	(PREDICATE_CODES): Update.
	* config/alpha/alpha.md (fix_truncdfsi_ieee): Use match_operator.
	(fix_truncdfsi_internal, fix_truncdfdi_ieee): Likewise.
	(fix_truncsfsi_ieee, fix_truncsfsi_internal): Likewise.
	(fix_truncsfdi_ieee): Likewise.
	(fix_truncdfdi2, fix_truncsfdi2): Turn into define_expand.
	(fixuns_truncdfdi2, fixuns_truncsfdi2, fixuns_trunctfdi2): New.
	* config/alpha/alpha-protos.h: Update.

2003-10-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (INITIALIZE_TRAMPOLINE): Simplify.
	* config/mips/mips.c (mips_load_got): Assume Pmode == ptr_mode.
	* config/mips/mips.md (extendsidi2, *extendsidi2): Merge. Don't accept
	constant operands.

2003-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/extend.texi: Fix typos.
	* doc/invoke.texi: Likewise.

2003-10-18  Nicolas Pitre <nico@cam.org>

	* config/arm/arm.c (arm_override_options): Use arm_tune_xscale for
	XScale optimizations not arm_arch_xscale.
	* config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR, MOVE_RATIO): Likewise.

2003-10-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (shift_count_operand): Add prototype.
	* config/s390/s390.c (shift_count_operand): New function.
	(s390_extra_constraint): Use it to implement 'Y' constraint.
	(print_shift_count_operand): New function.
	(print_operand): Use it to implement '%Y'.
	* config/s390/s390.h (EXTRA_ADDRESS_CONSTRAINT): Add 'Y' constraint.
	(PREDICATE_CODES): Add shift_count_operand.
	* config/s390/s390.md ("rotldi3"): Merge alternatives,
	using "shift_count_operand" predicate and "Y" constraint,
	and "%Y" to output the combined shift count.
	("rotlsi3"): Likewise.
	("ashldi3", "*ashldi3_31", "*ashldi3_64"): Likewise.
	("ashrdi3", "*ashrdi3_31", "*ashrdi3_64", "*ashrdi3_cc_31",
	"*ashrdi3_cc_64", "*ashrdi3_cconly_31", "*ashrdi3_cconly_64"): Likewise.
	("ashlsi3", "ashrsi3", "*ashrsi3_cc", "*ashrsi3_cconly"): Likewise.
	("lshrdi3", "*lshrdi3_31", "*lshrdi3_64"): Likewise.
	("lshrsi3"): Likewise.

2003-10-18  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_output_function_epilogue): Add missing
	argument to asm_fprintf statement.

2003-10-18  Fariborz Jahanian  <fjahanian@apple.com>

	* rs6000.md: Separate TARGET_POWERPC64 patterns for TARGET_64BIT or TARGET_32BIT.
	(ashrdisi3_noppc64) Generate more efficient code for 32-bit right-shift of
	a "long long" argument.

2003-10-18  Alexandre Oliva  <aoliva@redhat.com>

	* final.c (final_scan_insn): Run FINAL_PRESCAN_INSNS on asm insns
	as well.

2003-10-18  Richard Sandiford  <rsandifo@redhat.com>

	* rtl.h (rtl_size): Declare.
	(rtunion): Remove rtwint.
	(rtx_def): Replace 'fld' with a union of an rtunion or a HOST_WIDE_INT.
	(RTX_HDR_SIZE, RTX_SIZE): New macros.
	(RTL_CHECK1): Adjust for new rtx_def layout.
	(RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2): Likewise.
	(XWINT, XCWINT): Likewise.  Access the rtx structure directly.
	(X0WINT): Remove.
	(X0ANY): New macro.
	* rtl.def: Adjust comments for new rtx_def layout.
	* ggc.h (ggc_alloc_rtx): Take the rtx code as argument, not the
	number of slots.
	* rtl.c (rtx_size): New array.
	(rtx_alloc): Adjust call to ggc_alloc_rtx.  Use RTX_HDR_SIZE.
	(copy_rtx): Use RTX_HDR_SIZE.  Adjust for new rtx_def layout.
	(shallow_copy_rtx): Adjust call to ggc_alloc_rtx.  Use RTX_SIZE.
	* integrate.c (copy_rtx_and_substitute): Use X0ANY to copy '0' fields.
	* emit-rtl.c (copy_most_rtx): Likewise.
	(copy_rtx_if_shared): Use RTX_SIZE.
	(copy_insn_1): Use RTX_HDR_SIZE.  Adjust for new rtx_def layout.
	* gengenrtl.c (gendef): Adjust ggc_alloc_rtx call.  Use RTX_HDR_SIZE.
	* gengtype.c (write_rtx_next): Use RTX_HDR_SIZE.
	(adjust_field_rtx_def): Expect "rtx_def" to be a union rather than
	an array.  Adjust output for new rtx_def layout.
	* ggc-page.c (RTL_SIZE): Use RTX_HDR_SIZE.
	* reload1.c (eliminate_regs): Use RTX_SIZE.
	* rtlanal.c (loc_mentioned_in_p): Adjust for new rtx_def layout.
	* gdbinit.in (pi): Likewise.

2003-10-18  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_decl_for_inlining): Revert previous patch.

2003-10-18  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_decl_for_inlining): Fix copying of copies.

2003-10-18  Roger Sayle  <roger@eyesopen.com>

	* libgcc.texi: Group multi-word types, such as "long double" and
	"unsigned int", using braces in @deftypefn and @deftypefnx nodes.
	Document __unord?f2 as returning a non-zero value, not just one.

2003-10-18  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/t-mmix (CRTSTUFF_T_CFLAGS): Define.
	($(T)crti.o, $(T)crtn.o): Pass CRTSTUFF_T_CFLAGS here too.

2003-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/i386/k6.md (k6_alux): Use the 'mode' attribute instead of
	match_operand.

2003-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_record_value_1): New fourth
	parameter packed_p.  Search for a DECL_PACKED field only if
	packed_p is false.  Pass packed_p recursively.
	(function_arg_record_value_2): Likewise.
	(function_arg_record_value): Update calls to
	function_arg_record_value_1 and function_arg_record_value_2.

2003-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* cse.c (cse_insn) [src_folded]: Check that the tentative replacement
	was successfully forced to memory before using the result.

2003-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/8178
	* config/i386/i386.md (*movsi_zero): New insn to set
	a register to zero on TARGET_USE_MOV0 targets.

2003-10-18  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (Makefile): Depend on the all Make-lang.in fragments.
	(POSTSTAGE1_FLAGS_TO_PASS): Pass down MAKEINFO and MAKEINFOFLAGS.

2003-10-17  David Edelsohn  <edelsohn@gnu.org>

	* doc/invoke.texi (gcse-las): Fix typo.

2003-10-17  Andrew Pinski  <pinskia@physics.uc.edu>

	* doc/install.texi: Remove first part of the sentence for
	zsh not working.  Change gcc to GCC.

	PR bootstrap/12546
	* doc/install.texi: Document that zsh does not work when
	configuring gcc.

2003-10-17  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/ptx4.h: Switch to DWARF 2; update comments.

2003-10-17  Segher Boessenkool  <boessen@de.ibm.com>
	    Hartmut Penner  <hpenner@de.ibm.com>

	PR 10404, partial 11591, partial 11601
	* config/rs6000/altivec.md ("altivec_dst", "altivec_dstt",
	"altivec_dstst", "altivec_dststt", "altivec_lvsl", "altivec_lvsr",
	"altivec_lvebx", "altivec_lvehx", "altivec_lvewx", "altivec_lvxl",
	"altivec_lvx", "altivec_stvx", "altivec_stvxl", "altivec_stvebx",
	"altivec_stvehx", "altivec_stvewx"): Use a memory_operand.
	* config/rs6000/rs6000.c (altivec_expand_lv_builtin): New function.
	(altivec_expand_stv_builtin): Adjust for the memory_operand.
	(altivec_expand_builtin): Call altivec_expand_lv_builtin.
	(altivec_init_builtins): Use `long int' for memory offsets.

2003-10-17  Jan Hubicka  <jh@suse.cz>

	* opts.c  (common_handle_option): Handle OPT_fweb
	* invoke.texi (-fweb): Add missing parts of documentation.

2003-10-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/linux.h (FUNCTION_NAME_ALREADY_DECLARED): Undef
	before redefinition.

2003-10-17  Mostafa Hagog  <mustafa@il.ibm.com>

	* common.opt: Add description of the new -fgcse-las flag.
	* flags.h (flag_gcse_las): Declaration of global flag_gcse_las.
	* gcse.c (hash_scan_set): Handle the case of store expression and
	insert the memory expression to the hash table, this way we make it
	possible to discover redundant loads after stores and remove them.
	(pre_insert_copy_insn): moved the call to update_ld_motion_stores,
	to pre_insert_copies, it is not the correct place to call it after
	adding stores to be in the available expression hash table.
	(pre_insert_copies): Added the call to update_ld_motion_stores when
	one or more copies were inserted.
	* opts.c (common_handle_option): Handle the -fgcse-las flag.
	* toplev.c (flag_gcse_las): Initialization of flag_gcse_las.

	* doc/invoke.tex: Document new -fgcse-las flag.

2003-10-18  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/crtsavres.asm: Correct alignment of powerpc64 code
	for posterity, then remove it.

2003-10-17  Richard Earnshaw <rearnsha@arm.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm.c (use_return_insn): Not a single instruction, if
	there's a frame pointer.
	(arm_output_epilogue): Protect stack pointer from being corrupted
	on interrupt.

2003-10-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* ifcvt.c (noce_try_addcc): Handle ifs with 'else' case.

2003-10-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (simplify_set): Do not clear out undobuf.other_insn
	already set elsewhere.

2003-10-17  Kelley Cook  <kcook@gcc.gnu.org>

	* config/i386/i386.c (ix86_expand_prologue):  Use
	gen_allocate_stack_worker.

2003-10-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (mips-sgi-irix6*o32): Only enable use_collect2
	without gas.
	(mips-sgi-irix6*): Likewise.

	* config/mips/iris6gas.h: New file.
	* gcc/config.gcc (mips-sgi-irix6*): Use it.

	* config/mips/mips.h (TARGET_IRIX): Provide default.
	(TARGET_IRIX5): Likewise.
	(TARGET_SGI_O32_AS): Likewise.
	* config/mips/iris5.h (TARGET_IRIX): Redefine as 1.
	(TARGET_IRIX5): Likewise.
	* config/mips/iris6.h (TARGET_IRIX6): Remove.
	(TARGET_IRIX5): Redefine as 0.

	* config/mips/mips.c (mips_output_external): Test for IRIX 6 O32
	linker workaround with TARGET_IRIX and mips_abi instead of
	ASM_OUTPUT_UNDEF_FUNCTION.
	(mips_file_end): Inline old ASM_OUTPUT_UNDEF_FUNCTION definition,
	testing TARGET_IRIX and mips_abi explicitly.
	* config/mips/iris5.h (ASM_OUTPUT_UNDEF_FUNCTION): Remove.
	* config/mips/iris6.h (ASM_OUTPUT_UNDEF_FUNCTION): Remove undef.

	* config/mips/mips.c (irix_output_external_libcall): Renamed from
	mips_output_external_libcall.
	Use new TARGET_IRIX in guard.
	* config/mips/mips-protos.h (irix_output_external_libcall): Match
	this.
	* config/mips/iris5.h (TARGET_ASM_EXTERNAL_LIBCALL): Likewise.

	* config/mips/iris5gas.h (HAVE_GAS_SHF_MERGE): Update comment.
	Define as 0.

	* config/mips/iris6.h (FUNCTION_NAME_ALREADY_DECLARED): Define
	depending on mips_abi.
	* config/mips/linux.h (FUNCTION_NAME_ALREADY_DECLARED): Define as 1.
	* config/mips/mips.c (mips_output_function_prologue): Test
	FUNCTION_NAME_ALREADY_DECLARED at runtime.
	(mips_output_function_epilogue): Likewise.
	(build_mips16_function_stub): Likewise.
	(build_mips16_call_stub): Likewise.
	* config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Provide
	default.

	* config/mips/iris6.h (DWARF2_UNWIND_INFO): Don't define for native
	IRIX 6 O32 assembler.
	(SUBTARGET_CC1_SPEC): Enforce mips2 ISA with O32 ABI.
	(TARGET_OS_CPP_BUILTINS): Define _ABIO32, use it to define
	_MIPS_SIM for O32 ABI.
	(DWARF2_FRAME_INFO): Don't define for native IRIX 6 O32 assembler.
	(ASM_DECLARE_FUNCTION_NAME): Integrate mips.h version.
	(ASM_DECLARE_FUNCTION_SIZE): Move undef before redefinition.
	Integrate O32 version.
	(SUBTARGET_ASM_SPEC): Handle -mabi=32.
	(SUBTARGET_ASM_DEBUGGING_SPEC): Add mdebug_asm_spec for gas with
	O32 ABI.
	(BSS_SECTION_ASM_OP_32): Define.
	(BSS_SECTION_ASM_OP_64): Likewise.
	(BSS_SECTION_ASM_OP): Define differently for O32 and N32/N64 ABIs
	using them.
	(TARGET_ASM_NAMED_SECTION): Reflect renaming.
	Move up to allow override for O32 ABI without GNU as.
	(EH_FRAME_SECTION_NAME): Define explicitly.
	(MUST_USE_SJLJ_EXCEPTIONS): Define.
	[_MIPS_SIM == _ABIO32 && !GAS] (CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP): Dummy definitions.
	(TARGET_ASM_NAMED_SECTION): Undef statically.
	(EH_FRAME_SECTION_NAME): Likewise.
	(ASM_OUTPUT_FILENAME): Integrate mips.h version.
	(LINK_SPEC): Only use default options -call_shared -no_unresolved
	without -r.
	Don't pass -init, -fini with -mabi=32.
	(COLLECT_PARSE_FLAG): Define.

	* config/mips/mips.c (iris6_asm_named_section_1): Changed guard to
	TARGET_IRIX.
	Renamed to use irix_ prefix.
	(iris6_asm_named_section): Likewise.
	(iris_section_align_entry_eq): Likewise.
	(iris_section_align_entry_hash): Likewise.
	(iris6_file_start): Likewise.
	(iris6_section_align_1): Likewise.
	(iris6_file_end): Likewise.
	(iris6_section_type_flags): Likewise.
	(iris_section_align_htab): Likewise.
	(iris_orig_asm_out_file): Likewise.
	[TARGET_IRIX] (TARGET_ASM_FILE_START): Reflect rename.
	(TARGET_ASM_FILE_END): Likewise.
	(TARGET_SECTION_TYPE_FLAGS): Likewise.

	* config/mips/mips.c [TARGET_IRIX5 && !TARGET_IRIX6]
	(TARGET_ASM_UNALIGNED_HI_OP): Use runtime initialization in
	override_options instead.
	(TARGET_ASM_UNALIGNED_SI_OP): Likewise.
	(TARGET_ASM_UNALIGNED_DI_OP): Likewise.
	* config/mips/mips.c (override_options) [USE_COLLECT2]: Restore
	flag_gnu_linker to defaults without USE_COLLECT2 for non-IRIX O32
	assemblers.
	Likewise for constructor/destructor handling.
	(override_options): Handle IRIX O32 assembler quirks.
	[TARGET_IRIX] (irix_asm_named_section): Handle O32 ABI with and
	without gas.
	(mips_file_start): Use new TARGET_IRIX.
	(mips_declare_object_name): No special processing for IRIX O32
	assembler.
	(mips_finish_declare_object): Likewise.
	(irix_asm_output_align): Renamed from iris6_asm_output_align.
	Don't record alignment for O32 ABI.
	(irix_file_start): Renamed from iris6_file_start.
	Return early for O32 ABI.
	(irix_file_end): Renamed from iris6_file_end.
	Don't emit .section directives for O32 ABI.
	* config/mips/iris6.h (ASM_OUTPUT_ALIGN): Reflect renaming.
	* config/mips/mips-protos.h (irix_asm_output_align): Likewise.

	* config/mips/t-iris6 (MULTILIB_OPTIONS): Add mabi=32.
	(MULTILIB_OSDIRNAMES): Likewise.

2003-10-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* collect2.c (COLLECT_PARSE_FLAG): Provide default.
	(main): Use it.
	* doc/tm.texi (COLLECT_PARSE_FLAG): Document it.

2003-10-17  Richard Earnshaw  <rearnsha@arm.com>

	* arm-modes.def (CC_Nmode): New condition code mode.
	* arm.c (thumb_condition_code): Delete.
	(arm_select_cc_mode): Handle single-bit test for Thumb.
	(arm_print_operand, cases 'd' and 'D'): Don't special case the
	condition code logic for Thumb.
	(get_arm_condition_code): Handle CC_Nmode.
	(thumb_cbrch_target_operand): New function.
	* arm.h (PREDICATE_CODES): Add thumb_cbrch_target_operand.
	* arm-protos.h (thumb_cbrch_target_operand): Add prototype.
	* arm.md: Add Thumb split patterns for zero_extract and
	sign_extract.
	(tbit_cbranch, andsi3_cbranch_scratch, andsi3_cbranch)
	(orrsi3_cbranch_scratch, orrsi3_cbranch, xorsi3_cbranch_scratch)
	(xorsi3_cbranch, addsi3_cbranch, addsi3_cbranch_scratch)
	(subsi3_cbranch, subsi3_cbranch_scratch): New Thumb patterns.
	(cbranchne_decr1): Re-work to use CC_Nmode.

	* arm.c (thumb_expand_epilogue): Add clobbers of registers restored
	by the return instruction.  Add a use of the link register if it
	wasn't stored.

2003-10-17  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (init_propagate_block_info): Don't abort if a conditional
	jump is not a comparison of a register.  Instead, just don't record
	conditional life information.

2003-10-16  Jan Hubicka  <jh@suse.cz>

	PR optimization/12630
	* pa.md (movstrsi, movstrsi_internal): Use match_scratch in clobbers
	for operands 7 and 8.

2003-10-16  Kelley Cook  <kcook@gcc.gnu.org>

	* objc/Make-lang.in (objc-parse.o): Honor $(parsedir) for objc-parse.c.

2003-10-16  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygming.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.

	* config/i386/winnt.c (gen_stdcall_suffix): Make static
	(gen_fastcall_suffix): Likewise.
	(i386_pe_dllexport_p): Likewise.
	(i386_pe_dllimport_p): Likewise.
	(i386_pe_mark_dllexport): Likewise.
	(i386_pe_mark_dllimport): Likewise.
	(i386_pe_asm_named_section): Fix formatting.

2003-10-16  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Add snprintf to gcc_AC_CHECK_DECLS list.
	* system.h: Declare snprintf if necessary.
	* configure, config.in: Regenerate.

2003-10-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_va_arg): Only align vector
	arguments if TARGET_ALTIVEC_ABI.

2003-10-15  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_memcpy, fold_builtin_mempcpy,
	fold_builtin_memmove, fold_builtin_strcpy, fold_builtin_strncpy,
	fold_builtin_memcmp, fold_builtin_strcmp, fold_builtin_strncmp):
	New functions.
	(expand_builtin_memcpy): Use integer_zerop instead of testing
	host_integerp and tree_low_cst directly.  Move misapplied hunk
	for optimization wher SRC and DEST point to the same location.
	(expand_builtin_mempcpy): From here.
	(expand_builtin_memmove): Use integer_zerop instead of testing
	host_integerp and tree_low_cst_directly.
	(expand_builtin_memset): Likewise.
	(expand_builtin_memcmp): Likewise (and for integer_onep).
	(expand_builtin_strncmp): Likewise.
	(fold_builtin): Call the appropriate fold_builtin_foo functions
	to optimize memcpy, mempcpy, memmove, strcpy, strncpy, memcmp,
	strcmp and strncmp.

2003-10-15  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin-protos.h (machopic_non_lazy_ptr_name): Delete
	prototype.  Clean up some whitespace.
	* config/darwin.c: Use gen_rtx_FOO (...) rather than
	gen_rtx (FOO, ...).
	(machopic_non_lazy_ptr_name): Make static.
	(name_needs_quotes): Allow '.' and '$' unquoted.
	(machopic_legitimize_pic_address): Improve codegen in dynamic-no-pic
	case.

2003-10-15  Gábor Lóki  <alga@rgai.hu>

	* fold-const.c (tree_swap_operands_p): Disable some features
	when optimizing for size.

2003-10-15  David Daney  <ddaney@avtrex.com>

	* config/mips/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New
	* config/mips/mips.h (DWARF_FRAME_REGNUM): Fixed to allow unwind
	from leaf functions.
	(DWARF_FRAME_RETURN_COLUMN): Ditto.
	(SIGNAL_UNWIND_RETURN_COLUMN): New, used
	by MD_FALLBACK_FRAME_STATE_FOR.
	* testsuite/gcc.dg/cleanup-9.c: Added mips*-*-linux* target.

2003-10-15  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c: Include hashtab.h.
	(modes_by_name, hash_mode, eq_mode, struct mode_adjust)
	(adj_bytesize, adj_alignment, adj_format, new_adjust)
	(_ADD_ADJUST, ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FORMAT)
	(print_maybe_const_decl, emit_mode_adjustments): New.
	(known_modes): Rename to modes.
	(find_mode): Kill class argument; look up in hash table.
	(new_mode): Insert into hash table also.
	(new_adjust): New.
	(reset_float_format, make_partial_integer_mode)
	(make_vector_mode): Tweak error reporting.
	(reset_float_format): Correct type of fourth argument.
	(emit_insn_modes_h): Add #defines to help make mode_size,
	mode_base_align, and real_format_for_mode conditionally const.
	(emit_mode_size, emit_mode_base_align): Use print_maybe_const_decl.
	(emit_real_format_for_mode): Likewise, but temporarily disabled.
	(emit_insn_modes_c): Call emit_mode_adjustments.
	(main): Initialize modes_by_name.
	* Makefile.in: Update dependencies.
	* machmode.def: Document EXPR arguments and new ADJUST_* statements.
	* machmode.h: Use CONST_MODE_SIZE and CONST_MODE_BASE_ALIGN in
	declarations of mode_size and mode_base_align.  Declare
	init_adjust_machine_modes.
	* toplev.c (backend_init): Call init_adjust_machine_modes.

2003-10-15  Olivier Hainque  <hainque@act-europe.fr>

	* genmodes.c (calc_wider_mode): Allocate enough room for all the
	entries we'll possibly assign in the sort buffer.

2003-10-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* config.gcc (s390x-ibm-tpf*): New target.
	* doc/install.texi: Document it.
	* config/s390/t-tpf: New file.
	* config/s390/tpf.h: New file.

2003-10-15  Hans-Peter Nilsson  <hp@axis.com>

	PR target/12598
	* config/cris/cris.md (define_split "*mov_sidesi_biap_mem"+1)
	(define_splits "*mov_sidesi_mem"+1, "casesi"+9, +10, +11, +12):
	Use cris_mem_op and replace_equiv_address, not gen_rtx_MEM.
	("call", "call_value", define_split "*mov_sidesi_mem"+19, +20)
	(define_split "*mov_sidesi_mem"+21, +22, +23, +24, +25, +26, +27)
	(define_split "*mov_sidesi_mem"+28, +29, +30): Use
	replace_equiv_address, not gen_rtx_MEM.
	* config/cris/cris.c (cris_mem_op): New match_operator function.
	(cris_notice_update_cc): Use replace_equiv_address, not
	gen_rtx_MEM.
	* config/cris/cris.h (PREDICATE_CODES): Add cris_mem_op.

2003-10-15  Bernardo Innocenti <bernie@develer.com>

	* config/m68k/m68k.h (MASK_SEP_DATA, TARGET_SEP_DATA,
	MASK_ID_SHARED_LIBRARY, TARGET_ID_SHARED_LIBRARY): Move
	definitions after the other flags.

2003-10-14  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (methoddef, methodproto): Call objc_add_method()
	instead of add_method().
	* objc/objc-act.c (objc_check_decl): Do not check for
	constant_string_type.
	(add_method): Rename to objc_add_method().
	(really_start_method): Call objc_add_method() instead of
	add_method().
	* objc/objc-act.h (add_method): Rename to objc_add_method().

2003-10-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_alc_comparison): Add prototype.
	(s390_slb_comparison): Likewise.
	* config/s390/s390.c (s390_alc_comparison, s390_slb_comparison):
	New functions.
	* config/s390/s390.h (PREDICATE_CODES): Add s390_alc_comparison
	and s390_slb_comparison.
	* config/s390/s390.md ("*adddi3_31", "*subdi3_31"): Do not use on
	zSeries machines.
	("*adddi3_31z", "*subdi3_31z"): New insns.
	("*adddi3_alc_cc", "*adddi3_alc", "*subdi3_slb_cc", "*subdi3_slb",
	"*addsi3_alc_cc", "*addsi3_alc", "*subsi3_slb_cc", "*subsi3_slb"):
	New insns.

2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Clean up some feedback echoes.
	* configure: Regenerate.

	* aclocal.m4: Properly quote names of macros being defined.

	* config.gcc (am33_2.0-*-linux*): Use t-slibgcc-elf-ver.

2003-10-14  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.c (ia64_expand_call): Force function address
	to DImode.
	* config/ia64/ia64.md (call_gp): Put DImode on operand 0.

2003-10-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("muldf3", "*muldf3", "*muldf3_ibm",
	"mulsf3", "*mulsf3", "*mulsf3_ibm"): Do not clobber CC.
	("divdf3", "*divdf3", "*divdf3_ibm", "divsf3", "*divsf3",
	"*divsf3_ibm"): Likewise.

2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc, config/m68hc11/t-m68hc11-gas: Replace uses of
	target_alias with target_noncanonical.

2003-10-14  Geoffrey Keating  <geoffk@apple.com>

	* expr.c (block_move_libcall_safe_for_call_parm): Clean up,
	and add case for machines where outgoing register parameters
	get stack space.

	* config/darwin.c (machopic_indirect_data_reference): Use a scratch
	register when generating indirect address.

2003-10-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_addimm_operand): MODE arguemnt is unused.
	* arm.md (cbranchne_decr1): Fix bootstrap warning.

2003-10-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (alpha_pthread_gcc): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/pthread.h [ALPHA_PTHREAD_GCC_CHECK]: New
	testcase.
	Fixes PR bootstrap/9330.

2003-10-13  Eric Christopher  <echristo@redhat.com>

	* config/frv/frv.c (frv_adjust_field_align): Redo check for
	too wide bitfields.
	(frv_hard_regno_mode_ok): Add SPR_P and AP_FIRST.
	* config/frv/frv.h (FUNCTION_PROFILER): Remove abort call.
	(SBSS_SECTION_ASM_OP): Remove.
	(EXTRA_SECTIONS): Remove in_sbss.
	(EXTRA_SECTION_FUNCTIONS): Remove SBSS_SECTION_FUNCTION.
	(SBSS_SECTION_FUNCTION, sbss_section): Remove.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Change sbss_section to
	named_section.

2003-10-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in, configure.in, config.host, mkheaders.in: Replace
	uses of ${target_alias} for directory names (and other places which
	won't like the empty string) with ${target_noncanonical}.  Introduce
	call early in configure.in to _GCC_TOPLEV_NONCANONICAL_TARGET so it's
	available.
	* configure: Regenerate.

2003-10-13  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/iwmmxt.md (cond_iwmmxt_movsi_insn): New pattern.
	* config/arm/arm.md: For splits which rely on conditional moves,
	remove ! TARGET_IWMMXT condition.

2003-10-13  David S. Miller  <davem@redhat.com>

	* ifcvt.c (num_removed_blocks): Rename to num_true_changes.
	(find_cond_trap): Always increment if we emit a conditional
	trap insn.

2003-10-13  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (BUILD_RTL): Replace $(BUILD_PREFIX)insn-modes.o
	with min-insn-modes.o.
	(STAGESTUFF): Add min-insn-modes.c.
	(genobjs): Add genmodes.o.
	(print-rtl.o, print-rtl1.o): Depend on $(TM_P_H).
	(insn-modes.o): Depend on $(TM_H) not $(GTM_H); also real.h.
	(min-insn-modes.c, min-insn-modes.o): New rules.
	(s-modes): Also generate min-insn-modes.c.
	($(BUILD_PREFIX_1)insn-modes.o): Kill.
	* genmodes.c (struct mode_data): Add format field.
	(blank_mode, validate_mode, complete_mode): Update to match.
	(make_scalar_mode): Separate into make_int_mode and make_float_mode.
	(_SCALAR_MODE): Kill.
	(FLOAT_MODE, FRACTIONAL_FLOAT_MODE): Add format argument.
	(emit_insn_modes_c_header): Adjust.
	(emit_min_insn_modes_c_header, emit_real_format_for_mode)
	(emit_min_insn_modes_c): New functions.
	(emit_insn_modes_c): Call emit_real_format_for_mode.
	(main): Add -m option to generate min-insn-modes.c.
	* machmode.h: Update documentation.  Add format argument to
	all uses of FLOAT_MODE.
	* real.c: Don't define real_format_for_mode here.

	* dwarfout.c: Move default definition of PRINT_REG...
	* defaults.h: ...here.
	* print-rtl.c: Include tm_p.h.
	(DEBUG_PRINT_REG, DEBUG_REGISTER_NAMES, debug_reg_names, reg_names):
	Kill.
	(print_rtx): Use PRINT_REG, not DEBUG_PRINT_REG.  But surround
	this entire block with #ifndef GENERATOR_FILE.
	* regclass.c: Unconditionally define reg_names.
	* config/mips/mips.h, config/rs6000/rs6000.h, config/sh/sh.h
	Don't define DEBUG_REGISTER_NAMES.
	* config/rs6000/darwin.h: Don't use DEBUG_REGISTER_NAMES in
	redefinition of REGISTER_NAMES.
	* config/i386/i386.h: Don't define DEBUG_PRINT_REG.

	* combine.c: Change all preprocessor conditionals on
	EXTRA_CC_MODES to use SELECT_CC_MODE instead; rearrange a bit
	for clarity.
	* genopinit.c: Remove mention of EXTRA_CC_MODES in comment.
	* configure.in: Don't define EXTRA_CC_MODES.
	* configure, config.in: Regenerate.
	* doc/tm.texi: Remove documentation of EXTRA_CC_MODES.

	* config/arc/arc.c, config/m32r/m32r.c, config/sparc/sparc.c:
	May assume that GET_MODE_CLASS is accurate for extra CC modes
	at all times.

	* config/i860/i860.h (INIT_CUMULATIVE_ARGS): Pass correct
	number of arguments to aggregate_value_p.

	* genmodes.c (RESET_FLOAT_FORMAT, reset_float_format): New.
	* machmode.def: Explain ARCH-modes.def.  Document
	RESET_FLOAT_FORMAT.  Improve commentary on various mode
	clusters.  Do not define OI, PQI, PHI, PSI, PDI, QF, HF, TQF,
	XF, or TF modes here.  Remove backward-compatibility
	definition of CC.

	* config/alpha/alpha-modes.def: New file; define TF mode.
	* config/arc/arm-modes.def: Define XF mode.
	* config/c4x/c4x-modes.def: Define QF and HF modes.  Unset
	float format for SF and DF modes.
	* config/dsp16xx/dsp16xx-modes.def: New file; define HF mode.
	* config/i386/i386-modes.def: Define XF and TF modes.
	* config/i960/i960-modes.def: Define TF mode.
	* config/ia64/ia64-modes.def: Define TF and OI modes.
	* config/m68k/m68k-modes.def: New file; define XF mode.
	* config/mips/mips-modes.def: New file; define TF mode, reset
	formats for SF and DF modes.
	* config/pa/pa-modes.def: Define TF mode.
	* config/rs6000/rs6000.c: Define TF and PSI modes.
	* config/s390/s390-modes.def: Define OI mode.
	* config/sh/sh-modes.def: New file; define PSI mode.
	* config/sparc/sparc-modes.def: Define TF mode.
	* config/vax/vax-modes.def: New file; reset formats for SF and
	DF modes.

	* config/c4x/c4x.c (c4x_override_options): No need to mess
	with real_format_for_mode or set REAL_MODE_FORMATs.
	(c4x_immed_int_constant): Don't apply GET_MODE_CLASS to rtx
	variable.
	* config/i386/i386.c (override_options): No need to set
	REAL_MODE_FORMATs here.
	* config/i960/i960.c (i960_initialize): Likewise.
	* config/m68k/m68k.c (m68k_override_options): Likewise.
	* config/ia64/ia64.c (ia64_override_options): Set REAL_MODE_FORMAT
	for TFmode only if not the default.
	* config/mips/mips.c (override_options): Likewise.
	* config/vax/vax.c (override_optionms): Set REAL_MODE_FORMAT for
	DFmode only if not the default.

	* config/i370/i370.h (RET_REG): Don't consider TFmode.
	* config/m68hc11/m68hc11.c (print_operand): Don't consider XFmode.
	* config/dsp16xx/dsp16xx.c (hard_regno_mode_ok): #if 0 out use
	of modes that don't appear anywhere in the machine description.

	* config/arc/arc-modes.def, config/arm/arm-modes.def
	* config/c4x/c4x-modes.def, config/frv/frv-modes.def
	* config/i386/i386-modes.def, config/i960/i960-modes.def
	* config/ia64/ia64-modes.def, config/mmix/mmix-modes.def
	* config/pa/pa-modes.def, config/pdp11/pdp11-modes.def
	* config/rs6000/rs6000-modes.def, config/s390/s390-modes.def
	* config/sparc/sparc-modes.def: Convert to new style for
	declaring extra CC modes.

2003-10-13  Zack Weinberg  <zack@codesourcery.com>

	* cpplex.c (_cpp_clean_line): In the common case of a line
	with no trigraphs and no \-newline, avoid writing to memory.
	(_cpp_skip_block_comment): Use a local 'cur' pointer instead
	of the buffer member.  Make c an uchar to avoid unnecessary
	sign extensions.

2003-10-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove unnecessary test.
	* configure: Regenerate.

	* configure.in: Fix grammatical error.  Move UWIN host error to...
	* config.host: Here.
	* configure: Regenerate.

2003-10-13  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*fmadddf4", "*fmsubdf4", "*fmaddsf4",
	"*fmsubsf4"): Insns are now dependent on TARGET_FUSED_MADD instead
	of flag_unsafe_math_optimizations.
	* config/s390/s390.h ("MASK_NO_FUSED_MADD", "TARGET_NO_FUSED_MADD",
	"TARGET_FUSED_MADD", "TARGET_SWITCHES"): Introduced new target flags
	fused-madd and no-fused-madd.
	* doc/invoke.texi: Documented the new options fused-madd and
	no-fused-madd for S/390.

2003-10-14  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Choose
	MASK_ALIGN_NATURAL if rs6000_alignment_string not given.  Don't
	assign DEFAULT_ABI.
	(ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Update comment.
	* config/rs6000/rs6000.c: Formatting.
	(rs6000_parse_alignment_option): Only set rs6000_alignment_flags
	when rs6000_alignment_string given.

2003-10-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/12538
	* config/sparc/sparc.c (MUST_SAVE_REGISTER): Delete.
	(sparc_flat_must_save_register_p): New function to decide whether
	a register must be saved/restored in the function prologue/epilogue.
	(sparc_flat_compute_frame_size): Use it instead of MUST_SAVE_REGISTER.

2003-10-12  Steven Bosscher  <steven@gcc.gnu.org>

	* config/avr/avr.c, config/avr/avr-protos.h: Convert to
	ISO C90 function declarations and definitions.
	* config/sh/sh.c, config/sh/sh-protos.h: Likewise.

2003-10-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (*-*-freebsd*): Use tm_defines instead of tiny
	config files which do the same thing.
	* config/freebsd3.h, config/freebsd4.h, config/freebsd5.h,
	config/freebsd6.h: Remove now unnecessary files.

2003-10-12  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.c (c_common_truthvalue_conversion): Warn if the
	address of a non-weak function is used as a truth value.

2003-10-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (WORD_REG_USED): Use SP_REG instead of
	a literal.
	* config/h8300/h8300.h (REGNO_OK_FOR_BASE_P): Use MAC_REG
	instead of a literal.

2003-10-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/extend.texi (Function Attributes): Mention the exceptional
	path for noreturn-marked functions.

2003-10-12  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_decide_inlining): Fix uninitialized variable
	warning.

2003-10-12  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/i386.c (x86_this_parameter): Fix typo.

2003-10-11  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (web.o): New.
	* web.c: New file.
	* rtl.h (web_main): Declare.
	* timervar.def (TV_WEB): New.
	* toplev.c (dump_file_index, dump_file_info): Add DFI_web.
	(rest_of_hanle_web): New.
	(flag_web): New static variable.
	(lang_independent_options): Add "web".
	(rest_of_compilation): Call rest_of_handle_web.
	* invoke.texi (-fweb): Document.
	* common.opt (fweb): New.
	* flags.h (flag_web): New.
	* opts.c (decode_options): Set flag_web at -O3.

	* passes.texi (web construction):  Document.
	* invoke.texi (-O3): Document that -fweb is enabled.

	* regrename.c (regrename_optimize): Deal better with situation when
	replacement failed.

	* sched-ebb.c: Include params.h and profile.h
	(schedule_ebbs):  Use tracer parameters to discover superblocks
	* Makefile.in (sched-ebb.o):  Add dependencies.

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_mathfn_p): New function to determine whether
	a built-in mathematical function is sign preserving, f(-x) == -f(x).
	Add support for BUILT_IN_ASIN, BUILT_IN_ASINF and BUILT_IN_ASINL.
	(tree_swap_operands_p): Change API to take an additional argument
	indicating that the swapped operands evaluate in reverse order.
	Canonicalize VAR_DECLs and PARM_DECLs last if we can, i.e. neither
	operand side-effects or we don't care about flag_evaluation_order.
	(reorder_operands_p): New function to check whether its safe to
	evaluate the given operands in reverse order.
	(negate_expr_p):  We can always negate integer constants unless
	we honor -ftrapv and the signed type would overflow.  Only allow
	-(A-B) into B-A if reorder_operands_p says that its OK.  Allow
	negation of COMPLEX_CST if both real and imaginary parts can be
	negated.  Allow negation through floating point extensions and
	sign-preserving built-in functions.
	(negate_expr):  Move the code to negate integers from "fold" to
	here.  Always negate integer constants unless we honor -ftrapv
	and the signed type would overflow.  Always negate real constants
	unless we honor -ftrapping-math.  Only convert -(A-B) into B-A
	if allowed by reorder_operands_p.  Add support for COMPLEX_CST.
	Optimize negation through floating point extensions and
	sign-preserving built-in functions (as defined by negate_mathfn_p).
	(fold): Adjust calls to tree_swap_operands_p.
	(fold <NEGATE_EXPR>): Move the remaining negation optimizations
	to negate_expr_p/negate_expr.
	(fold <MINUS_EXPR>): Use reorder_operands_p to check whether we're
	allowed to convert (-A) - B into (-B) - A.

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_strcmp): Defend against the possibility
	that gen_cmpstrsi may fail: Stabilize the argument list against
	re-evaluation and expand the library call directly using this saved
	argument list if a cmpstrsi sequence can't be generated.
	(expand_builtin_strncmp): Likewise.

	* config/i386/i386.md (cmpstrsi, movstrsi): Disable with -Os.

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	PR optimization/12260
	* simplify-rtx.c (simplify_unary_operation): Simplify all unary
	operations through CONST nodes.  Optimize (neg (plus X C)) as
	(minus -C X) for constant values C.
	(simplify_binary_operation): Optimize (minus (neg X) C) as
	(minus -C X) for constant values C.
	(simplify_plus_minus): Avoid creating (neg (const (plus X C)),
	instead create (minus -C X).

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr <PLUS_EXPR>): Let expand_operands call
	safe_from_p for us, once it chooses an evaluation order.
	(expand_expr <MULT_EXPR>): Likewise.
	(expand_expr <MIN_EXPR> <MAX_EXPR>): Likewise.  If expand_operands
	places the second operand in "target", swap the operands.
	(do_store_flag): Let expand_operands call safe_from_p for us.

2003-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12544
	* function.c (put_var_into_stack): Don't generate ADDRESSOFs
	for DECL_NONLOCAL decls.

2003-10-11  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c: Follow spelling conventions.
	* final.c: Likewise.
	* optabs.c: Likewise.
	* sched-deps.c: Likewise.
	* sdbout.c: Likewise.

Sat Oct 11 12:24:23 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* varasm.c (notice_global_symbol):  Fix handling of variables; avoid
	re-computing of variable.

2003-10-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_return_in_memory): Rename from
	return_in_memory, make static, change signature to match target hook.
	(alpha_setup_incoming_varargs): Make static, change signature to
	match target hook, add code for vms and unicos.
	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
	TARGET_PROMOTE_PROTOTYPES, TARGET_STRUCT_VALUE_RTX,
	TARGET_RETURN_IN_MEMORY, TARGET_SETUP_INCOMING_VARARGS,
	TARGET_STRICT_ARGUMENT_NAMING,
	TARGET_PRETEND_OUTGOING_VARARGS_NAMED): New.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (PROMOTE_FUNCTION_ARGS,
	PROMOTE_FUNCTION_RETURN, RETURN_IN_MEMORY,
	SETUP_INCOMING_VARARGS): Remove.
	* config/alpha/unicosmk.h (SETUP_INCOMING_VARARGS): Remove.
	* config/alpha/vms.h (SETUP_INCOMING_VARARGS): Remove.

2003-10-11  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/arm.c (arm_regno_class): Handle IWMMXT_GR_REGS.

2003-10-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68k/lb1sf68.asm: Follow spelling conventions.
	* config/m68k/m68k.c: Likewise.
	* config/m68k/m68k.h: Likewise.
	* config/m68k/m68k.md: Likewise.

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_memcpy): Optimize case when the two
	pointer arguments are the equal, non-volatile and side-effect free.
	(expand_builtin_mempcpy): Likewise.
	(expand_builtin_memmove): Likewise.
	(expand_builtin_strcpy): Likewise.
	(expand_builtin_memcmp): Likewise.
	(expand_builtin_strcmp): Likewise.
	(expand_builtin_strncmp): Likewise.

2003-10-11  Roger Sayle  <roger@eyesopen.com>

	* combine.c (apply_distributive_law): Enable "distributive" floating
	point optimizations with -funsafe-math-optimizations.

2003-10-11  Andrew Pinski <pinskia@physics.uc.edu>

	* genmodes.c (emit_mode_mask) Change MASK to MODE_MASK.

2003-10-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68k/m68k-protos.h: Remove the prototype for
	finalize_pic.

2003-10-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68k/m68k.c: Fix comment typos.

2003-10-11  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k-protos.h (use_return_insn): Change return type from
	int to bool.
	* config/m68k/m68k.c (struct m68k_frame): Add funcdef_no member.
	(current_frame): New global var.
	(m68k_compute_frame_layout): Cache computations in current_frame.
	(m68k_initial_elimination_offset): Use values from current_frame
	instead of recomputing them.
	(use_return_insn): Likewise.
	(m68k_output_function_prologue): Likewise.
	(m68k_output_function_epilogue): Likewise.
	* config/m68k/m68k.h (TARGET_CPU_CPP_PREDEFINES): Fold __PIC__ handling
	inside the block for __pic__.

2003-10-11  Peter Barada <peter@baradas.org>
	    Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c (m68k_frame): Move before protos referencing it.
	(m68k_save_reg): Add boolean parameter `interrupt_handler'.
	(m68k_interrupt_function_p): New function.
	(m68k_handle_fndecl_attribute): Ditto.
	(m68k_compute_frame_layout): Ditto.
	(m68k_attribute_table): Define back-end specific attributes.
	(m68k_output_function_epilogue): Emit RTE instruction for interrupt
	functions.

2003-10-11  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/t-uclinux: New target Makefile fragment.
	* config/m68k/uclinux.h: New target macro file.
	* config.gcc (m68k-*-uclinux): New target definition.

2003-10-10  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (builtin_mathfn_code): Generalize to check whether
	the call is to any built-in function by comparing the call's
	argument list against the builtin decl's function type.

2003-10-10  Roger Sayle  <roger@eyesopen.com>

	* cse.c (constant_pool_entries_regcost): New global variable to
	hold the register cost component of constant_pool_entries_cost.
	(fold_rtx): Calculate constant_pool_entries_regcost at the same
	time as constant_pool_entries_cost.
	(cse_insn): Set both src_folded_cost and src_folded_regcost from
	constant_pool_entries_cost and constant_pool_entries_regcost.
	(cse_main): Initialize constant_pool_entries_regcost to zero.

	* optabs.c (expand_unop): Attach a REG_EQUAL note describing
	the semantics of the sequence of bit operations used to negate
	a floating-point value.
	(expand_abs_nojump): Likewise attach a REG_EQUAL note describing
	the semantics of the bit operations used to abs a floating point
	value.

2003-10-11  Bernardo Innocenti  <bernie@develer.com>
	    Paul Dale  <pauli@snapgear.com>

	* config/m68k/lb1sf68.asm: Add __PIC__ and __ID_SHARED_LIBRARY__
	support.
	* config/m68k/m68k-none.h (ASM_SPEC): Pass --pcrel to assembler on
	-fpic, -fPIC, -msep-data and -mid-shared-library.
	* config/m68k/m68k.c (m68k_library_id_string): New global variable.
	(override_options): Add -msep-data and -mshared-library-id support.
	(m68k_output_function_prologue): Generate code to load A5 for
	TARGET_ID_SHARED_LIBRARY and TARGET_SEP_DATA.
	(m68k_output_mi_thunk): Emit indirect jump on TARGET_ID_SHARED_LIBRARY.
	(m68k_output_pic_call): New function.
	* gcc/config/m68k/m68k.h (TARGET_SEP_DATA): New target flag.
	(TARGET_ID_SHARED_LIBRARY): Ditto.
	(TARGET_SWITCHES): Add switches for -mid-shared-library and -msep-data.
	* gcc/config/m68k/m68k.md (call): Call m68k_output_pic_call().
	(call_value): Likewise.

2003-10-10  Zack Weinberg  <zack@codesourcery.com>

	* gengenrtl.c (find_formats, genheader): Make i an unsigned
	int, remove cast of NUM_RTX_CODE.
	* machmode.h: Make the HAVE_MACHINE_MODES #ifdef encompass the
	entire file.  Remove the #ifs on GET_MODE_MASK etc and
	GET_MODE_WIDER_MODE etc.

2003-10-10  Eric Christopher  <echristo@redhat.com>

	* lcm.c (optimize_mode_switching): Change NORMAL_MODE
	to MODE_ENTRY and MODE_EXIT. Add MODE_AFTER for insns
	that set mode.
	* config/sh/sh.h (MODE_ENTRY): New macro.
	(MODE_EXIT): Ditto.
	(MODE_AFTER): Ditto.
	* config/sh/sh.md: Change for MODE_AFTER. Add
	fp_set attribute.
	* doc/tm.texi: Document MODE_AFTER, MODE_ENTRY, and MODE_EXIT.

2003-10-10  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c, mode-classes.def: New files.
	* machmode.def: Rewritten to genmodes.c interface.
	* Makefile.in (extra_modes_file): New substitution variable.
	(MACHMODE_H): No longer includes machmode.def or
	@extra_modes_file@; instead, mode-classes.def and insn-modes.h.
	(BUILD_RTL): Add $(BUILD_PREFIX)insn-modes.o.
	(OBJS-common): Add insn-modes.o.
	(STAGESTUFF): Add insn-modes.c, insn-modes.h, s-modes, and
	genmodes$(build_exeext).
	(insn-modes.o, insn-modes.c, insn-modes.h, s-modes, genmodes.o,
	genmodes$(build_exeext), $(BUILD_PREFIX_1)insn-modes.o): New targets.
	(s-genrtl): Don't depend on $(RTL_BASE_H).
	(gengenrtl.o): Don't depend on coretypes.h, $(GTM_H), real.h,
	or $(RTL_BASE_H); just rtl.def.
	* gengenrtl.c: Don't include coretypes.h, tm.h, rtl.h, or
	real.h.  Give fake definition of CONST_DOUBLE_FORMAT and
	substitute definition of NUM_RTX_CODE.  Add casts to avoid
	warnings.
	* machmode.h: Include insn-modes.h, not machmode.def.  Include
	mode-classes.def to define enum mode_class.  Tweak definitions
	of GET_MODE_CLASS, GET_MODE_SIZE, GET_MODE_BITSIZE, GET_MODE_MASK,
	GET_MODE_INNER, GET_MODE_WIDER_MODE, GET_CLASS_NARROWEST_MODE.
	(inner_mode_array): Renamed mode_inner.
	(mode_base_align): New.
	* rtl.c (mode_name, mode_class, mode_bitsize, mode_size,
	mode_unit_size, mode_wider_mode, mode_mask_array,
	inner_mode_array, class_narrowest_mode): Delete definitions.
	* stor-layout.c (get_mode_alignment): Use mode_base_align.
	* real.h: Use MIN_MODE_FLOAT and MAX_MODE_FLOAT, not QFmode
	and TFmode, in real_format_for_mode and REAL_MODE_FORMAT.

	* config/ip2k/ip2k.h, config/iq2000/iq2000.h:
	No need to define BITS_PER_UNIT.

2003-10-10  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/ia64/ia64.c (ia64_vms_init_libfuncs): New function.
	(ia64_output_function_prologue): Only write .prologue if --with-gnu-as.
	(ia64_initialize_trampoline): If not using GAS, declare trampoline
	as global.
	* config/ia64/ia64.h (ASM_APP_ON, ASM_APP_OFF): Add vers for not GAS.
	(ASM_OUTPUT_DEBUG_LABEL): Likewise.

	* stor-layout.c (compute_record_mode): Don't force BLKmode if
	field is zero-length BLKmode.
	* expr.c (expand_expr, case COMPONENT_REF): Handle case of BLKmode
	zero-size references.

	* combine.c (distribute_links): Properly test for REG being set.

	* config/alpha/alpha.c (alpha_expand_block_mode): Don't use
	gen_lowpart and company except for REG.

2003-10-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa64-hpux.h (LINK_SPEC): Use `-z' option with HP ld.

2003-10-10  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (mips*-*-netbsd*): Remove content-free line.

2003-10-10  Herman A.J. ten Brugge <hermantenbrugge@home.nl>

	* gcov-io.h: Check BITS_PER_UNIT when defining gcov_unsigned_t,
	gcov_position_t and gcov_type.

2003-10-09  Kaz Kojima  <kkojima@gcc.gnu.org>

	* configure.in (HAVE_AS_TLS): Add sh-*-* and sh[34]*-*-* cases.
	* configure: Regenerate.

2003-10-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (define_asm_attributes): Specify
	the length of an asm insn more precisely.

2003-10-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris6.h (SUBTARGET_CPP_SPEC): Define.

2003-10-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_dbx_register_number): Change first
	FP register number to 48 and MAC16 accumulator to 0x210.

2003-10-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Remove redundant thread_file setting clauses for
	various *-*-linux* targets.

2003-10-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (define_asm_attributes): New.

2003-10-09  Roger Sayle  <roger@eyesopen.com>

	* optabs.c (prepare_float_lib_cmp): Always attach a REG_EQUAL note
	to the comparison, as emit_libcall_block calls copy_rtx on equiv.

2003-10-09  Dorit Naishlos  <dorit@il.ibm.com>

	* haifa-sched.c (ok_for_early_schedule): New function.
	(early_queue_to_ready): New function.
	(schedule_block): Allow early removal of insns from Q.
	(schedule_insn): Update INSN_TICK in case of premature
	issue.
	* common.opt (sched_stalled_insns): New flag.
	(sched_stalled_insns_dep): New flag.
	* flags.h: Same above flags.
	* opts.c: Same as above.
	* toplev.c: Same as above.
	* target.h (targetm.sched.is_costly_dependence): New
	hook.
	* target-def.h: Same as above.
	* config/rs6000/rs6000.h: (rs6000_sched_costly_dep):
	Support new flag -msched-costly-dep.
	(DEFAULT_SCHED_COSTLY_DEP): Define.
	* config/rs6000/rs6000.c:
	(rs6000_is_costly_dependence): New function.
	(is_load_insn, is_store_insn): New functions.
	(is_load_insn1, is_store_insn1, is_mem_ref): New
	functions.
	* doc/invoke.texi (-fsched-stalled-insns-dep)
	(-fsched-stalled-insns, -msched-costly-dep): Document
	options.
	* doc/tm.texi (is_costly_dependence): Define new
	scheduler target hook.

2003-10-09  Jason Merrill  <jason@redhat.com>

	PR c++/6392
	* c-common.c (c_build_qualified_type): Look through arrays first.
	(c_apply_type_quals_to_decl): Look through arrays.

	* c-common.c (c_apply_type_quals_to_decl): Unset TREE_READONLY for
	types with constructors.

	* coverage.c (build_ctr_info_value): Use build_decl to make a
	VAR_DECL.
	(create_coverage): Likewise.

	* stmt.c (resolve_asm_operand_names): Call check_unique_operand_names
	here.
	(expand_asm_operands): Not here.
	(parse_input_constraint): No longer static.
	* tree.h: Declare it.

2003-10-08  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/t-linux (SHLIB_LINK): Override to use a linker script
	libgcc_s.so.
	(SHLIB_INSTALL): Likewise.

2003-10-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* doc/install.texi: Remove reference to removed 'pthreads' thread
	option.

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

	* config/rs6000/rs6000.md ("abssi2_isel"): Add early clobber to
	operand 2.

2003-10-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Don't accept --enable-threads=pthreads.  Clean
	up related case statements.
	* configure.in: Don't accept --enable-threads=pthreads,
	decosf1, mach, or os2 (none of which work anyway).  Alphabetize
	supported thread files in case clause.
	* configure: Regenerate.

2003-10-08  Geoffrey Keating  <geoffk@apple.com>

	* function.c (pad_to_arg_alignment): Move 'boundary_in_bytes'
	definition to above SPARC_STACK_BOUNDARY_HACK.

2003-10-08  Jason Merrill  <jason@redhat.com>

	* c-pretty-print.c (pp_c_postfix_expression)
	<COMPOUND_LITERAL_EXPR>: Fix thinko.

2003-10-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* mklibgcc.in: Don't hide undefined or typeless symbols.

2003-10-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR optimization/12142
	* cse.c (count_reg_usage): In a SET with a REG SET_DEST, count the
	uses of the register in the SET_SRC.  Remove unnecessary argument.
	* pa.c (legitimize_pic_address): Before reload, use a scratch register
	for the intermediate result in loading the address of a SYMBOL_REF.
	Set the MEM_NOTRAP_P flag for the MEM.  Add a REG_EQUAL to the insn
	which loads the SYMBOL_REF address.

2003-10-08  Timo Kokkonen  <tjko@iki.fi>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR bootstrap/12490
	* scan-decls.c (MAX_EXTERN_C_BRACES): New preprocessor constant
	to define the size of the extern_C_braces array.  Set it to 200.
	(scan_decls): Abort when extern_C_braces_length is out-of-bounds.

2003-10-08  Carlo Wood  <carlo@alinoe.com>

	* Makefile.in (gengtype-lex.c): flex 2.5.4[a] doesn't understand
	a space after the -o option.  flex 2.5.31 understands both, with
	and without the space. Removed that space.

2003-10-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_frame_info): Add cprestore_size field.
	(compute_frame_size): Initialize it.  Remove the .cprestore slot
	from args_size.
	(mips_output_function_prologue): Simplify accordingly.
	(mips_debugger_offset): Change the mips16 frame pointer offset from
	current_function_outgoing_args to cfun->machine->frame.args_size.
	(mips_initial_elimination_offset): Likewise.
	(mips_expand_prologue): Likewise.
	(mips_expand_epilogue): Likewise.

2003-10-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (EXTRA_CONSTRAINT): Add 'W' constraint.
	(EXTRA_MEMORY_CONSTRAINT): Define.
	(CAN_ELIMINATE): Remove lwu workaround.
	* config/mips/mips.md (*zero_extendsidi2_mem): Enable for mips16 too.
	Use a 'W' constraint for the source operand.

2003-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* genopinit.c (main): Output code to declare undefined
	variables.

2003-10-07  Kelley Cook  <kcook@gcc.gnu.org>

	* gengtype-lex.l: Remove -Wtraditional cruft.
	* Makefile.in (gengtype-lex.c): Likewise.

2003-10-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopmanip.c (fix_irreducible_loops): Initialize e correctly.

2003-10-07  Jason Merrill  <jason@redhat.com>

	PR c++/12519
	* c-semantics.c (genrtl_cleanup_stmt): Ignore the CLEANUP_DECL if
	it isn't a decl.

2003-10-07  Alexandre Oliva  <aoliva@redhat.com>

	* gcc.c (cpp_options): Only pass -fworking-directory for -g* if
	not overridden.
	Fixes PR bootstrap/12173.

2003-10-07  Zack Weinberg  <zack@codesourcery.com>

	* errors.c: Don't include coretypes.h or tm.h.
	(trim_filename): Use IS_DIR_SEPARATOR.
	* Makefile.in: Update dependencies of errors.o and
	$(BUILD_PREFIX_1)errors.o.

2003-10-07  Geoffrey Keating  <geoffk@apple.com>

	* function.c (pad_to_arg_alignment): Take STACK_POINTER_OFFSET into
	account	when aligning arguments.
	* calls.c (STACK_POINTER_OFFSET): Move default from here ...
	* defaults.h (STACK_POINTER_OFFSET): ... to here.
	* config/sparc/sparc.h (STACK_BOUNDARY): Add comment about how
	it's wrong when TARGET_ARCH64 && TARGET_STACK_BIAS.
	(SPARC_STACK_BOUNDARY_HACK): Define.
	* config/rs6000/rs6000.c (function_arg): On non-SVR4 systems,
	arrange for vector parameters to varargs functions to be passed
	in both memory and GPRs when appropriate.
	(rs6000_va_arg): Vector arguments passed in memory are 16-byte
	aligned.

	* hooks.c (hook_bool_tree_true): New.
	(hook_rtx_tree_int_null): New.
	(hook_rtx_rtx_null): Use NULL, not 0.
	* hooks.h: Add 'extern' to everything.
	(hook_bool_tree_true): New.
	(hook_rtx_tree_int_null): New.
	* targhooks.c (hook_bool_CUMULATIVE_ARGS_true): New.
	* targhooks.h (hook_bool_CUMULATIVE_ARGS_true): New.
	* config/rs6000/rs6000-protos.h (setup_incoming_varargs): Remove
	prototype.
	* config/rs6000/rs6000.c (rs6000_return_in_memory): New.
	(setup_incoming_varargs): Prototype.
	(TARGET_PROMOTE_FUNCTION_ARGS): Define.
	(TARGET_PROMOTE_FUNCTION_RETURN): Define.
	(TARGET_STRUCT_VALUE_RTX): Define.
	(TARGET_RETURN_IN_MEMORY): Define.
	(TARGET_SETUP_INCOMING_VARARGS): Define.
	(TARGET_STRICT_ARGUMENT_NAMING): Define.
	(TARGET_PRETEND_OUTGOING_VARARGS_NAMED): Define.
	(init_cumulative_args): Use rs6000_return_in_memory.
	(setup_incoming_varargs): Make 'static'.
	* config/rs6000/rs6000.h (PROMOTE_FUNCTION_ARGS): Delete.
	(PROMOTE_FUNCTION_RETURN): Delete.
	(STRUCT_VALUE): Delete.
	(RETURN_IN_MEMORY): Delete.
	(SETUP_INCOMING_VARARGS): Delete.

2003-10-07  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/invoke.texi (Warning Options): Simplify and clarify the
	descriptions of -Wnonnull and -Winit-self.

2003-10-07  Richard Earnshaw  <rearnsha@arm.com>

	* optabs.c (init_intraclass_conv_libfuncs): Fix order of array
	indicees for floating-point conversersion libcalls.

2003-10-07  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Add more comments separating large conceptually
	separate sections.

	* configure.in: Clean up thread file logic.
	* configure: Regenerate.

2003-10-07  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygming.h (READONLY_DATA_SECTION_ASM_OP): Define.
	(switch_to_section): Handle in_readonly_data.
	* config/i386/winnt.c (i386_pe_asm_named_section): Handle
	readonly data.

2003-10-07  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (cmpsi2_addneg): New ARM pattern. Add peephole2 to generate
	it.
	(cbranchne_decr1): New Thumb pattern.
	* arm.c (arm_addimm_operand): New insn predicate.
	* arm-protos.h: Add a prototype for it.
	* arm.h (PREDICATE_CODES): Add it.

2003-10-07  Dorit Naishlos <dorit@il.ibm.com>

	* sched-int.h (sched_info): New field
	sched_max_insns_priority.
	* sched-rgn.c (init_ready_list): Add invocations to
	targetm.sched.adjust_priority.
	(sched_max_insns_priority): Init new field.
	* sched-ebb.c (sched_max_insns_priority): Init new field.
	* haifa-sched.c (set_priorities): Set
	sched_info->sched_max_insns_priority.
	* config/rs6000/rs6000.h:
	(rs6000_sched_restricted_insns_priority_str): Support new
	flag -mprioritize-restricted-insns.
	(DEFAULT_RESTRICTED_INSNS_PRIORITY): Define.
	* config/rs6000/rs6000.c (is_dispatch_slot_restricted): New
	function.
	(rs6000_adjust_priority): Change priority of restricted
	insns, using above new function and new flag.
	* doc/invoke.texi (-mprioritize-restricted-insns): Document
	new option.

2003-10-07  Zack Weinberg  <zack@codesourcery.com>

	* expr.c (cmpstr_optab, cmpmem_optab): New.
	* genopinit.c: Initialize them.
	* optabs.h: Declare them.
	* optabs.c (init_optabs): Clear them.
	(prepare_cmp_insn):  Use cmpstr_optab and cmpmem_optab to find
	block memory compare insns, not conditional chains.  Restructure
	the fallback generation of a call to memcmp/bcmp for better
	readability.

2003-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): New macro.
	(mips_save_restore_fn): New typedef.
	(mips_add_large_offset_to_sp, mips_emit_frame_related_store): Remove.
	(mips_set_frame_expr, mips_frame_set): Move above prologue code.
	(save_restore_insns): Remove, replacing with...
	(mips_save_restore_reg, mips_for_each_saved_reg): ...these new fns.
	(mips_save_reg, mips_restore_reg): New function.
	(mips_expand_prologue, mips_expand_epilogue): Rework.
	* config/mips/mips.h (MIPS_TEMP1_REGNUM, MIPS_TEMP2_REGNUM): Remove.
	(MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): New macros.
	(MIPS_PROLOGUE_TEMP, MIPS_EPILOGUE_TEMP): New macros.

2003-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_expand_prologue): Remove unused
	traversal of function arguments.

2003-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Remove documentation of -mentry.
	* config/mips/mips.c (mips_entry_string, mips_entry): Remove.
	(override_options, mips_save_reg_p): Remove handling.
	(compute_frame_size, mips_output_function_prologue): Likewise.
	(mips_expand_prologue, mips_expand_epilogue): Likewise.
	* config/mips/mips.h (mips_entry_string): Remove declaration.
	(TARGET_OPTIONS): Remove -mentry.
	* config/mips/mips16.S: Remove mention of -mentry.

2003-10-06  Zack Weinberg  <zack@codesourcery.com>

	* libfuncs.h (LTI_extendsfdf2, LTI_extendsfxf2, LTI_extendsftf2)
	(LTI_extenddfxf2, LTI_extenddftf2, LTI_truncdfsf2, LTI_truncxfsf2)
	(LTI_trunctfsf2, LTI_truncxfdf2, LTI_trunctfdf2, LTI_floatsisf)
	(LTI_floatdisf, LTI_floattisf, LTI_floatsidf, LTI_floatdidf)
	(LTI_floattidf, LTI_floatsixf, LTI_floatdixf, LTI_floattixf)
	(LTI_floatsitf, LTI_floatditf, LTI_floattitf, LTI_fixsfsi, LTI_fixsfdi)
	(LTI_fixsfti, LTI_fixdfsi, LTI_fixdfdi, LTI_fixdfti, LTI_fixxfsi)
	(LTI_fixxfdi, LTI_fixxfti, LTI_fixtfsi, LTI_fixtfdi, LTI_fixtfti)
	(LTI_fixunssfsi, LTI_fixunssfdi, LTI_fixunssfti, LTI_fixunsdfsi)
	(LTI_fixunsdfdi, LTI_fixunsdfti, LTI_fixunsxfsi, LTI_fixunsxfdi)
	(LTI_fixunsxfti, LTI_fixunstfsi, LTI_fixunstfdi, LTI_fixunstfti)
	(extendsfdf2_libfunc, extendsfxf2_libfunc, extendsftf2_libfunc)
	(extenddfxf2_libfunc, extenddftf2_libfunc, truncdfsf2_libfunc)
	(truncxfsf2_libfunc, trunctfsf2_libfunc, truncxfdf2_libfunc)
	(trunctfdf2_libfunc, floatsisf_libfunc, floatdisf_libfunc)
	(floattisf_libfunc, floatsidf_libfunc, floatdidf_libfunc)
	(floattidf_libfunc, floatsixf_libfunc, floatdixf_libfunc)
	(floattixf_libfunc, floatsitf_libfunc, floatditf_libfunc)
	(floattitf_libfunc, fixsfsi_libfunc, fixsfdi_libfunc, fixsfti_libfunc)
	(fixdfsi_libfunc, fixdfdi_libfunc, fixdfti_libfunc, fixxfsi_libfunc)
	(fixxfdi_libfunc, fixxfti_libfunc, fixtfsi_libfunc, fixtfdi_libfunc)
	(fixtfti_libfunc, fixunssfsi_libfunc, fixunssfdi_libfunc)
	(fixunssfti_libfunc, fixunsdfsi_libfunc, fixunsdfdi_libfunc)
	(fixunsdfti_libfunc, fixunsxfsi_libfunc, fixunsxfdi_libfunc)
	(fixunsxfti_libfunc, fixunstfsi_libfunc, fixunstfdi_libfunc)
	(fixunstfti_libfunc): Delete.
	* optabs.h (struct optab_handlers): Break out of struct optab.
	(struct convert_optab, convert_optab, enum convert_optab_index,
	convert_optab_table, sext_optab, zext_optab, trunc_optab,
	sfix_optab, ufix_optab, sfixtrunc_optab, ufixtrunc_optab,
	sfloat_optab, ufloat_optab): New.
	(set_conv_libfunc): Prototype.
	(GEN_FCN): Use C90 indirect call syntax, remove unnecessary cast.
	(trunc_optab): Renamed btrunc_optab.
	* builtins.c (expand_builtin_mathfn): Update to match.
	* optabs.c (extendtab, fixtab, fixtrunctab, floattab): Delete.
	(convert_optab_table, new_convert_optab, init_convert_optab)
	(init_interclass_conv_libfuncs, init_intraclass_conv_libfuncs)
	(set_conv_libfunc): New.
	(can_extend_p, gen_extend_insn, can_fix_p, can_float_p)
	(expand_float, expand_fix): Use new conversion optabs,
	not old insn code tables or long chains of ifs.
	(init_optabs): No need to clear old insn code tables.
	Initialize the new optabs, not the old libfunc array entries.
	Don't handle FIXUNS_TRUNC_LIKE_FIX_TRUNC here.
	* genopinit.c: Initialize conversion optabs, not the
	former insn code tables.  Remove unnecessary casts.
	Handle FIXUNS_TRUNC_LIKE_FIX_TRUNC here.
	* expr.c (convert_move): Remove redundant check that
	to_real==from_real.  Use the conversion optabs instead
	of long chains of tests of modes.  Move partial-integer-mode
	interconversion above all integer conversion.  Do not recurse
	on a value forced into a register in the original mode.

	* config/gofast.h, config/frv/frv.c, config/ia64/ia64.c
	* config/mips/mips.c, config/pa/pa.c, config/rs6000/rs6000.c
	* config/sparc/sparc.c: Use set_conv_libfunc to adjust entries
	in new conversion optabs; do not reference the old libfunc
	array entries.  No need to include libfuncs.h.

2003-10-06  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_expand_setcc): Annotate the floating
	point comparison sequence with a REG_EQUAL note that describes
	the comparison's semantics.

2003-10-06  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr <COND_EXPR>): Handle the void type semantics
	of COND_EXPR when expanding the "A op 0 ? FOO : A" optimizations.

2003-10-06  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* optabs.c (prepare_float_lib_cmp): Avoid searching for REG_RETVAL
	instruction by using LCT_CONST and then calling emit_libcall_block
	ourselves.

2003-10-06  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR optimization/11974
	* optabs.c (expand_unop): Promote libcall outmode according to
	hard_libcall_value.

2003-10-06  Zack Weinberg  <zack@codesourcery.com>

	* real.h (REAL_MODE_FORMAT): New macro.
	* c-cppbuiltin.c, optabs.c, real.c, config/alpha/alpha.c
	* config/c4x/c4x.c, config/i370/i370.c, config/i386/freebsd.h
	* config/i386/i386.c, config/i960/i960.c, config/ia64/ia64.c
	* config/m68k/m68k.c, config/mips/mips.c, config/rs6000/rs6000.c
	* config/vax/vax.c: Use REAL_MODE_FORMAT instead of referring
	directly to real_format_for_mode array, wherever possible.

2003-10-06  Devang Patel  <dpatel@apple.com>

	* dwarf2out.c (is_main_source): Remove variable.
	(dwarf2out_start_source_file): Do not check is_main_source.
	Do not reset is_main_source.
	(dwarf2out_init): Do not initialize is_main_source.

2003-10-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (stdio_va_list): Removed _ap fix.
	(irix_stdio_va_list): Don't require leading printf, IRIX 6.5.21
	introduced some multi-line prototypes.
	* fixinc/fixincl.x: Regenerate.

2003-10-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (PREDICATE_CODES): Add stack_operand.
	* config/mips/mips.c (stack_operand): New predicate.
	* config/mips/mips.md: Use it for the destination of mips16 insns
	that store $31.

2003-10-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*lowsi): Renamed from lowsi.
	(*lowdi): Likewise lowdi.
	(*lowsi_mips16, *lowdi_mips16): New patterns.
	* config/mips/mips.c (mips_const_insns, mips_output_move): Remove
	mips16 CONSTANT_RELOC handling.
	(mips_delegitimize_address): Adjust for new sdata representation.

2003-10-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_arg_info): If MUST_PASS_IN_STACK,
	skip any remaining register arguments.

2003-10-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads_subreg_address): Use correct offset for
	paradoxical MEM subregs on big-endian targets.

2003-10-06  Andrew Haley  <aph@redhat.com>

	* tree.c (get_callee_fndecl): Call
	lang_hooks.lang_get_callee_fndecl.
	* langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): New.
	(lhd_get_callee_fndecl): New.

2003-10-06  Andrew Pinski  <apinski@apple.com>

	* config/darwin.c (machopic_non_lazy_ptr_name): Fix off by one
	error in calculating the length of the string.
	(machopic_stub_name): Likewise.

2003-10-06  Roger Sayle  <roger@eyesopen.com>

	* optabs.c (prepare_float_lib_cmp):  Attach a REG_EQUAL note
	describing the return value of the comparison libcall to the
	REG_RETVAL instruction of the emitted sequence.

2003-10-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12215
	* cse.c (cse_set_around_loop): Emit the move at the beginning
	of the next basic block for trapping sets.

2003-10-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11637
	* combine.c (adjust_for_new_dest): New function to adjust the
	notes and LOG_LINKS when the dest of an insn has changed.
	(try_combine): Use it when deleting the first insn of a two-insn
	parallel or splitting a two-load parallel.

2003-10-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_classify_constant): Only allow UNSPECs
	if TARGET_EXPLICIT_RELOCS.

2003-10-06  Mark Mitchell  <mark@codesourcery.com>

	PR bootstrap/12512
	* Makefile.in (info): Use double-colon rules.
	(dvi): Likewise.
	(generated-manpages): Likewise.
	* configure.in: Do not create lang.info, lang.dvi, or
	lang.generated-manpages hooks.
	* configure: Regenerated.
	* objc/Make-lang.in (objc.info): Remove.
	(objc.dvi): Remove.
	(objc.generated-manpages): Remove.
	* doc/sourcebuild.texi: Update description of info, dvi, and
	generated-manpages hooks.

2003-10-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Merge mips16 lw/srl pattern with its splitter.

2003-10-05  Andrew Pinski  <apinski@apple.com>

	* config/darwin.c (machopic_non_lazy_ptr_name): Fix off by one
	errors in memcpy destinations.
	(machopic_stub_name): Likewise.

2003-10-05  Andrew Pinski <apinski@apple.com>

	* config/darwin.c (machopic_non_lazy_ptr_name):
	Change strcat to memcpy and add length together.
	(machopic_stub_name): Likewise.

2003-10-05  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Handle new
	signal trampoline codes.

2003-10-05  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md (*divsf3): Move description of
	SB-1 F2 erratum from here to...
	(divsf3): Here.  Disable if TARGET_FIX_SB1 is set and
	flag_unsafe_math_optimizations is not.

2003-10-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/linuxspe.h: Define TARGET_SPE_ABI, TARGET_SPE,
	TARGET_E500, TARGET_ISEL, and TARGET_FPRS.

2003-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* c-pretty-print.c: Fix comment typos.
	* c-pretty-print.h: Likewise.
	* calls.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov-io.h: Likewise.
	* gcse.c: Likewise.
	* genoutput.c: Likewise.
	* loop.c: Likewise.
	* postreload.c: Likewise.
	* reg-stack.c: Likewise.
	* regmove.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/mmix/mmix.c: Likewise.
	* config/mn10300/mn10300.md: Likewise.
	* config/sh/sh.h: Likewise.

2003-10-05  Richard Henderson  <rth@redhat.com>

	* tree-inline.c (remap_type): New.
	(remap_decl): Use it.  Remap DECL_SIZE*.
	(copy_body_r): Use it.
	(walk_tree): Walk TREE_TYPE too.
	(copy_tree_r): Don't walk subtrees of types.
	* tree.c (variably_modified_type_p): Restructure.  Consider integer
	types with non-const bounds variably modified.

2003-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Fix typos.

2003-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c: Follow spelling conventions.
	* function.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/frv/frv.md: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/linux64.h: Likewise.
	* config/xtensa/xtensa.c: Likewise.

2003-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* c-pretty-print.c: Fix comment formatting.
	* cfglayout.c: Likewise.
	* cfgloopanal.c: Likewise.
	* cppcharset.c: Likewise.
	* dbxout.c: Likewise.
	* ggc-page.c: Likewise.
	* ggc.h: Likewise.
	* target.h: Likewise.

2003-10-04  Kelley Cook  <kelleycook@wideopenwest.com>

	* gengtype-lex.l: Recognize typedef of functions without PARAMS macro.

2003-10-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/v850/v850-c.c, config/v850/v850-protos.h, config/v850/v850.c:
	Convert to ISO C90 function declarations and definitions.

2003-10-04  Zack Weinberg  <zack@codesourcery.com>

	* libfuncs.h
	(LTI_eqhf2, LTI_nehf2, LTI_gthf2, LTI_gehf2, LTI_lthf2)
	(LTI_lehf2, LTI_unordhf2, LTI_eqsf2, LTI_nesf2, LTI_gtsf2)
	(LTI_gesf2, LTI_ltsf2, LTI_lesf2, LTI_unordsf2, LTI_eqdf2)
	(LTI_nedf2, LTI_gtdf2, LTI_gedf2, LTI_ltdf2, LTI_ledf2)
	(LTI_unorddf2, LTI_eqxf2, LTI_nexf2, LTI_gtxf2, LTI_gexf2)
	(LTI_ltxf2, LTI_lexf2, LTI_unordxf2, LTI_eqtf2, LTI_netf2)
	(LTI_gttf2, LTI_getf2, LTI_lttf2, LTI_letf2, LTI_unordtf2)
	(eqhf2_libfunc, nehf2_libfunc, gthf2_libfunc, gehf2_libfunc)
	(lthf2_libfunc, lehf2_libfunc, unordhf2_libfunc, eqsf2_libfunc)
	(nesf2_libfunc, gtsf2_libfunc, gesf2_libfunc, ltsf2_libfunc)
	(lesf2_libfunc, unordsf2_libfunc eqdf2_libfunc, nedf2_libfunc)
	(gtdf2_libfunc, gedf2_libfunc, ltdf2_libfunc, ledf2_libfunc)
	(unorddf2_libfunc eqxf2_libfunc, nexf2_libfunc, gtxf2_libfunc)
	(gexf2_libfunc, ltxf2_libfunc, lexf2_libfunc, unordxf2_libfunc
	(eqtf2_libfunc, netf2_libfunc, gttf2_libfunc, getf2_libfunc)
	(lttf2_libfunc, letf2_libfunc, unordtf2_libfunc):
	Delete.
	* optabs.h (OTI_eq, OTI_ne, OTI_gt, OTI_ge, OTI_lt, OTI_le)
	(OTI_unord, eq_optab, ne_optab, gt_optab, ge_optab, lt_optab)
	(le_optab, unord_optab): New.

	* optabs.c (prepare_float_lib_cmp): Rewrite.  Get the libfuncs
	from the code_to_optab table, not a giant switch; use
	swap_condition; do widening only if a comparison function that
	we can call exists in a wider mode, not if a cmp_optab insn or
	libfunc exists in a wider mode; call protect_from_queue
	exactly once on each operand.
	(init_optabs): Initialize the new optabs, not the deleted libfuncs.

	* config/gofast.h, config/ia64/ia64.c, config/mips/mips.c
	* config/pa/pa.c, config/rs6000/rs6000.c, config/sparc/sparc.c:
	Set floating point comparison libfuncs using set_optab_libfunc
	on the appropriate optab.

	* config/ia64/ia64.c (ia64_hpux_init_libfuncs): Fix typo.
	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Correct ABI
	selector conditionals.

2003-10-04  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/t-m68hc11-gas (MULTILIB_MATCHES): m68hcs12 is
	identical to m68hc12 as far as libraries are concerned.

2003-10-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/12446
	* c-typeck.c (convert_for_assignment): Issue an error for
	array to pointer assignment after default conversion.
	(digest_init): Likewise.

2003-10-04  Fariborz Jahanian  <fjahanian@apple.com>

	* c-decl.c (duplicate_decls): retain DECL_COMMON of old declaration

2003-10-03  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/extend.texi (Function Attributes): Fix title of GNU C
	Preprocessor manual.
	(C++ Extensions): Fix reference to "Predefined Macros" in the
	GNU C Preprocessor manual.

2003-10-04  Richard Earnshaw  <reanrsha@arm.com>

	* doc/extend.texi: Document how GCC estimates and relies on the size
	of an asm.

2003-10-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_pad_arg_upward): Pad floating-point
	arguments downward for big-endian o64.

2003-10-03  Robert Bowdidge <bowdidge@apple.com>

	* ggc-page.c (ggc_pch_write_object): Replace fseek() with fwrite() in
	PCH generation, avoiding too-frequent flushes when writing to NFS
	file system.

2003-10-03  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (lookup_category): Mark as 'inline'.

2003-10-03  Alexander Malmberg  <alexander@malmberg.org>
	    Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (add_method_to_hash_list, lookup_category):
	New functions.
	(lookup_method_in_hash_lists): New parameter indicating whether
	we are messaging 'Class' or 'id'.
	(check_duplicates): Likewise; do not assume all methods will
	be either class or instance methods.
	(generate_category, finish_class): Use lookup_category().
	(add_method): Use add_method_to_hash_list(); insert instance
	methods of root classes into the global class method hash table.
	(add_category): Use lookup_category(); avoid constructing
	duplicate categories.
	(really_start_method): Add method to corresponding @interface,
	if not already there (and if the @interface exists).
	(finish_message_expr, finish_objc): Adjust calls to
	check_duplicates().

2003-10-03  Roger Sayle  <roger@eyesopen.com>

	PR optimization/9325, PR java/6391
	* fold-const.c (fold_convert): For floating point to integer
	conversions, return the maximum/minimum representable integer
	value if the real constant overflows the destination type.
	* tree.c (real_value_from_int_cst): Allow the type to be NULL,
	meaning don't truncate the result to a floating point mode.
	Simplify the logic by calling real_from_integer directly.
	* simplify-rtx.c (simplify_unary_operation):  Implement the
	same semantics for folding floating point to integer conversions
	in RTL.

2003-10-03  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (mips_emit_prefetch): Restructure
	to avoid use of arrays, handle indexed prefetch.
	* config/mips/mips.h (ISA_HAS_FP4, ISA_HAS_PREFETCH): Update comments.
	(ISA_HAS_PREFETCHX): New deffine.
	* config/mips/mips.md ("type" attr): Add new "prefetchx" value,
	update comments.
	(prefetch_indexed_di, prefetch_indexed_si): New insns.

2003-10-03  Jeff Sturm  <jsturm@one-point.com>
	    Roger Sayle  <roger@eyesopen.com>

	PR optimization/12289
	* calls.c (emit_call_1): Pretend to have popped the arguments
	to noreturn and longjmp functions instead of ignoring them.
	(expand_call): Don't adjust stack_pointer_dela while
	inhibit_defer_pop is set.

2003-10-03  Andreas Schwab  <schwab@suse.de>

	PR bootstrap/12276
	* configure.in: Check for libunwind on the host only if building
	a native compiler.
	* configure: Regenerated.

2003-10-03  Paolo Carlini  <pcarlini@unitus.it>

	* unwind-pe.h (read_encoded_value_with_base): Constify u and
	its inizialization cast.

2003-10-03  Richard Sandiford  <rsandifo@redhat.com>

	PR target/12485
	* config/mips/mips.c (mips_load_got): GOT accesses can't trap.

2003-10-02  Mark Mitchell  <mark@codesourcery.com>

	PR optimization/12180
	* tree-inline.c (inline_forbidden_p_1): Do not permit inlining of
	functions containing calls to __builtin_next_arg.

2003-10-02  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (mips_emit_prefetch): Use operand 3
	in instructions being output.
	* config/mips/mips.md (prefetch_si_address): Change third
	operand's constraint letter to 'I'.
	(prefetch_di_address): Likewise.
	(prefetch_si, prefetch_di): Set third operand to const0_rtx.

2003-10-02  Zack Weinberg  <zack@codesourcery.com>

	* system.h: Poison macros obsoleted by earlier patch.
	* config/cris/cris.c: C90-ify a function definition.

2003-10-02  Josef Zlomek  <zlomekj@suse.cz>

	PR/12292
	* combine.c (make_field_assignment): Check whether rtx's code
	is CONST_INT before using INTVAL.

2003-10-02  Josef Zlomek  <zlomekj@suse.cz>

	* cgraph.c (cgraph_node): Use INSERT instead of 1 in
	htab_find_slot_with_hash.
	(cgraph_node_for_identifier): Use NO_INSERT.
	(cgraph_remove_node): Use NO_INSERT.
	(cgraph_varpool_node): Use INSERT.
	(cgraph_varpool_node_for_identifier): Use NO_INSERT.

2003-10-02  Josef Zlomek  <zlomekj@suse.cz>

	Waldek Hebisch <hebisch@math.uni.wroc.pl>
	PR/12072
	* varasm.c (compare_constant): Fix thinko.

2003-10-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_issue_rate): New function.
	(frv_pack_insns): Use it.
	(TARGET_SCHED_ISSUE_RATE): Define.

2003-10-02  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* config/mcore/mcore.c: Convert to ISO C90 function declarations
	and definitions.
	* config/mcore/mcore.h: Likewise.
	* config/mcore/mcore-protos.h: Likewise.

2003-10-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_use_dfa_pipeline_interface): New function.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.

2003-10-01  Per Bothner  <pbothner@apple.com>

	* c-lex.c (src_line):   Remove unneeded static variable.
	(cb_line_change):  Set input_line directly, instead of src_line.
	(get_non_padding_token):  We no longer need to compensate for the
	"horrible things" the C++ front-end does with the current line number,

	* cpplib.c (_cpp_pop_buffer):  Do generate a _cpp_do_file_change
	callback even when popping the main file.
	* c-lex.c (fe_file_change):  Handle a NULL new_map.
	* fix-header.c (cb_file_change):  Likewise.
	* c-ppoutput.c (pp_file_change):  Likewise.

	* cppinit.c (cpp_read_main_file):  Split into two functions:
	Distribute _cpp_stack_file call over the two functions.
	(cpp_find_main_file):  New function.
	Don't call _cpp_do_file_change even if working_directory flag set.
	(cpp_push_main_file):  New function.
	* cppfiles.c (_cpp_find_failed):  New helper function.
	(find_file):  Made non-static and renamed to _cpp_find_file.
	(_cpp_stack_file):  No longer needed.  But note the following.
	(stack_file):  Made non-static and renamed to _cpp_stack_file.
	* fix-header.c (cpp_read_main_file):  Replace cpp_read_main_file
	call with calls to cpp_find_main_file and cpp_push_main_file.
	(search_path_head):  If there is no current buffer, use main_file.
	* cpphash.h:  Update function declarations.
	* cpplib.h:  Update function declarations.

	* c-opts.c (c_common_post_options):  Don't call cpp_find_main_file yet.
	(c_common_parse_file):  No longer need to call cpp_read_main_file
	when file_index > 0 (as in multi-file or server compiation).
	(finish_options):  Change to <built-in> is an LC_ENTER, not LC_RENAME
	as this now happens before cpp_push_main_file.
	(push_command_line_include):  When done with options, pass LC_LEAVE
	instead of LC_RENAME to cpp_change_file and finally cpp_push_main_file.
	(fe_file_change):  Handle NULL new_map, and simplify.
	* cpplex.c (_cpp_get_fresh_line):  Revert my no-longer-needed
	08-28 change, since we're never called with a NULL buffer.
	(_cpp_lex_direct):  Likewise.
	* cpptrad.c (_cpp_read_logical_line_trad):  Likewise.
	Return false if buffer is NULL at end.

	* cpplex.c (_cpp_get_fresh_line):  Return value now just depends on
	whether pfile->buffer is NULL after pop, ignoring return_at_eof.
	* cpphash.h (struct cpp_buffer):  Remove unused return_at_eof field.
	* cpplib.c (cpp_push_buffer):  Since we no longer set return_at_eof,
	remove the unused return_at_eof parameter.
	* cppfiles.c, cpplib.c, cppmacro.c, cpppch.c, fix-header.c:
	Update callers of cpp_push_buffer.

2003-10-01  Zack Weinberg  <zack@codesourcery.com>

	* target.h (init_libfuncs): New hook.
	* target-def.h: Default TARGET_INIT_BUILTINS and
	TARGET_INIT_LIBFUNCS to hook_void_void.  Add
	TARGET_INIT_LIBFUNCS to TARGET_INITIALIZER.
	* builtins.c (default_init_builtins): Delete.
	* expr.h (default_init_builtins): Delete prototype.
	* doc/tm.texi: Document TARGET_INIT_LIBFUNCS and US_SOFTWARE_GOFAST.
	Tweak documentation of TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL.
	Remove documentation of INIT_TARGET_OPTABS, MULSI3_LIBCALL,
	DIVSI3_LIBCALL, UDIVSI3_LIBCALL, MODSI3_LIBCALL, UMODSI3_LIBCALL,
	MULDI3_LIBCALL, DIVDI3_LIBCALL, UDIVDI3_LIBCALL, MODDI3_LIBCALL,
	and UMODDI3_LIBCALL,

	* Makefile.in (optabs.o): Depends on target.h.
	* defaults.h: Provide default for FLOAT_LIB_COMPARE_RETURNS_BOOL.
	* optabs.c: Include target.h.
	(prepare_float_lib_cmp): No need for #ifdef around use of
	FLOAT_LIB_COMPARE_RETURNS_BOOL.
	(set_optab_libfunc): New function.
	(init_optabs): Delete use of all *_LIBCALL defines.
	Call targetm.init_libfuncs not INIT_TARGET_OPTABS.
	* optabs.h: Prototype set_optab_libfunc.

	* config.gcc: Remove all references to pa/long_double.h,
	ia64/hpux_longdouble.h, and gofast.h.
	(mips-*-*): When --enable-gofast, just add US_SOFTWARE_GOFAST
	to tm_defines; don't set INIT_SUBTARGET_OPTABS or change tm_file.

	* config/alpha/alpha.c, config/c4x/c4x.c, config/cris/cris.c
	* config/frv/frv.c, config/h8300/h8300.c, config/i860/i860.c
	* config/ia64/ia64.c, config/ip2k/ip2k.c, config/m68hc11/m68hc11.c
	* config/mips/mips.c, config/pa/pa.c, config/rs6000/rs6000.c
	* config/sparc/sparc.c, config/vax/vax.c:
	Provide a definition for TARGET_INIT_LIBFUNCS.  Where
	necessary, include optabs.h, libfuncs.h, and/or config/gofast.h.

	* config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.h
	* config/avr/avr.h, config/cris/cris.h, config/frv/frv.h
	* config/h8300/h8300.h, config/i860/i860.h, config/ip2k/ip2k.h
	* config/iq2000/iq2000.h, config/m68hc11/m68hc11.h, config/mips/mips.h
	* config/rs6000/aix.h, config/rs6000/sysv4.h, config/sparc/elf.h
	* config/sparc/lite.h, config/sparc/netbsd-elf.h, config/sparc/sol2.h
	* config/sparc/sparc.h, config/v850/v850.h, config/vax/vax.h
	* config/vax/elf.h: Don't define or use INIT_TARGET_OPTABS,
	INIT_SUBTARGET_OPTABS, or any *_LIBCALL macros.

	* config/ia64/hpux.h: Redefine INTEL_EXTENDED_IEEE_FORMAT to 0.
	Set TARGET_INIT_LIBFUNCS and FLOAT_LIB_COMPARE_RETURNS_BOOL here.
	* config/pa/pa-hpux.h: Define LONG_DOUBLE_TYPE_SIZE,
	HPUX_LONG_DOUBLE_LIBRARY, and FLOAT_LIB_COMPARE_RETURNS_BOOL here.
	* config/ia64/hpux_longdouble.h, config/pa/long_double.h: Delete.

	* config/rs6000/xcoff.h: Don't define RS6000_ITRUNC nor RS6000_UITRUNC.
	* config/sparc/sparc.h: Default SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 0.
	* config/sparc/sol2.h: Redefine SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 1.
	* config/sparc/elf.h: Redefine SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 0.
	* config/sparc/lite.h, config/sparc/liteelf.h, config/sparc/sp86x-elf.h:
	Define US_SOFTWARE_GOFAST.
	* config/vax/vax.h: Default TARGET_ELF to 0.
	* config/vax/elf.h: Redefine TARGET_ELF to 1.

	* config/gofast.h: Don't define any macros here.  Provide one
	static function, gofast_maybe_init_libfuncs, which does what
	INIT_GOFAST_LIBFUNCS used to do but only if US_SOFTWARE_GOFAST
	is already defined.  Do not clear negation libfuncs.  Do
	not mess with HFmode, XFmode, or TFmode libfuncs.

	* config/avr/avr.c (avr_init_once): #if 0 out; mark FIXME.

2003-10-01  Kelley Cook  <kelleycook@wideopenwest.com>

	PR C/12466
	* c-parse.in (parmlist_2): Mark declaration with an ellipsis as ISO C.

2003-10-01  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/xm-iris5.h: Remove, unnecessary.
	* config.build (mips-sgi-irix5*): Remove.
	(mips-sgi-irix6*o32): Likewise.
	* config.gcc (mips-sgi-irix6*o32): Remove xm_file.
	(mips-sgi-irix5cross64): Likewise.
	(mips-sgi-irix5*): Likewise.
	* config.host (mips-sgi-irix5*): Remove.
	(mips-sgi-irix6*o32): Likewise.

2003-10-01  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c (dbxout_fptype_value): Delete.
	(dbxout_type): Emit R3 for all COMPLEX_TYPEs.

2003-10-01  Alexandre Oliva  <aoliva@redhat.com>

	* output.h (compute_reloc_for_constant): Declare.
	* varasm.c (compute_reloc_for_constant): Extract from...
	(output_addressed_constants): ... here.  Adjust all callers.

2003-10-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* aclocal.m4: Add hpux10* and hpux11.00 to /dev/zero blacklist.
	* configure: Rebuilt.

2003-10-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (make_range): When handling unsigned, don't reverse
	range if high bound is zero.

2003-09-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv.h (PREDICATE_CODES): Added
	condexec_si_media_operator, condexec_sf_add_operator and
	condexec_sf_conv_operator.  Removed condexec_sf_binary_operator
	and condexec_sf_unary_operator.

2003-10-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* aclocal.m4: Add ultrix* to /dev/zero blacklist.
	* configure: Rebuilt.

2003-10-01  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Revert 2003-09-23 change.
	Allow override.
	* doc/tm.texi (MUST_USE_SJLJ_EXCEPTIONS): Document.

2003-09-23  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefine
	before redefining.
	* config/sparc/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.

2003-10-01  Steven Bosscher  <steven@gcc.gnu.org>

	* config/cris/cris-protos.h, config/cris/cris.c: Convert to ISO
	C90 function declarations and definitions.

2003-10-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (cris-*-linux*): Revert mistaken commit.

2003-10-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11753
	* config/sparc/sparc.md (length attribute) [fcc branch]: Add 1 to
	the length in the non-V9 case.

2003-09-30  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Honor
	DWARF_ALT_FRAME_RETURN_COLUMN.
	* unwind-dw2.c (dwarf_reg_size_table): Expand by one.
	(_Unwind_GetGR, _Unwind_SetGR): Validate lookup column.
	(uw_frame_state_for): Return end-of-stack for null return address.
	* doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Add.

	* config/alpha/alpha.c (alpha_sa_mask): Add r31 for eh_return.
	(alpha_expand_prologue): Store a zero for it.
	(alpha_expand_epilogue): Don't reload it.
	* config/alpha/alpha.h (DWARF_ALT_FRAME_RETURN_COLUMN): New.
	* config/alpha/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Use column 64
	for the sigframe return address.

2003-09-30  Kelley Cook  <kelleycoook@wideopenwest.com>

	* sdbout.c: Convert to ISO C90 prototypes.
	* objc/objc-act.c: Likewise.

2003-09-30  Kelley Cook  <kelleycoook@wideopenwest.com>

	* config/i386/cygwin1.c: Convert to ISO C90 prototypes.
	* config/i386/winnt.c: Likewise.
	* config/i386/cygming.h: Likewise.

2003-09-30  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Fold (A & ~B) - (A & B) into
	(A ^ B) - B for any B.

2003-09-30  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (arm*-*-kaos*, i[34567]86-*-kaos*, powerpc-*-kaos*,
	powerpcle-*-kaos*, strongarm-*-kaos*): Disable fixproto.

2003-09-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm/ieee754-sf.S: Tidy formatting.

2003-09-30  Nicolas Pitre  <nico@cam.org>

	* arm/lib1funcs.asm (ARM_DIV_MOD_BODY): Split into ARM_DIV_BODY
	and ARM_MOD_BODY.
	(ARM_MOD_BODY): Rewritten. added clz insns for __ARM_ARCH__ >= 5.
	(ARM_DIV_BODY): Added clz insns for __ARM_ARCH__ >= 5,
	added better divisor alignment in the other case.
	(ARM_DIV2_ORDER): Added, finds the order of a single bit divisor.
	(__divsi3, __udivsi3, __modsi3, __umodsi3): rewritten using the
	macros above, add fast exits for divisor >= dividend, etc.

2003-09-30  Nicolas Pitre  <nico@cam.org>

	* arm/ieee754-df.S: Split compilation of fixunsdfsi from
	L_fixdfsi target.
	* arm/t-arm-elf (LIB1ASMFUNCS): Add _fixunsdfsi.

2003-09-30  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Default use_fixproto to 'no'.

2003-09-30  Richard Sandiford  <rsandifo@redhat.com>

	PR optimization/12345
	* config/mips/mips-protos.h (mips_restore_gp): Remove.
	(mips_gp_save_slot): Declare.
	* config/mips/mips.c (mips_restore_gp): Remove in favor of...
	(mips_gp_save_slot): ...this new function.
	* config/mips/mips.md (exception_receiver): Use mips_gp_save_slot
	and mips_output_move to generate the output template.
	(call_internal): Force splitting if TARGET_SPLIT_CALLS.  Don't emit
	a gp load after a noreturn call.  Load the gp using a move rather
	than an exception_receiver pattern.
	(call_value_internal, call_value_multiple_internal): Likewise.
	(call_split, call_value_split, call_value_multiple_split): Clobber $28.

2003-09-30  Carlo Wood  <carlo@alinoe.com>

	PR debug/12319
	* cfglayout.c (insn_scope):  Use prologue_locator and
	epilogue_locator; return the outer function scope for
	pro- and epilogue insns.

2003-09-29  Zack Weinberg  <zack@codesourcery.com>

	* objc/objc-act.c (encode_type): Encode INTEGER_TYPEs and
	REAL_TYPEs based on the bitsize of the type's mode, not the
	mode directly.

2003-09-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* dwarf2out.c (default_eh_frame_section): Split into ...
	(named_section_eh_frame_section, collect2_eh_frame_section): ... new
	functions.
	* output.h (named_section_eh_frame_section): Declare.
	(collect2_eh_frame_section): Likewise.

2003-09-29  Zack Weinberg  <zack@codesourcery.com>

	* real.c (real_sqrt): Use get_canonical_qnan directly.

	* dwarf2out.c (add_const_value_attribute): Use real_to_target.

	* varasm.c (assemble_real): Use real_to_target directly,
	calculate the number of significant elements of the result
	array and write them out in a loop, instead of using a giant
	switch statement to pick the correct REAL_VALUE_TO_TARGET_*
	macro.

2003-09-29  Jan Hubicka  <jh@suse.cz>

	PR c++/12175
	* varasm.c (notice_global_symbol): Discard external symbols.

	PR optimization/12286
	* gcov-io.c (gcov_read_words): Fix memmove call.
	* profile.c (compute_branch_probabilities): Add extra sanity checks.

2003-09-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (sparc-*-solaris2*): Handle Solaris 10 and up like
	Solaris 7-9.

	* fixinc/inclhack.def (solaris_widec): Replace solaris2.[0-5]* by
	wildcards which explicitly match micro versions.
	* fixinc/fixincl.x: Regenerate.

2003-09-29  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Fold (A & ~B) - (A & B) into
	(A ^ B) - B, where B is any power of 2 minus 1.

2003-09-29  Jan Hubicka  <jh@suse.cz>

	* libgcov.c (gcov_exit): Fix two pastos.

2003-09-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*tst_extzv_1_n): Combine with the
	define_split immediately below to form define_insn_and_split.

2003-09-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*tstsi_variable_bit): New.
	(*tstsi_variable_bit_qi): Likewise.

2003-09-28  Phil Edwards  <phil@codesourcery.com>

	* doc/cppopts.texi:  Use 'dashMP' instead of '-MP' as a cross-
	reference name.

2003-09-28  Richard Henderson  <rth@redhat.com>

	* c-decl.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not
	file and line separately.

2003-09-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*adddi3_carry1_cc", "*adddi3_carry1_cconly",
	"*adddi3_carry2_cc", "*adddi3_carry2_cconly", "*subdi3_borrow_cc",
	"*subdi3_borrow_cconly"): New insns.
	("*addsi3_sub", "*subsi3_sub"): Remove.
	("*subdi3_cc", *subdi3_cconly"): Use only if TARGET_64BIT.
	("*subsi3_cc"): Fix op_type attribute.

2003-09-28  Richard Henderson  <rth@redhat.com>

	* stmt.c (expand_asm_operands): Take a location_t, instead of
	individual file and line.
	* c-typeck.c (c_expand_asm_operands): Likewise.
	* tree.h (expand_asm_operands): Update decl.
	* c-common.h (c_expand_asm_operands): Likewise.
	* c-semantics (genrtl_asm_stmt): Update call.

2003-09-28  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (legitimize_pic_address): Check
	SYMBOL_REF_LOCAL_P, not ENCODED_SHORT_CALL_ATTR_P.
	(arm_assemble_integer): Likewise.

2003-09-28  Steven Bosscher  <steven@gcc.gnu.org>

	* config/pdp11/pdp11-protos.h, config/pdp11/pdp11.c,
	config/c4x/c4x-c.c, config/c4x/c4x-protos.h, config/c4x/c4x.c,
	config/c4x/c4x.h:
	Convert to ISO C90 function declarations and definitions.

2003-09-28  Steven Bosscher  <steven@gcc.gnu.org>

	*  config/stormy16/stormy16.c, config/stormy16/stormy16-protos.h:
	Convert to ISO C90 function declarations and definitions.

2003-09-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_constant_info): Add reloc field.
	(mips_classify_constant): Initialize it.  Always set SYMBOL to the
	underlying symbol, not to an unspec.
	(mips_delegitimize_address, print_operand): Clean up accordingly.

2003-09-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips16_gp_pseudo_reg): Remove.
	* config/mips/mips.h (LEGITIMATE_CONSTANT_P): Remove orphaned comment.
	* config/mips/mips.c (mips_reloc_offset_ok_p): New function.
	(mips_classify_constant): Use it.
	(mips_splittable_symbol_p): Add an offset argument.
	(mips_classify_address): Adjust call accordingly.
	(mips_legitimize_symbol): Handle sdata references with LO_SUM rather
	than a relocation unspec.  Update call to mips_splittable_symbol_p.
	Generalize the code that copes with symbols + invalid offsets.
	(print_operand): Allow '%R' to be applied to small data addresses.
	(mips_reloc_string): Remove RELOC_GPREL16.
	(mips_sdata_pointer): Renamed from mips16_gp_pseudo_reg.  Return $gp
	for TARGET_EXPLICIT_RELOCS.  Return null if we can't use gp-relative
	relocation operators.
	* config/mips/mips.md (RELOC_GPREL16): Remove.  Shuffle other reloc
	constants accordingly.

2003-09-27  Roger Sayle  <roger@eyesopen.com>

	* toplev.c (flag_evaluation_order): New global variable.
	* flags.h (flag_evaluation_order): Prototype here.
	* expr.c (expand_operands): If we need to preserve observable
	evaluation order, protect exp1 from clobbering exp0's result.

2003-09-28  Andreas Jaeger  <aj@suse.de>

	* c-decl.c (finish_function): Convert definition to ISO C90.
	* ifcvt.c (mark_loop_exit_edges): Likewise.
	* ra-rewrite.c (emit_colors): Likewise.

2003-09-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (alpha*-dec-osf[45]*): Disable fixproto.
	* config.gcc (arm*-*-uclinux*): Disable fixproto.
	* config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
	powerpc-*-eabialtivec*): Disable fixproto.

2003-09-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/12340
	* loop.h (struct induction): Document the new semantics
	of the 'same' field for bivs.
	* unroll.c (biv_total_increment): Don't count the same
	biv increment several times.
	(loop_iterations) [GENERAL_INDUCT]: Likewise.

2003-09-27  Graham Stott  <graham.stott@btinternet.com>

	* unroll.c (loop_interations)[GT]: Add missing break.

2003-09-27  Kelley Cook  <kcook@gcc.gnu.org>

	* config/chorus.h, config/darwin-c.c, config/darwin-protos.h,
	config/darwin.c, config/darwin.h, config/dbx.h, config/dbxcoff.h,
	config/dbxelf.h, config/elfos.h, config/fp-bit.h,
	config/freebsd-nthr.h, config/freebsd-spec.h, config/freebsd.h,
	config/freebsd3.h, config/freebsd4.h, config/freebsd5.h,
	config/freebsd6.h, config/netbsd-aout.h, config/netbsd-elf.h,
	config/netbsd.h, config/netware.h, config/openbsd-oldgas.h,
	config/openbsd.h, config/ptx4.h, config/alpha/alpha-protos.h,
	config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/alpha.md,
	config/alpha/elf.h, config/alpha/ev4.md, config/alpha/ev5.md,
	config/alpha/ev6.md, config/alpha/freebsd.h, config/alpha/linux-elf.h,
	config/alpha/linux.h, config/alpha/netbsd.h, config/alpha/openbsd.h,
	config/alpha/osf.h, config/alpha/osf5.h, config/alpha/unicosmk.h,
	config/alpha/vms-cc.c, config/alpha/vms-crt0-64.c,
	config/alpha/vms-crt0.c, config/alpha/vms-dwarf2.asm,
	config/alpha/vms-dwarf2eh.asm, config/alpha/vms-ld.c,
	config/alpha/vms-psxcrt0-64.c, config/alpha/vms-psxcrt0.c,
	config/alpha/vms.h, config/alpha/vms64.h, config/alpha/vms_tramp.asm,
	config/alpha/xm-vms.h, config/arc/arc-modes.def,
	config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h,
	config/arc/arc.md, config/arc/initfini.c, config/arc/lib1funcs.asm,
	config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h,
	config/avr/avr.md, config/d30v/d30v-protos.h, config/d30v/d30v.h,
	config/d30v/d30v.md, config/fr30/fr30-protos.h, config/fr30/fr30.c,
	config/fr30/fr30.h, config/fr30/fr30.md, config/fr30/lib1funcs.asm,
	config/frv/cmovd.c, config/frv/cmovh.c, config/frv/cmovw.c,
	config/frv/frv-abi.h, config/frv/frv-asm.h, config/frv/frv-modes.def,
	config/frv/frv-protos.h, config/frv/frv.c, config/frv/frv.h,
	config/frv/frv.md, config/frv/frvbegin.c, config/frv/frvend.c,
	config/frv/lib1funcs.asm, config/h8300/clzhi2.c, config/h8300/ctzhi2.c,
	config/h8300/parityhi2.c, config/h8300/popcounthi2.c,
	config/i370/i370-c.c, config/i370/i370-protos.h, config/i370/i370.c,
	config/i370/i370.h, config/i370/i370.md, config/i370/linux.h,
	config/i370/mvs.h, config/i370/oe.h, config/i386/darwin.h,
	config/i960/i960-c.c, config/i960/i960-coff.h,
	config/i960/i960-modes.def, config/i960/i960-protos.h,
	config/i960/i960.c, config/i960/i960.h, config/i960/i960.md,
	config/i960/rtems.h, config/ia64/elf.h, config/ia64/ia64.h,
	config/m32r/initfini.c, config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m32r/m32r.md, config/m68hc11/larith.asm,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/m68hc11/m68hc11.md,
	config/m68hc11/m68hc12.h, config/m68k/coff.h, config/m68k/crti.s,
	config/m68k/crtn.s, config/m68k/hp320.h, config/m68k/hp320base.h,
	config/m68k/lb1sf68.asm, config/m68k/linux.h, config/m68k/m68020-elf.h,
	config/m68k/m68k-aout.h, config/m68k/m68k-none.h,
	config/m68k/m68k-protos.h, config/m68k/m68k.c, config/m68k/m68k.h,
	config/m68k/m68k.md, config/m68k/m68kelf.h, config/m68k/m68kv4.h,
	config/m68k/netbsd-elf.h, config/m68k/openbsd.h,
	config/m68k/rtemself.h, config/m68k/sgs.h, config/mcore/lib1.asm,
	config/mcore/mcore-elf.h, config/mcore/mcore-pe.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.md, config/mips/elf.h, config/mips/elf64.h,
	config/mips/elforion.h, config/mips/iris5.h, config/mips/iris6.h,
	config/mips/iris6gld.h, config/mips/irix6-libc-compat.c,
	config/mips/linux.h, config/mips/mips-protos.h, config/mips/mips.c,
	config/mips/mips.h, config/mips/mips.md, config/mips/netbsd.h,
	config/mips/openbsd.h, config/mips/r3900.h, config/mips/rtems.h,
	config/mips/vr.h, config/mn10300/linux.h,
	config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
	config/mn10300/mn10300.h, config/mn10300/mn10300.md,
	config/ns32k/__unorddf2.c, config/ns32k/__unordsf2.c,
	config/ns32k/netbsd.h, config/ns32k/ns32k-protos.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/ns32k/ns32k.md,
	config/pdp11/2bsd.h, config/pdp11/pdp11-modes.def,
	config/pdp11/pdp11-protos.h, config/pdp11/pdp11.c,
	config/pdp11/pdp11.h, config/pdp11/pdp11.md, config/rs6000/biarch64.h,
	config/rs6000/default64.h, config/sh/coff.h, config/sh/crt1.asm,
	config/sh/crti.asm, config/sh/crtn.asm, config/sh/elf.h,
	config/sh/embed-elf.h, config/sh/linux.h, config/sh/little.h,
	config/sh/netbsd-elf.h, config/sh/rtems.h, config/sh/rtemself.h,
	config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.h,
	config/sh/sh.md, config/sh/sh64.h, config/sh/shmedia.h,
	config/sh/sshmedia.h, config/sh/ushmedia.h, config/sparc/pbd.h,
	config/sparc/sparc.h, doc/install-old.texi, fixinc/fixinc.ptx,
	fixinc/fixinc.svr4: GNU CC -> GCC.

2003-09-26  Loren James Rittle  <ljrittle@acm.org>

	* objc/objc-act.c (tm_p.h): Tweak order.
	* objc/Make-lang.in (objc/objc-act.o): Add $(TM_P_H).

2003-09-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (hppa*64*-*-linux* | parisc*64*-*-linux*):
	Include t-slibgcc-elf-ver and t-linux in tmake_file.
	* config.gcc (hppa*64*-*-linux* | parisc*64-*-linux*):
	Disable fixproto.
	* config.gcc (i960-*-coff*, m68k-*-aout*, sparclite-*-coff*):
	Disable fixproto.
	* config.gcc (i[34567]86-*-solaris2*, sparc64-*-solaris2*,
	sparcv9-*-solaris2*, sparc-*-solaris2*): Disable fixproto.

	* config/i386/unix.h: Remove (unused) DEFAULT_ASSEMBLER_DIALECT.

2003-09-26  Loren James Rittle  <ljrittle@acm.org>

	* config/i386/i386.h (ix86_return_in_memory): Revert my last patch.
	* objc/objc-act.c (tm_p.h): Include.

2003-09-26  Per Bothner  <pbothner@apple.com>

	* dbxout.c (dbxout_typedefs):  Output typedefs in forward order.
	No longer any need to reverse by recursion.

2003-09-26  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	PR optimization/11741
	* gcse.c (pre_insert_copy_insn): Tweak the logic for finding the
	appropriate set to match that in hash_scan_insn.  Fall back to
	the original copy method, if we can't validate changing insn.
	(pre_delete): Only delete instructions that have a single_set,
	instead of aborting when we encounter an PARALLEL insn with more
	then one SET.

2003-09-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("builtin_setjmp_setup"): Insn deleted.
	("builtin_longjmp"): Insn deleted.
	("save_stack_nonlocal"): Save literal pool base pointer behind
	backchain and stack pointer.
	("restore_stack_nonlocal"): Restore literal pool base pointer.
	* config/s390/s390.h (STACK_SAVEAREA_MODE): Double size of
	the stack save area for the nonlocal goto case.

2003-09-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR bootstrap/12358
	* pa.c (output_bvb): Fix typo.

2003-09-26  Richard Sandiford  <rsandifo@redhat.com>

	* expmed.c (store_bit_field): Don't search for an integer mode
	unless we need the result.

2003-09-26  Richard Sandiford  <rsandifo@redhat.com>

	* expr.c (emit_move_insn_1): If there is no move pattern for the
	original mode, try using a pattern for the corresponding integer mode.

2003-09-26  Richard Sandiford  <rsandifo@redhat.com>

	PR middle-end/9200
	* combine.c (if_then_else_cond): Tighten mode check.

2003-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* cppcharset.c, cpphash.h: Rename 'struct strbuf' to
	'struct _cpp_strbuf'.

	* config/i386/netbsd-elf.h, config/i386/netbsd64.h,
	config/i386/netware.h, config/i386/nto.h, config/i386/openbsd.h,
	config/i386/pentium.md, config/i386/pmmintrin.h, config/i386/ppro.md,
	config/i386/ptx4-i.h, config/i386/rtemself.h, config/i386/sco5.h,
	config/i386/sol2.h, config/i386/svr3gas.h, config/i386/sysv3.h,
	config/i386/sysv4-cpp.h, config/i386/sysv4.h, config/i386/sysv5.h,
	config/i386/unix.h, config/i386/uwin.h, config/i386/vsta.h,
	config/i386/xm-cygwin.h, config/i386/xm-djgpp.h,
	config/i386/xm-mingw32.h, config/i386/xmmintrin.h: Replace
	"GNU CC", "GNU compiler", and "GNU C-compiler" with "GCC".
	* config/i386/i386-aout.h, config/i386/i386-coff.h,
	config/i386/i386-interix.h, config/i386/i386-interix3.h,
	config/i386/i386-modes.def, config/i386/i386-protos.h,
	config/i386/i386.c, config/i386/i386.h, config/i386/i386.md,
	config/i386/i386elf.h, config/i386/k6.md, config/i386/kaos-i386.h,
	config/i386/linux-aout.h, config/i386/linux.h, config/i386/linux64.h,
	config/i386/lynx-ng.h, config/i386/lynx.h, config/i386/mingw32.h,
	config/i386/mmintrin.h, config/i386/moss.h: GNU CC -> GCC.
	"GNU compiler" -> GCC.
	* config/i386/att.h, config/i386/beos-elf.h, config/i386/biarch64.h,
	config/i386/bsd.h, config/i386/crtdll.h, config/i386/cygming.h,
	config/i386/cygwin.h, config/i386/cygwin1.c, config/i386/cygwin2.c,
	config/i386/darwin.h, config/i386/djgpp.h, config/i386/emmintrin.h,
	config/i386/freebsd-aout.h, config/i386/freebsd.h,
	config/i386/freebsd64.h, config/i386/gas.h: GNU CC -> GCC.

2003-09-25  Kelley Cook  <kelleycook@wideopenwest.com>

	* cgraph.c (dump_cgraph):  Don't output newline before dump.  Add in
	"local" to the callgraph dump.  Output "after inlining" earlier.
	* cgraphunit.c: Fix dumpfile whitespace and commonize headers of the
	callgraph dumps.  Correct misspellings.
	(cgraph_decide_inlining):  Output number of insns before inlining.
	Output the calling function into which a function is inlined.
	(cgraph_decide_small_functions): Format dump file like always_inline.

2003-09-25  Loren James Rittle  <ljrittle@acm.org>

	* config/i386/i386.h (ix86_return_in_memory): Add prototype.

2003-09-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologue): Simplify accesses to
	FPR slots in the save area.
	(s390_emit_epilogue): Likewise.

2003-09-25  Richard Sandiford  <rsandifo@redhat.com>

	* cgraph.h (cgraph_remove_edge): Declare.
	* cgraph.c (cgraph_remove_edge): Make extern.
	* cgraphunit.c (cgraph_finalize_function): Call cgraph_remove_edge
	instead of cgraph_remove_call.

2003-09-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* objc/objc-act.c (gen_declaration_1): Fix printf format.

2003-09-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (all_cores): arm710t, arm720t and arm740t are all based on the
	arm7tdmi core.

2003-09-25  Ziemowit Laski  <zlaski@apple.com>

	* config/darwin-protos.h (objc_image_info_section):
	New prototype.

2003-09-25  Ziemowit Laski  <zlaski@apple.com>

	* Makefile.in (stub-objc.o): Depend on $(GGC_H).

2003-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Get rid of more gratuitious 'x'es.  Actually allow
	tsc701 as a --with-cpu, --with-tune setting for sparc.

2003-09-25  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (objc_try_stmt): Do not specify a %type.

2003-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: New 'widely ported system' clause for rtems.
	Set thread file there, not in individual clauses.

2003-09-25  Richard Sandiford  <rsandifo@redhat.com>

	PR target/6222
	* config/mips/mips.c (mips_va_arg): Handle arguments that must be
	passed on the stack.

2003-09-25  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (widely ported systems section): Mostly alphabetize
	by system.  Comment the case where we can't.
	* config.gcc (widely ported systems section): Reindent and clean up.

	* config.gcc: Remove some unnecessary uses of 'x' in case statements.
	Actually allow ep9312 as an arm --with-arch setting.

	* config.gcc (*-hpux11): Disable fixproto.

2003-09-24  Phil Edwards  <phil@codesourcery.com>

	PR pch/12112
	* gcc/cppfiles.c (pch_open_file): Return based on combined
	result of all files.
	(validate_pch): Return validate flag for current file.

2003-09-24  Roger Sayle  <roger@eyesopen.com>

	PR bootstrap/12358
	* fold-const.c (tree_swap_operands_p): Only reorder operands when
	one of the operands is constant.

2003-09-24  Ziemowit Laski  <zlaski@apple.com>

	MERGE OF objc-improvements-branch into MAINLINE:
	* Makefile.in (C_OBJS): Add in stub-objc.o.
	(c-parse.y): Change sed demarcations to begin with '@@'.
	(stub-objc.o): New rule.
	* c-common.c (flag_nil_receivers, flag_objc_exceptions, flag_zero_link,
	flag_replace_objc_classes): New flags.
	* c-common.h (RID_AT_THROW, RID_AT_TRY, RID_AT_CATCH, RID_AT_FINALLY,
	RID_AT_SYNCHRONIZED): New keywords.
	(flag_nil_receivers, flag_objc_exceptions, flag_zero_link,
	flag_replace_objc_classes): New flags.
	(lookup_interface, is_class_name, objc_is_object_ptr, objc_check_decl,
	objc_comptypes, objc_message_selector, lookup_objc_ivar,
	get_current_scope, objc_mark_locals_volatile): New prototypes,
	some moved from c-tree.h.
	* c-decl.c (get_current_scope, objc_mark_locals_volatile): New functions.
	(finish_decl): Adjust where objc_check_decl() gets called.
	* c-lang.c (lookup_interface, is_class_name, objc_is_id,  objc_check_decl,
	objc_comptypes, objc_message_selector, lookup_objc_ivar): Remove stubs.
	* c-opts.c (c_common_handle_option): Add handling for  flag_nil_receivers,
	flag_objc_exceptions, flag_replace_objc_classes and flag_zero_link.
	* c-parse.in: Replace 'ifc' and 'end ifc' sed markers with '@@ifc' and
	'@@end_ifc', respectively.
	(AT_THROW, AT_TRY, AT_CATCH, AT_FINALLY, AT_SYNCHRONIZED): New %tokens.
	(objc_try_stmt, superclass, class_ivars, objc_try_catch-stmt,
	objc_finally_block): New rules.
	(component_decl_list2): Clean up semantic action for @defs construct.
	(component_decl, c99_block_start): Remove call to add_objc_decls().
	(poplevel): Add call to objc_clear_super_receiver().
	(stmt): Add rules for @throw, @try..@catch..@finally and @synchronized
	constructs.
	(classdef, methodprotolist): Clean up/simplify.
	(methodprotolist2): Eliminate.
	(methodproto): Call add_method() instead of add_class_method() and
	add_instance_method().
	(receiver): Add TYPENAME production.
	(reswords): Add "throw", "try", "catch", "finally" and "synchronized".
	(rid_to_yy): Add AT_THROW, AT_TRY, AT_CATCH, AT_FINALLY and
	AT_SYNCHRONIZED.
	* c-tree.h (lookup_interface, is_class_name, objc_is_id, objc_check_decl,
	objc_comptypes, objc_message_selector)
	* c-typeck.c (comptypes): In ObjC mode, call objc_comptypes() for
	struct and pointer types.
	(build_c_cast): Do not discard ObjC protocol qualifiers.
	(convert_for_assignment): Cache result of comp_target_types() instead
	of calling it more than once.
	* c.opt (fnext-runtime): Update description string.
	(fnil-receivers, fobjc-exceptions, freplace-objc-classes, fzero-link):
	New ObjC/ObjC++-specific flags.
	* function.h (GCC_FUNCTION_H): Header guard.
	* gengtype-lex.l: Teach lexer about new @@... sed demarcations.
	* stub-objc.c: New file, to be used to satisfy references to ObjC
	functions by the C and C++ front-ends.
	* config/darwin.c (_OBJC_IMAGE_INFO): New global metadata.
	* config/darwin.h (FUNCTION): Add in_objc_image_info.
	(SECTION_FUNCTION): Add objc_image_info_section.
	* doc/invoke.texi: Link to GCC web site for Objective-C information.
	(-fconstant-string-class): Update documentation.
	(-fno-nil-receivers, -fobjc-exceptions, -freplace-objc-classes,
	-fzero-link): New documentation.
	* objc/Make-lang.in (objc-parse.y): Change sed demarcations to begin
	with '@@'.
	* objc/lang-specs.h (@objective-c-header): Fix -E spec.
	* objc/objc/objc-act.c: Replace TYPE_NAME with OBJC_TYPE_NAME
	throughout; provide casts for return values from memory allocation
	functions (xmalloc, alloca, ggc_alloc, etc.).
	(OBJC_VOID_AT_END): New macro.
	(rtl.h): Do not #include any more.
	(STRING_OBJECT_GLOBAL_NAME): Replaced with STRING_OBJECT_GLOBAL_FORMAT.
	(TAG_MSGSEND_STRET, TAG_MSGSENDSUPER_STRET, TAG_MSGSEND_NONNIL,
	TAG_MSGSEND_NONNIL_STRET, TAG_EXCEPTIONEXTRACT, TAG_EXCEPTIONTRYENTER,
	TAG_EXCEPTIONTRYEXIT, TAG_EXCEPTIONMATCH, TAG_EXCEPTIONTHROW,
	TAG_SYNCENTER, TAG_SYNCEXIT): New NeXT runtime entry points.
	(struct val_stack, catch_count_stack, exc_binding_stack,  val_stack_push,
	val_stack_pop): New.
	(objc_check_decl): Fix precondition for error message, along with
	the message itself.
	(lookup_and_install_protocols): Remove nonexistent protocols from
	protocol list instead of returning error_mark_node.
	(create_builtin_decl): Use DECL_ARTIFICIAL only for VAR_DECLs.
	(setup_string_decl): Generalize to use STRING_OBJECT_GLOBAL_FORMAT.
	(synth_module_prologue): General clean-up; construct NeXT-specific
	runtime API prototypes if needed.
	(build_string_class_template): Remove.
	(check_string_class_template, string_layout_checked): New.
	(build_objc_string_object): Generalize to work with
	-fconstant-string-class.
	(build_objc_symtab_template): Fix layout for the NeXT runtime.
	(build_metadata_decl): New.
	(forward_declare_categories): Call build_metadata_decl() instead of
	create_builtin_decl() et al.
	(build_module_descriptor): Use OBJC_VOID_AT_END instead of
	void_list_node_1.
	(build_selector_reference_decl, build_class_reference_decl,
	build_objc_string_decl): Do not set TREE_READONLY.
	(get_proto_encoding): Do not call hack_method_prototype().
	(get_class_reference): Add failure mode for invalid class names;
	support -fzero-link; defer if in an ObjC++ template declaration.
	(objc_declare_alias, objc_declare_class): Fix up duplicate name
	lookup; check for global scope if in ObjC++.
	(is_class_name): Generalize to work with various tree nodes (TYPE_DECL,
	RECORD_TYPE, IDENTIFIER_NODE, etc.)
	(objc_is_id): Removed.
	(objc_is_object_ptr): New function.
	(get_class_ivars_from_name): New function, used for @defs construct.
	(get_class_ivars): Add option to return raw ivars; create a
	ClASS_OWN_IVARS list for each class as needed.
	(objc_enter_block, objc_exit_block, objc_declare_variable,
	objc_build_throw_stmt, val_stack_push, val_stack_pop,
	objc_build_try_enter_fragment, objc_build_extract_expr,
	objc_build_try_exit_fragment, objc_build_extract_fragment,
	objc_build_try_prologue, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue,
	objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
	objc_build_synchronized_epilogue, build_objc_exception_stuff):
	New functions.
	(_JBLEN): _setjmp jmpbuf size (needs to be made a target hook in
	the future).
	(build_private_template): Fix up calls to get_class_ivars().
	(offset_is_register, forwarding_offset): Remove.
	(objc_method_parm_type, objc_encoded_type_size): New functions.
	(encode_method_prototype): Simplify to no longer depend on
	back-end information.
	(build_tmp_function_decl_xxx, build_tmp_function_decl,
	hack_method_prototype): Removed.
	(generate_protocol_references): Remove calls to
	build_tmp_function_decl().
	(generate_protocols): Adjust calls to encode_method_prototype().
	(build_class_template): Generate sel_id' and 'gc_object_type' fields
	for the NeXT runtime.
	(synth_forward_declarations): Call build_metadata_decl().
	(check_ivars): Check that the number of ivars matches also.
	(build_super_template): Modify super_type directly; disable debugging
	output while generating decl.
	(build_ivar_list_initializer): Skip list elements that are not
	FIELD_DECLs.
	(ivar_list_length): New function.
	(generate_ivar_lists): Call ivar_list_length() instead of list_length()
	and encode_method_prototype() instead of encode_method_def().
	(build_shared_structure_initializer): Generate 'sel_id' field for
	the NeXT runtime.
	(generate_category): Do not set TREE_USED.
	(build_keyword_selector): Ditto; transform into a function argument
	chain.
	(get_arg_type_list): If there are no user-specified arguments, use
	'...'; use OBJC_VOID_AT_END.
	(check_duplicates): Add a parameter indicating whether methods or
	selectors are being checked.
	(receiver_is_class_object): Add parameters indicating whether
	receiver is 'self' or 'super'; robustify.
	(build_message_expr): Defer call to finish_message_expr() if
	inside an ObjC++ template.
	(lookup_method_in_hash_lists): New function.
	(finish_message_expr): Complete rewrite/fix.
	(build_objc_method_call): Ditto; factor out commonalities between
	the GNU and NeXT runtimes; acccommodate ..._stret and ...NonNil
	messenger variants on the NeXT.
	(lookup_instance_method_static, lookup_class_method_static):
	Fold into a single lookup_method_static() function with an
	additional parameter.
	(add_class_method, add_instance_method): Fold into a single
	add_method() function with an additional parameter.
	(add_category): Make duplicate categories a hard error in ObjC++.
	(add_instance_variable): Properly handle unnamed ivars, arrays of
	zero or no size and bitfields.  In ObjC++, check for nontrivial
	C++ class instances.
	(is_public): Allow C functions to access non-@public ivars, with
	a warning.
	(start_class): Move common initializations to
	synth_module_prologue(); check for global scope if in ObjC++.
	(continue_class): Fix calls to finish_struct().
	(objc_declare_protocols, start_protocol): Check for global scope
	if in ObjC++.
	(encode_pointer): Encode 'BOOL *' specially on the NeXT.
	(encode_aggregate_within): Rewrite to properly distinguish
	struct tags from typedefs in both ObjC and ObjC++.
	(encode_bitfield, encode_complete_bitfield): Remove.
	(encode_next_bitfield, encode_gnu_bitfield): New functions.
	(encode_field_decl): Call encode_next_bitfield() or
	encode_gnu_bitfield() as needed.
	(synth_self_and_ucmd_args): New function.
	(start_method_def): Use it.
	(objc_types_are_equivalent): New function.
	(comp_proto_with_proto): Use it instead of comptypes(), since
	we need symmetry.
	(really_start_method): Use lookup_method_static() instead of
	lookup_class_method_static() and lookup_instance_method_static();
	Emit 'extern "C"' if in ObjC++ mode.
	(add_objc_decls): Removed.
	(UOBJC_SUPER_scope): New variable.
	(get_super_receiver): Move construction of 'super' from
	add_objc_decls(); remove dependency on struct objc_class.
	(encode_method_def): Removed; encode_method_prototype() is
	used instead.
	(objc_clear_super_receiver): New function.
	(objc_expand_function_end): Do not do anything for ordinary
	C functions.
	(finish_method_def): Mark ObjC methods as un-inlinable.
	(gen_declaration_1): Emit widths of bitfields.
	(finish_objc): Call generate_objc_image_info() if needed;
	use check_duplicates() when checking for selector duplicates.
	(generate_objc_image_info): New function.
	* objc/objc-act.h (add_instance_method, add_class_method,
	get_class_ivars): Remove prototypes.
	(objc_build_throw_stmt, objc_build_try_catch_finally_stmt,
	objc_build_synchronized_prologue, objc_build_synchronized_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue,
	add_method, get_class_ivars_from_name): New prototypes.
	(CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): New.
	(TYPE_PROTOCOL_LIST): Robustify to distinguish from
	TRANSLATION_UNIT_DECLs.
	(OBJC_TYPE_NAME): New.
	(objc_tree_code): Ensure that either <c-tree.h> or <cp/cp-tree.h>
	got included.
	(IS_SUPER): Robustify.
	(umsg_stret_decl, umsg_super_stret_decl, umsg_nonnil_decl,
	umsg_nonnil_stret_decl, objc_storage_class, objc_exception_extract_decl,
	objc_exception_try_enter_decl, objc_exception_try_exit_decl,
	objc_exception_match_decl, objc_exception_throw_decl,
	objc_sync_enter_decl, objc_sync_exit_decl, objc_exception_data_template,
	objc_setjmp_decl, objc_stack_exception_data, objc_caught_exception,
	objc_rethrow_exception, objc_eval_once, objc_exception_block_stack,
	objc_catch_type): New ObjC/ObjC++ roots.
	* objc/objc-tree.def (MESSAGE_SEND_EXPR, CLASS_REFERENCE_EXPR): New
	ObjC/ObjC++ tree node codes.

2003-09-24  Alexandre Oliva  <aoliva@redhat.com>

	* cpplib.c (do_pragma): Reintroduce cb_line_change call in the
	code path that calls a handler.

2003-09-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (c4x-*, tic4x-*, d30v-*, mmix-knuth-mmixware):
	Disable fixproto.

	* config.gcc: Clean up and reindent $with_cpu=yes|no clause and
	the section giving $with_cpu defaults by target.

	* config.gcc (arm-*-coff*, armel-*-coff*, arm*-*-ecos-elf,
	arm*-*-elf, ep9312-*-elf, arm*-wince-pe*, arm*-*-pe*, arm*-*-pe*,
	rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*,
	rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*,
	rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*,
	i[34567]86-pc-msdosdjgpp*): Disable fixproto.

2003-09-24  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (movti_power): Collapse case 1 and 2
	together.  Protect load string instruction with TARGET_STRING.
	(movti_string): Collapse case 1 and 2 together.

2003-09-24  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.c (c_common_type_for_mode): Check for VOIDmode.

2003-09-24  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Wrap in
	do...while(0)

2003-09-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Move use_fixproto=no from generic vxworks clause to
	specific one.

	* config.gcc (powerpc-*-gnu-gnualtivec*): Disable fixproto
	(accidentally missed in last pass).

2003-09-23  Andrew Pinski  <apinski@apple.com>

	PR bootstrap/12383
	* configure: Regenerate.

2003-09-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (x86_64-*-freebsd*): Disable fixproto (accidentally
	missed in last pass).

2003-09-23  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md (andsi3): Fix cut&pasto in 0xfffffffe
	constant.

2003-09-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Move vax-*-vms* unsupported notice up with the rest.

	* config.gcc (alpha64*-dec-*vms*, alpha*-dec-*vms*,
	powerpc-*-eabisim*, powerpc-*-eabi*, powerpcle-*-eabisim*,
	powerpcle-*-eabi*): Disable fixproto.

	* config.gcc: Move use_fixproto=no from generic FreeBSD clause to
	specific FreeBSD clauses.
	* config.gcc: Move use_fixproto=no from generic NetBSD clause to
	specific NetBSD clauses.
	* config.gcc: Move use_fixproto=no from generic OpenBSD clause
	to specific OpenBSD clauses.

2003-09-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (hppa_expand_prologue): Do pic register save in frame marker
	without adding a frame note.
	* pa.md (allocate_stack): Save pic register in new frame marker when
	generating pic code.

2003-09-23  Kelley Cook  <kelleycook@wideopenwest.com>

	* cgraphunit.c (cgraph_expand_all_functions): Renamed from
	cgraph_expand_functions.

2003-09-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (gnucompare*): Merge into ...
	(slowcompare*): ... here.
	(fastcompare*): New targets.
	* aclocal.m4 (gcc_AC_PROG_CMP_IGNORE_INITIAL): Add checks for
	other "fast" cmp programs.
	* configure: Regenerate.

2003-09-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* targhooks.c: Include output.h.
	* Makefile.in (targhooks.o): Add output.h to dependency list.

2003-09-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.host: Removed superfluous newline.

2003-09-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Use ${target}, not $machine.
	* configure.in: Don't set $machine.
	* configure: Regenerate.

2003-09-23  Geoffrey Keating  <geoffk@apple.com>

	* config/t-darwin (crt2.o): Add stmp-int-hdrs to dependencies.

	* config/rs6000/rs6000.c (function_arg_pass_by_reference): Don't
	pass zero-size arrays by reference.
	(rs6000_va_arg): Likewise.

2003-09-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Set use_fixproto=no in each specific *-gnu*
	configuration, rather than the generic one.

2003-09-23  Richard Henderson  <rth@redhat.com>

	* tree-inline.c (remap_save_expr): Map new save_expr to identity
	rather than to error_mark_node.

2003-09-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (HAVE_GAS_SHF_MERGE): Always define to test result.
	Update description.
	* configure: Regenerate.
	* config.in: Likewise.
	* dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test for
	HAVE_GAS_SHF_MERGE value.
	* varasm.c (mergeable_string_section): Likewise.
	(mergeable_constant_section): Likewise.

2003-09-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Test for DWARF2_UNWIND_INFO
	value.

2003-09-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* target.h (struct gcc_target): New member external_libcall.
	* target-def.h (TARGET_ASM_EXTERNAL_LIBCALL): Provide default.
	(TARGET_ASM_OUT): Use it.
	* doc/tm.texi (TARGET_ASM_EXTERNAL_LIBCALL): Document.
	* targhooks.c: Convert to ISO C 90.
	(default_external_libcall): New function.
	* targhooks.h (default_external_libcall): Declare.
	* varasm.c (assemble_external_libcall): Use
	targetm.asm_out.external_libcall instead of
	ASM_OUTPUT_EXTERNAL_LIBCALL.
	* config/mips/mips-protos.h [TARGET_IRIX5 || TARGET_IRIX 6]
	(mips_output_external_libcall): Declare.
	* config/mips/mips.c (mips_output_external_libcall): Change
	definition guard.
	Change to match TARGET_ASM_EXTERNAL_LIBCALL.
	Only operate for O32 ABI.
	* config/mips/iris5.h (TARGET_ASM_EXTERNAL_LIBCALL): Define
	instead of ASM_OUTPUT_EXTERNAL_LIBCALL.
	* config/mips/iris6.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Don't undef,
	superceded by TARGET_ASM_EXTERNAL_LIBCALL.

2003-09-22  Nathnael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Do per-target disabling of fixproto here in clauses,
	not in t- fragments.
	* configure.in: Adjust to set STMP_FIXPROTO correctly.
	* configure: Regenerate.
	* config/arm/t-semi, config/cris/t-cris, config/i386/t-beos,
	config/i386/t-cygming, config/i386/t-nto, config/ia64/t-hpux,
	t-freebsd, t-linux, t-netbsd, t-openbsd, t-rtems, t-vxworks,
	xtensa/t-xtensa: Remove setting of STMP_FIXPROTO.
	* config/i370/t-oe, config/i386/t-netware, config/pa/t-bsd,
	t-interix, t-linux-aout:  Delete files consisting only of
	setting of STMP_FIXPROTO.

	* config.host: Allow unknown hosts (not targets).  Allow
	ns32k-*-netbsdelf* as a host (not a target).  Remove redundant
	empty clauses.  Remove useless obsolete-configuration clause.
	Prune unsupported configuration list.  Collapse identical
	clauses for closely related systems.  Rewrite comment for
	unsupported hosts list.  Reorganize a little.

2003-09-22  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_common_signed_or_unsigned_type): Examine mode,
	not precision.

2003-09-22  David Edelsohn  <edelsohn@gnu.org>
	    Hartmut Penner  <hpenner@de.ibm.com>
	    Segher Boessenkool  <boessen@de.ibm.com>

	* config/rs6000/rs6000.c (altivec_in_gprs_p): Rename to ...
	(gpr_or_gpr_p): Test INT_REGNO_P and convert to boolean.
	(rs6000_split_altivec_in_gprs): Rename to ...
	(rs6000_split_multireg_move): Add support for update addressing.
	* config/rs6000/rs6000-protos.h: Same.
	* config/rs6000/altivec.md: Same.
	* config/rs6000/rs6000.md (movdi_internal32): Use new splitter for
	multiple GPRs.
	(movti): Remove TARGET_STRING || TARGET_POWERPC64 final condition.
	(movti_power): Use new splitter for multiple GPRs.
	(movti_string): Same.
	(movti_ppc64): Same.

2003-09-22  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-protos.h: Convert to ISO C90.
	* config/xtensa/xtensa.c: Convert to ISO C90.  Minor formatting fixes.

2003-09-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md: Revert 2003-09-17's patch.
	(andsi3): Set attr cc to set_zn when using shifts or adds.

2003-09-22  Bernardo Innocenti <bernie@develer.com>

	* doc/contrib.texi: Add Peter Barada, Paul Dale and myself.

2003-09-22  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h (MASK_RTD, TARGET_RTD, RETURN_POPS_ARGS):
	Resurrect -mrtd option.

2003-09-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/12281
	* config/darwin.c (machopic_validate_stub_or_non_lazy_ptr): Call
	mark_referenced instead of setting TREE_SYMBOL_REFERENCED.

2003-09-22  Olivier Hainque  <hainque@act-europe.fr>

	PR target/9786
	* reg-stack.c (convert_regs_1): Purge possible dead eh edges
	after potential deletion of trapping insn. Avoids later ICE
	from call to fixup_abnormal_edges.
	(convert_regs_2): Stack the current block successors before
	processing this block, that is, before the potential deletion of
	dead edges by convert_regs_1, because these edges have been used
	to initialize the predecessors count.

2003-09-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* real.c: Fix several nits in the head comment.

2003-09-21  Richard Henderson  <rth@redhat.com>

	* tree.h c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
	diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
	print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
	tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
	config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Revert.

2003-09-21  Richard Henderson  <rth@redhat.com>

	* tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
	(TREE_FILENAME, TREE_LINENO): Likewise.
	(set_tree_locus, copy_tree_locus, set_tree_file_line): New.
	(TREE_LOCUS_SET_P): New.
	* c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
	diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
	print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
	tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
	config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Update to match.

2003-09-21  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/vax/vax-protos.h: Convert to ISO C90.
	* config/vax/vax.c: Convert to ISO C90.

2003-09-21  Graham Stott  <grahams@btinternet.com>

       PR target/12353
       * config/i386/i386.md(ffs_no_cmove): Fix operand 2 constraint.

2003-09-21  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/12301
	* reorg.c (stop_search_p): Return 1 for insns that can
	throw internally.

2003-09-20  Richard Henderson  <rth@redhat.com>

	* c-format.c (gcc_diag_char_table): Add %J.
	(gcc_cdiag_char_table, gcc_cxxdiag_char_table): Likewise.
	(check_format_types): Fix wanted_type name lookup.
	(init_dynamic_diag_info): Setup %J.
	* diagnostic.c (text_specifies_location): Implement %J.
	* c-common.c, c-decl.c, c-objc-common.c, c-pragma.c, calls.c,
	dwarfout.c, expr.c, function.c, stmt.c, stor-layout.c, toplev.c,
	tree-inline.c, tree-optimize.c, varasm.c, config/arm/pe.c,
	config/i386/winnt.c, config/ia64/ia64.c, config/mcore/mcore.c,
	config/v850/v850.c, objc/objc-act.c: Use %J in diagnostics.

	* tree-inline.c: Include intl.h
	(inline_forbidden_p_1): Fix i18n of inline_forbidden_reason.
	* Makefile.in (tree-inline.o): Update.

2003-09-20  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_expand_carry_flag_compare): Fix
	transformation of a>=0 into (unsigned)a<0x80000000.

2003-09-20  Andrew Pinski <apinski@apple.com>

	* config/darwin.c (machopic_select_rtx_section): Fix check for PIC code.

2003-09-20  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Don't set (unused) DLLTOOL.

	* config/arm/t-linux, config/arm/t-netbsd, config/arm-t-semi:
	Remove obsolete references to ENQUIRE.

2003-09-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove --with-elf, which doesn't work.
	* configure: Regenerate.
	* config.gcc: Remove references to $elf, which does nothing.

	* config/i386/xm-vsta.h: Remove xm-file believed useless.
	* config.build (i386-vsta): Remove reference to it.
	* config.host (i386-vsta): Remove reference to it.

2003-09-19  Phil Edwards  <phil@codesourcery.com>

	* doc/install.texi:  Document the multiple testsuite options.

2003-09-19  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/install.texi (Specific): Add the specific versions of GCC
	where support for FreeBSD 1, HP-UX version 9 and older, and AIX
	version 3 and older was discontinued.

2003-09-19	Joel Sherrill <joel@oarcorp.com>

	* config/m68k/t-m68kbare, config/m68k/t-rtems: Change 68681 to
	68881.

2003-09-19  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h (TARGET_CPU_CPP_PREDEFINES): Add predefines
	for -m68030, -m68020-60 and -m68020-40.
	* config/m68k/m68k.h (TARGET_68030): New target flag.
	* config/m68k/m68k.h (MASK_RTD, TARGET_RTD, MASK_REGPARM,
	TARGET_REGPARM): Remove.
	* config/m68k/m68k.h: Regroup and renumber target flags.
	* config/m68k/m68k.h (TARGET_SWITCHES): Fix some tabulations.
	* config/m68k/m68k.h (RETURN_POPS_ARGS): Always evaluate to 0.
	* config/m68k/m68k.h (FUNCTION_ARG): Likewise.
	* config/m68k/m68k.h (FUNCTION_ARG_PARTIAL_NREGS): Likewise.
	* config/m68k/m68k-none.h: Use MASK_xxx values in M68K_CPU_xxx macros.

2003-09-19  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* config/m68k/t-rtems (m68k-*-rtems*): New.
	* config.gcc: Use config/m68k/t-rtems.

2003-09-19  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* config/mips/t-rtems: New.
	* config.gcc (mips*-*-rtems*): Use config/mips/t-rtems.

2003-09-19  Kelley Cook  <kelleycook@wideopenwest.com>

	* cgraph.c: Fix typo in debugging output.

2003-09-19  T. Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
	    Eric Botcazou <ebotcazou@libertysurf.fr>

	PR target/12166
	* config/sparc/sol2-c1.asm (start): Set __Argv if GCRT1.

2003-09-18  Mike Stump  <mrs@apple.com>

	* c-ppoutput.c (print):  Use fileline typedef for field 'line'.
	(print_line, maybe_print_line, cb_define, cb_undef, cb_include,
	cb_ident, cb_def_pragma):  Use fileline typedef.
	* cpphash.h (struct cpp_reader):  Likewise for field out.first_line.

2003-09-18  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c (gen_stdcall_suffix): Quit summation of
	total parm size if a parm has incomplete type.
	(gen_fastcall_suffix): Likewise.

2003-09-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* except.c (output_function_exception_table): Adjust last change
	to handle TYPE of INTEGER_CST.

2003-09-18  Mark Mitchell  <mark@codesourcery.com>

	PR target/11184
	* builtins.c (expand_builtin_apply): Use convert_memory_address
	before returning the value.

	* alias.c (find_base_value): Simplify use of
	convert_memory_address.
	(find_base_term): Likewise.
	* builtins.c (expand_builtin_stejmp_setup): Likewise.
	(expand_builtin_longjmp): Likewise.
	(expand_builtin_prefetch): Likewise.
	(get_memory_rtx): Likewise.
	(expand_builtin_return): Likewise.
	(expand_builtin_memcpy): Likewise.
	(expand_builtin_strncpy): Likewise.
	(expand_builtin_memset): Likewise.
	(expand_builtin_va_arg): Likewise.
	(expand_builtin_va_copy): Likewise.
	(expand_builtin_alloca): Likewise.
	* calls.c (expand_call): Likewise.
	* except.c (expand_builtin_extract_return_addr): Likewise.
	(expand_builtin_eh_return): Likewise.
	* explow.c (convert_memory_address): Define even when
	POINTER_EXTEND_UNSIGNED is not defined.  Do nothing if the address
	is already in the right mode.
	* explow.c (memory_address): Simplify use of convert_memory_address.
	(probe_stack_range): Likewise.
	* expmed.c (make_tree): Likewise.
	* expr.c (emit_block_move_in_libcall): Likewise.
	(expand_assignment): Likewise.
	(expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	(expand_function_end): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* stmt.c (expand_computed_goto): Likewise.

2003-09-18  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_unary_operation): Only transform
	(not (eq X Y)) into (ne X Y) when mode is BImode or STORE_FLAG_VALUE
	is -1.  RTL "not" is a bit-wise not, "~", not a logical not "!".

2003-09-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR target/11674
	* config/i386/i386.c (x86_emit_floatuns): Also handle SImode operand.

2003-09-18  Roger Sayle  <roger@eyesopen.com>

	* tree.def (FFS_EXPR, CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR,
	PARITY_EXPR): Delete unused tree codes.
	* c-common.c (c_common_truthvalue_conversion): Delete references
	to FFS_EXPR and POPCOUNT_EXPR.
	* c-pretty-print.c (pp_c_postfix_expression): Remove FFS_EXPR.
	(pp_c_expression): Likewise.
	* expr.c (expand_expr): Delete RTL expansion of FFS_EXPR, CLZ_EXPR,
	CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR.
	* fold-const.c (tree_expr_nonnegative_p): Remove FFS_EXPR, CLZ_EXPR,
	CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR.  Add support for calls to
	BUILT_IN_FFS, BUILT_IN_PARITY and BUILT_IN_POPCOUNT and their long
	and long long variants.

2003-09-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-pretty-print.h (pp_type_specifier_seq): Fix thinko.
	* c-pretty-print.c: Fix formatting.
	(pp_c_integer_constant): Append type annotation to literals.  Tidy.
	(pp_c_type_specifier): Tidy.
	(pp_c_compound_literal): New function.
	(pp_c_initializer): Simplify..
	(pp_c_initializer_list): Likewise.
	(pp_c_brace_enclosed_initializer_list): New function.
	(pp_c_postfix_expression): Simplify.

2003-09-17  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md (andsi3, iorsi3, xorsi3,
	one_complsi2, bit-clear, bit-set, iorqi3): Make them set_zn.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-optimize.c (tree_rest_of_compilation): Save and restore
	input_location.

2003-09-17  Daniel Jacobowitz  <drow@mvista.com>

	* config/rs6000/sysv4.h (LIB_LINUX_SPEC): Give -lpthread before -lc.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* cfg.c (dump_flow_info): Skip register dump if reg_n_info null.

2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_ld_hidden): Don't test gnu_ld_flag.
	* configure: Regenerate.

2003-09-17  Mark Mitchell  <mark@codesourcery.com>

	PR debug/12066
	* dbxout.c (dbxout_init): Use a langhook to find builtin types.
	* langhooks-def.h (lhd_return_null_tree_v): New function.
	(LANG_HOOKS_BUILTIN_TYPE_DECLS): New macro.
	(LANG_HOOKS_DECLS): Add it to the intializer.
	* langhooks.c (lhd_return_null_tree_v): New function.
	* langhooks.h (lang_hooks_for_decls): Add builtin_type_decls.

2003-09-17  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Quote gcc_config_arguments for configargs.h.
	* configure: Regenerated.
	* gccbug.in: Don't shell-expand gcc_config_arguments.

2003-09-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/11357
	* c-pretty-print.c (pp_c_floating_constant): Append
	type-annotation to floating constants.

2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris5.h (TARGET_OS_CPP_BUILTINS): Define _LONGLONG.
	Define _ABIO32.
	Use it for _MIPS_SIM.
	* config/mips/iris6-o32.h (TARGET_OS_CPP_BUILTINS): Removed.

	* config/mips/iris6-o32-as.h (SUBTARGET_ASM_OPTIMIZING_SPEC):
	Moved ...
	* config/mips/iris5.h (SUBTARGET_ASM_OPTIMIZING_SPEC): ... here,
	updating comment.
	Fixes PR target/10190.

2003-09-17  Daniel Jacobowitz  <drow@mvista.com>

	* config/rs6000/sysv4.h (LIB_LINUX_SPEC): Make -pthread apply
	to shared libraries.

2003-09-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11646
	* cfgrtl.c (purge_dead_edges) [JUMP_INSN]: Rematerialize the
	EDGE_ABNORMAL flag for EH edges.
	* toplev.c (rest_of_handle_cse): Delete unreachable blocks
	if dead edges were purged.

2003-09-16  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add target predefines.
	* config/m68k/m68k-none.h (CPP_CPU_DEFAULT_SPEC): Kill all definitions.
	* config/m68k/m68k-none.h (CPP_FPU_SPEC): Remove.
	* config/m68k/m68k-none.h (CPP_SPEC): Likewise.

2003-09-16  Ian Lance Taylor  <ian@wasabisystems.com>

	* cfgcleanup.c (label_is_jump_target_p): Correct use of table
	returned by tablejump_p.

2003-09-16  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2asm.c (dw2_asm_output_nstring): Add comment.

2003-09-16  Roger Sayle  <roger@eyesopen.com>

	PR bootstrap/12269
	* simplify-rtx.c (simplify_gen_relational): Allow the cmp_mode
	argument to be VOIDmode, taking the mode of the comparison from
	the operands.  Only call simplify_relational_operation if we
	know the mode of the comparison.  Honor FLOAT_STORE_FLAG_VALUE
	if comparison has a floating point result.  Ensure that the
	result is always of the specified mode.
	(simplify_replace_rtx): Simplify call to simplify_gen_relational.
	(simplify_unary_operation): Ensure the correct mode and cmp_mode
	are always passed to simplify_gen_relational.  Simplify NOT of
	comparison operator in any mode, not just BImode.
	(simplify_ternary_operation): Correct tests on the return value
	of simplify_relational_operation to use const_true_rtx, not
	const1_rtx.  Abort if it ever returns a non-constant result.

	* cfgloopanal.c (count_strange_loop_iterations): Use the function
	simplify_relational_operation, not simplify_gen_relational, if
	we're only interested in constant comparisons and will ignore
	non-constant results.

2003-09-16  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (tree_swap_operands_p): New function to determine
	the prefered ordering of operands.
	(fold): Numerous clean-ups.  Use tree_swap_operands_p when swapping
	operands to commutative, comparison or ternary operators.  Replace
	uses of TREE_SET_CODE with recursive call to fold.  Remove duplicate
	transformation of A ? B : C into !A ? C : B.

2003-09-16  Jakub Jelinek  <jakub@redhat.com>

	* config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/arm/linux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/rs6000/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/rs6000/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/sh/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/sparc/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
	* config/sparc/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Define.

2003-09-16  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (handle_warn_unused_result_attribute): New function.
	(c_common_attribute_table): Add warn_unused_result.
	(c_expand_expr): Issue warning when result of inlined function
	with warn_unused_result attribute is ignored.
	* calls.c (expand_call): Issue warning when result of function
	with warn_unused_result attribute is ignored.
	* c-common.h (STMT_EXPR_WARN_UNUSED_RESULT): Define.
	* expr.c (expr_wfl_stack): Define.
	(expand_expr) <case EXPR_WITH_FILE_LOCATION>: If ignore,
	pass const0_rtx as target.  Chain locations into expr_wfl_stack.
	* tree-inline.c (expand_call_inline): Set STMT_EXPR_WARN_UNUSED_RESULT
	bit if inlined function has warn_unused_result attribute.
	* input.h (expr_wfl_stack): Declare.
	* doc/extend.texi: Document warn_unused_result attribute.

2003-09-15  Alexandre Oliva  <aoliva@redhat.com>

	* cpplib.c (do_pragma): Remove unnecessary cb_line_change.

2003-09-15  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_multibss_section_type_flags): Add
	ATTRIBUTE_UNUSED.
	(call_insn_operand): For PIC, don't allow a direct call to a
	function in a different section than the current one.

2003-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/invoke.texi (Warning Options): Add missing hyphen before
	"Wimport".  Change "-Wno-endif-labels" to "-Wendif-labels".
	Move "-Wold-style-definition" to the C-only section.
	Fix the ordering of the warning options.

2003-09-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* gcse.c (remove_reachable_equiv_notes): New.
	replace_store_insn): Call it.  Update antic list.
	(store_killed_in_insn): Take REG_EQUAL notes into account.
	(build_store_vectors, delete_store): Add parameter to
	replace_store_insn call.

2003-09-15  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (LEGITIMATE_PIC_OPERAND_P): Use
	SYMBOL_REF_LOCAL_P.

2003-09-15  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.h (DEFAULT_FUNCTION_ARG_PADDING): New.
	(FUNCTION_ARG_PADDING): Use DEFAULT_FUNCTION_ARG_PADDING.
	* config/ia64/ia64.c (ia64_hpux_function_arg_padding):
	Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_function_arg_padding):
	Likewise.
	* config/rs6000/rs6000.c (function_arg_padding): Likewise.
	* config/sparc/sparc.c (function_arg_padding): Likewise.

2003-09-15  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (schedule_block): Use ready_remove_first instead
	of choose_ready for non-dfa insn scheduling.

2003-09-15  Andreas Jaeger  <aj@suse.de>
	    Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

	* doc/invoke.texi (Warning Options): Describe -Wold-style-definition.
	* c-opts.c (c_common_handle_option): Handle OPT_Wold_style_definition.
	* c-parse.in: Warn about old-style parameter definition.
	* c-common.c: Define warn_old_style_defintion.
	* c-common.h: Declare it.
	* c.opt: Add Wold-style-defintion.

2003-09-15  Andreas Jaeger  <aj@suse.de>

	* config/rs6000/altivec.h: Convert () prototypes to ISO C90.
	* config/rs6000/rs6000.c: Likewise.

2003-09-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/10914
	* expr.h (get_condition, canonicalize_condition): Declaration changed.
	* cfgloopanal.c (simple_loop_exit_p): Add parameter to a get_condition
	and canonicalize_condition calls.
	* gcse.c (fis_get_condition, delete_null_pointer_checks_1,
	delete_null_pointer_checks): Ditto.
	* ifcvt.c (noce_get_alt_condition, noce_get_condition): Ditto.
	* predict.c (estimate_probability, expected_value_to_br_prob): Ditto.
	* loop.c (check_dbra_loop, get_condition_for_loop): Ditto.
	(canonicalize_condition, get_condition): Allow to return comparisons
	of cc mode registers.
	* loop-unswitch.c (may_unswitch_on_p, unswitch_single_loop): Allow
	cc mode registers comparison in condition.

2003-09-12  Mark Mitchell  <mark@codesourcery.com>

	* coverage.c (create_coverage): Do not call pushlevel/poplevel.
	* langhooks-def.h (lhd_do_nothing_iii_return_null_tree): New
	function.
	* langhooks.c (lhd_do_nothing_iii_return_null_tree): Define it.

2003-09-14  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_comparison): Convert
	(ne (and (lshiftrt (xor X CST) Y) 1) 0) into
	(eq (and (lshiftrt X Y) 1) 0).

2003-09-14  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Follow spelling conventions.
	* cpphash.h: Likewise.
	* fold-const.c: Likewise.

2003-09-14  Alexandre Oliva  <aoliva@redhat.com>

	* c-ppoutput.c (cb_line_change): Revert 2003-08-04's change.
	* c-lex.c (cb_line_change): Skip line changing whenever
	c-ppoutput.c would.

2003-09-14  Steven Bosscher  <steven@gcc.gnu.org>

	* ra.c: Convert to ISO C90 prototypes.
	* ra-build.c: Likewise.
	* ra-colorize.c: Likewise.
	* ra-debug.c: Likewise.
	* ra-rewrite.c: Likewise.

2003-09-14  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (%.dvi): Remove excess $(docdir).

2003-09-14  Richard Sandiford  <rsandifo@redhat.com>

	* function.c (STACK_BYTES): Move definition to head of file.
	(assign_parms): Don't pass current_function_pretend_args_size
	directly to SETUP_INCOMING_VARARGS.  For partial register arguments,
	round current_function_pretend_args_size up to STACK_BYTES.  Skip any
	excess before laying out the argument.

2003-09-14  Andreas Jaeger  <aj@suse.de>

	* objc/objc-act.c: Convert to ISO C90 prototypes.
	* objc/objc-act.h: Likewise.

2003-09-14  Olaf Hering  <olh@suse.de>

	* config/rs6000/rs6000.c: Fix typo: Remove extra ')'.

2003-09-13  Andrew Pinski <pinskia@physics.uc.edu>

	PR target/12021
	* config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Remove the asserts
	as they already are done in config/m68k/m68k.h.
	* config/m68k/netbsd.h (TARGET_OS_CPP_BUILTINS): Likewise

	* config/rs6000/rs6000.c (GEN_LOCAL_LABEL_FOR_SYMBOL): Remove.
	(machopic_output_stub): Only generate pic base symbols when using pic
	and generate them in the form L00000000$spb.

2003-09-13  Richard Henderson  <rth@redhat.com>

	* cgraphunit.c (cgraph_assemble_pending_functions): Export.
	(cgraph_finalize_function): Revert TREE_ASM_WRITTEN check.
	* cgraph.h: Update.

2003-09-12  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c: Fix typos in previous.

2003-09-12  Ziemowit Laski  <zlaski@apple.com>

	* pretty-print.c (pp_construct): Use xcalloc instead of xmalloc
	when allocating pp->buffer.

2003-09-12  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.c (machopic_select_rtx_section): Use
	const_data_section for things that might require relocation.

2003-09-12  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/12264
	* tree-inline.c (inline_forbidden_p_1): Cast the 3rd arg to tree.

2003-09-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/elf.h (ASM_SPEC): Remove no-density option.  Reformat.
	* config/xtensa/linux.h (ASM_SPEC): Likewise.
	* config/xtensa/xtensa.h (TARGET_SWITCHES): Remove -mbig-endian,
	-mlittle-endian, -m[no-]density, -m[no-]abs, -m[no-]addx, -m[no-]mac16,
	-m[no-]mul16, -m[no-]mul32, -m[no-]nsa, -m[no-]minmax, -m[no-]sext,
	-m[no-]booleans, -mhard-float, -msoft-float, -m[no-]hard-float-div,
	-m[no-]hard-float-recip, -m[no-]hard-float-sqrt, and
	-m[no-]hard-float-rsqrt options.  Delete corresponding MASK_* macros
	and redefine corresponding TARGET_* macros with constants from the
	xtensa-config.h header.
	* doc/invoke.texi (Option Summary, Xtensa Options): Remove documention
	for the options listed above.

2003-09-12  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000-protos.h:  Use C90 prototypes.
	* config/rs6000/rs6000-c.c:  Ditto.
	* config/rs6000/rs6000.c:  Ditto.
	* config/rs6000/ sysv4.h:  Ditto.

2003-09-12  Chris Lattner <sabre@nondot.org>

	* loop.c: Move comments describing BIV's and GIV's to top of file

2003-09-12  Roger Sayle  <roger@eyesopen.com>

	PR optimization/8967
	* alias.c (write_dependence_p): Modify to take an additional constp
	argument that controls whether the UNCHANGING_RTX_P flags are used.
	(anti_dependence, output_dependence): Adjust write_dependence_p
	callers to pass this additional argument, to return the same result.
	(unchanging_anti_dependence): New variant of anti_dependence that
	ignores the UNCHANGING_RTX_P property on memory references.
	* rtl.h (unchaning_anti_dependence): Prototype here.
	* flow.c (init_propagate_block): Place fake constant mem writes on
	the mem_set_list so that dead writes to const variables are deleted.
	(insn_dead_p): Change anti_dependence to unchanging_anti_dependence.
	(mark_used_regs): Likewise.

2003-09-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/mcore/mcore-protos.h (mcore_r15_operand_p): Declare.
	(mcore_secondary_reload_class): Declare.
	(mcore_output_inline_const_forced): Remove.
	* config/mcore/mcore.md (movsi): Remove the code that forced
	non-inlineable constants into a register if the target was r15
	or the stack pointer.  Remove constant restrictions from the main
	define_insn.  Remove r <- I, r <- M and r <- N alternatives in favor
	of an r <- P alternative.  Remove fallback define_insn for reload.
	(movhi, movqi): Use gen_lowpart rather than gen_SUBREG.  Remove reload
	define_insn.  Use mcore_output_move in the remaining define_insn.
	Adjust condition and constraints in the way as for movsi.
	(movdi): Always split unacceptable constants into two.  Use
	simplify_gen_subreg instead of operand_subword{,_force}.
	* config/mcore/mcore.c (mcore_output_inline_const_forced): Remove.
	(mcore_output_move): Support HImode and QImode moves as well.
	(mcore_m15_operand_p): New function.
	(mcore_reload_class): Use it to detect cases where LRW_REGS are better.
	(mcore_secondary_reload_class): New function.
	* config/mcore/mcore.h (SECONDARY_RELOAD_CLASS): Redefine in
	terms of mcore_secondary_reload_class.

2003-09-11  Mike Stump  <mrs@apple.com>

	* c-lex.c (fe_file_change): Don't transform to_line with SOURCE_LINE.

2003-09-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_logarithm): if N can't be truncated to
	MODE exactly, then only convert logN(N) -> 1.0 if
	flag_unsafe_math_optimizations is set.

	* builtins.c (builtin_dconsts_init, dconstpi, dconste,
	init_builtin_dconsts): Delete.
	* emit-rtl.c (dconstpi, dconste): Define.
	(init_emit_once): Initialize dconstpi & dconste.
	* real.h (dconstpi, dconste): Declare.

2003-09-11  Alexandre Oliva  <aoliva@redhat.com>

	PR fortran/11522
	* dwarf2out.c (gen_inlined_subroutine_die): Emit abstract function
	for ultimate origin even if block is abstract.

2003-09-11  Roger Sayle  <roger@eyesopen.com>

	* combine.c (combine_simplify_rtx): Move several NOT and NEG
	optimizations from here...
	* simplify-rtx.c (simplify_unary_operation): to here.  Recursively
	simplify expressions using simplify_gen_*ary instead of gen_rtx_*.

2003-09-11  Richard Henderson  <rth@redhat.com>

	* cgraphunit.c (cgraph_finalize_function): Add nested arg.
	Tweek tests for function already generated.
	(cgraph_expand_function): Don't double announce in !unit-at-a-time.
	* cgraph.h (cgraph_finalize_function): Update for extra arg.
	* c-decl.c (finish_function): Likewise.

2003-09-10  Joe Buck  <jbuck@welsh-buck.org>

	* c-decl.c (poplevel): Eliminate use of |= in function_body assignment.

2003-09-10  Jerry Quinn  <jlquinn@optonline.net>

	* real.c: Update URL to VAX floating point docs.
	(decode_vax_d): Extract 8 exponent bits instead of 7.

2003-09-10  Ian Lance Taylor  <ian@wasabisystems.com>

	* combine.c (force_to_mode): Set fuller_mask based only on mask,
	not op_mode.

2003-09-11  Jan Hubicka  <jh@suse.cz>

	* c-objc-common.c (c_cannot_inline_tree_fn): Warn
	on why function is not inlinable; do not check
	the body.
	(inline_forbidden_p): Move to...
	* tree-inline.c (inline_forbidden_p_1): ... here; Add warnings;
	deal with alloca, longjmp.
	(inline_forbidden_p): New static function.
	(find_alloca_call_1, find_alloca_call, find_builtin_longjmp_call_1,
	find_builtin_longjmp_call): Kill.

2003-09-10  Richard Henderson  <rth@redhat.com>

	* cgraph.h (struct cgraph_node): Rename lowered to analyzed.
	* cgraphunit.c: Update to match.
	(record_call_1): Rearrange.  Call lang hook for language nodes.
	(cgraph_analyze_function): Don't call lower_function.
	* langhooks.h (struct lang_hooks_for_callgraph): Replace
	lower_function with analyze_expr.
	* langhooks-def.h: Update to match.
	* langhooks.c (lhd_callgraph_analyze_expr): New.

2003-09-10  Martin Husemann  <martin@duskware.de>

	PR target/11965
	* config/sparc/sparc.c (sparc_v8plus_shift): Protect against
	constants greater than 63.
	* config/sparc/sparc.md (ashlsi3, ashrsi3, lshrsi3): Protect
	against constants greater than 31.
	(*ashldi3_sp64, *ashrdi3_sp64, *lshrdi3_sp64): Protect against
	constants greater than 63.

2003-09-09  Richard Henderson  <rth@redhat.com>

	* cgraphunit.c (cgraph_finalize_function): Remove unused argument.
	* cgraph.h (cgraph_finalize_function): Update.
	* c-decl.c (finish_function): Update.

2003-09-09  Devang Patel  <dpatel@apple.com>

	* config/darwin.h (LINK_SPEC): Pass -nofixprebinding to linker.
	* doc/invoke.texi: Document new Darwin linker option -nofixprebinding.

2003-09-09  Eric Christopher  <echristo@redhat.com>

	* configure.in: Change usage of 'head' to 'sed 1q'.
	* configure: Regenerate.

2003-09-09  Richard Henderson  <rth@redhat.com>

	* except.c: Include cgraph.h.
	(output_function_exception_table): Invoke
	cgraph_varpool_mark_needed_node.
	* Makefile.in (except.o): Update.

2003-09-07  Kelley Cook  <kelleycook@wideopenwest.com>

	* Makefile.in: Define REMAKEFLAGS for LANGUAGES & BOOT_CFLAGS
	and use it throughout.

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

	* builtins.c (real_dconstp, fold_builtin_logarithm,
	fold_builtin_exponent): New, split out from fold_builtin.  Also
	generalize to add log2, log10, exp2 and exp10/pow10 equivalents.
	* emit-rtl.c (dconst3, dconst10, dconstthird): New.
	(init_emit_once): Initialize new dconsts, use ARRAY_SIZE in lieu
	of hardcoded array size.
	* fold-const.c (fold): Add cases for exp2, exp10 and pow10.
	(tree_expr_nonnegative_p): Likewise.
	* real.h (dconst3, dconst10, dconstthird): New.

2003-09-09  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_finalize_function): Fix handling of extern
	inline functions.
	(cgraph_finalize_compilation_unit): Fix crash when dealing with lost
	DECL_SAVED_TREE.

2003-09-09  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_cabs): Protect the complex argument
	against multiple evaluation when optimizing cabs* into sqrt*.

2003-09-09  Jan Hubicka  <jh@suse.cz>

	* varasm.c (notice_global_symbol):  Properly deal with weak symbols.

2003-09-08  Kelley Cook <kelleycook@wideopenwest.com>

	* Makefile.in: Revert yesterday's change.

2003-09-08  Bernardo Innocenti  <bernie@develer.com>
	    Peter Barada <peter@baradas.org>

	* config/m68k/coff.h (REGISTER_NAMES): Add fake register `argptr'
	* config/m68k/hp320.h (REGISTER_NAMES): Likewise.
	* config/m68k/linux.h (REGISTER_NAMES): Likewise.
	* config/m68k/m68kelf.h (REGISTER_NAMES): Likewise.
	* gcc/config/m68k/sgs.h (REGISTER_NAMES): Likewise.
	* config/m68k/m68k-protos.h (m68k_initial_elimination_offset): Add prototype.
	* config/m68k/m68k.c (m68k_frame): New struct, simular to ix86 back-end.
	(m68k_compute_frame_layout): New function.
	(m68k_initial_elimination_offset): New function.
	(m68k_output_function_prologue): ColdFire-specific movem handling.
	(m68k_output_function_epilogue): Likewise.
	* config/m68k/m68k.h (FIRST_PSEUDO_REGISTER): Make room for argptr reg.
	(ARG_POINTER_REGNUM): Add new definition.
	(INITIAL_FRAME_POINTER_OFFSET): Remove macro.
	(ELIMINABLE_REGS): Define new macro, like in ix86 back-end.
	(CAN_ELIMINATE): Likewise.
	(INITIAL_ELIMINATION_OFFSET): Likewise.

2003-09-08  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c (m68k_output_function_prologue): Simplify
	by removing redundant variable cfa_store_offset.

2003-09-08  Mark Mitchell  <mark@codesourcery.com>

	* langhooks-def.h (lhd_register_builtin_type): New function.
	(LANG_HOOKS_REGISTER_BUILTIN_TYPE): New macro.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): Add register_builtin_type.
	* langhooks.c (lhd_register_builtin_type): New function.
	* c-common.h (c_register_builtin_type): Declare.
	* c-common.c (c_register_builtin_type): New function.
	* c-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
	c_register_builtin_type.
	* config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Remove __fpreg,
	__float80, and __float128 macros.
	* config/ia64/ia64.c (ia64_init_builtins): Create __fpreg,
	__float80, and __float128 types.

2003-09-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def
	(BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
	BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
	BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT): New.
	* builtins.def (BUILT_IN_CACOS, BUILT_IN_CACOSF, BUILT_IN_CACOSH,
	BUILT_IN_CACOSHF, BUILT_IN_CACOSHL, BUILT_IN_CACOSL,
	BUILT_IN_CARG, BUILT_IN_CARGF, BUILT_IN_CARGL, BUILT_IN_CASIN,
	BUILT_IN_CASINF, BUILT_IN_CASINH, BUILT_IN_CASINHF,
	BUILT_IN_CASINHL, BUILT_IN_CASINL, BUILT_IN_CATAN,
	BUILT_IN_CATANF, BUILT_IN_CATANH, BUILT_IN_CATANHF,
	BUILT_IN_CATANHL, BUILT_IN_CATANL, BUILT_IN_CCOS, BUILT_IN_CCOSF,
	BUILT_IN_CCOSH, BUILT_IN_CCOSHF, BUILT_IN_CCOSHL, BUILT_IN_CCOSL,
	BUILT_IN_CEXP, BUILT_IN_CEXPF, BUILT_IN_CEXPL, BUILT_IN_CPOW,
	BUILT_IN_CPOWF, BUILT_IN_CPOWL, BUILT_IN_CPROJ, BUILT_IN_CPROJF,
	BUILT_IN_CPROJL, BUILT_IN_CSIN, BUILT_IN_CSINF, BUILT_IN_CSINH,
	BUILT_IN_CSINHF, BUILT_IN_CSINHL, BUILT_IN_CSINL, BUILT_IN_CSQRT,
	BUILT_IN_CSQRTF, BUILT_IN_CSQRTL, BUILT_IN_CTAN, BUILT_IN_CTANF,
	BUILT_IN_CTANH, BUILT_IN_CTANHF, BUILT_IN_CTANHL, BUILT_IN_CTANL):
	New.
	* doc/extend.texi: Document new builtins.

2003-09-09  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_varpool_finalize_decl): Sanity check duplicated
	finalization.
	* cgraphunit.c (decide_is_fnction_needed): Avoid special case of nested
	functions, check for COMDAT.
	(cgraph_assemble_pending_functions): Break out from...
	(cgraph_finalize_function): ... here; allow redefinig of extern inline
	functions.
	(record_call_1): Record function references only in non-unit-at-a-time
	mode.
	(cgraph_analyze_function): Reset current_function_decl.
	(cgraph_finalize_compilation_unit):  Assemble pending functions.

2003-09-08  Mark Mitchell  <mark@codesourcery.com>

	* mklibgcc.in (libcc.a): Depend on stmp-dirs.
	(libgov.a): Likewise.
	(libgcc_eh.a): Likewise.

2003-09-08  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (operand_equal_p): Clarify documentation.

2003-09-08  Richard Henderson  <rth@redhat.com>

	* c-decl.c (c_expand_body_1): Push and pop function context here.
	* tree-optimize.c (tree_rest_of_compilation): ... not here.  Take
	nested argument instead of computing nesting ourselves.

2003-09-08  Jakub Jelinek  <jakub@redhat.com>

	* toplev.c (rest_of_handle_stack_regs): Call split_all_insns before
	regstack if optimizing but not scheduling after reload.

2003-09-08  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (struct machine_function): New type.
	(TARGET_HAVE_TLS, TARGET_CANNOT_FORCE_CONST_MEM): Define.
	(sparc_override_options): Initialize init_machine_status.
	(tls_symbolic_operand, tgd_symbolic_operand, tld_symbolic_operand,
	tie_symbolic_operand, tle_symbolic_operand): New functions.
	(symbolic_operand): Disallow tls_symbolic_operand.
	(symbolic_memory_operand): Likewise.
	(tls_call_delay, sparc_cannot_force_const_mem, legitimate_constant_p,
	constant_address_p, legitimate_pic_operand_p, legitimate_address_p):
	New functions.
	(sparc_tls_symbol): New variable.
	(sparc_tls_get_addr, sparc_tls_got, legitimize_tls_address,
	legitimize_address): New functions.
	(print_operand): Handle %&.
	(sparc_init_machine_status, get_some_local_dynamic_name,
	get_some_local_dynamic_name_1): New functions.
	(sparc_output_dwarf_dtprel): New function.
	* config/sparc/sparc.h (CONSTANT_ADDRESS_P): Moved into
	constant_address_p.
	(LEGITIMATE_PIC_OPERAND_P): Moved into legitimate_pic_operand_p.
	(LEGITIMATE_CONSTANT_P): Moved into legitimate_constant_p.
	(GO_IF_LEGITIMATE_ADDRESS): Moved into legitimate_address_p.
	(LEGITIMIZE_ADDRESS): Moved into legitimize_address.
	(PRINT_OPERAND_PUNCT_VALID_P): Add '&'.
	(TARGET_TLS, TARGET_SUN_TLS, TARGET_GNU_TLS): Define.
	(ASM_OUTPUT_DWARF_DTPREL): Define.
	(PREDICATE_CODES): Add tgd_symbolic_operand, tld_symbolic_operand,
	tie_symbolic_operand, tle_symbolic_operand.
	* config/sparc/sparc.md (UNSPEC_TLSGD, UNSPEC_TLSLDM, UNSPEC_TLSLDO,
	UNSPEC_TLSIE, UNSPEC_TLSLE, UNSPEC_TLSLD_BASE): New constants.
	(tls_call_delay): New attribute.
	(in_call_delay): Use it.
	(movqi, movhi, movsi, movdi): Call legitimize_tls_address if needed.
	(tgd_hi22, tgd_lo10, tgd_add32, tgd_add64, tgd_call32, tgd_call64,
	tldm_hi22, tldm_lo10, tldm_add32, tldm_add64, tldm_call32, tldm_call64,
	tldo_hix22, tldo_lox10, tldo_add32, tldo_add64, tie_hi22, tie_lo10,
	tie_ld32, tie_ld64, tie_add32, tie_add64, tle_hix22_sp32,
	tle_lox10_sp32, tle_hix22_sp64, tle_lox10_sp64): New insns.
	(tldo_ldub_sp32, tldo_ldub1_sp32, tldo_ldub2_sp32, tldo_ldsb1_sp32,
	tldo_ldsb2_sp32, tldo_ldub_sp64, tldo_ldub1_sp64, tldo_ldub2_sp64,
	tldo_ldub3_sp64, tldo_ldsb1_sp64, tldo_ldsb2_sp64, tldo_ldsb3_sp64,
	tldo_lduh_sp32, tldo_lduh1_sp32, tldo_ldsh1_sp32, tldo_lduh_sp64,
	tldo_lduh1_sp64, tldo_lduh2_sp64, tldo_ldsh1_sp64, tldo_ldsh2_sp64,
	tldo_lduw_sp32, tldo_lduw_sp64, tldo_lduw1_sp64, tldo_ldsw1_sp64,
	tldo_ldx_sp64, tldo_stb_sp32, tldo_stb_sp64, tldo_sth_sp32,
	tldo_sth_sp64, tldo_stw_sp32, tldo_stw_sp64, tldo_stx_sp64): New
	insns.
	* config/sparc/sparc-protos.h (legitimate_constant_p,
	constant_address_p, legitimate_pic_operand_p, legitimate_address_p,
	legitimize_tls_address, legitimize_address, tls_symbolic_operand,
	tls_call_delay, sparc_output_dwarf_dtprel): New prototypes.
	* config/sparc/linux.h (TARGET_GNU_TLS, TARGET_SUN_TLS): Define.
	* config/sparc/linux64.h (TARGET_GNU_TLS, TARGET_SUN_TLS): Likewise.
	* configure.in (sparc*-*-*): Add TLS check.
	* configure: Rebuilt.

2003-09-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/11689
	* config/i386/i386.c (memory_address_length): Fix computation when
	the base is esp or ebp.

2003-09-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/11852
	* varasm.c (initializer_constant_valid_p): Correct logic for
	CONSTRUCTORs.

2003-09-07  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_operands): New function to expand an operand pair.
	(expand_expr): Call expand_operands whenever we need to expand both
	operands of a binary operator.
	(do_store_flag): Likewise for operands of comparison operations.

2003-09-07  Roger Sayle  <roger@eyesopen.com>

	* combine.c (combine_simplify_rtx): Don't convert -(A*B) into
	(-A)*B if we care about sign-dependent rounding.

2003-09-07  Gabriel Dos Reis  <gcc@integrable-solutions.net>

	* c-pretty-print.h (pp_c_left_brace): Declare.
	(pp_c_right_brace): Likewise.
	* c-pretty-print.c (pp_c_left_brace): Now a function
	(pp_c_right_brace): Likewise.

2003-09-07  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_simplify_condjump): Fix again the preivous patch.

2003-09-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* diagnostic.c (warn_deprecated_use): Move to toplev.c

2003-09-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* langhooks.c (lhd_print_error_function): Move from diagnostic.c.
	* Makefile.in (langhooks.o): Depend on diagnostic.h

2003-09-06  James E Wilson  <wilson@tuliptree.org>

	* loop.c (loop_regs_update): Delete else clause for PATTERN rtx and
	simplify.

2003-09-07  Kelley Cook  <kelleycook@wideopenwest.com>

	* Makefile.in: Define $REMAKE to be $MAKE with LANGUAGES & BOOT_CFLAGS
	and use it throughout.

2003-09-07  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_simplify_condjump): Fix my previous patch.

	* toplev.c  (rest_of_decl_compilation):  Do not finalize external
	virables.

	* cgraph.c (cgraph_mark_reachable_node): Only enqueue finalized
	functions.
	(cgraph_varpool_finalize_decl): Notice global symbol when needed.

2003-09-06  Jan Hubicka  <jh@suse.cz>

	PR target/12070
	* calls.c (emit_library_call_value_1): Fix saving of BLKmode arguments.

	PR opt/12082
	* cfgcleanup.c (try_simplify_condjump): Avoid unreachable code warning.

2003-09-06  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* diagnostic.c (announce_function): Move to toplev.c.

2003-09-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcse.c (expr_equiv_p): Don't consider anything to be equal to
	volatile mem.

2003-09-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ggc-common.c (init_ggc_heuristics): Don't use the heuristics
	when gc checking is enabled.

2003-09-06  Steven Bosscher  <steven@gcc.gnu.org>

	PR c/9862
	* c-decl.c (c_expand_body_1): Move return warning from here...
	(finish_function): ...to here.

2003-09-05  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Always return
	a subset of the input class.

2003-09-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i860/i860.c: Follow spelling conventions.
	* config/i860/i860.h: Likewise.
	* config/sh/sh.h: Likewise.

2003-09-05  Nitin Yewale  <NitinY@KPITCummins.com>

	* config/h8300/h8300-protos.h: Declare h8300_hard_regno_rename_ok
	* config/h8300/h8300.h (HARD_REGNO_RENAME_OK): New.
	* config/h8300/h8300.c (h8300_hard_regno_rename_ok): New.

2003-09-05  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	PR optimization/1823
	* expmed.c (expand_divmod <EXACT_DIV_EXPR>): Use an unsigned
	multiplication to implement division by constant integer.

2003-09-05  Jan Hubicka  <jh@suse.cz>

	* opts.c (decode_options): Enable unit-at-a-time at -O2.
	* params.def (max-inline-insns-single): Set to 500
	(max-inline-insns-auto): Set to 150
	* invoke.texi (max-inline-insns-single, max-inline-insns-auto): Update.

2003-09-04  Richard Henderson  <rth@redhat.com>

	* cgraph.c (cgraph_mark_reachable_node): Split out from ...
	(cgraph_mark_needed_node): Remove needed argument.
	* cgraph.h: Update to match.
	* cgraphunit.c (decide_is_function_needed): Split out from ...
	(cgraph_finalize_function): Reorg.  Avoid deferred_inline_function
	if we generated the function.
	(record_call_1): Update for cgraph_mark_reachable_node.
	* varasm.c (mark_referenced): Likewise.
	* objc/objc-act.c (mark_referenced_methods): Likewise.

2003-09-04  DJ Delorie  <dj@redhat.com>

	* targhooks.c: Add comment explaining the migration process.

2003-09-04  Eric Christopher  <echristo@redhat.com>

	* config/frv/t-frv: Fix path for frv-abi.h.
	* config/frv/frv-asm.h: Fix string concatenation.

2003-09-04  DJ Delorie  <dj@redhat.com>

	* builtins.c (apply_args_size): Guard against a NULL cfun.
	(expand_builtin_apply_args_1): Likewise.
	(expand_builtin_apply): Likewise.
	Fixes PR bootstrap/12172.

2003-09-04  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_as_ix86_cmov_sun_syntax): Check if
	assembler supports Sun syntax for cmov.
	* configure: Regenerate.
	* config.in: Likewise.
	* config/i386/i386.c: Rename CMOV_SUN_AS_SYNTAX to
	HAVE_AS_IX86_CMOV_SUN_SYNTAX.
	* config/i386/sol2.h (CMOV_SUN_AS_SYNTAX): Remove.
	Fixes PR target/12101.

2003-09-04  Matt Austern  <austern@apple.com>

	* c-common.c (fname_as_string): Use lang_hooks.decl_printable_name
	with verbosity 0, instead of DECL_NAME, for human-readable string.

2003-09-04  Eric Christopher  <echristo@redhat.com>

	* targhooks.c (default_return_in_memory): Allow
	unconverted ports.

2003-09-04  Eric Christopher  <echristo@redhat.com>

	* targhooks.c (default_return_in_memory): Fix typo
	in last checkin.

2003-09-04  Eric Christopher  <echristo@redhat.com>

	* targhooks.c (default_return_in_memory): Fix default
	definition.

2003-09-04  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c (m68k_coff_asm_named_section): Restore
	deleted function.
	* config/m68k/coff.h (M68K_TARGET_COFF): Add flag used to
	enable coff-only code in m68k.c.

2003-09-04  Nick Clifton  <nickc@redhat.com>

	* config.gcc: Add v850e1 target.  Allow --with-cpu to accept
	v850e1.
	* config/v850/v850.h: Accept v850e1 as a default CPU.
	Accept -mv850e1 as a command line option.
	* doc/invoke.texi: Document new -mv850e1 command line switch.
	* config/v850/t-v850: Treat -mv850e1 as a multilib alias for
	-mv850e.

2003-09-04  Nick Clifton  <nickc@redhat.com>

	* config.gcc (v850e-*-*): Use t-v850e makefile fragment.
	* config/v850/t-v850: Only produce one extra multilib - for
	the v850e.
	* config/v850/t-v850e: New file: Only produce one extra
	multilib - for the v850.

2003-09-04  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/libgcc-ia64.ver: Export _Unwind_GetBSP@@GCC_3.3.2.
	* config/ia64/unwind-ia64.c (_Unwind_GetBSP): New function.
	* unwind.h (_Unwind_GetBSP): New prototype.
	* libgcc-std.ver: Add empty GCC_3.3.2 version.
	* mkmap-symver.awk: For symbol versions with no exported symbols,
	don't put anything into version script, just change all symbol
	versions which inherit from it to inherit from its ancestor.

2003-09-04  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (mips_expand_prologue): Convert to
	calls.struct_value_rtx hook.
	(reg_or_const_float_1_operand): New.
	* config/mips/mips.h: Update Comments.
	(mips_arg): Add reg_or_const_float_1_operand.
	* config/mips/mips.md (divdf3); Convert to expander.
	(divsf3): Ditto.
	(*divdf3): New pattern.
	(*divsf3): Ditto.

2003-09-04  Jan Hubicka  <jh@suse.cz>

	* toplev.c (wrapup_global_declarations): Fix final pass in
	unit-at-atime mode.

2003-09-04  Mark Mitchell  <mark@codesourcery.com>

	* doc/extend.texi: Document removal of cast-as-lvalue extension in
	C++.

2003-09-04  Nicolas Roche  <roche@act-europe.fr>

	* gcc.c (process_command): Fix typo.

2003-09-03  David O'Brien  <obrien@FreeBSD.org>

	optimization/11980
	* config/i386/freebsd.h (SIZE_TYPE): Support TARGET_64BIT.
	(PTRDIFF_TYPE): Likewise.
	(WCHAR_TYPE_SIZE): Likewise.

2003-09-03  DJ Delorie  <dj@redhat.com>

	* targhooks.c: New file.
	* targhooks.h: New file.
	* Makefile.in: Add targhooks.o support.
	(function.o): Depend on$(TARGET_H).
	(stmt.o): Likewise.
	(combine.o): Depend on $(TREE_H) and $(TARGET_H).
	* builtins.c (apply_args_size, expand_builtin_apply_args_1,
	expand_builtin_apply): Convert to calls.struct_value_rtx hook.
	(expand_builtin_saveregs): Convert to
	calls.expand_builtin_saveregs hook.
	* c-decl.c (start_decl): Handle new calls.promote_prototypes hook
	here, instead of ...
	(get_parm_info) ... here.
	(store_parm_decls_oldstyle): Convert to calls.promote_prototypes
	hook.
	(finish_function): Handle calls.promote_prototypes hook here too.
	* c-typeck.c (convert_arguments): Convert to
	calls.promote_prototypes hook.
	(c_convert_parm_for_inlining): Likewise.
	* calls.c (initialize_argument_information): Convert to
	calls.promote_function_args hook.
	(expand_call): Convert to calls.struct_value_rtx,
	calls.strict_argument_naming,
	calls.pretend_outgoing_varargs_named, and
	calls.promote_function_return hooks.  Pass fndecl to
	aggregate_value_p.  Initialize CUMULATIVE_ARGS before calling
	hooks, so they can use that.
	(emit_library_call_value_1): Likewise.
	* combine.c (setup_incoming_promotions): Convert to
	calls.promote_function_args hook.
	* emit-rtl.c: Convert to calls.struct_value_rtx hook.
	* expr.c (expand_assignment): Pass call to aggregate_value_p.
	(expand_expr): Likewise.
	* expr.h: Remove support for SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	RETURN_IN_MEMORY macro defaults.
	* final.c (profile_function): Convert to calls.struct_value_rtx
	hook.
	* function.c (aggregate_value_p): Accept function type tree as
	second parameter; try to deduce fntype from it.  Convert to
	calls.return_in_memory hook.
	(assign_parms): Convert to calls.setup_incoming_varargs,
	calls.strict_argument_naming, calls.promote_function_args,
	calls.pretend_outgoing_varargs_named hooks.  Pass fndecl to
	aggregate_value_p.
	(expand_function_start): Likewise.  Convert to
	calls.struct_value_rtx hook.
	(expand_function_end): Convert to calls.promote_function_return hook.
	(allocate_struct_function): Pass fndecl to aggregate_value_p.
	* hard-reg-set.h: Update comments to new hook names.
	* integrate.c (expand_inline_function): Pass fndecl to aggregate_value_p.
	* reg-stack.c (stack_result): Likewise.
	* rtl.h (struct_value_rtx, struct_value_incoming_rtx): Delete.
	* stmt.c (expand_value_return): Convert to
	calls.promote_function_return hook.
	* target-def.h: Add TARGET_PROMOTE_FUNCTION_ARGS,
	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
	TARGET_STRUCT_VALUE_RTX, TARGET_RETURN_IN_MEMORY,
	TARGET_EXPAND_BUILTIN_SAVEREGS, TARGET_SETUP_INCOMING_VARARGS,
	TARGET_STRICT_ARGUMENT_NAMING,
	TARGET_PRETEND_OUTGOING_VARARGS_NAMED, and TARGET_CALLS.
	* target.h: Likewise.
	* tree.h (aggregate_value_p): Also takes a tree to deduce function
	attributes from (for target hooks).
	* doc/tm.texi (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN,
	PROMOTE_PROTOTYPES, RETURN_IN_MEMORY, STRUCT_VALUE_REGNUM,
	STRUCT_VALUE, STRUCT_VALUE_INCOMING_REGNUM, STRUCT_VALUE_INCOMING,
	EXPAND_BUILTIN_SAVEREGS, SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED): Convert
	to hooks.

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Pass function
	to aggregate_value_p.
	* config/arm/arm.c (arm_init_cumulative_args,
	arm_output_mi_thunk): Likewise.
	* config/i386/i386.c (ix86_return_pops_args, x86_this_parameter):
	Likewise.
	* config/mips/mips.c (mips_save_reg_p, mips_expand_prologue,
	mips_can_use_return_insn): Likewise.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/s390/s390.c (s390_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Pass function to
	aggregate_value_p.
	* config/story16/stormy16.c (xstormy16_asm_output_mi_thunk): Pass
	function to aggregate_value_p.
	* objc/objc-act.c (generate_struct_by_value_array): Pass NULL to
	aggregate_value_p.

	* config/sh/sh-protos.h (sh_builtin_saveregs): Remove.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p, sh_function_arg,
	sh_function_arg_advance, sh_pass_in_reg_p): New.  * config/sh/sh.c
	(sh_handle_renesas_attribute, sh_promote_prototypes,
	sh_struct_value_rtx, sh_return_in_memory, sh_builtin_saveregs,
	sh_setup_incoming_varargs, sh_strict_argument_naming,
	sh_pretend_outgoing_varargs_named): New decls.
	(targetm): Add new hooks.
	(calc_live_regs): Save MACL and MACH if the function has the
	renesas attribute.
	(sh_expand_prologue): Support renesas attribute.
	(sh_builtin_saveregs): Make static.
	(sh_build_va_list): Support renesas attribute.
	(sh_va_start): Likewise.
	(sh_va_arg): Likewise.
	(sh_promote_prototypes): New.
	(sh_function_arg): New, moved from sh.h.  Support renesas
	attribute.
	(sh_function_arg_advance): Likewise.
	(sh_return_in_memory): Likewise.
	(sh_strict_argument_naming): Likewise.
	(sh_pretend_outgoing_varargs_named): Likewise.
	(sh_struct_value_rtx): New.
	(sh_attribute): Add renesas attribute.
	(sh_handle_renesas_attribute): New.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p): New.
	(sh_ms_bitfield_layout_p): Support renesas attribute also.
	(sh_output_mi_thunk): Pass function to aggregate_value_p.  *
	config/sh/sh.h (TARGET_SWITCHES): Add -mrenesas as an alias for
	-mhitachi.
	(STRUCT_VALUE_REGNUM, STRUCT_VALUE, RETURN_IN_MEMORY): Moved to
	target hooks.
	(sh_args): Add renesas_abi flag.
	(INIT_CUMULATIVE_ARGS): Set it.  Pass fndecl to aggregate_value_p.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Move to sh.c.
	(PASS_IN_REG_P): Support renesas attribute.  Pass DF and TF on the
	stack for the renesas abi.
	(STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	SETUP_INCOMING_VARARGS, EXPAND_BUILTIN_SAVEREGS,
	PROMOTE_PROTOTYPES): Moved to sh.c.  * config/sh/sh.md (call): Set
	call cookie to indicate renesas calls.

2003-09-03  Mostafa Hagog  <mustafa@il.ibm.com>

	* gcse.c (replace_one_set): New function.
	(pre_insert_copy_insn): Change the order of copying
	to make copy propagation discover additional PRE opportunities.

2003-09-03  Roger Sayle  <roger@eyesopen.com>

	PR optimization/11700.
	* simplify-rtx.c (simplify_subreg): Check that the subreg offset
	of a hard register is representable before trying to simplify it
	using subreg_hard_regno.

2003-09-04  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_ld_hidden): Disable unless using GNU ld.
	* configure: Regenerate.

2003-09-04  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* intl.h (N_): Remove parentheses.

2003-09-03  Bernardo Innocenti  <bernie@develer.com>

	* config.gcc (m68k-*-linux*): Remove definition of LINUX_DEFAULT_ELF.
	* config/i370/linux.h (LINUX_DEFAULT_ELF): Remove unconditional
	definition and code blocks compiled when not defined.
	* config/i386/linux.h (LINUX_DEFAULT_ELF): Likewise.
	* config/i386/linux64.h (LINUX_DEFAULT_ELF): Likewise.
	* config/sparc/linux.h: (LINUX_DEFAULT_ELF): Likewise.
	* config/sparc/linux64.h: (LINUX_DEFAULT_ELF): Likewise.

2003-09-03  Jeff Sturm  <jsturm@one-point.com>

	* cgraphunit.c (visited_nodes): New static variable.
	(record_call_1): Use walk_tree with visited_nodes.
	(cgraph_create_edges): Use walk_tree with visited_nodes.
	Setup/teardown visited_nodes hashtable.

2003-09-03  Roger Sayle  <roger@eyesopen.com>

	* toplev.c (flag_rounding_math): New global variable.
	(f_options): Add to the list of language independent options.
	* flags.h (flag_rounding_math): Prototype here.
	(HONOR_SIGN_DEPENDENT_ROUNDING): Use flag_rounding_math instead.
	* common.opt (frounding-math): New common command line option.
	* opts.c (common_handle_option): Handle OPT_frounding_math.
	(set_fast_math_flags): -ffast-math clears flag_rounding_math.

	* doc/invoke.texi: Document this new command line option.

2003-09-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/sol2.h (NO_IMPLICIT_EXTERN_C): Update comment.

2003-09-03  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (c-objc-common.o): Kill gt-c-objc-common.h dependency.
	* c-decl.c (finish_function):  Kill arguments, always use cgraph path.
	* c-objc-common.c: Kill include of gt-c-objc-common.h
	(expand_deferred_fns, deffer_fn): Kill function.
	(deferred_fns): Kill variable.
	(finish_cdtor): Update finish_function call.
	(c_objc_common_finish_file): Always call cgraph code.
	* c-parse.c: Regenerate.
	* c-parse.y: Regenerate.
	* c-tree.h (finish_function): Update prototype.
	* objc-acct.c (build_module_descriptor, finish_method_def):
	Update call of finish_function.
	* cgraphunit.c (cgraph_default_inline_p, cgraph_analyze_function): Add
	forward prototype.
	(cgraph_finalize_function): In non-unit-at-a-time mode analyze the
	function and assemble it if needed.
	(cgraph_finalize_compilation_unit): Do nothing in non-unit-at-a-time
	mode.
	(cgraph_optimize): Likewise.
	(cgraph_expand_function): In non-unit-at-a-time mode keep function body
	even when it has no inline callees.
	* c-parse.in: Update calls to finish_function.

2003-09-03  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h: Handle TARGET_CPU_iwmmxt.
	Use #error to generate the message if TARGET_DEFAULT is not
	recognised.

2003-09-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_UNUSED1): Remove.
	(MASK_XGOT, TARGET_XGOT): Define.
	(TARGET_SWITCHES): Add an entry for -mxgot.
	(ASM_SPEC): Map -mxgot to -xgot.
	* config/mips/mips.c (mips_symbol_insns): Use TARGET_XGOT to decide
	whether we're using a big-GOT sequences.
	(mips_legitimize_const_move, mips_expand_call): Likewise.
	(override_options): Revert 2003-01-09 change.
	* doc/invoke.texi: Document -mxgot.

2003-09-02  Jason Merrill  <jason@redhat.com>

	* config/sol2.h (NO_IMPLICIT_EXTERN_C): Define here.
	* config/sparc/sol2.h: Not here.

2003-09-02  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr): The code following both_summands performs
	the same task as simplify_gen_binary.  Replace all gotos to
	both_summands with a call to simplify_gen_binary and delete the
	now unused label.

2003-09-02  Jason Merrill  <jason@redhat.com>

	PR c++/7327
	* config/sparc/sol2.h (NO_IMPLICIT_EXTERN_C): Define.

2003-09-02  Jeff Sturm  <jsturm@one-point.com>

	* cgraphunit.c (record_call_1): Use walk_tree_without_duplicates.
	(cgraph_optimize_function): Set current_function_decl to the
	fndecl we're integrating from.

2003-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: Break out _Complex math functions into their
	own category.

2003-09-02  Andreas Jaeger  <aj@suse.de>

	* langhooks-def.h (LANG_HOOKS_RTL_EXPAND_STMT): Cast properly.

2003-09-02  Josef Zlomek  <zlomekj@suse.cz>

	* cfgbuild.c (compute_outgoing_frequencies): Use NOTE instead of
	finding the note again.

2003-09-02  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Remove host-specific rewrites of target_alias.

2003-09-01  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (genprogs): Fix typo.

	* Makefile.in (gencheck.o): Remove build commands.
	(dummy-conditions.o): Likewise.
	(read-rtl.o): Likewise.
	(gensupport.o): Likewise.
	(genconfig$(build_exeext)): Remove rule.
	(genconfig.o): Remove build commands.
	(genflags$(build_exeext)): Remove rule.
	(genflags.o): Remove build commands.
	(gencodes$(build_exeext)): Remove rule.
	(gencodes.o): Remove build commands.
	(genconstants.o): Remove build commands.
	(genemit$(build_exeext)): Remove rule.
	(genemit.o): Remove build commands.
	(genrecog$(build_exeext)): Remove rule.
	(genrecog.o): Remove build commands.
	(genextract$(build_exeext)): Remove rule.
	(genextract.o): Remove build commands.
	(genpeep$(build_exeext)): Remove rule.
	(genpeep.o): Remove build commands.
	(genattr$(build_exeext)): Remove rule.
	(genattr.o): Remove build commands.
	(genprognames): New variable.
	(genprogs): Likewise.
	(genobjs): Likewise.
	(genprogs): New rule.
	(genobjs): Likewise.
	(genattrtab.o): Remove build commands.
	(genautomata.o): Likewise.
	(genoutput$(build_exeext)): Remove rule.
	(genoutput.o): Remove build commands.
	(gengenrtl.o): Likewise.
	(genpreds.o): Likewise.
	(gengtype.o): Likewise.
	(genconditions.o): Likewise.
	(gen-protos.o): Likewise.
	(scan.o): Likewise.
	(fix-header.o): Likewise.
	(scan-decls.o): Likewise.
	(check-g++): Combine with other check targets.
	(check-gcc): Likewise.
	(check-g77): Likewise.
	(check-objc): Likewise.

2003-09-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Remove host-specific stuff which is unused here
	since the introduction of config.host.

	* doc/fragments.texi: Mention config.host.
	* doc/sourcebuild.texi: Mention config.host.  Give brief descriptions
	of config.build, config.host, and config.gcc.

2003-09-01  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (pushdecl): Don't put variables on
	C_TYPE_INCOMPLETE_VARS of a type unless that type is itself
	incomplete.

2003-09-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.host: New file.
	* config.gcc: Remove some host-specific stuff and some
	logic needed only for repeated invocation.
	* configure.in: Use config.host.
	* configure: Regenerate.

2003-09-01  Josef Zlomek  <zlomekj@suse.cz>

	* c-typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR.
	* convert.c (convert_to_integer): Kill BIT_ANDTC_EXPR.
	* fold-const.c (int_const_binop): Kill BIT_ANDTC_EXPR.
	(fold): Kill BIT_ANDTC_EXPR and label bit_and.
	* tree.def (BIT_ANDTC_EXPR): Kill.

2003-08-31  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove uses of "for x in .. ${foo}" idiom.
	* configure: Regenerate.

	* config.gcc:  Remove references to install_headers_dir, now unused
	since introduction of config.build.
	* config.gcc (i860-*-sysv4*): Don't set unused USG, SVR3 defines.

	* doc/fragments.texi, doc/sourcebuild.texi: Mention new file
	config.build.

	* config.build: New file.
	* config.gcc: Remove some build-specific stuff.
	* configure.in: Use config.build.
	* configure: Regnerate.

2003-08-31  Steven Bosscher  <steven@gcc.gnu.org>
	    Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11823
	* stmt.c (expand_end_case_type): Only use jump tables for dense
	switch statements when optimizing for size.

2003-08-31  Olivier Hainque  <hainque@act-europe.fr>

	* builtins.c (expand_builtin_setjmp): Use emit_jump to jump around
	the != 0 case, which ensures pending stack adjustments are flushed.

2003-08-30  Zack Weinberg  <zack@codesourcery.com>

	* configure.frag: Delete file.
	* configure.in: Rename the substitution variables
	dep_host_xmake_file and dep_tmake_file to xmake_file and
	tmake_file respectively.  Do not expand $srcdir in the
	value of these; leave that for Make.  Introduce a new
	substitution varaible, all_lang_makefrags, which lists
	subdirectory Make-lang.in files; exclude these from
	all_lang_makefiles, which is now only for subdirectory
	outputs.  Do not invoke configure.frag.  Do not set nor
	AC_SUBST_FILE target_overrides, host_overrides, or
	language_fragments. Create build subdirectories in
	config.status extra commands.
	* configure: Regenerate.
	* Makefile.in: Update substitutions to match changes to
	configure.  Use include directives instead of @-insertions
	to read in host, target, and language fragments.
	(Makefile rule): Do not invoke configure.frag.  Do not copy
	config.status to config.run before executing it.  Set
	CONFIG_HEADERS and CONFIG_FILES so that only Makefile gets
	regenerated.
	(cstamp-h rule): Set CONFIG_FILES as well as CONFIG_HEADERS.

2003-08-30  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h: Delete COMPARE_DIFFERENT_TU from enumeration.
	* c-typeck.c (same_translation_unit_p): New function.
	(comptypes): Use it instead of flags parameter to identify
	structure types from different translation units.
	* c-decl.c (duplicate_decls): Always call comptypes with
	COMPTYPE_STRICT flags argument.
	(c_reset_state): Set BLOCK_SUPERCONTEXT of the block formed
	to file_scope_decl.

2003-08-30  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h (C_TYPE_INCOMPLETE_VARS): New macro.
	* c-decl.c (struct c_scope): Remove "incomplete" field.
	(pushdecl): Attach variables with incomplete types to
	the TYPE_MAIN_VARIANT of the incomplete type in question.
	(finish_struct): Look at C_TYPE_INCOMPLETE_VARS for variables
	to complete, not at current_scope->incomplete.  All such
	variables do need completion.

2003-08-30  Richard Earnshaw  <rearnsha@arm.com>
	Nicolas Pitre <nico@cam.org>

	* arm/lib1funcs.asm (RETCOND): Delete.
	(RETLDM): New assembler macro.  Use it for returning with ldm/ldr.
	(ARM_LDIV0, THUMB_LDIV0): Collapse multiple definitions.
	(__ARM_ARCH__): Move here from ieee754-?f.S.
	(RET, RETc): Clean up definitions.
	(DIV_FUNC_END): Renamed from FUNC_END.  All uses changed.
	(FUNC_END): New macro that marks the end of any function.
	(ARM_FUNC_START): New macro that allows an assembler routine to be
	implemented in ARM code even if a Thumb-only build.
	Unconditionally include ieee754-?f.S.
	* arm/ieee754-df.S: Delete macros moved to lib1funcs.asm.
	Mark ends of functions.
	Split into separate conditionally-compiled units.
	Use RETLDM to return from routines.
	* arm/ieee754-sf.S: Similarly.
	* t-arm-elf (LIB1ASMFUNCS): Remove _ieee754_dp and _ieee754_sp.
	Add _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi
	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2
	_fixsfsi and _fixunssfsi.

	* arm/ieee754-df.S (__muldf3): Fix bug when result of a
	multiplication underflows to zero.
	(__adddf3): Fix bug when using VFP ordering on little-endian
	processors.
	(__fixdfsi): Use rrx to extract the carry into a register instead of
	MRS instruction.  Optimize later use of result.
	* arm/ieee754-sf.S (__fixsfsi): Likewise.
	(__fixunssfsi): Use a better sequence for handling negative-or-zero.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* tree-optimize.c: New file.
	* Makefile.in (OBJS-archive): Add tree-optimize.o.
	(tree-optimize.o): New.
	* c-decl.c (store_parm_decls): Use allocate_struct_function.
	(finish_function): Don't free_after_parsing or free_after_compilation.
	(set_save_expr_context): Move to tree-optimize.c.
	(c_expand_body_1): Use tree_rest_of_compilation.
	* c-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New.
	* objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New.
	* c-objc-common.c (expand_deferred_fns): Don't emit unused inlines;
	iterate until closure.
	* langhooks-def.h (LANG_HOOKS_RTL_EXPAND_START,
	LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END): New.
	(LANG_HOOKS_RTL_EXPAND_INITIALIZER): New.
	* langhooks.h (struct lang_hooks_for_rtl_expansion): New.
	* toplev.h (tree_rest_of_compilation): Declare it.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Add rtl_inline_init, saved_for_inline.
	* integrate.c (save_for_inline): Set saved_for_inline.
	* c-semantics.c (genrtl_scope_stmt): Check it.
	* toplev.c (wrapup_global_declarations): Check it.
	(rest_of_handle_inlining): Set and check rtl_inline_init.
	(rest_of_compilation): Remove out of date comment.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* function.c (allocate_struct_function): New, split out of ...
	(prepare_function_start, init_function_start): ... here.
	* expr.c (init_expr): Use ggc_alloc_cleared.
	* stmt.c (init_stmt_for_function): Likewise.
	* tree.h (allocate_struct_function): Declare.

2003-08-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Don't use negated character class in shell case
	clause.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Move function_frequency and
	max_jumptable_ents before start of bit field members.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin_constant_p): Check cse_not_expected here,
	(fold_builtin_constant_p) ... not here.

2003-08-29  Richard Henderson  <rth@redhat.com>

	* c-tree.h (C_DECL_FILE_SCOPE): Move ...
	* tree.h (DECL_FILE_SCOPE_P): ... here, and rename.
	* c-decl.c, c-objc-common.c, c-typeck.c: Update to match.

2003-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: Fix typos.
	(ATTR_MATHFN_FPROUNDING_STORE): New macro.
	(BUILT_IN_FREXP, BUILT_IN_FREXPF, BUILT_IN_FREXPL, BUILT_IN_MODF,
	BUILT_IN_MODFF, BUILT_IN_MODFL, BUILT_IN_REMQUO, BUILT_IN_REMQUOF,
	BUILT_IN_REMQUOL, BUILT_IN_SINCOS, BUILT_IN_SINCOSF,
	BUILT_IN_SINCOSL): Use ATTR_MATHFN_FPROUNDING_STORE.

	* builtins.def (BUILT_IN_ERFC, BUILT_IN_ERFCF, BUILT_IN_ERFCL):
	Use ATTR_MATHFN_FPROUNDING_ERRNO.

2003-08-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (i386-*-vsta): Fix obvious bogosity.

	* fixinc/inclhack.def:  Remove special cases for unsupported
	PTX 1 and PTX 2 (including i[34567]86-sequent-sysv3).
	* fixinc/fixincl.x: Regenerate.

2003-08-29  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (cpp.info): Just state dependencies.
	(gcc.info): Likewise.
	(gccint.info): Likewise.
	(gccinstall.info): Likewise.
	(cppinternals.info): Likewise.
	(cpp.dvi): Likewise.
	(gcc.dvi): Likewise.
	(gccint.dvi): Likewise.
	(gccinstall.dvi): Likewise.
	(cppinternals.dvi): Likewise.
	(gcov.1): Likewise.
	(cpp.1): Likewise.
	(gcc.1): Likewise.
	(gfdl.7): Likewise.
	(gpl.7): Likewise.
	(fsf-funding.7): Likewise.
	($(objdir)/%.info): New pattern rule.
	(%.dvi): Likewise.

2003-08-29  Kelley Cook  <kelleycook@wideopenwest.com>

	* Makefile.in (restage1): Pass BOOT_CFLAGS to recursive make.
	(restage2): Likewise.
	(restage3): Likewise.
	(restage4): Likewise.
	(restageprofile): Likewise.
	(restagefeedback): Likewise.
	(bubblestrap): Likewise.

2003-08-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Narrow unsupported target match to avoid clobbering
	i?86-sequent-sysv4*.

2003-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (mathfn_built_in): Handle new math builtins.

2003-08-28  Per Bothner  <per@bothner.com>

	Fix (hopefully temporary) for breakage caused by my 08-21 patch.
	* cpplex.c (_cpp_get_fresh_line):  Check for null buffer.
	(_cpp_lex_buffer):  Likewise.
	* cpptrad.c (_cpp_read_logical_line_trad):  Likewise.

2003-08-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*mulsi3_sign"): New insn.
	("mulsidi3" expander, "mulsi_6432" insn): Remove, replace by ...
	("mulsidi3"): ... this new insn.
	("umulsidi3"): New insn.
	("divmoddi3", "divmodtidi3", "divmodtisi3"): Simplify by using
	mixed-mode matching constraints.
	("udivmodsi4", "udivmoddisi3"): New insns.
	("udivsi3", "umodsi3"): Use only in ESA/390 mode.

2003-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def (BT_INT_PTR, BT_FLOAT_PTR, BT_DOUBLE_PTR,
	BT_LONGDOUBLE_PTR, BT_FN_FLOAT_FLOAT_FLOATPTR,
	BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
	BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
	BT_FN_FLOAT_FLOAT_INTPTR, BT_FN_DOUBLE_DOUBLE_INTPTR,
	BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
	BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
	BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
	BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
	BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
	BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR): New.
	* builtins.def (BUILT_IN_FREXP, BUILT_IN_FREXPF, BUILT_IN_FREXPL,
	BUILT_IN_MODF, BUILT_IN_MODFF, BUILT_IN_MODFL, BUILT_IN_REMQUO,
	BUILT_IN_REMQUOF, BUILT_IN_REMQUOL, BUILT_IN_SINCOS,
	BUILT_IN_SINCOSF, BUILT_IN_SINCOSL): New.
	* tree.c: Assign new type_nodes.
	* tree.h (tree_index): Add TI_FLOAT_PTR_TYPE, TI_DOUBLE_PTR_TYPE,
	TI_LONG_DOUBLE_PTR_TYPE, TI_INTEGER_PTR_TYPE.
	(float_ptr_type_node, double_ptr_type_node,
	long_double_ptr_type_node, integer_ptr_type_node): New type_nodes.

	* doc/extend.texi: Document new builtins.

2003-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def (BT_FN_FLOAT_INT_FLOAT,
	BT_FN_DOUBLE_INT_DOUBLE, BT_FN_LONGDOUBLE_INT_LONGDOUBLE): New.

	* builtins.def (BUILT_IN_ERF, BUILT_IN_ERFC, BUILT_IN_ERFCF,
	BUILT_IN_ERFCL, BUILT_IN_ERFF, BUILT_IN_ERFL, BUILT_IN_GAMMA,
	BUILT_IN_GAMMAF, BUILT_IN_GAMMAL, BUILT_IN_J0, BUILT_IN_J0F,
	BUILT_IN_J0L, BUILT_IN_J1, BUILT_IN_J1F, BUILT_IN_J1L,
	BUILT_IN_JN, BUILT_IN_JNF, BUILT_IN_JNL, BUILT_IN_LGAMMA,
	BUILT_IN_LGAMMAF, BUILT_IN_LGAMMAL, BUILT_IN_SIGNIFICAND,
	BUILT_IN_SIGNIFICANDF, BUILT_IN_SIGNIFICANDL, BUILT_IN_TGAMMA,
	BUILT_IN_TGAMMAF, BUILT_IN_TGAMMAL, BUILT_IN_Y0, BUILT_IN_Y0F,
	BUILT_IN_Y0L, BUILT_IN_Y1, BUILT_IN_Y1F, BUILT_IN_Y1L,
	BUILT_IN_YN, BUILT_IN_YNF, BUILT_IN_YNL): New.

	* doc/extend.texi: Document new builtins.

2003-08-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/mkfixinc.sh: Remove special case code for unsupported
	variants of i?86, powerpcle, and thumb.
	* fixinc/mkfixinc.sh: Remove special case code for unsupported
	arm and hppa variants.

2003-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def (BT_FN_INT_FLOAT, BT_FN_INT_DOUBLE,
	BT_FN_INT_LONGDOUBLE, BT_FN_LONG_FLOAT, BT_FN_LONG_DOUBLE,
	BT_FN_LONG_LONGDOUBLE, BT_FN_LONGLONG_FLOAT,
	BT_FN_LONGLONG_DOUBLE, BT_FN_LONGLONG_LONGDOUBLE,
	BT_FN_FLOAT_FLOAT_LONGDOUBLE, BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
	BT_FN_FLOAT_FLOAT_INT, BT_FN_DOUBLE_DOUBLE_INT,
	BT_FN_LONGDOUBLE_LONGDOUBLE_INT, BT_FN_FLOAT_FLOAT_LONG,
	BT_FN_DOUBLE_DOUBLE_LONG, BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
	BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
	BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE): New.

	* builtins.def (BUILT_IN_ACOS, BUILT_IN_ACOSF, BUILT_IN_ACOSH,
	BUILT_IN_ACOSHF, BUILT_IN_ACOSHL, BUILT_IN_ACOSL, BUILT_IN_ASIN,
	BUILT_IN_ASINF, BUILT_IN_ASINH, BUILT_IN_ASINHF, BUILT_IN_ASINHL,
	BUILT_IN_ASINL, BUILT_IN_ATANH, BUILT_IN_ATANHF, BUILT_IN_ATANHL,
	BUILT_IN_CBRT, BUILT_IN_CBRTF, BUILT_IN_CBRTL, BUILT_IN_COPYSIGN,
	BUILT_IN_COPYSIGNF, BUILT_IN_COPYSIGNL, BUILT_IN_COSH,
	BUILT_IN_COSHF, BUILT_IN_COSHL, BUILT_IN_DREM, BUILT_IN_DREMF,
	BUILT_IN_DREML, BUILT_IN_EXP10, BUILT_IN_EXP10F, BUILT_IN_EXP10L,
	BUILT_IN_EXP2, BUILT_IN_EXP2F, BUILT_IN_EXP2L, BUILT_IN_EXPM1,
	BUILT_IN_EXPM1F, BUILT_IN_EXPM1L, BUILT_IN_FDIM, BUILT_IN_FDIMF,
	BUILT_IN_FDIML, BUILT_IN_FMA, BUILT_IN_FMAF, BUILT_IN_FMAL,
	BUILT_IN_FMAX, BUILT_IN_FMAXF, BUILT_IN_FMAXL, BUILT_IN_FMIN,
	BUILT_IN_FMINF, BUILT_IN_FMINL, BUILT_IN_HYPOT, BUILT_IN_HYPOTF,
	BUILT_IN_HYPOTL, BUILT_IN_ILOGB, BUILT_IN_ILOGBF, BUILT_IN_ILOGBL,
	BUILT_IN_LDEXP, BUILT_IN_LDEXPF, BUILT_IN_LDEXPL, BUILT_IN_LLRINT,
	BUILT_IN_LLRINTF, BUILT_IN_LLRINTL, BUILT_IN_LLROUND,
	BUILT_IN_LLROUNDF, BUILT_IN_LLROUNDL, BUILT_IN_LOG10,
	BUILT_IN_LOG10F, BUILT_IN_LOG10L, BUILT_IN_LOG1P, BUILT_IN_LOG1PF,
	BUILT_IN_LOG1PL, BUILT_IN_LOG2, BUILT_IN_LOG2F, BUILT_IN_LOG2L,
	BUILT_IN_LOGB, BUILT_IN_LOGBF, BUILT_IN_LOGBL, BUILT_IN_LRINT,
	BUILT_IN_LRINTF, BUILT_IN_LRINTL, BUILT_IN_LROUND,
	BUILT_IN_LROUNDF, BUILT_IN_LROUNDL, BUILT_IN_NEXTAFTER,
	BUILT_IN_NEXTAFTERF, BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD,
	BUILT_IN_NEXTTOWARDF, BUILT_IN_NEXTTOWARDL, BUILT_IN_POW10,
	BUILT_IN_POW10F, BUILT_IN_POW10L, BUILT_IN_REMAINDER,
	BUILT_IN_REMAINDERF, BUILT_IN_REMAINDERL, BUILT_IN_RINT,
	BUILT_IN_RINTF, BUILT_IN_RINTL, BUILT_IN_SCALB, BUILT_IN_SCALBF,
	BUILT_IN_SCALBL, BUILT_IN_SCALBLN, BUILT_IN_SCALBLNF,
	BUILT_IN_SCALBLNL, BUILT_IN_SCALBN, BUILT_IN_SCALBNF,
	BUILT_IN_SCALBNL, BUILT_IN_SINH, BUILT_IN_SINHF, BUILT_IN_SINHL,
	BUILT_IN_TANH, BUILT_IN_TANHF, BUILT_IN_TANHL): New.

	* doc/extend.texi: Document new builtins.

2003-08-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitmate_constant_p): Use LARL on
	zSeries machines even in 31-bit addressing mode.
	(legitimate_reload_constant_p): Likewise.
	(legitimize_pic_address): Likewise.
	(legitimize_tls_address): Likewise.
	(s390_split_branches): Likewise.
	(s390_dump_pool): Likewise.
	(s390_mainpool_finish): Likewise.
	(s390_chunkify_start): Likewise.
	(s390_select_rtx_section): Likewise.
	* config/s390/s390.md ("doloop_si"): Likewise.
	("pool_start_31", "pool_end_31"): Likewise.
	("pool_start_64", "pool_end_64"): Likewise.
	("main_base_31_small", "main_base_31_large"): Likewise.
	("main_base_64"): Likewise.
	("reload_base_31", "reload_base_64"): Likewise.
	("*movsi_larl"): New insn.
	("cjump", "icjump"): Use long branches on zSeries machines.
	("jump"): Likewise.
	("call"): Use BRASL on zSeries machines.
	("call_value", "call_value_tls"): Likewise.
	("brasl", "bras", "basr_64", "basr_31", "bas_64", "bas_31"): Remove
	and replace by ...
	("*bras", "*brasl", "*basr") ... these new insns.
	("brasl_r", "bras_r", "basr_64_r", "basr_31_r", "bas_64_r",
	"bas_31_r"): Remove and replace by ...
	("*bras_r", "*brasl_r", "*basr_r") ... these new insns.
	("brasl_tls", "bras_tls", "basr_64_tls", "basr_31_tls",
	"bas_64_tls", "bas_31_tls"): Remove and replace by ...
	("*bras_tls", "*brasl_tls", "*basr_tls") ... these new insns.
	("*return_si", "*return_di"): Remove and replace by ...
	("*return"): ... this new insn.
	("rotlsi3"): Allow on zSeries machines.

	* config/s390/s390.c (legitimize_reload_constant_p): Use
	LL/LH type instructions in z/Architecture mode.
	* config/s390/s390.md ("*movsi_lli"): Likewise.
	("*andsi3_ni", "*andhi3_ni", "*andqi3_ni"): Likewise.
	("*iorsi3_ni", "*iorhi3_ni", "*iorqi3_ni"): Likewise.
	("*extendqisi2"): Use LB in z/Architecture mode.
	("*zero_extendqisi2_64", "*zero_extendqisi2_31"): Use LLGC in
	z/Architecture mode.
	("zero_extendqihi2", "*zero_extendqihi2_64", "*zero_extendqihi2_31"):
	Likewise.

	* config/s390/s390.md ("*tmdi_ext"): Allow in both 64-bit
	and 31-bit mode.
	("ptr_extend"): Allow only in 64-bit mode.

2003-08-27  Daniel Jacobowitz  <drow@mvista.com>

	* gcc.c (STANDARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX)
	(TOOLDIR_BASE_PREFIX, STANDARD_BINDIR_PREFIX): Remove unnecessary
	definitions.
	(main): Only use standard_startfile_prefix if native.
	* doc/tm.texi (STANDARD_STARTFILE_PREFIX): Update.

2003-08-27  Per Bothner  <pbothner@apple.com>

	* cpperror.c (print_location):  Don't check for !pfile->buffer.  That
	test fails following my 08-21 change, and it seems unnecessary anyway.
	(cpp_error):  Likewise.

2003-08-27  Jason Merrill  <jason@redhat.com>

	* real.c (do_multiply): Initialize with memset.

2003-08-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcov.c (typedef struct arc_info): New field cs_count.
	(accumulate_line_counts): Find cycles correctly.

2003-08-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (struct machine_function): Remove member
	literal_pool_label.
	(s390_optimize_prolog): Replace TEMP_REG argument with
	TEMP_USED and BASE_USED.  Do not check get_pool_size ().
	(general_s_operand): Accept all immediates before reload if
	ALLOW_IMMEDIATE.  If not ALLOW_IMMEDIATE, reject literal pool
	references.
	(s390_output_symbolic_const): Remove UNSPEC_LTREL_OFFSET handling.
	(find_constant_pool_ref): Ignore UNSPECV_POOL_ENTRY insns.
	(s390_alloc_pool): New function.
	(s390_new_pool): Call it.
	(s390_dump_pool): Add REMOTE_LABEL argument.
	(s390_chunkify_start): Add BASE_REG argument.  Do not check
	get_pool_size ().
	(s390_chunkify_finish): Add BASE_REG argument.  Adapt
	s390_dump_pool call.
	(s390_pool_count, s390_nr_constants): Remove.
	(s390_output_constant_pool): Remove.
	(s390_mainpool_start): New function.
	(s390_mainpool_finish): New function.
	(s390_mainpool_cancel): New function.
	(s390_reorg): Implement main literal pool handling.
	(s390_emit_prologue): Emit main_pool placeholder instead of
	literal_pool_31 / literal_pool_64 insns.
	* config/s390/s390.h (s390_pool_count, s390_nr_constants): Remove.
	(ASM_OUTPUT_POOL_PROLOGUE, ASM_OUTPUT_SPECIAL_POOL_ENTRY): Remove.
	* config/s390/s390.md (UNSPEC_MAIN_BASE): New symbolic constant.
	("main_base_31_small", "main_base_31_large"): New insns.
	("main_base_64",  "main_pool"): New insns.
	("literal_pool_31", "literal_pool_64"): Remove.

2003-08-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (ptx_netswap): New disabled fix, ported from
	fixinc.ptx.
	* fixinc/inclhack.def (undefine_null):  Don't generate \r characters.
	Prettify a little.
	* fixinc/fixincl.x: Regenerate.

2003-08-27  Richard Earnshaw  <rearnsha@arm.com>

	* lib1funcs.asm (L_ieee754_sp): New.  Include ieee754-sf.S.
	(L_ieee754_dp): New.  Include ieee754-df.S.
	* arm/ieee754-sf.S: Rework to allow interworking, calling from Thumb,
	and compilation in apcs-26 mode.
	* arm/ieee754-df.S: Likewise.
	* t-arm-elf (DPBIT, FPBIT, fp-bit.c dp-bit.c): Delete rules
	(LIB1ASMFUNCS): Add _ieee754_sp and _ieee754_dp targets.

2003-08-27  Nicolas Pitre  <nico@cam.org>

	* arm/ieee754-sf.S: New.
	* arm/ieee754-df.S: New.

2003-08-27  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_expect_jump): Save pending_stack_adjust
	and restore it if returning NULL.

2003-08-27  Richard Sandiford  <rsandifo@redhat.com>

	* calls.c (initialize_argument_information): If an argument has no
	stack space associated with it, and BLOCK_REG_PADDING is defined,
	use it to decide at which end the argument should be padded.
	* function.c (assign_parms): Allocate BLKmode stack slots.
	* config/mips/mips-protos.h (mips_pad_arg_upward): Declare.
	(mips_pad_reg_upward): Declare.
	* config/mips/mips.h (PAD_VARARGS_DOWN): Use FUNCTION_ARG_PADDING.
	(CUMULATIVE_ARGS): Remove num_adjusts and adjusts.
	(FUNCTION_ARG_PADDING): Use mips_pad_arg_upward.
	(BLOCK_REG_PADDING): Use mips_pad_reg_upward.
	* config/mips/mips.c (struct mips_arg_info): Remove struct_p.
	(mips_expand_call): Remove code for generating structure shifts.
	(mips_arg_info): Don't set struct_p.  Don't set fpr_p for non-float
	types unless using the EABI.
	(function_arg_advance): Don't generate shift instructions.
	(function_arg): Don't return them.  Don't short-circuit the
	check for double structure chunks for DFmode arguments.
	(mips_pad_arg_upward, mips_pad_reg_upward): New functions.
	(mips_expand_prologue): Remove code to emit structure shifts.
	* config/mips/irix6-libc-compat.c: Remove workarounds for buggy
	structure passing (inet_ntoa, inet_lnaof, inet_netof).  Update
	comments to say that only structure returns are a problem.

2003-08-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/tests/base/string.h, fixinc/tests/base/sys/regset.h:
	Fix to match produced versions.
	* fixinc/inclhack.def (longlong_t): New disabled test, ported
	from fixinc.svr4.
	* fixinc/inclhack.def (ptx_pwd_h): New disabled fix, ported
	from fixinc.ptx.
	* fixinc/inclhack.def (ptx_sys_mc_param_h): New disabled fix,
	ported from fixinc.ptx.

2003-08-26  Per Bothner  <pbothner@apple.com>

	* cpplib.h (struct cpp_token):  Change type of field line to fileline.
	(cpp_error_with_line):  Use fileline for appropriate parameter.
	* cpphash.h (struct cpp_macro):  Change type of field line to fileline.
	(struct cpp_reader):  Likewise for fields line and directive_line.
	(_cpp_begin_message):  Use fileline for appropriate parameter.
	* cpperror.c (print_location, _cpp_begin_message, cpp_error_with_line,
	cpp_error):  Use fileline for appropriate parameters and variables.
	(print_location):  New local lin, since it is not a fileline.

2003-08-26  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/12002
	* tree.h (SCALAR_FLOAT_TYPE_P, COMPLEX_FLOAT_TYPE_P): New macros.
	(FLOAT_TYPE_P): Define in terms of these two new macros.
	* fold-const.c (fold <PLUS_EXPR>): Don't convert x+x into x*2.0
	for complex floating point types.

2003-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (emit_prologue): Don't check literal pool size.
	* config/s390/s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Call
	s390_output_pool_entry.

2003-08-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (svr4_preproc_lint_on,
	svr4_preproc_lint_off, svr4_preproc_machine): New disabled
	fixes, ported from fixinc.svr4.

2003-08-26  Mark Mitchell  <mark@codesourcery.com>

	* doc/install.texi (Prerequisites): Mention GNU make requirement.

	* Makefile.in (AR_FOR_TARGET): Export it.
	(AR_CREATE_FOR_TARGET): Likewise.
	(AR_FLAGS_FOR_TARGET): Likewise.
	(AR_EXTRACT_FOR_TARGET): Likewise.
	(AWK): Likewise.
	(BUILD_PREFIX): Likewise.
	(BUILD_PREFIX_1): Likewise.
	(DESTDIR): Likewise.
	(GCC_FOR_TARGET): Likewise.
	(INCLUDES): Likewise.
	(INSTALL_DATA): Likewise.
	(LIB1ASMSRC): Likewise.
	(LIBGCC2_CFLAGS): Likewise.
	(MACHMODE_H): Likewise.
	(NM_FOR_TARGET): Likewise.
	(RANLIB_FOR_TARGET): Likewise.
	(libsubdir): Likewise.
	(slibdir): Likewise.
	(ORDINARY_FLAGS_TO_PASS): Remove stuff that we're
	exporting.
	(libgcc.a): Don't pass them here.
	(stmp-multilib): Or here.
	(install-libgcc): Or here.
	(install-multilib): Or here.
	(POSTSTAGE1_FLAGS_TO_PASS): Or here.
	(stage1_build): Or here.

2003-08-26  Andreas Krebbel <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*llgt_sisi", "*llgt_sisi_split", "*llgt_didi",
	"*llgt_didi_split", "*llgt_sidi", "*llgt_sidi_split"): New insns.

2003-08-26  Andreas Krebbel <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*fmadddf", "*fmsubdf",
	"*fmaddsf", "*fmsubsf"): New insns.

2003-08-26  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold <MULT_EXPR>): Optimize (C1/X)*C2 into
	(C1*C2)/X when unsafe math optimizations are allowed.
	(fold <RDIV_EXPR>): Optimize C1/(X*C2) into (C1/C2)/X with unsafe
	math optimizations.  Minor code clean-ups.  Recursively call
	fold when constructing sub-expressions.

2003-08-26  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_bitop): New function to perform constant
	folding of ffs, clz, ctz, popcount and parity builtin functions
	and their long and long long variants (such as ffsl and ffsll).
	(fold_builtin): fold_builtin_bitop when appropriate.
	* simplify-rtx.c (simplify_unary_operation): Honor both
	CLZ_DEFINED_VALUE_AT_ZERO and CTZ_DEFINED_VALUE_AT_ZERO when
	evaluating clz and ctz at compile-time, for operands wider
	than HOST_WIDE_INT.

2003-08-26  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (build_function_call_expr): Don't set
	TREE_SIDE_EFFECTS here.
	* expr.c (emit_block_move_via_libcall): Likewise.
	(clear_storage_via_libcall): Likewise.
	* tree.c (build): Set TREE_SIDE_EFFECTS for non-const, non-pure
	CALL_EXPRs.

	* gcse.c (is_too_expensive): New function.
	(gcse_main, delete_null_pointer_checks, bypass_jumps): Use it.

2003-08-25  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc (hppa*-*-hpux11*, ia64*-*-hpux*): Remove
	commented-out logic to use DCE threads (if present), add
	support for POSIX threads.
	* config/ia64/hpux.h: Define CPP_SPEC to set appropriate
	#defines for -pthread.  Add -lpthread to LIB_SPEC when
	-pthread.  In both cases take -mt as a synonym for -pthread
	for acc compatibility.
	Define GTHREAD_USE_WEAK to 0.
	* config/pa/pa-hpux11.h: Likewise for CPP_SPEC and LIB_SPEC.
	Remove old logic for DCE threads from LIB_SPEC.
	* config/pa/pa64-hpux.h: Define GTHREAD_USE_WEAK to 0.

2003-08-25  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_mathfn):  Rearrange so that we only
	return 0 for invalid argument types.  Instead drop through to a
	call of expand_call at the bottom of function.  If op is SQRT,
	try attaching a SQRT rtx as the REQ_EQUAL note of the libcall.

2003-08-25  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_expand_tls_address): Properly truncate
	result when op0 is SImode.

2003-08-25  Nathanael Nerode  <neroden@twcny.rr.com>

	* fixinc/inclhack.def (svr4_sighandler_type): New fix, ported
	from fixinc.svr4.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/sys/signal.h: Regenerate.

2003-08-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (simplify_comparison): Re-enable widening of comparisons
	with non-paradoxical subregs of non-REG expressions.

2003-08-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (distribute_notes): Handle REG_ALWAYS_RETURN.

2003-08-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (combine_simplify_rtx): Fix RTL sharing bug.

2003-08-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* pretty-print.h (pp_maybe_newline_and_indent): New macro.
	* c-pretty-print.h (c_pretty_printer): Now typedef to the
	structure.  Be consistent with pretty-print.h abd cxx-pretty-print.h
	(struct c_pretty_print_info): Document.  Add new fields.
	(pp_type_specifier_seq): Rename from pp_c_type_specifier.
	(pp_direct_abstract_declarator): New macro.
	(pp_ptr_operator): Likewise.
	(pp_simple_type_specifier): Likewise.
	(pp_expression): Likewise.
	(pp_parameter_list): Rename from pp_parameter_declaration.
	* c-pretty-print.c (pp_c_whitespace): Now a function.
	(pp_c_left_paren): Likewise.
	(pp_c_right_paren): Likewise.
	(pp_c_dot): Likewise.
	(pp_c_ampersand): Likewise.
	(pp_c_arrow): Likewise.
	(pp_c_semicolon): Likewise.
	(pp_c_type_cast): New function.
	(pp_c_space_for_pointer_operator): Likewise.
	(pp_c_call_argument_list): Likewise.
	(pp_c_cv_qualifier): Adjust prototype.
	(pp_c_type_qualifier_list): Likewise.
	(pp_c_pointer): Likewise.  Handle REFERENCE_TYPE here.
	(pp_c_type_specifier): Rename from pp_c_simple_type_specifier.
	Adjust to follow standard grammar.
	(pp_c_specifier_qualifier_list): Adjusr prototype.  Handle
	REFERENCE_TYPE.  Tidy.
	(pp_c_parameter_type_list): Adjust prototype.  Tidy.
	(pp_c_parameter_declaration): Remove.
	(pp_c_abstract_declarator): Adjust prototype.
	(pp_c_direct_abstract_declarator): Likewise.
	(pp_c_type_id): Likewise.
	(pp_c_storage_class_specifier): Likewise.
	(pp_c_function_specifier): Likewise.
	(pp_c_declaration_specifiers): Likewise.
	(pp_c_direct_declarator): Likewise.
	(pp_c_declarator): Likewise.
	(pp_c_declarator): Likewise.
	(pp_c_declaration): Likewise.
	(pp_c_attributes): Likewise.  Tidy.
	(pp_c_function_definition): Adjust prototype.
	(pp_c_char): Likewise.
	(pp_c_string_literal): Likewise.
	(pp_c_integer_constant): Likewise.
	(pp_c_character_constant): Likewise.
	(pp_c_bool_constant): Likewise.
	(pp_c_enumeration_constant): Likewise.
	(pp_c_floating_constant): Likewise.
	(pp_c_constant): Likewise.
	(pp_c_identifier): Likewise.
	(pp_c_primary_expression): Likewise.  Remove TARGET_EXPR case.  Tidy.
	(pp_c_initializer): Adjust prototype.
	(pp_c_init_declarator): Likewise.
	(pp_c_initializer_list): Likewise.
	(pp_c_id_expression): Likewise.
	(pp_c_postfix_expression): Likewise.
	(pp_c_expression_list): Likewise.
	(pp_c_unary_expression): Likewise.
	(pp_c_cast_expression): Likewise.
	(pp_c_multiplicative_expression): Likewise.
	(pp_c_additive_expression): Likewise.
	(pp_c_shift_expression): Likewise.
	(pp_c_relational_expression): Likewise.
	(pp_c_equality_expression): Likewise.
	(pp_c_and_expression): Likewise.
	(pp_c_exclusive_or_expression): Likewise.
	(pp_c_inclusive_or_expression): Likewise.
	(pp_c_logical_and_expression): Likewise.
	(pp_c_logical_or_expression): Likewise.
	(pp_c_conditional_expression): Likewise.
	(pp_c_assignment_expression): Likewise.
	(pp_c_expression): Likewise.  Tidy.
	(pp_c_statement): Likewise.  Document.
	(pp_c_pretty_printer_init): Adjust prototype. Tidy.

	* c-lang.c (c_initialize_diagnostics): Update.
	* c-common.h (strip_pointer_operator): Declare.
	* c-common.c (strip_pointer_operator): Define.

2003-08-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/8795
	* tree.h (build_method_type_directly): Declare.
	* c-common.c (handle_vector_size_attributes): Handle METHOD_TYPEs.
	(vector_size_helper): Likewise.
	* tree.c (build_method_type_directly): New function.
	(build_method_type): Use it.

2003-08-24  Richard Henderson  <rth@redhat.com>

	* config/i386.i386.c (ix86_return_in_memory): Reformat.  Return true
	for 16-byte vector modes if sse not enabled; warn for abi change.
	(ix86_value_regno): Only return xmm0 for 16-byte vector types.

2003-08-24  Kazu Hirata  <kazu@cs.umass.edu>

	* rtlanal.c (may_trap_p): Simplify an integer comparison.

2003-08-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (AAB_svr4_replace_byteorder):  Enhance
	comment.  Enable for DYNIX/ptx systems (when they switch to
	regular fixincludes).
	* fixinc/fixincl.x: Regenerate.

2003-08-23  Jason Eckhardt  <jle@rice.edu>

	* config/i860/t-i860: New.
	* config.gcc (i860-*-sysv4*): Add t-i860 to tmake_file.

2003-08-23  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (pushdecl): Only put decls which finish_struct will do
	something about onto incomplete chain.
	(finish_struct): If not removing type from incomplete
	list, update prev.

2003-08-20  Jan Hubicka  <jh@suse.cz>

	PR target/11369
	* i386.c (ix86_expand_carry_flag_compare): Validate operand.

	PR target/11031
	* i386.c (const_0_to_3_operand, const_0_to_7_operand,
	const_0_to_15_operand, const_0_to_255_operand): New predicates.
	* i386.h (PREDICATE_CODES): Add these.
	* i386.c (pinsrw and pextrw patterns): Use them.

	PR target/10984
	* i386.c (ix86_expand_binop_builtin): Behave sanely for VOIDmodes.

	PR target/8869
	* expr.c (convert_modes): Deal properly with integer to vector
	constant conversion.

	PR target/8871
	* i386.md (zero_extendsidi2*): Add MMX and SSE alternatives.

2003-08-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (LOAD_EXTEND_OP): Remove.
	* config/s390/s390.md ("movhi"): New expander; old insn renamed to ...
	("*movhi"): ... this.
	("movqi", "*movqi"): Likewise.
	("movqi_64"): Remove.
	("*zero_extendhisi2_31"): Change predicate to s_operand.

2003-08-23  Dale Johannesen  <dalej@apple.com>
	* calls.c (emit_library_call_value_1): Fix obvious errors in
	arguments to emit_group_store.

2003-08-23  Jason Eckhardt  <jle@rice.edu>

	* calls.c (emit_library_call_value_1): Remove code related
	to LIBGCC_NEEDS_DOUBLE.
	* config/stormy16/stormy16.h: Remove mention of LIBGCC_NEEDS_DOUBLE.
	* doc/tm.texi: Likewise.
	* system.h: Poison the LIBGCC_NEEDS_DOUBLE macro.

2003-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/linux64.h (STARTFILE_PREFIX_SPEC): Remove.

2003-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_setup_incoming_varargs): Handle o32 and o64
	as well.  Put memory references in the varargs alias set.
	(mips_expand_prologue): Remove varargs handling from here.

2003-08-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr,
	s390_expand_cmpmem, s390_output_constant_pool, s390_build_va_list,
	s390_function_profiler, s390_output_mi_thunk): Use ISO C syntax
	for function pointer calls.
	* config/s390/s390.md ("*negdi2_31"): Likewise.

2003-08-23  Roger Sayle  <roger@eyesopen.com>

	* combine.c (apply_distributive_law): Correct comment.

2003-08-23  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860.h: Remove comment mentioning LIBGCC_NEEDS_DOUBLE.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860.c (i860_build_va_list): Create the va_decl
	declaration.  Document the va_list structure.
	(i860_va_start): Initialize the va_list structure.
	(i860_va_arg): Rewrite completely.
	* config/i860/i860.h (LIBGCC_NEEDS_DOUBLE): Don't define.
	* config/i860/varargs.asm: Do not allocate or initialize
	a va_list.  Return the address of the register save area.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/iq2000/iq2000.c: Fix comment typos.
	* config/iq2000/iq2000.md: Likewise.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/iq2000/iq2000.c: Follow spelling conventions.
	* config/iq2000/iq2000.h: Likewise.
	* config/mn10300/mn10300.c: Likewise.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860.c (output_move_double): Don't set latehalf
	to zero for CONST_INT (since it could be, e.g., -1).

	* config/i860/i860.h (REMSI3_LIBCALL): Replace this macro...
	(MODSI3_LIBCALL): ...with this one.
	(UREMSI3_LIBCALL): Replace this macro...
	(UMODSI3_LIBCALL): ...with this one.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860-protos.h (output_delay_insn): Remove prototype.
	(output_delayed_branch): Remove prototype.
	(single_insn_src_p): Remove prototype.
	* config/i860/i860.c (single_insn_src_p): Remove function.
	(output_delayed_branch): Remove function.
	(output_delay_insn): Remove function.
	(va_start): Remove unconditional test and dead code, re-format.
	Fix coding style and spelling problems in various comments.
	* config/i860/i860.md (UNSPECV_BLOCKAGE): Define constant...
	(blockage pattern): ...and use it here.
	(all define_peephole patterns related to delayed branches): Remove.
	Fix coding style and spelling problems in various comments.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860.c: Replace all occurrences of 'GNU CC' with 'GCC'.
	Remove all uses of the PARAMS macro.  Remove superflous prototypes.
	Convert all function definitions from traditional to ISO C90 syntax.
	* config/i860/i860-protos.h: Replace all occurrences of 'GNU CC'
	with 'GCC'.  Remove all uses of the PARAMS macro.
	* config/i860/i860.h: Replace all occurrences of 'GNU CC' with 'GCC'.
	* config/i860/i860.md: Likewise.
	* config/i860/sysv4.h: Likewise.
	* config/i860/varargs.asm: Likewise.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/i860/i860-protos.h (i860_va_start): Remove 'stdarg_p'
	argument.
	(tdesc_section): Add prototype.
	Update copyright dates.
	* config/i860/i860.c: Include coretypes.h, tm.h, and toplev.h.
	(TARGET_ASM_FUNCTION_PROLOGUE): Move definition to end of file.
	(TARGET_ASM_FUNCTION_EPILOGUE): Likewise.
	(targetm): Likewise.
	(i860_output_function_prologue): Substitute HOST_WIDE_INT_PRINT_DEC
	for '%d' where necessary.
	(i860_va_start): Remove 'stdarg_p' argument.  Make conditional checks
	on 'stdarg_p' unconditional.  Divide current_function_args_info.ints
	by UNITS_PER_WORD when referencing (likewise for .floats).
	(I860_SVR4_VARARGS): Rename...
	(I860_SVR4_VA_LIST): ...to this.
	Call build() with 't' rather than 'field'.
	(i860_rtx_costs): New function.
	(TARGET_RTX_COSTS): Define.
	(i860_internal_label): New function.
	(TARGET_ASM_INTERNAL_LABEL): Define.
	(i860_file_start): New function.
	Update copyright dates.
	* config/i860/i860.h (CPP_PREDEFINES): Remove.
	(TARGET_CPU_CPP_BUILTINS): Define.
	(EXPAND_BUILTIN_VA_START): Remove 'stdarg' argument.
	(CONST_COSTS): Remove (and move code to i860_rtx_costs).
	(ASM_FILE_START): Remove.
	(ASM_FILE_START_1): Remove.
	(ASM_GLOBALIZE_LABEL): Remove.
	(ASM_OUTPUT_INTERNAL_LABEL): Remove.
	(ASM_OUTPUT_CASE_LABEL): Replace call of ASM_OUTPUT_INTERNAL_LABEL
	with targetm.asm_out.internal_label.
	Update copyright dates.
	* config/i860/sysv4.h (USER_LABEL_PREFIX): Define.
	(CPP_PREDEFINES): Remove.
	(TARGET_OS_CPP_BUILTINS): Define.
	(GLOBAL_ASM_OP): Define.
	(ASM_FILE_START): Remove.
	(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
	(TARGET_ASM_FILE_START): Define.
	Update copyright dates.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* gcc/config.gcc (i860-*-sysv4*): Add target.
	* config/i860/i860-protos.h: New.
	* config/i860/i860.c: New.
	* config/i860/i860.h: New.
	* config/i860/i860.md: New.
	* config/i860/sysv4.h: New.
	* config/i860/varargs.asm: New.
	* config/i860/x-sysv4: New.

2003-08-22  Jason Eckhardt  <jle@rice.edu>

	* config/pa/pa.c: Replace 'GNU CC' with 'GCC'.
	Remove all uses of PARAMS macro.
	Convert all function definitions to ISO C90 syntax.
	* config/pa/elf.h: Replace 'GNU CC' with 'GCC'.
	* config/pa/fptr.c: Likewise.
	* config/pa/lib2funcs.asm: Likewise.
	* config/pa/long_double.h: Likewise.
	* config/pa/milli64.S: Likewise.
	* config/pa/pa-64.h: Likewise.
	* config/pa/pa-hpux.h: Likewise.
	* config/pa/pa-hpux10.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.
	* config/pa/pa-linux.h: Likewise.
	* config/pa/pa-modes.def: Likewise.
	* config/pa/pa-osf.h: Likewise.
	* config/pa/pa-pro-end.h: Likewise.
	* config/pa/pa.md: Likewise.
	* config/pa/pa32-linux.h: Likewise.
	* config/pa/pa64-linux.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/pa/pa64-regs.h: Likewise.
	* config/pa/quadlib.c: Likewise.
	* config/pa/rtems.h: Likewise.
	* config/pa/pa-protos.h: Replace 'GNU CC' with 'GCC' and remove
	all uses of the PARAMS macro.
	* config/pa/pa.h: Likewise.
	* config/pa/som.h: Likewise.

	* config/iq2000/iq2000.c: Replace 'GNU CC' with 'GCC'.
	Remove all uses of PARAMS macro.
	Convert all function definitions to ISO C90 syntax.
	* config/iq2000-protos.h: Replace 'GNU CC' with 'GCC'.
	Remove all uses of PARAMS macro.
	* config/iq2000.h: Remove all uses of PARAMS macro.
	* config/iq2000/iq2000.md: Replace 'GNU CC' with 'GCC'.

2003-08-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_output_pool_entry): Declare.
	* config/s390/s390.c (gen_consttable): Remove.
	(s390_dump_pool): Use UNSPECV_POOL_ENTRY for pool entry insns.
	(s390_output_pool_entry): New function.
	* config/s390/s390.md (UNSPECV_POOL_QI, UNSPECV_POOL_HI,
	UNSPECV_POOL_SI, UNSPECV_POOL_DI, UNSPECV_POOL_TI,
	UNSPECV_POOL_SF, UNSPECV_POOL_DF): Remove, replace by ...
	(UNSPECV_POOL_ENTRY): ... this new constant.
	("consttable_qi", "consttable_hi", "consttable_si", "consttable_di",
	"consttable_ti", "consttable_sf", "consttable_df"): Remove ...
	("*pool_entry"): ... and replace by this new insn.
	("literal_pool_31"): Do not emit anchor label if pool empty.

	* config/s390/s390.c (struct machine_function): Add save_return_addr_p.
	(s390_optimize_prolog): Save RETURN_REGNUM if save_return_addr_p.
	(s390_fixup_clobbered_return_reg): Remove.
	(s390_reorg): Don't call s390_fixup_clobbered_return_reg.
	(s390_return_addr_rtx): Always retrieve return address from save area
	slot.  Use save_return_addr_p to force slot to be filled.
	(s390_emit_prologue): Remove has_hard_reg_initial_val test.

2003-08-22  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (MASK_FIX_SB1, TARGET_FIX_SB1): New defines.
	(TARGET_SWITCHES): Add -mfix-sb1 and -mno-fix-sb1.
	* config/mips/mips.md (divdf3, divsf3, sqrtdf2, sqrtsf2): Work
	around SB-1 errata if TARGET_FIX_SB1 is set.
	(recip.d insn, recip.s insn, rsqrt.d insn, rsqrt.s insn): Likewise.
	* doc/invoke.texi: Document MIPS -mfix-sb1 and -mno-fix-sb1.

2003-08-22  Roger Sayle  <roger@eyesopen.com>

	* hashtable.c (ht_expand): Avoid calculating rehash for the common
	case that the first probe hits an empty hash table slot.

2003-08-22  Mark Mitchell  <mark@codesourcery.com>

	* config/ia64/hpux.h (SUPPORTS_INIT_PRIORITY): Define to 0.

2003-08-22  Mark Mitchell  <mark@codesourcery.com>

	* config/ia64/ia64.md (*ptr_extend_plus_1): Rename to ...
	(ptr_extend_plus_imm): ... this.
	* config/ia64/ia64.c (addp4_optimize_ok): Do not disable addp4
	optimization in C++.
	(ia64_output_mi_thunk): Support ILP32 mode.

2003-08-22  Bernardo Innocenti  <bernie@develer.com>

	* gcc/config/m68k/m68k.c (m68k_coff_asm_named_section): remove unused
	function.
	* gcc/config/m68k/m68k.c (-m68k_svr3_asm_out_constructor): likewise.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.c (const_int_1_operand): Simplify an
	integer comparison.

2003-08-22  Alan Modra  <amodra@bigpond.net.au>

	* config/fp-bit.c: Specify config/ dir for include of fp-bit.h.
	* config/rs6000/ppc64-fp.c: Likewise.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgcleanup.c: Fix comment typos.
	* emit-rtl.c: Likewise.
	* optabs.c: Likewise.
	* ra-build.c: Likewise.
	* rtlanal.c: Likewise.
	* tree.h: Likewise.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* c-decl.c: Fix comment formatting.
	* cfgrtl.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* fold-const.c: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-common.c: Likewise.
	* mips-tfile.c: Likewise.
	* regmove.c: Likewise.

2003-08-22  Kazu Hirata  <kazu@cs.umass.edu>

	* builtin-attrs.def: Fix comment formatting.
	* c-pretty-print.c: Likewise.
	* diagnostic.h: Likewise.
	* langhooks.h: Likewise.
	* recog.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree.def: Likewise.

2003-08-22  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k-protos.h: Convert to ISO C90.
	* config/m68k/m68k.c: Likewise.

2003-08-21  Bernardo Innocenti  <bernie@develer.com>
	    Paul Dale  <pauli@snapgear.com>
	    Peter Barada <peter@baradas.org>

	* config/m68k/m68k.c (m68k_rtx_costs): Adjust mul/div costs for
	ColdFire cores.

2003-08-21  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (INCLUDES): Remove -I$(srcdir)/config.
	* config.gcc (*-*-openbsd): Don't set tm_file.
	(alpha*-*-openbsd, arm*-*-coff*, arm*-wince-pe*,
	arm-*-pe*, avr-*-*, h8300-*-rtems*, h8300-*-elf*,
	h8300-*-*, hppa*-*-osf*, hppa*-*-bsd*, hppa*-*-hpux*,
	i370-*-opened*, i370-*-mvs*, i370-*-linux*, i?86-*-openbsd*,
	i?86-*-lynxos, i?86-*-nto-qnx*, iq2000*-*-elf*, m68000-hp-hpux*,
	m68k-hp-hpux*, m68k-*-aout*, m68k-*-coff*, m68020-*-elf*,
	m68k-*-elf*, m68k*-*-netbsd*, m68k*-*-openbsd*, m68k-*-sysv4*,
	m68k-*-linux*, m68k-*-rtems*, mcore-*-pe*, mips*-*-netbsd*,
	mips*-*-openbsd*, rs6000-*-lynxos*, sh*-*-elf*, sh*-*-ka,
	sh-*-rtemself, sparc-*-openbsd*, strongarm-*-pe, vax-*-openbsd*,
	xscale-*-coff): Use explicit and complete lists of target headers
	to include.  Move definitions to tm_defines where appropriate.
	(hppa*-*-openbsd*, powerpc-*-openbsd*): Comment out stanza for
	not-yet-contributed configuration.

	* config/lynx.h, config/alpha/openbsd.h, config/arm/coff.h
	* config/avr/avr.h, config/frv/frv.h, config/h8300/elf.h
	* config/i370/linux.h, config/i370/mvs.h, config/i370/oe.h
	* config/i386/nto.h, config/iq2000/iq2000.h,
	* config/m68k/coff.h, config/m68k/hp310.h, config/m68k/hp320.h
	* config/m68k/linux.h, config/m68k/m68k-aout.h
	* config/m68k/m68k-none.h, config/m68k/m68kv4.h
	* config/m68k/netbsd.h, config/m68k/openbsd.h
	* config/m68k/sgs.h, config/mcore/mcore-pe.h,
	* config/mips/netbsd.h, config/mips/openbsd.h, config/pa/pa.h,
	* config/rs6000/lynx.h, config/sh/embed-elf.h, config/sparc/openbsd.h:
	Remove includes of other target config headers, and
	definitions of macros moved to tm_defines lists.  Add #undefs
	where now necessary to prevent redefinition warnings.

	* config/h8300/coff.h: New file split out of...
	* config/h8300/elf.h: ...here.
	* config/m68k/hp320base.h: New file split out of...
	* config/m68k/hp320.h: ...here.
	* config/rs6000/lynxbase.h: New file split out of...
	* config/rs6000/lynx.h: ...here.

	* config/m68k/hp310g.h, config/m68k/hp320g.h, config/m68k/hpux7.h
	* config/m68k/m68k-coff.h, config/mips/openbsd-be.h: Delete file.

	* config/sol2.h: Remove #if 0-ed #include of sys/mman.h.
	* config/m68k/m68kelf.h: Remove commented out #include of m68k/sgs.h.
	* config/mcore/mcore.h: Don't include hwint.h nor machmode.h.
	Remove unnecessary #ifndef.
	* config/s390/s390.h: Prefix #include of s390/fixdfdi.h
	[under IN_LIBGCC2] with config/.

2003-08-21  Per Bothner  <pbothner@apple.com>

	* cppfiles.c (stack_file):  Correctly pass return_at_eof parameter
	to cpp_push_buffer.
	* cpplex.c (_cpp_get_fresh_line):  Don't buffer->prev - handled
	by return_at_eof check.  Always call _cpp_pop_buffer at end.

2003-08-21  Kazu Hirata  <kazu@cs.umass.edu>

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

2003-08-21  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MUST_PASS_IN_STACK): Remove BLKmode clause.
	* config/mips/mips.c (function_arg_pass_by_reference): Never return
	true for n32 & n64.

2003-08-21  Josef Zlomek  <zlomekj@suse.cz>

	* fold-const.c (fold): Fix bug in (A & C) == D where D & ~C != 0
	and similarly in (A | C) == D where C & ~D != 0.

2003-08-20  Geoffrey Keating  <geoffk@apple.com>

	PR 8180
	* configure.in: When testing with_libs and with_headers, treat
	'no' as unset.  Based on a patch by Dan Kegel <dank@kegel.com>.
	* configure: Regenerate.

2003-08-20  Peter Barada <peter@baradas.org>

	* longlong.h (umul_ppmm): Add ColdFire support.

2003-08-20  Peter Barada <peter@baradas.org>
	    Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k-none.h: Introduce new ColdFire archs.
	* config/m68k/m68k.h: Likewise.
	* config/m68k/lb1sf68.asm: Rename __mcf5200__ to __mcoldfire__.
	* config/m68k/coff.h: Rename TARGET_5200 to TARGET_COLDFIRE.
	* config/m68k/linux.h: Likewise.
	* config/m68k/m68k.c: Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/m68k/m68kelf.h: Likewise.
	* config/m68k/netbsd-elf.h: Likewise.
	* config/m68k/t-m68kelf: Add multilib targets for new ColdFire archs.

2003-08-20  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c: Strip away code depending on NO_ADDSUB_Q definition.
	* config/m68k/m68k.md: Likewise.

2003-08-20  Mark Mitchell  <mark@codesourcery.com>

	PR java/11996
	Revert this change:
	2003-08-19  Mark Mitchell  <mark@codesourcery.com>
	* c-common.c (c_common_signed_or_unsigned_type): Correctly handle
	types with precisions other than those given by native machine
	modes.

2003-08-20  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.md (anonymous define_insn): remove obsolete code
	selected by FSGLMUL_USE_S and FSGLDIV_USE_S
	* config/m68k/m68k.c (output_move_himode): remove SGS_NO_LI check
	* config/m68k/m68k.md (anonymous define_insn): Likewise
	* config/m68k/m68k.md (anonymous define_insn): remove ISI_OV check
	* config/m68k/m68k.c (standard_68881_constant_p): remove obsolete
	code selected by NO_ASM_FMOVECR

2003-08-20  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (output_move_const_into_data_reg,
	output_move_himode): unify MOTOROLA/MIT handling of moveq
	* config/m68k/m68k.md (movsi_const0, anonymous define_insn):
	Likewise

2003-08-20  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_output_function_prologue): use %U in
	label name
	* config/m68k/m68k.c (m68k_output_function_epilogue): replace
	HOST_WIDE_INT_PRINT_DEC with %wd

2003-08-20  Loren James Rittle  <ljrittle@acm.org>

	* config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Handle
	redefine warning.

2003-08-20  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11984
	* fold-const.c (fold <PLUS_EXPR>): Check for integer constant
	operands before calling tree_int_cst_lt when performing associative
	transformations.

2003-08-20  Jason Merrill  <jason@redhat.com>

	* tree.h (IS_EXPR_CODE_CLASS): Also include 'r' and 's'.
	(EXPR_CHECK): Don't check for 'r' or 's' if we're
	checking IS_EXPR_CODE_CLASS.
	* calls.c (calls_function_1): Likewise.
	* fold-const.c (fold): Likewise.
	* tree.c (iterative_hash_expr): Likewise.
	* tree-inline.c (walk_tree, copy_tree_r): Likewise.

2003-08-20  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c (m68k_output_mi_thunk): delete obsolete code
	depending on MOTOROLA_BSR
	* config/m68k/m68k.md (anonymous define_insn): Likewise

2003-08-20  Jason Merrill  <jason@redhat.com>

	* builtins.c (expand_builtin_mathfn): Use get_callee_fndecl.
	(expand_builtin_mathfn2, expand_builtin, builtin_mathfn_code,
	fold_trunc_transparent_mathfn, fold_builtin): Likewise.
	* dojump.c (do_jump): Likewise.
	* fold-const.c (operand_equal_p, fold): Likewise.
	(tree_expr_nonnegative_p): Likewise.

	* stor-layout.c (do_type_align): Only copy DECL_USER_ALIGN from
	TYPE_USER_ALIGN for FIELD_DECLs.

	* attribs.c (decl_attributes): Rebuild the function pointer type after
	changing the target type.
	* tree.c (get_qualified_type): Also check that the attributes match.

2003-08-19  Matt Kraai  <kraai@alumni.cmu.edu>

	* Makefile.in (STAGESTUFF): Move cc1obj$(exeext) from here ...
	* objc/config-lang.in (stagestuff): ... to here.

2003-08-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/11946
	* convert.c (convert_to_integer): Use CONVERT_EXPR (instead of
	NOP_EXPR) when necessary.
	* c-common.c (c_common_signed_or_unsigned_type): Correctly handle
	types with precisions other than those given by native machine
	modes.

2003-08-19  Geoffrey Keating  <geoffk@apple.com>

	* cpppch.c (cpp_valid_state): Re-add warning about PCH not used
	because some macro is defined.

	* config/darwin.h (LINK_COMMAND_SPEC): Add -arch and -arch_only
	options.
	* config/i386/darwin.h (ASM_SPEC): New.
	(SUBTARGET_EXTRA_SPECS): New.
	* config/rs6000/darwin.h (ASM_SPEC): New.
	(SUBTARGET_EXTRA_SPECS): New.
	* configure.in: Don't set CROSS or SYSTEM_HEADER_DIR when building
	a cross-compiler between two different processors on Darwin.
	* configure: Regenerate.

2003-08-19  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Fix comment typos.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloopanal.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* haifa-sched.c: Likewise.
	* pretty-print.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* value-prof.c: Likewise.

2003-08-19  Kazu Hirata  <kazu@cs.umass.edu>

	* c-decl.c: Follow spelling conventions.
	* cppfiles.c: Likewise.

2003-08-19  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c: Fix comment formatting.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* cppinit.c: Likewise.
	* cpplib.h: Likewise.
	* emit-rtl.c: Likewise.
	* input.h: Likewise.
	* line-map.h: Likewise.
	* opts.c: Likewise.
	* opts.h: Likewise.
	* simplify-rtx.c: Likewise.

2003-08-19  Daniel Jacobowitz  <drow@mvista.com>

	* unwind-c.c: Add libgcc-style exception.
	* unwind-dw2.c: Likewise.
	* unwind-pe.h: Likewise.
	* unwind-sjlj.c: Likewise.
	* unwind.inc: Likewise.

2003-08-19  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/5582 PR c++/10538
	* langhooks-def.h (lhd_decl_uninit): Declare.
	(LANG_HOOKS_DECL_UNINIT): New macro.
	(LANG_HOOKS_INITIALIZER): Adjust.
	* langhooks.h (struct lang_hooks): Add new field
	decl_uninit.
	* langhooks.c (lhd_decl_uninit): Define.
	* c-common.c (c_decl_uninit_1): New function.
	(c_decl_uninit): New function.
	(warn_init_self): Define.
	* c-common.h (c_decl_uninit): Declare.
	(warn_init_self): Declare.
	* c.opt: Introduce -Winit-self.
	* c-opts.c (c_common_handle_options): Set warn_init_self.
	* c-lang.c (LANG_HOOKS_DECL_UNINIT): Define.
	* objc/objc-lang.c  (LANG_HOOKS_DECL_UNINIT): Define.
	* function.c (uninitialized_vars_warning): Call the language hook.
	* doc/invoke.texi: Document -Winit-self.

2003-08-19  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md: Adjust SI-mode "trap_if" instruction
	to use better predicates and constraints.  Define new
	instruction to handle "trap_if" with DI-mode arguments.
	(conditional_trap): FAIL if trap code is not 0.

2003-08-19  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/i386/i386.c (legitimate_pic_address_disp_p): Change the
	strstr with $pb to a strcompare with "<pic base>"
	(ix86_output_addr_diff_elt): Output the real pic base.

2003-08-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* langhooks-def.h (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling.
	(LANG_HOOKS_INITIALIZER): Correct.
	* c-lang.c: Likewise.

2003-08-19  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_mark_needed_node): Call notice_global_symbol.
	(cgraph_varpool_mark_needed_node): Likewise.
	* cgraph.h (notice_global_symbol): Declare
	* varasm.c (notice_global_symbol): Break out from ...
	(assemble_start_function): ... here; update for variables.
	(assemble_variable): Use notice_global_symbol.

2003-08-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_va_arg): If EABI_FLOAT_VARARGS_P,
	expect SFmode and DFmode arguments to be passed in FPRs,
	regardless of the underlying type.

2003-08-19  Richard Sandiford  <rsandifo@redhat.com>

	PR target/11924
	* config/mips/mips.c (INTERNAL_SYMBOL_P): New macro.
	(mips_classify_symbol, m16_usym8_4, m16_usym5_4): Use it.

2003-08-18  Matt Kraai  <kraai@alumni.cmu.edu>

	PR c/11207
	* c-typeck.c (set_init_index): Check for negative index.

2003-08-18  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/crti.asm (_init, _fini): Add alternate code for new
	call0 ABI.
	* config/xtensa/crtn.asm (_init, _fini): Likewise.
	* config/xtensa/lib1funcs.asm (__mulsi3, __udivsi3, __divsi3,
	__umodsi3, __modsi3): Likewise.
	* config/xtensa/t-xtensa (crti.o, crtn.o): Add $(GCC_CFLAGS) and
	$(INCLUDES).

2003-08-18  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md ("*nabssf2_gpr"): New.

2003-08-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Quote C code in braces.  Remove use of
	fake const0_rtx operands.  Remove double backslashes.  Use \;.
	Remove workarounds for bogus warnings.

2003-08-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (muldf3, mulsf3): Don't call a gen_* function.
	(muldf3_internal, muldf3_r4300): Select based on TARGET_4300_MUL_FIX
	rather than TARGET_MIPS4300.
	(mulsf3_internal, mulsf3_r4300): Likewise.

2003-08-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Renumber unspecs.  Clean up comments.

2003-08-17  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (associative_constant_p): New function to test
	whether an RTX expression is an immediate constant.
	(simplify_associative_operation): New function to perform some
	reassociation optimizations of associative binary expressions.
	(simplify_binary_operation): Use simplify_associative_operation
	to simplify PLUS, MULT, AND, IOR, XOR, SMIN, SMAX, UMIN and UMAX.
	Floating point expressions are only reassociated when unsafe
	math optimizations are permitted.

2003-08-17  Andreas Jaeger  <aj@suse.de>

	* config/alpha/alpha.md: Remove usage of PARAMS.

	* config/i386/cygwin.h: Convert K&R prototypes to ISO C90.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/winnt.c: Likewise.
	* config/i386/cygming.h: Likewise.
	* config/i386/cygwin2.c: Likewise.
	* config/darwin.c: Likewise.
	* config/darwin-c.c: Likewise.
	* config/darwin-protos.h: Likewise.
	* config/darwin.h: Likewise.
	* config/s390/s390-protos.h: Likewise.
	* config/s390/s390.c: Likewise.
	* config/ia64/ia64.c: Likewse
	* config/ia64/ia64-protos.h: Likewise.
	* config/ia64/ia64-c.c: Likewise.

2003-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/sparc/sparc.c: Convert to ISO C.

	* config/sparc/sparc-protos.h: Don't use the PARAMS macro.
	* config/sparc/sparc.c: Likewise.

2003-08-16  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/11512
	* stmt.c (expand_expr_stmt_value): Don't warn about any void
	typed expression.

2003-08-16  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fntype_regparm): Rename from ...
	(ix86_function_regparm): ... this one; add fastcall and local
	functions.
	(ix86_function_ok_for_sibcall): Update.
	(ix86_return_pops_args): Likewise.
	(init_cumulative_args): Likewise.
	(x86_can_output_mi_thunk): Likewise.
	(function_arg): Fix formating.
	(x86_this_parameter): Fix fastcall.
	(x86_output_mi_thunk): Likewise.

	* cgraph.c (cgraph_mark_needed_node): Do not mark functions without
	body as reachable; mark nested functions as needed too.
	(dump_cgraph): Do not output global.calls.
	* cgraph.h (cgraph_global_info): Kill.
	* cgraphunit.c (cgraph_finalize_function): Enqueue needed functions.
	(record_call_1): Speedup.
	(cgraph_analyze_function): Break out from ...; compute inlining
	parameters.
	(cgraph_finalize_compilation_unit): ... here.
	(cgraph_mark_inline): Kill computation of calls.
	(cgraph_decide_inlining): Do not compute most of initial values.

2003-08-14  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_expr_p): MULT_EXPRs and RDIV_EXPRs are easy
	to negate if either operand is easy to negate, if we don't care
	about sign-dependent rounding.
	(negate_expr): Make the logic to negate a REAL_CST explicit.
	Attempt to negate a MULT_EXPR or RDIV_EXPR by negating an operand
	that's easy to negate, if we don't honor sign-dependent rounding.
	(fold <MULT_EXPR>): Optimize -A * B as A * -B if B is easy to
	negate, and the symmetric A * -B as -A * B if A is easy to negate.
	(fold <RDIV_EXPR>): Likewise, optimize -A/B and C/-D as A/-B and
	-C/D if B and C are cheap to negate.  Add an explicit rule to
	optimize X/-1.0 as -X when we don't care about signaling NaNs.

2003-08-14  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (tm_file): Rename tm_include_list.
	(tm_p_file): Rename tm_p_include_list.
	(build_xm_file): Rename build_xm_include_list.
	(host_xm_file): Rename host_xm_include_list.
	(xm_file): Rename xm_include_list.
	(xm_file_list): Add to be substituted.
	(cs-config.h, cs-bconfig.h, cs-tconfig.h, cs-tm.h, cs-tm_p.h):
	Update to match.
	(bt-load.o): Add missing dependency on $(TM_H).
	* configure.in: Prefix value of EXTRA_MODES_FILE with config/.
	For each of tm_file, tm_p_file, xm_file, host_xm_file, and
	build_xm_file, generate both *_file_list and *_include_list
	values from it.  (xm_file_list was formerly not being generated.)
	In *_include_list, prefix the names of all headers found in
	$(srcdir)/config with config/.  In each loop, consider only
	the special case files that can actually appear in that list.
	AC_SUBST all *_file_list and all *_include_list variables; do
	not AC_SUBST the plain *_file variables.
	* configure: Regenerate.

2003-08-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfg.c (dump_edge_info): Add name of loop_exit edge flag.

2003-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_adjust_insn_length): Delete adjustment for delay slot in
	direct calls.
	(attr_length_call): Include it here.  Improve length estimate for
	local calls.
	(output_call): Use targetm.binds_local_p.

2003-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (CASE_MATHFN): New helper macro.
	(mathfn_built_in): Simplify and sort.

	* protoize.c (substr): Delete, callers changed to `strstr'.

2003-08-13  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc (iq2000*-*-elf*): Don't set xm_file.
	* config/iq2000/xm-iq2000.h: Delete file.

2003-08-13  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (walk_type): Process a subobject before processing
	the pointer that points to the subobject.

2003-08-13  Per Bothner  <pbothner@apple.com>

	* regclass.c (init_reg_modes):  Make non-static.
	Rename to init_reg_modes_once per new naming convention.
	(init_regs):  Don't call init_reg_modes here.
	* emit-rtl.c (init_emit_once):  Call init_reg_modes_once here instead.
	* rtl.h (init_reg_modes_once):  New declaration.
	* toplev.c (backend_init):  Call init_regs after init_emit_once.

2003-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (DBX_REGISTER_NUMBER): Define so to map a
	special index for MD_FALLBACK_FRAME_STATE_FOR to itself.

2003-08-13  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_get_pr_initial_val): Always wrap in unspec for TARGET_SH1.
	* sh.md (load_ra): Change insn predicate to TARGET_SH1.

2003-08-13  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.md (ctrsi, ctrdi):  Reenable
	handling of decrement-and-branch farther than 32 bits.

2003-08-12  Kelley Cook  <kelleycook@wideopenwest.com>

	* configure.in (make_compare_target): Move test to ...
	* aclocal.m4 (gcc_AC_PROG_CMP_IGNORE_INITIAL): here.
	* configure: Regenerate.

2003-08-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/iris6.h: Convert to C90 prototypes.
	* config/mips/irix6-libc-compat.c: Likewise.
	* config/mips/mips-protos.h: Likewise.
	* config/mips/mips.c: Likewise.

2003-08-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	fixinc/inclhack.def (svr4_krnl): Rename from svr4_kernel.  Enable
	for selected machines.  Comment heavily.
	fixinc/fixincl.x: Rebuild.
	fixinc/tests/base/fs/rfs/rf_cache.h: New file.

2003-08-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h: Tweak various comments.
	* config/mips/mips.c: Likewise.

2003-08-11  James E Wilson  <wilson@tuliptree.org>

	PR optimization/11319
	PR target/10021
	* alias.c (find_base_value, case REG): Return 0 not src if no base
	found.

2003-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcse.c (gmalloc): Fix last change.

2003-08-11  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation): Replace calls to
	gen_rtx_NEG and gen_rtx_NOT with calls to simplify_gen_unary,
	and calls to gen_rtx_PLUS, gen_rtx_MULT, gen_rtx_LSHIFTRT,
	gen_rtx_ASHIFT and gen_rtx_AND with calls to simplify_gen_binary.

2003-08-11  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr): If an ABS_EXPR has a complex type, abort.
	* c-typeck.c (build_unary_op): COMPLEX_TYPE is not a valid
	typecode for an ABS_EXPR.

	* doc/c-tree.texi: Document ABS_EXPR.

2003-08-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold): Optimize any associative floating point
	operator with -funsafe-math-optimizations, not just MULT_EXPR.

2003-08-11  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/lib1funcs.asm (__udivdi3): Add .type and .size
	information in SHmedia case too.
	(__divdi3, __umoddi3, __moddi3, __init_trampoline, __ic_invalidate):
	Likewise.
	(__set_fpscr): Use an access via GOT for PIC case.

2003-08-11  Kelley Cook  <kelleycook@wideopenwest.com>

	* configure.in (intermodule): Make switch test more portable.
	* configure: Regenerate.

2003-08-11  Kelley Cook  <kelleycook@wideopenwest.com>

	* Makefile.in (cleanstrap): Pass BOOT_CFLAGS to bootstrap.
	(restrap): Likewise.

2003-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcse.c (gmalloc): Argument is a size_t.  Add ATTRIBUTE_MALLOC.
	(grealloc): Size argument is a size_t.
	(gcalloc): New function.  Use throughout in lieu of
	gmalloc/memset.

	* config/avr/avr.c (avr_init_once): Use xcalloc in lieu of
	xmalloc/memset.
	* config/ia64/ia64.c (ia64_reorg): Likewise.
	* conflict.c (conflict_graph_new): Likewise.
	* fixinc/fixincl.c (run_compiles): Likewise.
	* genattrtab.c (optimize_attrs): Likewise.
	* genrecog.c (new_decision): Likewise.
	* haifa-sched.c (schedule_block): Likewise.
	* hashtable.c (ht_create): Likewise.

2003-08-11  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib2funcs.S: Fix whitespace.
	* config/xtensa/xtensa.md (all insns and expanders): Use brace block
	syntax where appropriate.  Remove unnecessary backslash escapes.
	Reformat comments and fix some code formatting.
	(extendqisi2): Rearrange conditional.
	(*btrue, *bfalse, *ubtrue, *ubfalse, *bittrue, *bitfalse, *masktrue,
	*maskfalse, movsicc_internal0, movsfcc_internal0): Call abort instead
	of fatal_insn.

2003-08-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c: Various formatting fixes.
	(override_options): Resync -mtune handling with gas.
	(mips_issue_rate): Rearrange like mips_use_dfa_pipeline_interface.
	* config/mips/mips.h: More formatting fixes.
	(mips_abi): Move declaration.
	* config/mips/mips.md (exception_receiver): Add mode to
	unspec_volatile.

2003-08-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (spe_init_builtins): Handle evsplati and
	evsplatfi here.
	(bdesc_1arg): Remove evsplati and evsplatfi.

2003-08-11  J"orn Rennecke <joern.rennecke@superh.com>

	* dwarf2asm.c (dw2_output_indirect_constant_1): Take user_label_prefix
	into account.

2003-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strcat): Optimize constant strings.

2003-08-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* pretty-print.c (pp_base_indent): Rename from pp_indent.
	* c-pretty-print.h (pp_c_pretty_print_flag)s: New datatype.
	(struct c_pretty_print_info): Add more fields.
	(pp_c_left_paren): Move to c-pretty-print.c.
	(pp_c_right_paren): Likewise.
	(pp_c_left_brace): Likewise.
	(pp_c_right_brace): Likewise.
	(pp_c_left_bracket): Likewise.
	(pp_c_right_bracket): Likewise.
	(pp_c_declarator): Declare.
	(pp_c_direct_declarator): Likewise.
	(pp_c_specifier_qualifier_list): Likewise.
	(pp_c_type_id): Likewise.
	* c-pretty-print.c (pp_c_cv_qualifier): Change prootype. Rework..
	(pp_c_type_qualifier_list): New.
	(pp_c_pointer): Likewise.
	(pp_c_parameter_type_list): Likewise.
	(pp_c_function_definition): Likewise.
	(pp_c_id_expression): Likewise.
	(pp_c_simple_type_specifier): Tidy.
	(pp_c_unary_expression): Likewise.
	(pp_c_expression): Likewise.
	(pp_c_pretty_printer_init): Likewise.
	(pp_c_specifier_qualifier_list): Rework..
	(pp_c_abstract_declarator): Likewise.
	(pp_c_postfix_expression): Likewise.
	(pp_c_primary_expression): Likewise.
	(pp_c_cast_expression): Likewise.
	(pp_c_direct_abstract_declarator): Likewise.
	(pp_c_storage_class_specifier): Likewise.
	(pp_c_function_specifier): Likewise.
	(pp_c_declaration_specifiers): Likewise.
	(pp_c_direct_declarator): Likewise.
	(pp_c_declarator): Likewise.
	(pp_c_declaration): Likewise.
	(pp_c_statement): Likewise.
	(pp_c_integer_constant): Rename from pp_c_integer_literal.
	(pp_c_character_constant): Rename from pp_c_character_literal.
	(pp_c_bool_constant): Rename from pp_c_bool_literal.
	(pp_c_enumeration_constant): Rename from pp_c_enumerator.
	(pp_c_floating_constant): Rename from pp_c_real_literal.
	(pp_c_constant): Rename from pp_c_literal.
	* c-lang.c: Include diagnostic.h and c-pretty-print.h
	(LANG_HOOKS_INITIALIZE_DIAGNOSTITCS): Define.
	(c_initialize_diagnostics): New.
	* Makefile.in (c-lang.o): Update dependency.

2003-08-10  Nathan Sidwell  <nathan@codesourcery.com>

	* c-typeck.c (digest_init): Add conversion for VECTOR_TYPEs.

2003-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_no_mips16_string): Remove.
	(override_options): Don't handle -mips16 as part of -mipsN.
	* config/mips/mips.h (mips_no_mips16_string): Remove declaration.
	(TARGET_SWITCHES): Add -mips16 and -mno-mips16 entries.
	(TARGET_OPTIONS): Remove -mno-mips16.

2003-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (coprocessor_operand): Remove declaration.
	(coprocessor2_operand): Likewise.
	* config/mips/mips.c (STAB_CODE_TYPE): Remove.
	(lookup_name): Remove declaration.
	(abort_with_insn): Remove.  Replace all uses with fatal_insn.
	(mips16, mips_abicalls): Remove.
	(mips_char_to_class): Remove initialiser: all entries are NO_REGS.
	(arith32_operand, large_int, true_reg_or_0_operand): Remove.
	(coprocessor_operand, coprocessor2_operand): Remove.
	(override_options): Don't set mips16 or mips_abicalls.
	(print_operand): Don't expect SIGN_EXTEND operands.
	(mips_secondary_reload_class): Likewise.
	(mips_output_conditional_branch): Remove disabled long-branch code.
	* config/mips/mips.h (call_used_regs): Remove declaration.
	(may_call_alloca): Likewise.
	(mips_cpu_attr, mips_abicalls_type, mips_abicalls_attr): Remove.
	(mips_abicalls, mips16): Remove declarations.
	(ASM_FINAL_SPEC, LIB_SPEC): Remove.
	(CC1_SPEC): Remove outdated comment.
	(MIPS_VERSION, MACHINE_TYPE): Remove.
	(TARGET_VERSION_INTERNAL, TARGET_VERSION): Remove.
	(PC_REGNUM, STACK_POINTER_OFFSET): Remove disabled definitions.
	(STRUCT_VALUE_RETURN_REGNUM, STACK_DYNAMIC_OFFSET): Likewise.
	(PUSH_ROUNDING): Likewise.
	(ASSEMBLER_SCRATCH_REGNUM): Remove.
	* config/mips/mips.md: Replace mips_cpu_attr with mips_tune
	and mips16 with TARGET_MIPS16.

2003-08-09  Per Bothner  <pbothner@apple.com>

	* cppinit.c (cpp_read_main_file):  Split out source-independent
	initialization to separate function ...
	(cpp_post_options):  New function.
	* cppfiles.c (cpp_stack_file):  Rename public name to ...
	(_cpp_stack_file):  New internal function name.
	* cpplib.h:  Update accordingly.
	* cppinit.c:  (cpp_create_reader):  Initialize cpp_readers line here.
	(cpp_read_main_file):  Don't initialize line here.
	* c-opts.c (c_common_post_options):  Call cpp_post_options.
	(c_common_parse_file):  Call cpp_read_main_file, not cpp_stack_file.
	* fix-header.c (read_scan_file):  Call cpp_post_options.

2003-08-09  Per Bothner  <per@bothner.com>

	* c-decl.c (SCOPE_LIST_APPEND):  Remove bogus line continuation.

2003-08-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_asm_output_mi_thunk): Fix typo.

2003-08-09  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/11839
	* cppfiles.c (open_file): Handle ENOTDIR.

2003-08-09  Richard Sandiford  <rsandifo@redhat.com>

	PR target/11699
	* config/mips/mips.c (override_options): Reject -mabi=eabi -mabicalls.

2003-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (extzv, extv, insv): Fix operand limit checks.  Fail if
	source/destination is not a register operand.

2003-08-08  Richard Henderson  <rth@redhat.com>

	PR target/11535
	* config/ia64/ia64.c (ia64_initial_elimination_offset): Remove
	RETURN_ADDRESS_POINTER_REGNUM.
	(ia64_expand_prologue): Don't frob it.
	(ia64_output_function_epilogue): Likewise.
	(ia64_return_addr_rtx): New.
	(ia64_split_return_addr_rtx): New.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.h (FIRST_PSEUDO_REGISTER): Decrement.
	(RETURN_ADDRESS_POINTER_REGNUM): Remove.
	(GENERAL_REGNO_P): Don't check it.
	(AR_*_REGNUM): Renumber.
	(FIXED_REGISTERS): Remove RETURN_ADDRESS_POINTER_REGNUM.
	(CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Likewise.
	(REG_ALLOC_ORDER, REG_CLASS_CONTENTS): Likewise.
	(ELIMINABLE_REGS, REGISTER_NAMES): Likewise.
	(RETURN_ADDR_RTX): Use ia64_return_addr_rtx.
	* config/ia64/ia64.md (UNSPEC_RET_ADDR): New.
	(movdi_ret_addr): New.

2003-08-08  Geoffrey Keating  <geoffk@apple.com>

	* config.gcc (powerpc-*-darwin*): Don't build a soft-float multilib.

2003-08-08  Roger Sayle  <roger@eyesopen.com>

	* tree.h (get_identifier) Define a macro form of get_identifier
	that calls get_identifier_with_length when the string is constant.
	(get_identifier_with_length): Change type of second argument to
	size_t in prototype.
	* stringpool.c (get_identifier): Undefine the macro before giving
	the function definition.
	(get_identifier_with_length): Change  type of second argument to
	size_t in function definition.
	* hashtable.c (calc_hash): Change type of second argument to size_t.
	(ht_lookup): Change type of third argument to size_t.  Reorganize
	to speed-up the cases where the hash table slot is empty, or the
	first probe matches (i.e. there isn't a collision).
	* hashtable.h (ht_lookup): Adjust function prototype.

2003-08-08  Bernardo Innocenti  <bernie@develer.com>

	PR target/9697
	PR target/11777
	* longlong.h (count_leading_zeros): Exclude on __mcpu32__.

2003-08-08  Neil Booth  <neil@daikokuya.co.uk>

	* common.opt: Add debug switches.
	* flags.h (use_gnu_debug_info_extensions): Boolify.
	* opts.c (write_symbols, debug_info_level,
	use_gnu_debug_info_extensions): Move from toplev.c.
	(set_debug_level): New.
	(common_handle_options): Handle debug switches.
	(print_help): Display target options directly.
	* toplev.c (debug_hooks): Don't initialize.
	(write_symbols, debug_info_level,
	use_gnu_debug_info_extensions): Move to opts.c.
	(debug_args, display_help, decode_g_option): Remove.
	(process_options): Set no debug if level zero here,
	and no-debug-hooks.  Error here if impossible debug format selected.
	* toplev.h (display_help, decode_g_option): Remove.

2003-08-08  Richard Sandiford  <rsandifo@redhat.com>

	* tree.c (get_file_function_name_long): Fix size of alloca() area.

2003-08-08  Kelley Cook  <kelleycook@wideopenwest.com>

	* configure.in (gcc_cv_prog_cmp_skip): Flipflop make_compare_target
	and gcc_cv_prog_cmp_skip.
	* configure: Regenerate.

2003-08-08  Stan Cox  <scox@redhat.com>

	* config/iq2000: New port.
	* config.gcc (iq2000-*-elf): Added.
	* doc/install.texi (Specific):  Add iq2000 description.

2003-08-08  Andreas Schwab  <schwab@suse.de>

	* configure.in (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Fix quoting
	and insert missing empty argument.
	* configure: Regenerate.

2003-08-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (update_total_code_bytes): Use new macro IN_NAMED_SECTION_P.
	(attr_length_millicode_call): Likewise.
	(attr_length_call): Likewise.  Revise some maximum insn lengths.
	(attr_length_indirect_call): Likewise.
	(output_call): Fix thinko that added extra nop.
	* pa.h (IN_NAMED_SECTION_P): Define.

	PR c++/11712
	* pa-hpux.h, pa-hpux10.h, pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Define
	__STDC_EXT__ when using C++ dialect.

2003-08-07  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (calc_live_regs): If the return address pointer is live,
	force pr live.
	(sh5_schedule_saves): Exclude PR_MEDIA_REG from being a temp register
	for saves / restores.
	(sh_expand_epilogue): If sh_media_register_for_return returns a
	register number, flag the instructions that restores PR_MEDIA_REG
	as possibly dead.
	Remove dead update of offset.
	(sh_get_pr_initial_val): Use UNSPEC_RA if we don't know yet if
	we can use the result of get_hard_reg_initial_val.
	* sh.md (UNSPEC_RA): New constant.
	(movsi_i_lowpart+1): Changed into a define_insn_and_split, named:
	(load_ra).  Handle UNSPEC_RA.
	(sibcall_media): Use PR_MEDIA_REG.

	* sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG.
	* sh.c (calc_live_regs): Use sh_pr_n_sets to determine if pr
	needs saving on SHmedia.

2003-08-07  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md: Replace all occurrences of \\t with \t.

2003-08-07  Richard Sandiford  <rsandifo@redhat.com>

	* local-alloc.c (combine_regs): Fix comment typo.

2003-08-06  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (builtin_decls): Replace with first_builtin_decl
	and last_builtin_decl.
	(c_init_decl_processing): Initialize both.
	(c_reset_state): Iterate from first_builtin_decl to
	last_builtin_decl inclusive to reintroduce builtins.

2003-08-06  David Mosberger  <davidm@hpl.hp.com>

	* doc/extend.texi (Function Attributes): Document the IA-64 version
	of the "model" attribute.

	* config/ia64/ia64.h (SYMBOL_FLAG_SMALL_ADDR): New macro.
	(SYMBOL_REF_SMALL_ADDR_P): Ditto.
	(PREDICATE_CODES): Mention "small_addr_symbolic_operand".

	* config/ia64/ia64.c (ia64_handle_model_attribute): New function.
	(ia64_encode_section_info): Likewise.
	(ia64_attribute_table): Add "model" attribute.
	(TARGET_ENCODE_SECTION_INFO): Define.
	(small_addr_symbolic_operand): New function.
	(got_symbolic_operand): Return 0 for a symbolref to an object
	in the small address area.
	(enum ia64_addr_area): New type.
	(small_ident1): New variable.
	(small_ident2): Likewise.
	(init_idents): New function.
	(ia64_get_addr_area): Likewise.
	(ia64_encode_addr_area): Likewise.
	(ia64_encode_section_info): Likewise.
	(ia64_expand_load_address): For symbolic references to objects in
	the small-address-area, load the address via gen_rtx_SET() (which,
	eventually, will expand into "addl").

2003-08-06  Per Bothner  <pbothner@apple.com>

	* line-map.h (fileline):  New typedef.
	(struct line_map, linemap_add, linemap_lookup):  Use it.
	* input.h (struct location_s):  Comment notes that long-term we want
	to replace it by fileline.

2003-08-06  J"orn Rennecke <joern.rennecke@superh.com>

	Fix SHcompact exception handling:
	* sh.c (sh_get_pr_initial_val): If PR is or miight be clobbered
	by the prologue, return a MEM with return_address_pointer_rtx
	as address.
	* sh.h (HARD_REGNO_MODE_OK): PR is OK for SImode.
	(RETURN_ADDR_OFFSET): Don't define.
	(SH_DBX_REGISTER_NUMBER): Use SHmedia numbers for SHmedia
	registers that are visible in compact mode.  Show that SHmedia
	registers still exist in compact mode, even if there are not
	readily accessible.
	(ASM_PREFERRED_EH_DATA_FORMAT): Supply DW_EH_PE_indirect
	if GLOBAL.  Use DW_EH_PE_textrel (nominally) for CODE,
	and DW_EH_PE_pcrel for pic data.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): If DW_EH_PE_textrel,
	set SYMBOL_FLAG_FUNCTION in symbol, and actually use
	DW_EH_PE_pcrel / DW_EH_PE_absptr encoding.
	(ALLOCATE_INITIAL_VALUE): Put PR on stack if prologue clobbers it.
	* sh.md (movsi_media-1): New splitter.

2003-08-06  Graeme Peterson <gp@qnx.com>

	* config/i386/nto.h: New.
	* config/i386/t-nto: New.
	* config.gcc (i[34567]86-*-nto-qnx*): New.

2003-08-06  Phil Edwards  <pme@gcc.gnu.org>

	* doc/install.texi (*-*-solaris2*):  Refine configure instructions.

2003-08-06  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (load_register_parameters): Arrange for call_fusage to
	report the whole register as used when shifting to the msb.

2003-08-05  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin): When not optimizing, call the library
	function for all builtins that have library functions (except alloca).

2003-08-05  Alexandre Oliva  <aoliva@redhat.com>

	* c.opt: Introduce -fworking-directory.
	* doc/cpp.texi, doc/invoke.texi, doc/cppopts.texi: Document it.
	* c-common.h (flag_working_directory): Declare.
	* c-common.c (flag_working_directory): Define.
	* c-opts.c (c_common_handle_options): Set it.
	(sanitize_cpp_opts): Set...
	* cpplib.h (struct cpp_options): ... working_directory option.
	(struct cpp_callbacks): Add dir_change.
	* cppinit.c (read_original_filename): Call...
	(read_original_directory): New.  Look for # 1 "directory//"
	and process it.
	(cpp_read_main_file): Call dir_change callback if working_directory
	option is set.
	* gcc.c (cpp_unique_options): Pass -g*.
	* c-lex.c (cb_dir_change): New.
	(init_c_lex): Set dir_change callback.
	* toplev.c (src_pwd): New static variable.
	(set_src_pwd, get_src_pwd): New functions.
	* toplev.h (get_src_pwd, set_src_pwd): Declare.
	* dbxout.c (dbxout_init): Call get_src_pwd() instead of getpwd().
	* dwarf2out.c (gen_compile_unit_die): Likewise.
	* dwarfout.c (output_compile_unit_die, dwarfout_init): Likewise.

2003-08-05  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* pretty-print.h (pp_set_line_maximum_length): Make macro.
	(pp_set_prefix): Likewise.
	(pp_destroy_prefix): Likewise.
	(pp_remaining_character_count_for_line): Likewise.
	(pp_clear_output_area): Likewise.
	(pp_formatted_text): Likewise.
	(pp_last_position_in_text): Likewise.
	(pp_emit_prefix): Likewise.
	(pp_append_text): Likewise.
	(pp_flush): Likewise.
	(pp_format_text): Likewise.
	(pp_format_verbatim): Likewise.
	(pp_tree_identifier): Tidy.
	* pretty-print.c (pp_base_format_text): Rename from pp_format_text.
	(pp_base_format_verbatim): Rename from pp_format_verbatim.
	(pp_base_flush): Rename from pp_flush.
	(pp_base_set_line_maximum_length): Rename from
	pp_set_line_maximum_length.
	(pp_base_clear_output_area): Rename from pp_clear_output_area.
	(pp_base_set_prefix): Rename from pp_set_prefix.
	(pp_base_destroy_prefix): Rename from pp_destroy_prefix.
	(pp_base_emit_prefix): Rename from pp_emit_prefix.
	(pp_base_append_text): Rename from pp_append_text.
	(pp_base_formatted_text): Rename from pp_formatted_text.
	(pp_base_last_position_in_text): Rename from pp_last_position_in_text.
	(pp_base_remaining_character_count_for_line): Rename from
	pp_remaining_character_count_for_line.
	* diagnostic.h (diagnostic_format_decoder): Tidy.
	(diagnostic_flush_buffer): Likewise.
	* c-pretty-print.h: (pp_c_string_literal): Declare.
	(pp_c_real_literal): Likewise.
	(pp_c_integer_literal): Likewise.
	* c-pretty-print.c (pp_c_char): Use pp_string in lieu of
	pp_identifier.
	(pp_c_character_literal): Tidy.
	(pp_c_string_literal): Make public.
	(pp_c_bool_literal): Likewise.
	(pp_c_integer_literal): Likewise.
	(pp_c_real_literal): Likewise.

	* Makefile.in (C_PRETTY_PRINT_H): New variable.
	(c-pretty-print.o): Update dependence.

2003-08-05  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md (fix_truncdfsi2_macro): Properly restore
	".set nomacro" state.
	(fix_truncsfsi2_macro): Likewise.

2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>

	* tree.h (DID_INLINE_FUNC): Remove macro.
	(DECL_DECLARED_INLINE_P): Move from c-tree.h and cp/cp-tree.h,
	add tree check for FUNCTION_DECL.
	(DECL_ESTIMATED_INSNS): Move from c-common.h and java/java-tree.h.
	(struct tree_decl): Rename inlined_function_flag to
	declared_inline_flag.
	* c-common.h (c_lang_decl): Remove.
	(DECL_ESTIMATED_INSNS): Remove.
	* c-tree.h (struct lang_decl): Don't include c_lang_decl.
	(DECL_DECLARED_INLINE_P): Remove.
	* c-decl.c (grokdeclarator): Update comment.  With -finline-functions,
	do not reset DECL_DECLARED_INLINE_P.  Don't use DID_INLINE_FUNC.
	(finish_function): Make uninlinable a bool.  Fixup call to
	tree_inlinable_function_p() and fix some code style issues.
	* cgraph.h (disgread_inline_limits): Fix spelling: `disregard'.
	* cgraph.c (dump_cgraph): Likewise.
	* cgraphunit.c (cgraph_decide_inlining): Likewise
	(cgraph_finalize_compilation_unit): Likewise.
	Also update call to tree_inlinable_function_p().
	(cgraph_default_inline_p): Don't use DID_INLINE_FUNC.  Instead
	look at DECL_DECLARED_INLINE and reverse logic.
	* print-tree.c (print_node): Likewise.
	* toplev.c (rest_of_handle_inlining): Don't use DID_INLINE_FUNC.
	* tree-inline.h (tree_inlinable_function_p): Make a bool.  Update
	prototype.
	* tree-inline.c (inlinable_function_p): Split up in this function to
	check for basic inlining inhibiting conditions, and new
	limits_allow_inlining() function.  Warn if inlining is impossible
	because the inline candidate calls alloca or uses sjlj exceptions.
	(limits_allow_inlining): this new function to check if the inlining
	limits are satisfied.  Throttle from currfn_max_inline_insns, not from
	MAX_INLINE_INSNS_SINGLE.  The latter only makes sense if
	MAX_INLINE_INSNS_AUTO and MAX_INLINE_INSNS_SINGLE are equal.
	Update prototypes.
	(tree_inlinable_function_p): Make a bool.  Update call to
	inlinable_function_p
	(expand_call_inline): Use limits_allow_inlining() when not in
	unit-at-a-time mode to decide on inlining.  Don't use DID_INLINE_FUNC,
	instead see if the function was declared `inline'.

2003-08-05  Josef Zlomek  <zlomekj@suse.cz>

	* gcse.c (try_replace_reg): Fix updating of note.

2003-08-04  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11771
	* fold-const.c (negate_expr_p <MINUS_EXPR>): Change to match the
	logic in negate_expr, i.e. we don't invert (A-B) for floating
	point types unless flag_unsafe_math_optimizations.

2003-08-04  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold <PLUS_EXPR>): Transform x+x into x*2.0.
	Optimize x*c+x and x+x*c into x*(c+1) and x*c1+x*c2 into x*(c1+c2)
	for floating point expressions with -ffast-math.
	(fold <MULT_EXPR>): Don't transform x*2.0 into x+x.
	* expmed.c (expand_mult): Wrap long line.  Expand x*2.0 as x+x.

2003-08-04  Roger Sayle  <roger@eyesopen.com>

	* c-common.c (flag_noniso_default_format_attributes): Delete.
	(built_in_attribute): Don't define/undefine DEF_FN_ATTR.
	(c_attrs_initialized): Delete.
	(c_common_nodes_and_builtins): Don't test c_attrs_initialized,
	always call c_init_attributes.
	(c_init_attributes): Don't define/undefine DEF_FN_ATTR.  Don't
	set c_attrs_initialized when done.
	(c_common_insert_default_attributes): Delete.
	* c-common.h (flag_noniso_default_format_attributes): Delete.
	(c_coomon_insert_default_attributes): Delete prototype.
	* c-opts.c (set_std_c89, set_std_c99, set_std_cxx98): Dont set
	flag_noniso_default_format_attributes.

	* c-decl.c (c_insert_default_attributes): Delete.
	* c-tree.h (c_insert_default_attributes): Delete prototype.

	* attribs.c (decl_attributes): Don't call insert_default_attributes
	langhook.  Update function description comment.
	* langhooks.h (lang_hooks): Remove insert_default_attributes field.
	* langhooks-def.h (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Delete.
	* c-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.
	* system.h: Poison LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES macro.

	* objc/objc-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't
	define.

2003-08-04  Richard Sandiford  <rsandif@redhat.com>

	* config/mips/mips.c (override_options): Disable -G on targets that
	have no .section support.
	(mips_select_section): Use default_select_section for such targets.

2003-08-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (svr4_undeclared_getrnge): Introduce and enable.
	* fixinc/inclhack.def (static_getrnge): Remove disabled hack.
	* fixinc/fixincl.x: Rebuild.
	* fixinc/tests/base/regexp.h: New test.

2003-08-04  Alexandre Oliva  <aoliva@redhat.com>

	* c-ppoutput.c (cb_line_change): Don't skip line changing while
	parsing macro arguments in the top-level context.

2003-08-04  Neil Booth  <neil@daikokuya.co.uk>

	* config.in: Remove HAVE_LSTAT.
	* configure, configure.in: Don't test for lstat.

2003-08-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* opts.c (decode_options): Do language-specific initialization for
	the global diagnostic context.
	* langhooks-def.h (lhd_initialize_diagnostics): Declare.
	(LANG_HOOKS_INITIALIZE_DIAGNOSTITCS): New macro.
	(LANG_HOOKS_INITIALIZER): Adjust.
	* langhooks.h (struct lang_hooks): Add new field
	initialize_diagnostics.
	* langhooks.c (lhd_initialize_diagnostics): Define.

2003-08-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* pretty-print.h:   Adjust macro definitions.
	* pretty-print.c (pp_newline): Rename to pp_base_newline.
	(pp_character): Rename to pp_base_character.
	(pp_string): Rename to pp_base_string.
	* c-pretty-print.c (pp_buffer): Move to pretty-print.h
	(pp_newline):  Likewise.  Adjust.
	(pp_c_char): Adjust.

2003-08-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (BUILT_IN_ABS, BUILT_IN_IMAXABS, BUILT_IN_LABS,
	BUILT_IN_LLABS): Move to miscellaneous section.

2003-08-03  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/11534
	* cppexp.c (parse_defined): Warn only if -pedantic.

2003-08-03  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (stack_file): Use file path.

2003-08-02  Roger Sayle  <roger@eyesopen.com>

	* builtin-types.def (BT_SSIZE): New primitive type.
	(BT_FN_INT_PTR_CONST_STRING_VALIST_ARG,
	BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
	BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
	BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR): New function types.
	* builtins.def (BUILT_IN_DCGETTEXT, BUILT_IN_DGETTEXT,
	BUILT_IN_FSCANF, BUILT_IN_GETTEXT, BUILT_IN_STRFMON,
	BUILT_IN_STRFTIME, BUILT_IN_VFPRINTF, BUILT_IN_VFSCANF): New builtins.
	* builtin-attrs.def: Remove DEF_FN_ATTR construct and the last
	few functions that define default attributes using it.
	* c-common.c (c_common_insert_default_attributes): Do nothing.

	* doc/extend.texi: Document these "new" builtins.

2003-08-02  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (SUBTARGET_LINK_SPEC): Don't set rpath.
	(LIB_SPEC): Set -lpthread always when -pthread set.  Set -lieee
	when -mieee-fp set and -shared not set.
	(SH_FALLBACK_FRAME_FLOAT_STATE): Don't define for SH5.

2003-08-02  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (struct _cpp_file): Rename once_only_next to
	next_file.  Remove import and pragma_once, add once_only.
	(find_file): Add new file structures to the all_files list.
	(should_stack_file): Mark #import-ed files once-only, and
	don't stack them if the file has already been stacked.
	(_cp_mark_file_once_only): Simplify.
	* cpphash.h (struct cpp_reader): Rename once_only_files
	to all_files.  Rename saw_pragma_once to seen_once_only.
	(_cpp_mark_file_once_only): Update prototype.
	* cpplib.c (do_pragma_once): Update.

2003-08-02  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (ENOTDIR): Remove.
	(open_file_in_dir): Rename find_file_in_dir.  Handle errors
	other than ENOENT here.
	(once_only_file_p): Rename should_stack_file.
	(find_file, open_file_failed, read_file_guts): Report errors
	with full path name.
	(read_file): Move pch handling to should_stack_file.
	(should_stack_file): Handle PCH and once-only issues, and
	reading the file.
	(stack_file): Don't do file reads.

2003-08-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* libgcov.c (gcov_exit): Cleanup and fix.
	* profile.c (compute_value_histograms): Don't try to read profiles
	that are not present.

2003-08-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: Categorize.

	* builtins.def (BUILT_IN_CABS, BUILT_IN_CABSF, BUILT_IN_CABSL):
	Mind fp rounding.
	(BUILT_IN_FFSL): Use DEF_EXT_LIB_BUILTIN.

2003-08-02  Andreas Tobler  <a.tobler@schweiz.ch>

	* config.gcc: Enable posix threads by default on darwin.

2003-08-01  Jakub Jelinek  <jakub@redhat.com>

	* cfgcleanup.c (outgoing_edges_match): Check REG_EH_REGION notes
	even if nehedges1 is 0.

2003-08-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/fixfixes.c, fixinc/fixlib.c, fixinc/fixlib.h,
	fixinc/fixtests.c, fixinc/procopen.c, fixinc/server.c,
	fixinc/server.h, fixinc/fixincl.c: ANSIfy function prototypes
	and defintions.

	* fixinc/inclhack.def (broken_cabs): Make matching more generous.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/math.h: Regenerate to match test_text change.

2003-08-01  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* ggc-common.c (gt_pch_restore): Case MAP_FAILED to void *.

2003-08-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* except.c (sjlj_emit_dispatch_table): Use ptr_mode, not Pmode,
	for accesses to exc_ptr.

2003-08-01  Geoffrey Keating  <geoffk@apple.com>

	* doc/sourcebuild.texi (Front End Directory): Don't make references
	to libsubdir, it's not part of the interface to frontends.
	* doc/install.texi (Configuration): Help users read faster by saying
	that GCC's configure options are the standard autoconf ones.
	Mention --libdir.  Update the default rules for finding the
	assembler.  Don't use libsubdir since we haven't said what it means.
	(Specific): In the Solaris 7 notes, update the place to put the
	assembler.
	* doc/invoke.texi: Update lib/gcc-lib to lib/gcc.
	* doc/cpp.texi (Search Path): Actually, the search path
	depends on libdir, which can relocate with cpp.
	* doc/tm.texi (Driver): Don't document STANDARD_EXEC_PREFIX, it's
	now a private interface between the Makefile and the driver.

2003-08-01  Richard Henderson  <rth@redhat.com>

	* system.h: Poison ASM_SIMPLIFY_DWARF_ADDR.

	* varasm.c (lookup_constant_def): New function.
	* rtl.h (lookup_constant_def): Declare it.
	* dwarf2out.c (loc_descriptor_from_tree): Use it.
	Use targetm.delegitimize_address, not ASM_SIMPLIFY_DWARF_ADDR.

2003-08-01  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (gettags, pushdecl_function_level): Delete.
	(last_function_parm_vars): Rename last_function_parm_others.
	(current_function_parm_vars): Rename current_function_parm_others.
	(struct c_scope): Rewrite comment explaining this data structure.
	Add names_last, blocks_last, parms_last fields.  Rename
	incomplete_list to incomplete.
	(SCOPE_LIST_APPEND, SCOPE_LIST_CONCAT): New macros.
	(poplevel): Ignore second argument.  No need to nreverse
	anything.  Restructure such that each list is processed
	exactly once.  Use 'const location_t *locus' syntactic sugar
	variable where useful.  Issue unused variable warnings
	ourselves, do not rely on function.c.
	(insert_block, pushdecl, bind_label): Use SCOPE_LIST_APPEND.
	(pushdecl_top_level): Likewise.  Don't call duplicate_decls.
	(implicitly_declare): decl cannot be error_mark_node.
	(undeclared_variable): Manipulate scope structure directly.
	(c_make_fname_decl): Likewise.
	(getdecls, c_init_decl_processing): Fix comment.
	(mark_forward_parm_decls): Use SCOPE_LIST_CONCAT.  No need
	for 'last' variable.
	(grokparms): No need to nreverse parms list.
	(store_parm_decls_newstyle): Set up the parms_last and
	names_last fields of the new scope too.
	(store_parm_decls_oldstyle): Can assume DECL_WEAK is not set
	on parms to begin with; check this under ENABLE_CHECKING.  Set
	up parms_last.
	(check_for_loop_decls): Refer directly to current_scope->tags.
	Use consistent quote style in diagnostics.
	(c_write_global_declarations): The names list is not backward.

	* c-common.h: Don't prototype gettags.
	* c-parse.in: Call poplevel with second argument 0 always.

2003-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: Resort builtins.

2003-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (DEF_GCC_BUILTIN, DEF_LIB_BUILTIN,
	DEF_EXT_LIB_BUILTIN, DEF_C99_BUILTIN, DEF_C99_C90RES_BUILTIN):
	Prepend "__builtin_" onto NAME with string concatenation.  Remove
	explicit "__builtin_" from each macro call.

	Reformat entire file.

2003-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (ATTR_MATHFN_ERRNO, ATTR_MATHFN_FPROUNDING,
	ATTR_MATHFN_FPROUNDING_ERRNO): New macros.  Use throughout.

2003-08-01  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_select_ccmode): Do not attempt to use CCL,
	CCL1, or CCL2 modes with floating point operations.

	* config/s390/s390.md ("*addsf3_cc", "*addsf3_cconly", "*adddf3_cc",
	"*adddf3_cconly", "*subsf3_cc", "*subsf3_cconly", "*subdf3_cc",
	"*subdf3_cconly"): New insns.
	("*negabssi2", "*negabsdi2", "*negabsdf2", "*negabssf2"): Likewise.

2003-08-01  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Refine dependencies.
	* c-opts.c (c_common_handle_option): Do nothing for -Wimport.
	* c.opt: Update help for -Wimport.
	* cppfiles.c: Include hashtab.h.  Update comments.
	(stack_file): Read the file before updating dependencies.
	(once_only_file_p): Be smarter about marking once-only files.
	(_cpp_mark_file_once_only): Correct the check for existence on
	the list.
	(open_file_failed): Use name not path, which is NULL.
	* cpphash.h: Don't include hashtab.h.
	(struct _cpp_file): Remove.
	(struct cpp_reader): Update.
	* cppinit.c (cpp_create_reader): Don't initialize warn_import.
	* cpplib.h (struct cpp_options): Remove warn_import.
	(cpp_simplify_path): Remove.

2003-08-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/11295
	* doc/extend.texi (Statement Expressions): Document C++ semantics.

2003-07-31  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>

	* config.gcc (sh-*-linux*): Do not override sh/t-linux with sh/t-le.

2003-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def: Use `LONGDOUBLE' instead of `LONG_DOUBLE'
	throughout.
	* builtins.def: Likewise.

2003-07-31  Jason Merrill  <jason@redhat.com>

	* Makefile.in (bubblestrap): Don't require a previous full
	bootstrap.

	* expr.c (mostly_zeros_p): No longer static.
	* tree.h: Declare it.
	* stmt.c (resolve_asm_operand_names): Don't copy the pattern
	unless we need to do substitutions.

2003-07-31  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold <MULT_EXPR>): Optimize both x*pow(x,c) and
	pow(x,c)*x as pow(x,c+1) for constant values c.  Optimize x*x
	as pow(x,2.0) when the latter will be expanded back into x*x.
	(fold <RDIV_EXPR>): Optimize pow(x,c)/x as pow(x,c-1).
	* builtins.c (expand_builtin_pow): Ignore flag_errno_math as
	pow can never set errno when used with an integer exponent.
	Always use expand_powi when exponent is -1, 0, 1 or 2.
	(fold_builtin): Don't rewrite pow(x,2.0) as x*x nor pow(x,-2.0)
	as 1.0/(x*x).  This avoids unbounded recursion as we now prefer
	the pow forms of these expressions.

2003-07-31  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (libexecdir): New.
	(libsubdir): Use gcc instead of gcc-lib.
	(libexecsubdir): New.
	(ORDINARY_FLAGS_TO_PASS): Add libexecsubdir.
	(DRIVER_DEFINES): Add STANDARD_LIBEXEC_PREFIX, use gcc instead of
	gcc-lib.
	(installdirs): Make libexecsubdir.
	(install-common): Put executables in libexecsubdir.
	(itoolsdir): Use libexecsubdir.
	(itoolsdatadir): New.
	(install-mkheaders): Separate data files and executables.
	(install-collect2): Put executables in libexecsubdir.
	(uninstall): Remove libexecsubdir.
	* mkheaders.in: Update for new arrangement of files.
	(libexecdir): New.
	(libexecsubdir): New.
	(itoolsdir): Use libexecsubdir.
	(itoolsdatadir): New.
	* gcc.c (gcc_libexec_prefix): New.
	(STANDARD_LIBEXEC_PREFIX): Use gcc instead of gcc-lib.
	(standard_exec_prefix_1): Use libexec.
	(standard_exec_prefix_2): New.
	(standard_libexec_prefix): New.
	(process_command): Update for new arrangement of files.  Compute
	gcc_libexec_prefix.  Update for change from gcc-lib to gcc.

2003-07-31  Nathanael Nerode  <neroden@gcc.gnu.org>

	* inclhack.def (stdio_va_list): Avoid bogus replacement which
	triggers on Interix.
	* fixincl.x: Regenerate.

2003-07-31  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (legitimate_pic_address_disp_p): Disallow TLS
	SYMBOL_REFs not inside UNSPEC even in PLUS rtx.

2003-07-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (loc_descriptor_from_tree, case CONSTRUCTOR): New case.

2003-07-31  Per Bothner  <pbothner@apple.com>

	* opts.c (in_fnames, num_in_fnames):  Moved here from c-opts.
	(add_input_filename):  New function.
	(handle_options):  Call add_input_filename directly instead of
	with a lang hook.
	* opts.h (in_fnames, num_in_fnames):  Moved here.
	(add_input_filename):  Declare.
	* c-decl.c:  Need to #include opts.h.
	* Makefile.in (c-decl.o):  Also depends on opts.h.
	* c-opts.c (in_fnames, num_in_fnames):  Moved to opts.c.
	(c_common_handle_filename):  Replaced by add_input_filename.
	* c-common.h (in_fnames, num_in_fnames, c_common_handle_filename):
	Remove.
	* langhooks.h (struct lang_hooks):  Remove handle_filename hook.
	* langhooks-def.h (LANG_HOOKS_HANDLE_FILENAME):  Remove macro.
	(LANG_HOOKS_INITIALIZER):  Remove use of LANG_HOOKS_HANDLE_FILENAME.
	* c-lang.c (LANG_HOOKS_HANDLE_FILENAME):  Remove macro.

2003-07-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* combine.c (try_combine): Set JUMP_LABEL for newly created
	unconditional jump.

2003-07-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* fold-const.c (fold): Fold some comparisons of bit operations.

2003-07-31  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (create_edge): Fix typo.
	* i386.c (pic_symbolic_operand): Reorder tests.

2003-07-31  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/gcov.texi (Invoking Gcov): Describe output name mangling
	more fully.
	(Gcov Data Files): Update.

2003-07-31  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (alpha*-dec-osf[45]*): Enable POSIX thread support by
	default.

	* gthr-posix.c: New file.
	* gthr-posix.h: Define _REENTRANT if missing.
	Make _LIBOBJC #pragma weak visible with _LIBOBJC_WEAK.

	* config/alpha/t-osf4 (SHLIB_LINK): Hide dummy functions provided
	by gthr-posix.o.
	* config/alpha/t-osf-pthread: New file.

	* fixinc/inclhack.def (alpha_pthread): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/pthread.h [ALPHA_PTHREAD_CHECK]: New testcase.

	* doc/install.texi (alpha*-dec-osf*): Remove --enable-threads
	warning.
	Fixes PR bootstrap/9330.

2003-07-31  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_ld_hidden): Also disable on mips-sgi-irix5*
	without GNU ld.
	Update comment.
	* configure: Regenerate.

2003-07-31  Vladimir Makarov  <vmakarov@redhat.com>

	* sched-deps.c (sched_analyze_2): Prevent interblock move of CC0
	setter.

2003-07-30  Roger Sayle  <roger@eyesopen.com>

	* builtins.def: Alphabetize.

2003-07-30  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/c-tree.texi: Normalize spellings of "lowercase" and
	"uppercase".
	* doc/cpp.texi: Likewise.
	* doc/md.texi: Likewise.
	* doc/rtl.texi: Likewise.
	* doc/tm.texi: Likewise.

2003-07-30  Matt Kraai  <kraai@alumni.cmu.edu>

	* objc/Make-lang.in (objc.stage1, objc.stage2, objc.stage3)
	(objc.stage4, objc.stageprofile, objc.stagefeedback): Remove moves
	of cc1obj.

2003-07-30  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (SIZE_TYPE, PTRDIFF_TYPE): Undef these
	macros before defining them.

2003-07-31  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (UNSPEC_ROUND, UNSPEC_SETHIGH,
	UNSPECV_BLOCKAGE): New constants.
	("*sethighqisi", "*sethighhisi", "*sethiqidi_64", "*sethiqidi_31",
	"*extractqi", "*extracthi", "*extendqidi2" splitter, "*extendqisi2"
	splitter, "fix_truncdfdi2_ieee", "fix_truncdfsi2_ieee",
	"fix_truncsfdi2", "fix_truncsfsi2", "blockage"): Use them.

	(all insns and expanders): Write output control string as brace block
	where appropriate.  Remove \-escapes for doublequote characters.

2003-07-31  Jan Hubicka  <jh@suse.cz>

	* gcse.c (insert_store): Fix typo in previous patch.

2003-07-30  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (stack_file, open_file_failed): Use path for deps.

2003-07-30  Andi Kleen  <ak@muc.de>

	* loop.c (check_dbra_loop): Allow LTU in the loop condition.

2003-07-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* combine.c (distribute_notes): Cancel REG_VALUE_PROFILE notes.
	* gcov-io.h (GCOV_FIRST_VALUE_COUNTER, GCOV_LAST_VALUE_COUNTER,
	GCOV_N_VALUE_COUNTERS): New.
	* profile.c (compute_value_histograms): New static function.
	(branch_prob): Read back the value histograms.
	* rtl.c (reg_note_name): Add name for REG_VALUE_PROFILE note.
	* rtl.h (enum reg_note): Add REG_VALUE_PROFILE note.
	* value-prof.c: Add comment on reading the profile.
	* value-prof.h (COUNTER_FOR_HIST_TYPE, HIST_TYPE_FOR_COUNTER): New.
	* doc/invoke.texi (-fprofile-values): Document behavior with
	-fbranch-probabilities.

2003-07-30  David Edelsohn  <edelsohn@gnu.org>

	* longlong.h (PowerPC umul_ppmm): Do not test __vxworks__.

2003-07-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (EH_RETURN_HANDLER_RTX): Compute offset
	symbolically.

2003-07-30  Jan Hubicka  <jh@suse.cz>

	* gcse.c (insert_store): Ignore fake edges.

	* c-common.c (flag_vtable_gc): Kill.
	* c-common.g (flag_vtable_gc): Kill.
	* c-opts (c_common_handle_option): Kill.
	* c.opt (fvtable-gc): Kill.
	* final.c (final_scan_insn): Do not call assemble_vtable_entry.
	* output.h (assemble_vtable_entry, assemble_vtable_inherit): Kill.
	* varasm.c (assemble_vtable_entry, assemble_vtable_inherit): Kill.

	* invoke.texi (-ftable-gc): Kill documentation.

	* tree-inline.c (inlinable_function_p): Don't set DECL_UNINLINABLE
	just because function body is missing.

	* i386.c (pic_symbolic_operand): Properly detect RIP relative unspecs.

2003-07-30  Ranjit Mathew  <rmathew@hotmail.com>

	* unwind-sjlj.c: Fix typo in file description.

2003-07-30  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (load_register_parameters): When shifting reg sized values
	to the msb, move the value to a reg first.

2003-07-29  Geoffrey Keating  <geoffk@apple.com>

	* cppfiles.c (stack_file): Leave filename as "" rather than "<stdin>".
	* line-map.h (linemap_add): Update comments.
	* line-map.c (linemap_add): Update comments, interpret zero-length
	filename as "<stdin>".

2003-07-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* mkinstalldirs: Import autoconf 2.57 / automake 1.7 version.

2003-07-29  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (last_function_parm_vars, current_function_parm_vars):
	New static variables.
	(struct c_scope): Add parms and warned_forward_parm_decls
	fields; remove parm_order.
	(storedecls, storetags): Delete.
	(poplevel): Also clear bindings on the parms chain.
	(pushdecl): Handle forward declarations of parameters, and
	chain PARM_DECLs on the parms list, not the names list.
	(lookup_name_current_level): Check for PARM_DECLs on the parms
	list too.
	(push_parm_decl): Don't update parm_order.
	(clear_parm_order): Rename mark_forward_parm_decls.  Issue the
	warning, only once per parameter list, and set TREE_ASM_WRITTEN
	on the decls here.  Then move the forward decls to the names list.
	(grokparms): Set last_function_parm_vars.
	(get_parm_info): Don't use gettags or getdecls.  No need to
	extract non-parms from the parms list, or reorganize the parms
	list.  Feed nonparms back in the TREE_TYPE of the list node
	returned.  Issue only one error per parameter list for "void"
	appearing more than once in said parameter list.  Collapse
	parmlist_tags_warning into this function to avoid double scan
	of tags list.
	(start_function): Set current_function_parm_vars.
	(store_parm_decls_newstyle): Bypass pushdecl, manipulate scope
	directly.  Get non-parms from current_function_parm_vars; no
	need to extract them from the parms chain.  Properly bind tags
	in the new scope.
	(store_parm_decls_oldstyle): No need to extract non-parameters
	from the parms chain, nor to store them back afterward.  Move
	declaration to top of function, restructure code reordering
	DECL_ARGUMENTS.
	(store_parm_decls): No need to save and restore warn_shadow.
	* c-parse.in: Don't call parmlist_tags_warning nor
	clear_parm_order.  Call mark_forward_parm_decls when forward
	parm decls are encountered.
	* c-tree.h: Prototype mark_forward_parm_decls; not
	clear_parm_order or parmlist_tags_warning.

2003-07-29  Geoffrey Keating  <geoffk@apple.com>

	* c-common.c (allow_pch): Remove.
	* c-common.h (allow_pch): Remove.
	(c_common_no_more_pch): Declare.
	* c-lex.c (c_lex): Call c_common_no_more_pch when appropriate.
	* c-pch.c: Include hosthooks.h.
	(c_common_valid_pch): Don't check allow_pch.
	(c_common_read_pch): Clear valid_pch to prevent reading PCH files.
	(c_common_no_more_pch): New.
	* ggc-common.c: Include hosthooks.h.
	(gt_pch_save): Call gt_pch_get_address.
	(gt_pch_restore): Call gt_pch_use_address.
	* hooks.c (hook_voidp_size_t_null): New.
	(hook_bool_voidp_size_t_false): New.
	* hooks.h (hook_voidp_size_t_null): New.
	(hook_bool_voidp_size_t_false): New.
	* hosthooks-def.h (HOST_HOOKS_GT_PCH_GET_ADDRESS): New.
	(HOST_HOOKS_GT_PCH_USE_ADDRESS): New.
	(HOST_HOOKS_INITIALIZER): Add HOST_HOOKS_GT_PCH_GET_ADDRESS,
	HOST_HOOKS_GT_PCH_USE_ADDRESS.
	* hosthooks.h (struct host_hooks): Add gt_pch_get_address,
	gt_pch_use_address.
	* doc/hostconfig.texi (Host Common): Document
	HOST_HOOKS_GT_PCH_GET_ADDRESS, HOST_HOOKS_GT_PCH_USE_ADDRESS.
	* Makefile.in (c-pch.o): Depend on hosthooks.h.
	(ggc-common.o): Likewise.

	* config/rs6000/host-darwin.c (HOST_HOOKS_GT_PCH_GET_ADDRESS): Define.
	(HOST_HOOKS_GT_PCH_USE_ADDRESS): Define.
	(pch_address_space): New.
	(darwin_rs6000_gt_pch_get_address): New.
	(darwin_rs6000_gt_pch_use_address): New.

2003-07-29  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/11569
	PR preprocessor/11649
	* Makefile.in (LIBCPP_DEPS): Add HASHTAB_H.
	* cppfiles.c: Completely rewritten.
	* c-incpath.c (free_path, remove_duplicates, heads, tails, add_path):
	struct cpp_path is now struct cpp_dir.
	(remove_duplicates): Don't simplify path names.
	* c-opts.c (c_common_parse_file): cpp_read_next_file renamed
	cpp_stack_file.
	* cpphash.h: Include hashtab.h.
	(_cpp_file): Declare.
	(struct cpp_buffer): struct include_file is now struct _cpp_file,
	and struct cpp_path is now struct cpp_dir.  Rename members.
	(struct cpp_reader): Similarly.  New members once_only_files,
	file_hash, file_hash_entries, quote_ignores_source_dir,
	no_search_path, saw_pragma_once.  Remove all_include_files and
	max_include_len.  Make some members bool.
	(_cpp_mark_only_only): Renamed from _cpp_never_reread.
	(_cpp_stack_file): Renamed from _cpp_read_file.
	(_cpp_stack_include): Renamed from _cpp_execute_include.
	(_cpp_init_files): Renamed from _cpp_init_includes.
	(_cpp_cleanup_files): Renamed from _cpp_cleanup_includes.
	* cppinit.c (cpp_create_reader): Initialize no_search_path.  Update.
	(cpp_read_next_file): Rename and move to cppfiles.c.
	(cpp_read_main_file): Update.
	* cpplib.c (run_directive): Update for renamed members.
	(do_include_common, _cpp_pop_buffer): Update.
	(do_import): Undeprecate #import.
	(do_pragma_once): Undeprecate.  Use _cpp_mark_file_once_only.
	* cpplib.h: Remove file_name_map_list.
	(cpp_options): Remove map_list.
	(cpp_dir): Rename from cpp_path.  New datatype for name_map.
	(cpp_set_include_chains, cpp_stack_file, cpp_included): Update.

2003-07-29  Phil Edwards  <pme@gcc.gnu.org>

	* Makefile.in:  Make stamp-objdir safe for parallel builds.

2003-07-29  Phil Edwards  <pme@gcc.gnu.org>

	* Makefile.in (stmp-docobjdir):  New target; ensure $docobjdir exists.
	(info):  Depend on stmp-docobjdir.

2003-07-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure: Regenerate.

2003-07-29  Jan Hubicka  <jh@suse.cz>

	PR C++/11131
	* tree-inline.c (expand_call_inline): Always call inlinable_function_p
	in !unit-at-a-time mode.

2003-07-28  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (c_expand_body_1): Use C_DECL_FILE_SCOPE to detect
	main function.

2003-07-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/11667
	* c-common.c (shorten_compare): Take into account differences
	between C and C++ representation for enumeration types.
	* tree.h (set_min_and_max_values_for_integral_type): Declare.
	* stor-layout.c (set_min_and_max_values_for_integral_type): New
	function, broken out from ...
	(fixup_signed_type): ... here and ...
	(fixup_unsigned_type): ... here.

2003-07-28  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c: Update commentary, adjust blank lines throughout.
	(struct c_scope): Fix indentation.  Reorder members so
	outer-context pointers come first, booleans last.
	(duplicate_decls, define_label): Use a 'locus' variable for
	diagnostic locations in a few more places.
	(warn_if_shadowing): Un-split a conditional that fits on one line.
	(c_init_decl_processing): No need to clear current_scope and
	current_function_scope.
	(start_decl): Merge if/else if statements with same action.
	(push_parm_decl): Rename old_immediate_size_expand to use
	save_foo convention; save/restore around entire function.
	(grokdeclarator): Remove unnecessary braces.

2003-07-28  Hans-Peter Nilsson  <hp@bitrange.com>
	    Michael Culbertson  <Michael.J.Culbertson@wheaton.edu>

	* c-parse.in (lineno_stmt_decl_or_labels_ending_decl): Also warn
	when warn_declaration_after_statement.  Call pedwarn_c90, not
	pedwarn.  Correct message: it's "ISO C90", not "ISO C89".
	* c-common.c (warn_declaration_after_statement): Define.
	* c-common.h (warn_declaration_after_statement): Declare.
	* c.opt (Wdeclaration-after-statement): New.
	* c-errors.c (pedwarn_c90): New function.
	* c-opts.c (c_common_handle_option) <case
	OPT_Wdeclaration_after_statement>: New.
	* c-tree.h (pedwarn_c90): Declare.
	* doc/invoke.texi (Option Summary): Document
	-Wdeclaration-after-statement.
	(Warning Options): Ditto.

2003-07-28  Jan Hubicka  <jh@suse.cz>

	* i386.md (memory attribute) Avoid accessing uninitialized memory
	for ishift1 type instructions.

2003-07-28  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (--enable-checking): Add fold category.
	(ENABLE_FOLD_CHECKING): Define if requested.
	* configure: Rebuilt.
	* config.in: Rebuilt.
	* doc/install.texi: Document it.
	* fold-const.c: Include md5.h.
	[ENABLE_FOLD_CHECKING] (fold): Define to fold_1.
	[ENABLE_FOLD_CHECKING] (fold, fold_checksum_tree, fold_check_failed,
	print_fold_checksum): New functions.

	* fold-const.c (fold): Never modify argument passed to fold, instead
	change a copy and return it.
	* convert.c (convert_to_integer): Likewise.

2003-07-27  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/fixinc.svr4: Remove dead code.  Remove now-unnecessary
	cleanup of junk after #else and #endif directives.  Collapse repeated
	clauses into for statment.

	* fixinc/fixincl.sh: GNU C -> GCC.  Add usage comment.

2003-07-27  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct c_scope): Remove keep_if_subblocks field.
	(keep_next_if_subblocks): Rename next_is_function_body.
	(pushlevel): Adjust commentary.  Always set ->keep on the
	outermost level of a function.  Don't set ->keep_if_subblocks.
	(poplevel): Adjust commentary.  Don't look at ->keep_if_subblocks.
	(store_parm_decls): Adjust to match.
	(finish_function): Adjust to match.
	Call poplevel with all three arguments zero.

	* c-decl.c (store_parm_decls_newstyle, store_parm_decls_oldstyle):
	New functions split out of store_parm_decls.
	Avoid unnecessary work. Use local variables consistently.
	(store_parm_decls): Likewise.

	(finish_function): No need to set functionbody flag on call to
	poplevel.
	(struct language_function): Remove scope field.
	(c_push_function_context, c_pop_function_context): No need to
	save and restore current_scope.

2003-07-27  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/extend.texi (Deprecated Features): Implicit typename is
	gone. Default args on types is going.

2003-07-26  J"orn Rennecke <joern.rennecke@superh.com>

	* Makefile.in (ifcvt.o): Depend on target.h
	* ifcvt.c (target.h): Include.
	(if_convert): Don't call mark_loop_exit_edges if we can't
	modify jumps.

2003-07-26  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Testing): Adjust required versions of DejaGnu.

2003-07-26  Richard Henderson  <rth@redhat.com>

	PR inline-asm/11676
	* cse.c (count_reg_usage): Handle asm_operands properly.

2003-07-26  Roger Sayle  <roger@eyesopen.com>

	* builtins.def (DEF_FALLBACK_BUILTIN): Delete.
	(DEF_EXT_FALLBACK_BUILTIN): Delete.
	(BUILT_IN_BZERO, BUILT_IN_BCOPY, BUILT_IN_BCMP): Declare using
	the regular DEF_EXT_LIB_BUILTIN macro.
	(BUILT_IN_FPUTC, BUILT_IN_FPUTS, BUILT_IN_FWRITE): Declare using
	the regular DEF_LIB_BUILTIN macro.
	(BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTS_UNLOCKED,
	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS_UNLOCKED,
	BUILT_IN_FWRITE_UNLOCKED): Declare using the regular
	DEF_EXT_LIB_BUILTIN macro.

	* c-decl.c (duplicate_decls): Remove code to handle builtin
	functions prototyped without an argument list.

2003-07-26  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c: Revert 2003-07-08 change.
	(i386_pe_section_type_flags): Remove error_with_decl here too.

2003-07-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* config/arm/pe.c (arm_mark_dllimport): Don't use xxx_with_decl.
	* config/mcore/mcore.c (mcore_mark_dllimport): Likewise.
	* config/v850/v850.c (v850_handle_data_area_attribute): Likewise.
	(v850_handle_data_area_attribute): Likewise.

2003-07-26  Geoffrey Keating  <geoffk@apple.com>

	* varasm.c (output_constant_def_contents): Use
	ASM_DECLARE_CONSTANT_NAME if defined.
	* doc/tm.texi (Label Output): Document ASM_DECLARE_CONSTANT_NAME.
	* config/darwin.h (ASM_DECLARE_OBJECT_NAME): Ensure zero-sized
	objects get at least one byte to prevent assembler problems.
	(ASM_DECLARE_CONSTANT_NAME): New.

	* Makefile.in (libbackend.o): Remove options_.h.
	(mostlyclean): Likewise.

	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
	insert a label at the end of an function under Mach-O.

	* c-decl.c (c_static_assembler_name): Remove TREE_STATIC test.

2003-07-25  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (is_ev64_opaque_type): Only check pointer
	equality.
	(spe_init_builtins): Declare __ev64_opaque__ as a builtin type.

	* config/rs6000/spe.h: Remove __ev64_opaque__ definition.

2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* doc/passes.texi (Passes): Mention pretty-printing and
	diagnostic files.

2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/extend.texi (Function Attributes): GNU C++ does now allow
	unused parameter decls.
	(Attribute Syntax): GNU C++ does not allow label attributes to be
	after the ':'.

2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* objc/objc-act.c (objc_check_decl): Don't use xxx_with_decl.
	(objc_declare_class): Likewise.
	(error_with_ivar): Likewise.
	(start_class): Likewise.
	(warn_with_method): Likewise.

2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Remove pedwarn_with_decl, warning_with_decl and error_with_decl
	from GCC.
	* calls.c (try_to_integrate): Don't use xxx_with_decl.
	(expand_call): Likewise.
	* dwarfout.c (output_reg_number): Likewise.
	* expr.c (expand_expr): Likewise.
	* function.c (assign_temp): Likewise.
	(uninitialized_vars_warning): Likewise.
	(setjmp_args_warning): Likewise.
	(expand_function_end): Likewise.
	* stmt.c (fixup_gotos): Likewise.
	(warn_about_unused_variables): Likewise.
	(expand_end_bindings): Likewise.
	* stor-layout.c (layout_decl): Likewise.
	(place_field): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_handle_inlining): Likewise.
	(default_tree_printer): New function.
	(general_init): Initialize diagnostic machinery before routing
	signals to the ICE machinery.  Set default tree printer.
	* toplev.h (pedwarn_with_decl): Remove declaration.
	(warning_with_decl): Likewise.
	(error_with_decl): Likewise.
	(pedwarn): Remove attribute for the time being.
	* tree-inline.c (expand_call_inline): Don't use xxx_with_decl.
	* varasm.c (named_section): Likewise.
	(make_decl_rtl): Likewise.
	(assemble_variable): Likewise.
	(merge_weak): Likewise.
	(declare_weak): Likewise.

	* diagnostic.h: Move non-diagnostic stuff into pretty-print.h.
	* diagnostic.c: Move non-diagnostic stuff into pretty-print.c.
	(format_with_decl): Remove.
	(diagnostic_for_decl): Likewise.
	(pedwarn_with_decl): Likewise.
	(warning_with_decl): Likewise.
	(error_with_decl): Likewise.
	(diagnostic_initialize): Adjust.
	(diagnostic_count_diagnostic): Likewise.
	(announce_function): Likewise.
	(lhd_print_error_function): Likewise.
	(diagnostic_report_current_module): Likewise.
	(default_diagnostic_starter): Likewise.
	(diagnostic_report_diagnostic): Likewise.
	(default_diagnostic_finalizer): Likewise.
	(verbatim): Likewise.
	(error): Likewise.
	(warning): Likewise.
	* opts.c (common_handle_option): Likewise.
	* pretty-print.c: New file.
	* c-pretty-print.h (pp_base): Override.
	* c-pretty-print.c: Adjust use of macros throughout.
	(pp_buffer): New macro.
	(pp_newline): Likewise.
	* c-objc-common.c (c_tree_printer): Adjust prototype. Tidy.
	* Makefile.in (DIAGNOSTIC_H): New variable.
	(c-errors.o): Use it.
	(c-objc-common.o): Likewise.
	(c-common.o): Likewise.
	(c-opts.o): Likewise.
	(c-format.o): Likewise.
	(diagnostic.o): Likewise.
	(opts.o): Likewise.
	(toplev.o): Likewise.
	(rtl-error.o): Likewise.
	(dwarf2out.o): Likewise.
	(jump.o): Likewise.
	(pretty-print.o): New rule.

2003-07-24  Roger Sayle  <roger@eyesopen.com>

	* builtins.def (BUILT_IN_PRINTF, BUILT_IN_FPRINTF): Changed from
	front-end builtins to normal builtins, using DEF_LIB_BUILTIN.
	(BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_FPRINTF_UNLOCKED): Changed
	from front-end to normal builtins, using DEF_EXT_LIB_BUILTIN.
	(DEF_FRONT_END_LIB_BUILTIN): Delete.
	(DEF_EXT_FRONT_END_LIB_BUILTIN): Delete.
	(BUILT_IN_FWRITE_UNLOCKED): Wrap long line.

	* builtins.c (build_string_literal): New function to construct
	a char* pointer to a string literal.
	(expand_builtin_fputs): Change 2nd argument from "int ignore" to
	"rtx target" to be consistent with other expand_builtin_* functions.
	Change 3rd argument from "int unlocked" to "bool unlocked".
	(expand_builtin_printf): Rewrite of c_expand_builtin_printf from
	c-common.c to avoid front-end dependencies.  Optimize printf("")
	as a no-op when the result isn't required.  Handle embedded NULs
	in format string.
	(expand_builtin_fprintf): A rewrite of c_expand_builtin_fprintf
	from c-common.c to avoid front-end dependencies.  Likewise, optimize
	fprintf(fp,"") as a no-op when the result isn't required, evaluating
	fp for side-effects.  Handle embedded NULs in format string.
	(expand_builtin_sprintf): Fix typo.
	(expand_builtin): Don't expand BUILT_IN_FPRINT{,_UNLOCKED} when not
	optimizing.  Adjust calls of expand_builtin_fputs to match the API
	change. Expand BUILT_IN_PRINTF and BUILT_IN_PRINTF_UNLOCKED using
	expand_builtin_printf.  Likewise, expand BUILT_IN_FPRINTF_UNLOCKED
	and BUILT_IN_FPRINTF using expand_builtin_fprintf.

	* c-common.c (is_valid_printf_arglist): Delete.
	(c_expand_builtin): Delete.
	(c_expand_builtin_printf): Moved to builtins.c. Delete.
	(c_expand_builtin_fprintf): Moved to builtins.c.  Delete.
	(c_expand_expr): No longer treat CALL_EXPRs specially.
	(CALLED_AS_BUILT_IN): Delete.

2003-07-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/11631
	* gcse.c (store_motion): Connect infinite loops to exit.

2003-07-24  Jason Merrill  <jason@redhat.com>

	* tree.h (boolean_type_node): Move from C/C++/Java frontends.
	(boolean_true_node, boolean_false_node): Likewise.
	(enum tree_index): Add TI_BOOLEAN_{TYPE,FALSE,TRUE}.
	* tree.c (build_common_tree_nodes): Init boolean_type_node.
	(build_common_tree_nodes_2): Init boolean_{true,false}_node.
	* stor-layout.c (set_sizetype): Handle an early BOOLEAN_TYPE.
	* c-common.h (truthvalue_type_node): Renamed from boolean_type_node.
	(truthvalue_true_node): Renamed from boolean_true_node.
	(truthvalue_false_node): Renamed from boolean_false_node.
	* c-decl.c: Just set truthvalue_* to integer_*.
	* c-*.[ch]: s/boolean/truthvalue/.  s/c_bool/boolean/.

2003-07-24  Roger Sayle  <roger@eyesopen.com>

	* c-decl.c (match_builtin_function_types): New subroutine of
	duplicate_decls to test whether a redeclaration of a builtin
	function is suitably close, i.e. the return type and all of
	the argument types have the same modes as the builtin expects.
	(duplicate_decls): Fuzzy type matching for builtin functions
	moved to match_builtin_function_types.

2003-07-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopmanip.c (duplicate_loop_to_header_edge): Update irreducible
	flag correctly.

2003-07-24  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c: Search-and-replace change 'binding level' to
	'scope' in commentary.
	(struct binding_level): Now struct c_scope.
	(current_binding_level): Now current_scope.
	(free_binding_level): Now scope_freelist.
	(current_function_level): Now current_function_scope.
	(global_binding_level): Now global_scope.
	(make_binding_level): Now make_scope.
	(pop_binding_level): Now pop_scope.

2003-07-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (libgcc_visibility): Add missing whitespace.

2003-07-24  Richard Henderson  <rth@redhat.com>

	* libgcc-std.ver (GCC_3.3.1): Export __gcc_personality_sj0,
	__gcc_personality_v0.

2003-07-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in: Replace pwd by ${PWD_COMMAND}.

2003-07-24  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/invoke.texi (-fprofile-arcs, -ftest-coverage): Update
	documentation missed from my 2003-07-09 patch.

2003-07-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* aclocal.m4 (_gcc_COMPUTE_GAS_VERSION): Set patch level to 0 if
	it's not provided.
	* configure: Rebuild.

2003-07-24  Steven Bosscher  <steven@gcc.gnu.org>

	PR c/10602
	* c-typeck.c (type_lists_compatible_p): Do not compare
	arguments if one of them is an error_mark_node

2003-07-24  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Save fp regs inline
	if current_function_calls_eh_return.

2003-07-23  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi (OFFSET_TYPE): Update description.

2003-07-23  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/crti.asm (_init, _fini): Increase frame size to 64.
	* config/xtensa/lib1funcs.asm (__mulsi3, __udivsi3, __divsi3,
	__umodsi3, __modsi3): Increase frame size to 32.

2003-07-23  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/host-darwin.c: ANSIfy, update comment for sigaltstack
	prototype.

2003-07-23  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi (Types): Update documentation for OFFSET_TYPE.

	PR optimization/10679
	* tree-inline.c (inlinable_function_p): Honor MIN_INLINE_INSNS.

2003-07-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/11607 and PR target/11516
	* pa.md (extzv, extv, insv): Revert latter half of last patch.

2003-07-22  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (force_fit_type): Handle OFFSET_TYPE.
	* varasam.c (output_constant): Likewise.

2003-07-22  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Fix comment formatting.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* combine.c: Likewise.
	* cpplib.c: Likewise.
	* diagnostic.c: Likewise.
	* dojump.c: Likewise.
	* final.c: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* jump.c: Likewise.
	* loop.c: Likewise.
	* mips-tfile.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.

2003-07-22  Per Bothner  <pbothner@apple.com>

	* line-map.c (add_line_map):  Handle invalid LEAVE request.
	Fixes PR preprocessor/11361.

2003-07-22  Per Bothner  <pbothner@apple.com>

	* diagnostic.c.(diagnostic_report_current_module):  Update to match
	2003-06-05 changes to push_srcloc and pop_srcloc.

2003-07-22  Wolfgang Bangerth  <bangerth@dealii.org>

	* doc/trouble.texi: Better document two-stage name lookup.

2003-07-22  Eric Christopher <echristo@redhat.com>

	* config/s390.c (s390_valid_pointer_mode): New.
	(TARGET_VALID_POINTER_MODE): Use.
	(s390_emit_prologue): Add tpf profiling hooks.
	(s390_emit_epilogue): Ditto.
	* config/s390.h (MASK_TPF): New.
	(TARGET_TPF): Use.
	(POINTERS_EXTEND_UNSIGNED): Define.
	* config/s390.md (ptr_extend): New pattern.

2003-07-22  Zack Weinberg  <zack@codesourcery.com>

	* hashtable.c (approx_sqrt): Make static.
	* hashtable.h: Don't prototype approx_sqrt.
	* line-map.c (init_line_maps): Rename linemap_init.
	(free_line_maps): Rename linemap_free.
	(add_line_map): Rename linemap_add.
	(lookup_line): Rename linemap_lookup.
	(print_containing_files): Rename linemap_print_containing_files.
	* linemap.h: Update to match.

	* cpperror.c, cppinit.c, cpplib.c, cppmacro.c: Update calls to
	linemap routines to use new names.

2003-07-16  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.c (handle_packed_attribute): Don't pack a struct via a
	typedef. Propagate packedness from a main variant.

2003-07-22  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in (install-common): Add dependency on installdirs.

2003-07-21  Alexandre Oliva  <aoliva@redhat.com>

	* c-common.c (c_common_type_for_mode): Return integer types for
	pointer modes.

2003-07-22  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (start_decl): Don't call maybe_apply_pragma_weak here.
	(finish_decl): Call maybe_apply_pragma_weak here.
	(grokdeclarator): Check that DECL_ASSEMBLER_NAME isn't set before
	TREE_PUBLIC and TREE_STATIC are decided.
	(start_function): Move call to maybe_apply_pragma_weak.  Check that
	DECL_ASSEMBLER_NAME isn't set too early.

	* cpplex.c (_cpp_process_line_notes): Mention option name in
	trigraphs warning.

2003-07-22  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (if_then_else_cond): Simplify the comparison of
	rtx against -1, 0, and 1.
	* loop.c (check_dbra_loop): Likewise.
	* optabs.c (emit_conditional_move): Likewise.
	(emit_conditional_add): Likewise.
	* config/i386/i386.md (*movsi_or): Likewise.
	(*movdi_or_rex6): Likewise.

2003-07-22  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_finalize_compilation_unit): Remove redundant if.

2003-07-21  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (open_file_pch): Don't put unused entries in the
	splay tree.  Remove dead code.

2003-07-21  Geoffrey Keating  <geoffk@apple.com>

	* c-common.h (num_in_fnames): Declare.
	(c_static_assembler_name): Move from here...
	* c-tree.h (c_static_assembler_name): ... to here.
	* c-opts.c: Don't include langhooks-def.h.
	(c_static_assembler_name): Move to c-decl.c.
	(num_in_fnames): Make externally visible.
	* c-decl.c: Include langhooks-def.h.
	(c_static_assembler_name): Move from c-opts.c.
	* Makefile.in (c-decl.o): Add $(LANGHOOKS_DEF_H).
	(c-opts.o): Remove $(LANGHOOKS_DEF_H).

	* c-pragma.c (maybe_apply_pragma_weak): Don't get DECL_ASSEMBLER_NAME
	when it's not needed.

2003-07-21  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.h (machine_function): Add ra_need_lr.
	* config/rs6000/rs6000.c (rs6000_return_addr): Set it.
	(rs6000_emit_prologue): Save FPRs inline if set.

2003-07-21  H.J. Lu <hongjiu.lu@intel.com>

	* config/ia64/ia64.md (prefetch): Support predicate.

2003-07-21  Josef Zlomek  <zlomekj@suse.cz>

	* cfgcleanup.c (merge_blocks_move_successor_nojumps): Use tablejump_p.
	* rtlanal.c (tablejump_p): Use next_active_insn for finding the jump
	table.

2003-07-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11536
	* unroll.c (loop_iterations): Do not replace a register holding
	the final value by its equivalent before the loop if it is not
	invariant.

2003-07-21  Dave Fluri  <dave.fluri@onlink.net>

	* doc/extend.texi: Fixes to spelling, grammar, and diction.

2003-07-21  Ben Elliston  <bje@wasabisystems.com>

	* doc/invoke.texi (Optimize Options): Replace "it's" with "its".
	(V850 Options): Spelling fixes.

2003-07-20  Lisa M. Goldstein  <opus@gnu.org>

	* doc/invoke.texi: Fixes to style, grammar and diction.

2003-07-20  Roger Sayle  <roger@eyesopen.com>

	* builtins.def (BUILT_IN_ALLOCA): Remove "#if SMALL_STACK" form.
	* system.h (SMALL_STACK): Poison obsolete target macro.
	* doc/tm.texi (SMALL_STACK): Remove target macro documentation.

2003-07-20  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  Cache the results of testing for cmp's capabilities.
	* configure:  Regenerate.

2003-07-20  Mark Mitchell  <mark@codesourcery.com>

	PR debug/11279
	* dwarf2out.c (gen_enumeration_type_die): Remember that
	enumerators can be unsigned.

2003-07-19  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (named_labels, shadowed_labels, label_level_chain)
	(push_label_level, pop_label_level): Kill.
	(struct binding_level): Rename level_chain to outer.
	Add outer_function field.  Change parm_flag, function_body,
	keep, keep_if_subblocks to 1-bit bitfields of type bool.
	(current_function_level): New variable.
	(keep_next_level_flag, keep_next_if_subblocks): Change type to bool.
	(keep_next_level, declare_parm_level, warn_if_shadowing):
	Update to match.
	(struct language_function): Kill named_labels, shadowed_labels fields.
	(c_init_decl_processing, start_function, c_push__function_context)
	(c_pop_function_context): No need to muck with named_labels nor
	shadowed_labels.

	(make_binding_level): No need to clear the structure here.
	(pop_binding_level): Always operate on current_binding_level.
	Update current_function_level if necessary.
	(pushlevel): Don't clear named_labels.  Update current_function_level
	if necessary.  Use "true" and "false" where appropriate.
	(poplevel): Diagnose labels defined but not used, or vice
	versa, and clear out label-meanings leaving scope, while
	walking down the decls list, for all binding levels.
	Handle LABEL_DECLs appearing in the shadowed list.
	pop_binding_level takes no arguments.
	(pushdecl_function_level): Use current_function_level.

	(make_label, bind_label): New static functions.
	(declare_label): New exported function.
	(lookup_label, define_label): Rewritten for new data structure.
	(shadow_label): Kill.

	* c-tree.h: Prototype declare_label; don't prototype
	push_label_level, pop_label_level, nor shadow_label.
	* c-parse.in: Remove all calls to push_label_level and
	pop_label_level.  Use declare_label for __label__ decls.

	* doc/extend.texi: Clarify that __label__ can be used to
	declare labels with local scope in any nested block, not
	just statement expressions.  Cross-reference nested functions
	section from local labels section.

2003-07-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* sched-rgn.c (find_rgns): Initialize current_edge correctly.

2003-07-19  Phil Edwards  <pme@gcc.gnu.org>

	* doc/makefile.texi (restrap, profiledbootstrap):  Document targets.

2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/fixfixes.c fixinc/fixincl.c fixinc/fixlib.c
	fixinc/server.c objc/objc-act.c: Remove unnecessary casts.

2003-07-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimize_pic_address): Access local symbols
	relative to the GOT instead of relative to the literal pool base.
	(s390_output_symbolic_const): Handle new GOT-relative accesses.
	* config/s390/s390.md ("call"): Access local functions and PLT stubs
	relative to the GOT instead of relative to the literal pool base.
	("call_value"): Likewise.
	("call_value_tls"): Likewise.

	* config/s390/s390.c (s390_chunkify_start): Remove pool anchor
	reloading.  Support LTREL_BASE / LTREL_OFFSET construct.
	(s390_chunkify_finish): Likewise.
	(s390_chunkify_cancel): Likewise.
	(s390_reorg): Adapt caller.
	(find_base_register_in_addr,
	find_base_register_ref, replace_base_register_ref): Delete.
	(find_ltrel_base, replace_ltrel_base): New functions.
	(find_constant_pool_ref): Handle LTREL_BASE unspecs.
	(s390_decompose_address): Handle LTREL_BASE unspecs.  Optimize
	base vs. index register usage.
	(struct constant_pool): Remove 'anchor'.
	(s390_add_anchor): Delete.
	(s390_dump_pool): Remove anchor handling.
	* config/s390/s390.md ("reload_anchor"): Remove.

	* config/s390/s390.c (s390_split_branches): Use LTREL_BASE/OFFSET.
	(s390_load_got): New function.  Use LTREL_BASE/OFFSET.
	(s390_emit_prologue): Use it.
	* config/s390/s390.md ("builtin_longjmp", "builtin_setjmp_setup",
	"builtin_setjmp_receiver"): Cleanup.  Use s390_load_got.  Do not
	hard-code register 14.
	* config/s390/s390-protos.h (s390_load_got): Declare.

	* config/s390/s390.c (NR_C_MODES, constant_modes, gen_consttable):
	Support TImode constants.
	* config/s390/s390.md ("consttable_ti"): New.
	("consttable_si", "consttable_di"): Handle TLS symbols correctly.

	* config/s390/s390.md (UNSPEC_LTREL_OFFSET, UNSPEC_LTREL_BASE,
	UNSPEC_GOTENT, UNSPEC_GOT, UNSPEC_GOTOFF, UNSPEC_PLT, UNSPEC_PLTOFF,
	UNSPEC_RELOAD_BASE, UNSPECV_POOL, UNSPECV_POOL_START, UNSPECV_POOL_END,
	UNSPECV_POOL_QI, UNSPECV_POOL_HI, UNSPECV_POOL_SI, UNSPECV_POOL_DI,
	UNSPECV_POOL_TI, UNSPECV_POOL_SF, UNSPECV_POOL_DF, UNSPECV_MAIN_POOL):
	New symbolic constants.
	("consttable_qi", "consttable_hi", "consttable_si", "consttable_di",
	"consttable_sf", "consttable_df", "pool_start_31", "pool_end_31",
	"pool_start_64", "pool_end_64", "reload_base_31", "reload_base_64",
	"pool", "literal_pool_31", "literal_pool_64"): Cleanup.  Use
	symbolic UNSPEC values.
	* config/s390/s390.c (larl_operand, s390_short_displacement,
	bras_sym_operand, s390_cannot_force_const_mem,
	s390_delegitimize_address, s390_decompose_address,
	legitimize_pic_address, s390_output_symbolic_const,
	s390_function_profiler): Use symbolic UNSPEC values.

2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c
	c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in
	c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c
	collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c
	cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c
	cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c
	dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c
	fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c
	gcse.c genattr.c genattrtab.c genautomata.c genconditions.c
	genemit.c genextract.c genoutput.c genrecog.c gensupport.c
	ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c
	integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c
	loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c
	postreload.c prefix.c print-tree.c protoize.c ra-build.c
	ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c
	regmove.c regrename.c reload.c reload1.c reorg.c resource.c
	sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c
	simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c
	tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c
	varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary
	casts.

2003-07-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-pragma.c (apply_pragma_weak): Don't use warning_with_decl.
	* toplev.h (warning): Remove attribute.

2003-07-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-decl.c (c_finish_incomplete_decl): Don't use xxx_with_decl.
	(pop_label_level): Likewise.
	(duplicate_decls): Likewise.
	(implicitly_declare): Likewise.
	(shadow_label): Likewise.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	(grokdeclarator): Likewise.
	(get_parm_info): Likewise.
	(detect_field_duplicates): Likewise.
	(finish_struct): Likewise.
	(start_function): Likewise.
	(store_parm_decls): Likewise.
	(finish_function): Likewise.
	(c_expand_body_1): Likewise.
	(check_for_loop_decls): Likewise.
	(merge_translation_unit_decls): Likewise.

2003-07-19  Neil Booth  <neil@daikokuya.co.uk>

	* common.opt:  Document --param.
	* opts.c (columns, undocumented_msg): New.
	(print_help): Get number of columns from environment.  Print
	--param help.  Tweak newline handling.
	(print_param_help): New.
	(print_filtered_help): Better handling of duplicates.  Complain
	about undocumented switches.
	(print_switch): New.
	(wrap_help): Improve wrapping, use COLUMNS.
	* opts.sh: Ignore comments in records.
	* params.def: Fix typos and remove trailing periods.
	* toplev.c (display_help): Don't dump --param help.
	* doc/sourcebuild.texi: Update.

2003-07-18  Richard Henderson  <rth@redhat.com>

	PR target/11556
	* optabs.c (prepare_operand): Fail gracefully instead of abort
	if the predicate doesn't satisfy.
	(gen_cond_trap): Allow prepare_operand to fail.

2003-07-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-common.c: Don't undefine GCC_DIAG_STYLE.
	(fname_decl): Don't use xxx_with_decl.
	(c_add_case_label): Likewise.
	(handle_section_attribute): Likewise.
	(handle_alias_attribute): Likewise.
	(handle_no_instrument_function_attribute): Likewise.
	(handle_no_limit_stack_attribute): Likewise.
	* c-objc-common.c (c_tree_printer): Print IDENTIFIER_NODEs.
	* c-format.c (gcc_cdiag_char_table): Add '%E' format-specifier.

2003-07-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (ifcvt.o): Add cfgloop.h.
	* basic-block.h (EDGE_LOOP_EXIT): New flag.
	* cfgrtl.c (rtl_verify_flow_info_1): Handle it correctly.
	* ifcvt.c: Include cfgloop.h.
	(mark_loop_exit_edges): New static function.
	(if_convert): Call it.
	(find_if_header): Ignore branches out of loops.

2003-07-18  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_comparison): Don't share rtx when converting
	(ne (and (not X) 1) 0) to (eq (and X 1) 0).

2003-07-18  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix.h (AGGREGATE_PADDING_FIXED): Define.
	(AGGREGATES_PAD_UPWARD_ALWAYS): Define.
	(MUST_PASS_IN_STACK): Define.
	(BLOCK_REG_PADDING): Define.

2003-07-18  Richard Henderson  <rth@redhat.com>

	* cfgrtl.c (force_nonfallthru_and_redirect): Use tablejump_p
	to skip the addr_vec.

2003-07-18  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (combinable_i3pat): Don't forbid occurrences of
	i2dest or i1dest in inner_dest if inner_dest is a mem.

2003-07-18  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_remove_node): Clear the hash table slot.

2003-07-17  Jakub Jelinek  <jakub@redhat.com>

	PR target/11087
	* loop.c (basic_induction_var): Check if convert_modes emitted any
	instructions. Remove them and return 0 if so.

2003-07-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11083
	* toplev.c (rest_of_handle_addresof): Rename into
	rest_of_handle_addressof.  Delete unreachable blocks
	if dead edges were purged after the addressof pass.

2003-07-18  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in, configure, configure.in: Remove handling of
	lang-options.h and options_.h.
	* toplev.c (struct lang_opt, documented_lang_options): Remove.
	(display_help): Don't use documented_lang_options.

2003-07-17  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (pushdecl_function_level): Make static, return nothing.
	(kept_level_p): Fold into poplevel.
	(undeclared_variable): Moved here from c-typeck.c.  Export.
	* c-tree.h (KEEP_YES, KEEP_NO, KEEP_MAYBE): New #defines.
	(undeclared_variable): Prototype here.  Don't prototype
	kept_level_p nor pushdecl_function_level.
	* c-parse.in: Change first argument to poplevel from
	"kept_level_p()" to "KEEP_MAYBE".
	* c-typeck.c (undeclared_variable): Moved to c-decl.c.

2003-07-17  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_rtx): Use simplify_gen_binary to swap
	commutative operands instead of modifying the RTL in-place.

2003-07-17  Mark Mitchell  <mark@codesourcery.com>

	PR optimization/11557
	* calls.c (flags_from_decl_or_type): Do not set ECF_LIBCALL_BLOCK
	unless we know which function is being called.

2003-07-17  Roger Sayle  <roger@eyesopen.com>

	* cse.c (fold_rtx): Use swap_commutative_operands_p to determine
	whether to reorder the operands of a commutative binary operator.

2003-07-17  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (const_binop): Avoid performing the FP operation at
	compile-time, if either operand is NaN and we honor signaling NaNs,
	or if we're dividing by zero and either flag_trapping_math is set
	or the desired mode doesn't support infinities.
	(fold_initializer): New function to fold an expression ignoring any
	potential run-time exceptions or traps.
	* tree.h (fold_initializer): Prototype here.
	* c-typeck.c (build_binary_op): Move to the end of the file so
	that intializer_stack is in scope.  If constructing an initializer,
	i.e. when initializer_stack is not NULL, use fold_initializer to
	fold expressions.
	* simplify-rtx.c (simplify_binary_operation): Likewise, avoid
	performing FP operations at compile-time, if they would raise an
	exception at run-time.

2003-07-17  Geoffrey Keating  <geoffk@apple.com>

	PR 11498
	* Makefile.in (c-opts.o): Add $(LANGHOOKS_DEF_H).
	(langhooks.o): Add $(GGC_H), gt-langhooks.h.
	(GTFILES): Add langhooks.c.
	(gt-langhooks.h): New.
	* c-common.h (c_static_assembler_name): Prototype.
	* c-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Define.
	* objc/objc-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Define.
	* c-opts.c: Include langhooks-def.h.
	(c_static_assembler_name): New.
	* langhooks.c: Include ggc.h.  Include gt-langhooks.h.
	(var_labelno): New.
	(lhd_set_decl_assembler_name): Give static objects with context
	unique names.
	* varasm.c (var_labelno): Delete.
	(make_decl_rtl): Don't change the assembler name once it's set.

	* c-opts.c (this_input_filename): New.
	(finish_options): Take new parameter, name of file being compiled.
	Update callers.  Set this_input_filename.
	(push_command_line_include): Use this_input_filename not
	main_input_filename.

2003-07-17  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Depend .pot generation on options.c.
	* po/exgettext: Add an extra_files variable containing additional
	files to scan.

2003-07-17  Zack Weinberg  <zack@codesourcery.com>

	* objc/objc-lang.c: Override LANG_HOOKS_WRITE_GLOBALS to
	c_write_global_declarations.

	* c-decl.c: Fix typos in several comments.  Remove all
	#if 0 blocks; reindent as needed.  Remove unused argument
	to declare_parm_level; all callers changed.
	* c-parse.in: Update calls to declare_parm_level.  Avoid
	issuing a double warning in some circumstances.
	* c-typeck.c: Update calls to declare_parm_level.
	* c-tree.h: Update prototype of declare_parm_level.

	* c-pragma.c (apply_pragma_weak): Don't complain about a
	redundant #pragma weak.

	* objc/objc-act.c (forward_declare_categories,
	build_selector_reference_decl, build_class_reference_decl,
	build_objc_string_decl, synth_forward_declarations,
	build_protocol_reference): Set TREE_PUBLIC on synthetic
	forward decl to 0, consistent with eventual definition.
	Correct comments to match.

	* fixinc/inclhack.def (solaris_mutex_init_2): Escape braces
	in regexp that don't form a range expression.
	* fixinc/fixincl.def: Regenerate.

2003-07-17  Richard Henderson  <rth@redhat.com>

	PR target/10907
	* config/ia64/ia64.c (ia64_epilogue_uses): GP is live at end
	even with !TARGET_CONST_GP.
	(ia64_function_ok_for_sibcall): Reject non-local functions.

2003-07-17  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.c (c_estimate_num_insns_1): Don't handle
	METHOD_CALL_EXPR.
	* expr.c (safe_from_p): Likewise.
	* gengtype.c (adjust_field_tree_exp): Likewise.
	* stmt.c (warn_if_unused_value): Likewise
	* tree.c (first_rtl_op): Likewise.
	* tree.def: Don't define METHOD_CALL_EXPR.
	* java/lang.c (java_estimate_num_insns_1): Don't handle
	METHOD_CALL_EXPR.

2003-07-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/11466
	* doc/invoke.texi (SPARC Options): Document "-mlittle-endian"
	and its restrictions for the SPARC64 port.
	Move the entry of "-mimpure-text" before that of "-mv8".

2003-07-17  Eric Botcazou <ebotcazou@libertysurf.fr>
	    Phil Edwards <phil@jaj.com>

	* doc/install.texi (*-*-solaris2*): Document the step-by-step
	procedure to bootstrap and install.
	Document the preference for the legacy Sun tools in /usr/bin
	over the POSIX tools in /usr/xpg4/bin for the build process.

2003-07-17  Neil Booth  <neil@daikokuya.co.uk>

	* c.opt: Document Uncodumented; use it.  Document ObjC options.
	* opts.c (print_filtered_help): Skip undocumented switches.
	* opts.h (CL_UNDOCUMENTED): New.
	* opts.sh: Handle Undocumented.
	* toplev.c (documented_lang_options): Prevent its becoming empty.
objc:
	* lang-options.h: Remove.

2003-07-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* loop.c (check_ext_dependent_givs): Pass const struct loop *
	instead of struct loop_info * as argument.  Accept BIVs with
	increment +/- 1 provided there is a friendly exit test against
	a loop-invariant value.
	(strength_reduce): Adapt call to check_ext_dependent_givs.

2003-07-16  J"orn Rennecke <joern.rennecke@superh.com>
	    Con Bradley <con.bradley@superh.com>

	* sh-protos.h (sh_get_pr_initial_val): Declare.
	* sh.c (regno_reg_class): Make its elements type enum reg_class.
	(output_stack_adjust): Remove emit_fn argument.  Add epilogue_p
	and live_regs_mask arguments.  Changed all callers.
	(save_schedule_s): New structure.
	(save_schedule): New typedef.
	(scavenge_reg, sh5_schedule_saves, sh5_schedule_saves): New functions.
	(calc_live_regs): For TARGET_SHMEDIA, use leaf_function_p.
	In interrupts handlers, also save registers that are usually
	partially saved, and make sure there is at least one general purpose
	register saved if a target register needs saving.
	Add casts in comparisons to avoid warnings.
	(sh_media_register_for_return): return -1 for interrupt handlers.
	(MAX_SAVED_REGS, MAX_TEMPS): New defines.
	(sh_expand_prologue): Use sh5_schedule_saves.  Check that any temp
	registers used are available.
	Set RTX_FRAME_RELATED_P where appropriate.
	Add an REG_FRAME_RELATED_EXPR for r0 + offset addressing.
	(sh_expand_epilogue, sh_set_return_address): Use sh5_schedule_saves.
	(initial_elimination_offset): Likewise.
	* sh.h (DWARF_CIE_DATA_ALIGNMENT): Set to -4.
	(LOCAL_ALIGNMENT, GENERAL_REGISTER_P): Add casts to avoid warnings.
	(FP_REGISTER_P): Add casts to fix broken handling of unsigned REGNO.
	(XD_REGISTER_P, TARGET_REGISTER_P): Likewise.
	(HARD_REGNO_CALL_PART_CLOBBERED): Also yield nonzero for r15,
	and for target registers.
	(RETURN_IN_MEMORY): Add parentheses to avoid warnings.
	(regno_reg_class): Make its elements type enum reg_class.
	(CONSTRAINT_LEN): Don't use isdigit.
	(FUNCTION_ARG_REGNO_P): Add casts to avoid warnings.
	(FUNCTION_ARG): Add parentheses to avoid warnings.
	(RETURN_ADDR_RTX): Use sh_get_pr_initial_val.
	(RETURN_ADDR_OFFSET): Define to -1 for TARGET_SH5.
	(SH_DBX_REGISTER_NUMBER): Add casts to avoid warnings.
	(EH_RETURN_DATA_REGNO): Use unsigned constants to avoid warnings.
	* sh.md (xordi3+1): Remove unused variable regno.
	(return_media): Check that tr0 is available before using it.

2003-07-16  Neil Booth  <neil@daikokuya.co.uk>

	* c.opt: Document more options.

2003-07-16  Roger Sayle  <roger@eyesopen.com>

	* combine.c (subst): Also handle (subreg (const_double ...)) case
	if created by a substitution, by using the original inner mode.

2003-07-16  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_replace_rtx): Convert constant comparisons
	to MODE_FLOAT constants if FLOAT_STORE_FLAG_VALUE is defined.
	(simplify_rtx): Likewise.  Simplify (lo_sum (high X) X) as X.

2003-07-16  Andrew Pinski  <pinskia@physics.uc.edu>

	* doc/install.texi (--without-headers): New.

	Partial Fix PR/10129
	* config/darwin.c (machopic_function_base_name): Only Return "<pic base>".
	(machopic_output_function_base_name): New; print the true pic label.
	(machopic_classify_ident): Pic Base is always a defined data.
	* config/darwin.h (ASM_OUTPUT_LABELREF): Support the pic base label.
	* config/darwin-proto.h (machopic_output_function_base_name): Prototype.

	* gcse.c (gcse_constant_p): COMPARE of the same registers is a constant
	if they are not floating point registers.

	PR c/10962
	* ggc.h: Add header guards.
	* c-decl.c (finish_struct): Sort fields if
	number greater than 15 and there are no
	anonymous structs/unions.
	* c-common.h: Include ggc.h.
	(sorted_fields_type): New struct.
	(field_decl_cmp): New prototype.
	(resort_sorted_fields): New prototype.
	(DECL_DECLARES_TYPE_NON_TEMPLATE_P): New macro.
	* c-tree.h: (lang_type): Use pointer to sorted_fields_type
	as s, removing other fields.
	* c-typeck.c (lookup_field): Use s in lang_type.
	These were mostly moved from cp/class.c:
	* c-common.c (field_decl_cmp): New static function.
	(field_decl_cmp): New function.
	(resort_sorted_fields): New function.

2003-07-16  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.c (machopic_select_section): Use decl_readonly_section
	to do most of the work.

2003-07-16  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix-protos.h: Convert prototypes to ISO C90.
	* config/mmix/mmix.c: Convert functions to ISO C90.
	(mmix_eh_return_handler_rtx, mmix_output_shifted_value): Tweak
	formatting.
	(mmix_get_hard_reg_initial_val): Tweak section head comment.

2003-07-16  J"orn Rennecke <joern.rennecke@superh.com>

	* c-pragma.h (HANDLE_PRAGMA_WEAK): Always define to SUPPORTS_WEAK.

2003-07-16  Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2.c (MD_FROB_UPDATE_CONTEXT): Define.
	(uw_update_context_1): Use it.
	* config/rs6000/rs6000.c (insn_after_throw): Remove.
	(rs6000_aix_emit_builtin_unwind_init): Save $r2 to its location
	in parent frame if _Unwind_* called directly instead of through
	.plt.
	(rs6000_emit_eh_toc_restore): Remove.
	(rs6000_emit_prologue): Update stack pointer before doing any saving
	if current_function_calls_eh_return.  Generate unwind info for $r2.
	(rs6000_emit_epilogue): Restore stack pointer after doing all
	restoring if current_function_calls_eh_return.  Restore $r2.
	* config/rs6000/rs6000-protos.h (rs6000_emit_eh_toc_restore): Remove.
	* config/rs6000/rs6000.md (eh_return): Remove call to
	rs6000_emit_eh_toc_restore.
	* config/rs6000/linux64.h (MD_FROB_UPDATE_CONTEXT): Define.
	* config/rs6000/aix.h (MD_FROB_UPDATE_CONTEXT): Define.

2003-07-15  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (emit_block_move): Don't move anything if size is const 0.
	(clear_storage): Test against const0_rtx instead of comparing INTVAL
	against 0.

2003-07-15  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Only
	emit nop if the last real insn is CALL_INSN.

2003-07-16  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/xm-mingw32.h (HOST_BIT_BUCKET): Define
	as "nul".
	* config/i386/xm-mingw32.h: Change GNU CC to GCC.

2003-07-16  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c (associated_type): Artificial methods are not
	affected by the import/export status of their class unless they are
	COMDAT.
	(i386_pe_dllimport_p): Do not mark artificial methods as dllimport.

	* config/i386/winnt.c: Fix GCC copyright comment.

2003-07-16  Gabriel Dos Reis  <gcc@integrable-solutions.net>

	PR c++/11531
	* diagnostic.c (diagnostic_report_diagnostic): Don't ICE if we're
	not recursing on hard error.
	(diagnostic_for_decl): Likewise.
	* diagnostic.def: Rearrange.

2003-07-15  J"orn Rennecke <joern.rennecke@superh.com>

	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes):
	If DWARF_FRAME_RETURN_COLUMN doesn't have a register mode, use Pmode.

2003-07-15  J"orn Rennecke <joern.rennecke@superh.com>
	    Richard Henderson  <rth@redhat.com>

	* unwind-dw2.c (_Unwind_GetGR): Use dwarf_reg_size_table
	to decide if to access a _Unwind_Ptr or a _Unwind_Word.
	(_Unwind_SetGR): Likewise.
	(_Unwind_GetPtr, _Unwind_SetSpColumn): New functions.
	(Unwind_SpTmp): New typedef.
	(uw_update_context_1): Use _Unwind_SetSpColumn and _Unwind_GetPtr.
	(uw_update_context): Use _Unwind_GetPtr.
	(init_dwarf_reg_size_table): Move above uw_init_context_1.
	(uw_init_context_1): Initialize dwarf_reg_size_table if necessary.
	Use _Unwind_SetSpColumn.
	(uw_install_context_1): Don't initialize dwarf_reg_size_table.
	Use _Unwind_GetPtr.

2003-07-15  Neil Booth  <neil@daikokuya.co.uk>

	* c.opt: Document more options.
	* toplev.c (documented_lang_options): Remove all local help strings.

2003-07-15  Mark Mitchell  <mark@codesourcery.com>

	PR debug/11473
	* dbxout.c (dbxout_type): Use TYPE_SIZE to determine the sizes of
	base classes.

2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/10795
	* config/i386/i386.c (ix86_expand_carry_flag_compare): Don't
	swap comparison operands if doing so would generate an
	unrecognizable insn.

2003-07-15  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11320
	* sched-int.h (struct deps) [reg_conditional_sets]: New field.
	(struct sched_info) [compute_jump_reg_dependencies]: New prototype.
	* sched-deps.c (sched_analyze_insn) [JUMP_INSN]: Update call to
	current_sched_info->compute_jump_reg_dependencies. Record which
	registers are used and which registers are set by the jump.
	Clear deps->reg_conditional_sets after a barrier.
	Set deps->reg_conditional_sets if the insn is a COND_EXEC.
	Clear deps->reg_conditional_sets if the insn is not a COND_EXEC.
	(init_deps): Initialize reg_conditional_sets.
	(free_deps): Clear reg_conditional_sets.
	* sched-ebb.c (compute_jump_reg_dependencies): New prototype.
	Mark registers live on entry of the fallthrough block and conditionally
	set as set by the jump. Mark registers live on entry of non-fallthrough
	blocks as used by the jump.
	* sched-rgn.c (compute_jump_reg_dependencies): New prototype.
	Mark new parameters as unused.

2003-07-15  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Resync MIPS -march documentation.

2003-07-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (PROCESSOR_R9000): New processor_type.
	(TARGET_MIPS9000, TUNE_MIPS9000): New macros.
	(GENERATE_MULT3_SI): True for TARGET_MIPS9000.
	* config/mips/mips.c (mips_cpu_info_table): Add rm9000 entry.
	(mips_rtx_costs): Adjust integer multiplication costs for the rm9000.
	(mips_issue_rate): Handle PROCESSOR_R9000.
	(mips_use_dfa_pipeline_interface): Likewise.
	* config/mips/9000.md: New file.
	* config/mips/mips.md: Include it.
	(define_attr cpu): Add r9000.
	(mulsi3_mult3): Use "mul" for rm9000 code.

2003-07-15  Stan Cox  <scox@redhat.com>

	* config/mips/mips.h (PROCESSOR_R7000): New processor_type.
	(TARGET_MIPS7000, TUNE_MIPS7000): New macros.
	(GENERATE_MULT3_SI): True for TARGET_MIPS7000.
	* config/mips/mips.c (mips_cpu_info_table): Add rm7000 entry.
	(mips_rtx_costs): Adjust integer multiplication costs for the rm7000.
	(mips_issue_rate): Handle PROCESSOR_R7000.
	(mips_use_dfa_pipeline_interface): Likewise.
	* config/mips/7000.md: New file.
	* config/mips/mips.md: Include it.
	(define_attr cpu): Add r7000.
	(mulsi3_mult3): Use "mul" for rm7000 code.

2003-07-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (define_attr type): Add condmove.  Use it for
	the conditional move patterns.
	* config/mips/5400.md (ir_vr54_move): Rename to ir_vr54_condmove.
	Check for condmove type.
	(ir_vr54_arith): Add move type.
	* config/mips/5500.md (ir_vr55_move, ir_vr55_arith): Likewise.
	* config/mips/sr71k.md (ir_sr70_move, ir_sr70_arith): Likewise.

2003-07-15  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (print_help): Remove.
	(c_common_handle_option): Don't handle --help.
	* c.opt: Document some options.
	(--help): Remove.
	* opts.c (print_filtered_help): New.
	(print_help): Use it.

2003-07-14  Geoffrey Keating  <geoffk@apple.com>

	* c-common.c (c_common_type_for_mode): Handle V4DFmode.
	* tree.c: (build_common_tree_nodes_2): Likewise.
	* tree.h (enum tree_index): Add TI_V4DF_TYPE.
	(V4DF_type_node): New.

	* c-opts.c (push_command_line_include): Don't free deferred_opts,
	we'll need it.
	(finish_options): Reset init_cursor.

2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_assignment): Remove an unused argument
	SUGGEST_REG.
	* expr.h: Update the prototype.
	* function.c: Update the callers.
	* stmt.c: Likewise.

2003-07-14  Mark Mitchell  <mark@codesourcery.com>

	PR debug/11098
	* integrate.c (copy_decl_for_inlining): Do not mark copied decls
	as DECL_ABSTRACT.

2003-07-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (avoid_bool_define, avoid_bool_type): Bypass
	with __cplusplus, not "we must use the C++ compiler's type"
	* fixinc/inclhack.def (void_null): Note that Interix needs this.
	* fixinc/fixincl.x: Regenerate.

2003-07-14  Geoffrey Keating  <geoffk@apple.com>

	* unwind-dw2-fde-darwin.c (live_image_destructor): Get seen_objects
	and unseen_objects from the global data before calling
	__deregister_frame_info_bases.
	(examine_objects): Insert objects into the seen_objects list,
	not unseen_objects.
	(_Unwind_Find_FDE): Always unlock the global object lists, even if
	we couldn't allocate a data structure to put in it.

	* objc/objc-act.h (CLASS_SUPER_NAME): Add a little typechecking.
	(TYPE_PROTOCOL_LIST): Share use of type.context with C frontend.
	(SET_TYPE_PROTOCOL_LIST): New.
	* objc/objc-act.c (get_static_reference): Use SET_TYPE_PROTOCOL_LIST.
	(get_object_reference): Likewise.

2003-07-14  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (locator_file): Break out from ....
	(insn_file): ... here.
	(locator_line): Break out from ....
	(insn_line): ... here.
	* rtl.h (locator_file, locator_line): Declare.
	(final_start_function): Set proper line/file info.

2003-07-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-pretty-print.c (pp_c_unary_expression): A CONVERT_EXPR is
	handled by pp_c_cast_expression.

2003-07-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_expand_prologue): Use a single insn to
	allocate 32768 bytes of stack.  Use addition rather than subtraction
	when a single insn is enough.
	* config/mips/mips.md: Remove insns and splitters for subtracting
	constants.
	(subsi3): Only accept register operands.
	(subsi3_internal): Likewise.  Use for TARGET_MIPS16 as well.
	(subdi3_internal_3, subsi3_internal_2): Likewise.
	(casesi): Use expand_binop to subtract the lower bound.

2003-07-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_in_small_data_p): Don't handle
	TARGET_MIPS16 specially.

2003-07-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/elf.h (ASM_OUTPUT_ALIGNED_BSS): Use
	mips_output_aligned_bss.
	* config/mips/linux.h: Likewise.
	* config/mips/mips-protos.h (mips_output_aligned_bss): Declare.
	* config/mips/mips.c (mips_output_aligned_bss): New function.

	* config/mips/elf.h (DBX_DEBUGGING_INFO): Delete.
	* config/mips/elf64.h: Likewise.

	* config/mips/elf.h (ASM_DECLARE_OBJECT_NAME): Use
	mips_declare_object_name.
	(ASM_FINISH_DECLARE_OBJECT): Likewise mips_finish_declare_object.
	* config/mips/elf64.h: As for elf.h.
	* config/mips/iris6.h: Likewise.
	* config/mips/linux.h (ASM_DECLARE_OBJECT_NAME): As for elf.h.
	* config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Remove unnecessary
	do...while (0) block.
	* config/mips/mips-protos.h (mips_declare_object_name): Declare.
	(mips_finish_declare_object): Declare.
	* config/mips/mips.c (mips_declare_object_name): New function.
	(mips_finish_declare_object): New function.

	* config/mips/elf.h (SBSS_SECTION_ASM_OP): Delete.
	* config/mips/linux.h: Likewise.

	* config/mips/mips.c (inside_function): Delete.
	(file_in_function_warning, ignore_line_number): Delete.
	(mips_output_filename): Don't warn about changing filenames within
	a function.
	(mips_output_lineno): Update accordingly.
	(mips_output_function_prologue): Don't reset the deleted variables.
	* config/mips/mips.h (inside_function): Delete.
	(file_in_function_warning, ignore_line_number): Delete.

	* config/mips/elf.h (OBJECT_FORMAT_COFF, EXTENDED_COFF): Remove undefs.
	* config/mips/elf64.h: Likewise.
	* config/mips/openbsd.h: Likewise.
	* config/mips/iris5.h (OBJECT_FORMAT_COFF): Remove undefs.
	* config/mips/linux.h: Likewise.
	* config/mips/mips.h (OBJECT_FORMAT_COFF, EXTENDED_COFF): Delete.
	(CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB, MIPS_UNMARK_STAB): Delete.

	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): Add mips/sdb.h
	to the list of include files when using gas.
	(mips*el-*-openbsd*, mips*-*-openbsd*): Add mips/sdb.h unconditionally.
	* config/mips/elf.h: Remove #undef SDB_DEBUGGING_INFO.
	* config/mips/elf64.h: Likewise.
	* config/mips/iris5.h: Likewise.
	* config/mips/linux.h: Likewise.
	* config/mips/iris5gas.h (SDB_DEBUGGING_INFO): Remove definition.
	* config/mips/mips.h (PREFERRED_DEBUGGING_TYPE): Likewise.
	(SDB_DEBUGGING_INFO, sdb*, SDB_ALLOW_*, PUT_SDB*): Move to...
	* config/mips/sdb.h: ...this new file.

2003-07-14  Douglas Rupp  <rupp@gnat.com>

	* fixinc/server.c (server_setup): Don't use non-POSIX NULL first
	argument to getcwd; use fixed buffer instead.

2003-07-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/mkfixinc.sh: Treat OpenBSD normally.
	* fixinc/fixinc.wrap: Delete.

2003-07-14  Dan Nicolaescu  <dann@ics.uci.edu>

	* ggc-page.c (extra_order_size_table): Insns have 9 slots. Regs
	don't have 2.

2003-07-14  Dan Nicolaescu  <dann@ics.uci.edu>

	* ggc-page.c (struct globals): Add new fields to keep track of the
	total allocated memory and overhead.
	(ggc_print_statistics): Print them.
	(ggc_alloc): Keep track of the total allocated memory and the
	overhead.

	* tree.c (dump_tree_statistics): Increase spacing.
	(enum tree_node_kind): Move to ...
	* tree.h (enum tree_node_kind): ... here.
	(tree_node_counts, tree_node_sizes): Declare.

2003-07-14  James A. Morrison  <ja2morri@student.math.uwaterloo.ca>

	* doc/include/texinfo.tex: Upgrade to texinfo 4.6.

2003-07-14  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR optimization/11440
	* gcse.c (try_replace_reg): Don't attach notes to ZERO_EXTRACT or
	SIGN_EXTRACT SETs.

2003-07-14  Alan Modra  <amodra@bigpond.net.au>

	* doc/tm.texi (BLOCK_REG_PADDING): Describe.
	* expr.h (struct locate_and_pad_arg_data): Add where_pad.
	(emit_group_load, emit_group_store): Adjust declarations.
	Remove most occurrences of #ifdef TREE_CODE.
	* expr.c (emit_group_load): Add "type" param, and use
	BLOCK_REG_PADDING to determine need for a shift.  Optimize non-
	aligned accesses if !SLOW_UNALIGNED_ACCESS.
	(emit_group_store): Likewise.
	(emit_push_insn, expand_assignment, store_expr, expand_expr): Adjust
	emit_group_load and emit_group_store calls.
	* calls.c (store_unaligned_arguments_into_pseudos): Tidy.  Use
	BLOCK_REG_PADDING to determine whether we need endian_correction.
	(load_register_parameters): Localize vars.  Handle shifting of
	small values to the correct end of regs.  Adjust emit_group_load
	call.
	(expand_call, emit_library_call_value_1): Adjust emit_group_load
	and emit_group_store calls.
	* function.c (assign_parms): Set mem alignment for stack slots.
	Adjust emit_group_store call.  Store values at the "wrong" end
	of regs to the stack.  Use BLOCK_REG_PADDING.
	(locate_and_pad_parm): Save where_pad.
	(expand_function_end): Adjust emit_group_load call.
	* stmt.c (expand_value_return): Adjust emit_group_load call.
	* Makefile.in (calls.o): Depend on $(OPTABS_H).
	* config/rs6000/linux64.h (TARGET_LITTLE_ENDIAN): Redefine as 0.
	(AGGREGATE_PADDING_FIXED, AGGREGATES_PAD_UPWARD_ALWAYS): Define.
	(MUST_PASS_IN_STACK): Define.
	(BLOCK_REG_PADDING): Define.
	* config/rs6000/rs6000.h (struct rs6000_args): Remove orig_nargs.
	(PAD_VARARGS_DOWN): Define in terms of FUNCTION_ARG_PADDING.
	* config/rs6000/rs6000.c (init_cumulative_args): Don't set orig_nargs.
	(function_arg_padding): !AGGREGATE_PADDING_FIXED compatibility code.
	Act on AGGREGATES_PAD_UPWARD_ALWAYS.

2003-07-13  Aaron W. LaFramboise  <awlaframboise@aol.com>

	* config/i386/gthr-win32.c (__GTHREAD_HIDE_WIN32API): Define to 1.

2003-07-13  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): If reg, copy OP0 to MEM
	both if OFFSET specified and if result BLKmode for ARRAY_RANGE_REF.

2003-07-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR other/11123
	* toplev.c: Don't cut off option names.

2003-07-13  Andreas Jaeger  <aj@suse.de>

	* c-decl.c (link_hash_hash): Avoid warning about casting pointer
	to integer of different size.

2003-07-13  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_comparison): Convert (ne (and (not X) 1) 0)
	to (eq (and X 1) 0).

2003-07-13  Andreas Jaeger  <aj@suse.de>

	* config.gcc: Add pmmintrin.h for x86_64-*-*.

2003-07-13  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (LIBCPP_DEPS): Remove coretypes.h and $(TM_H).
	(hashtable.o, line-map.o, mkdeps.o): Likewise, from dependency
	list.  Move these all together down by cpplib.

	* cpplib.h: Don't refer to MAX_WCHAR_TYPE_SIZE when determining
	definition of CPPCHAR_SIGNED_T.

	* cppcharset.c, cpperror.c, cppexp.c, cppfiles.c, cpphash.c, cppinit.c
	* cpplex.c, cpplib.c, cppmacro.c, cpppch.c, cpptrad.c, hashtable.c
	* line-map.c, mkdeps.c: Don't include coretypes.h or tm.h.

	* cpphash.c (_cpp_init_hashtable): Don't use gcc_obstack_init.
	* cppinit.c (cpp_create_reader): Likewise.

	* cpphash.h (scan_out_logical_line): Rename _cpp_scan_out_logical_line.
	* cpptrad.c: Likewise.  All callers changed.
	* cpplib.c: All callers changed.
	* c-ppoutput.c: Replace 'uchar' with 'unsigned char' throughout.
	* hashtable.h: Define GTY(x) to nothing here too.

2003-07-13  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (compute_record_mode): Remove very obsolete test
	that forces BLKmode for records with fields crossing word boundary.

2003-07-13  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in: Remove orphan reference to acconfig.h.

2003-07-13  Andreas Jaeger  <aj@suse.de>

	* cgraphunit.c: Convert prototypes to ISO C90.

2003-07-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (avoid_wchar_t_type): Use __cplusplus bypass
	(for OpenBSD).
	* fixinc/fixincl.x: Rebuild.

2003-07-12  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Always define HAVE_AS_GOTOFF_IN_DATA for
	i?86-*-*.  Use correct name of cache variable.
	* configure: Regenerate.

2003-07-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.c: Fix comment typos.
	* config/alpha/alpha.md: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/lib1funcs.asm: Likewise.
	* config/avr/avr.md: Likewise.
	* config/arm/README-interworking: Fix typos.

2003-07-12  Kazu Hirata  <kazu@cs.umass.edu>

	* c-format.c: Fix comment formatting.
	* c-typeck.c: Likewise.
	* coverage.c: Likewise.
	* cppcharset.c: Likewise.
	* cpplib.c: Likewise.
	* dbxout.c: Likewise.
	* gcov-io.h: Likewise.
	* toplev.c: Likewise.

2003-07-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (alpha_sbrk): Note that OpenBSD needs this
	fix.

2003-07-12  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (gcc_AC_CHECK_TYPE): Clone of AC_CHECK_TYPE,
	uses three-argument AC_DEFINE so no acconfig.h entries are
	needed.
	(_gcc_COMPUTE_GAS_VERSION): Also provide gcc_cv_gas_vers
	which contains the GAS version number as a scaled integer.
	(gcc_GAS_VERSION_GTE_IFELSE): Use gcc_cv_gas_vers.  Add
	ability to check for ELF assembler.
	(gcc_GAS_CHECK_FEATURE): New macro.
	* configure.in: Use gcc_AC_CHECK_TYPE.  Rewrite all
	assembler feature checks using gcc_GAS_CHECK_FEATURE.
	Use three-argument AC_DEFINE everywhere.
	* acconfig.h: Deleted.
	* config.in, configure: Regenerate.

2003-07-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/inclhack.def (struct_sockaddr): Avoid "fixing" sockaddr_in
	(on OpenBSD).
	* fixinc/fixincl.x: Regenerate.

	* fixinc/inclhack.def (gnu_types): Improve comment.

2003-07-12  Andreas Jaeger  <aj@suse.de>

	* fp-test.c (main): Use ISO C90 prototype.

	* version.c: Remove unneded include of ansidecl.h.

	* cgraph.h: Convert prototypes to ISO C90.
	* cgraph.c: Likewise.
	* fix-header.c: Likewise.
	* ra.h: Likewise.
	* protoize.c: Likewise.

2003-07-12  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_inlined_into, cgraph_inlined_calees): Fix
	warning.

2003-07-12  Jan Hubicka  <jh@suse.cz>
			       Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* cgraph.c (cgraph_max_uid): New global variable.
	(cgraph_node): Set uid field.
	(create_edge): Keep inline flags consistent.
	(dump_cgraph): Dump more info.
	* cgraph.h (struct cgraph_local_info): Remove inline_many and
	can_inline_once; add inlinable, disgread_inline_limits, and self_insn
	(struct cgraph_global_info): Add insns, calls, cloned_times,
	will_be_output.
	(struct cgraph_node): Add uid.
	(struct cgraph_edge): Add inline_call.
	(cgraph_max_uid, cgraph_inline_p): Declare.
	* cgraph.c: Include params.h and fibheap.h
	(cgraph_mark_functions_to_inline_once): Kill.
	(INSNS_PER_CALL): New constant.
	(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
	static variables.
	(cgraph_finalize_function): Do not analyze inlining.
	(cgraph_finalize_compilation_unit): Set inlining attributes.
	(cgraph_mark_functions_to_output): More consistency checks.
	(cgraph_optimize_function): Set current_function_decl to NULL.
	(cgraph_expand_function): Use new inline flags.
	(cgraph_postorder): Expand from cgraph_expand_functions.
	(INLINED_TIMES, SET_INLINED_TIMES): New macros.
	(cgraph_inlined_into, cgraph_inlined_callees,
	cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
	cgraph_mark_inline, cgraph_check_inline_limits,
	cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
	cgraph_decide_inlining, cgraph_inline_p): New functions.
	* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
	PARAM_INLINE_UNIT_GROWTH): New parameters.
	* tree-inline.c (struct inline_data): New field current_decl.
	(expand_call_inline): Avoid forward declarations; use
	inlinable_function_p.
	(optimize_inline_calls): Set id.current_decl.

2003-07-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* configure.in: Remove wrongly added definition of
	local_prefix.
	* configure: Regenerate.

2003-07-11  Dan Nicolaescu  <dann@ics.uci.edu>

	* rtl.def (NOTE): Do not use padding.

2003-07-11  Dara Hazeghi  <dhazeghi@yahoo.com>

	* doc/install.tex: Update required binutils for i?86-*-linux*

2003-07-11  Richard Henderson  <rth@redhat.com>

	* Makefile.in (stage1_build): Force OBJS-onestep=OBJS.

2003-07-11  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (make_decl_rtl): Treat decls with a DECL_CONTEXT of
	TRANSLATION_UNIT_DECL as top_level.

2003-07-11  Jakub Jelinek  <jakub@redhat.com>

	* optabs.c (prepare_cmp_insn): Try cmpmemM first if it exists,
	then fall back to cmpstrM.
	* builtins.c (expand_builtin_memcmp): Likewise.
	* config/s390/s390-protos.h (s390_expand_cmpstr): Rename to...
	(s390_expand_cmpmem): ... this.
	* config/s390/s390.md (cmpmemdi, cmpmemsi, cmpmem_short_64,
	cmpmem_short_31, cmpmem_long_64, cmpmem_long_31): Renamed
	from cmpstr* patterns.  Rename call to s390_expand_cmpstr
	to s390_expand_cmpmem.
	* config/s390/s390.c (s390_expand_cmpstr): Rename to...
	(s390_expand_cmpstr): ... this.  Rename cmpstr* instructions
	to cmpmem*.
	* config/i370/i370.md (cmpmemsi, cmpmemsi_1): Renamed from
	cmpstr* patterns.
	* doc/md.texi (cmpstrM): Describe as String compare insn, not
	Block compare insn.
	(cmpmemM): Add.

2003-07-11  Loren James Rittle  <ljrittle@acm.org>

	* config/i386/freebsd.h (SET_ASM_OP): Remove.
	(SUBTARGET_OVERRIDE_OPTIONS): Handle TARGET_64BIT case.
	(ASM_COMMENT_START, ASM_APP_ON, ASM_APP_OFF, DBX_REGISTER_NUMBER
	 MCOUNT_NAME, SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE_SIZE): Whitespace.

2003-07-11  Richard Henderson  <rth@redhat.com>

	* function.c (assign_parms): Don't recombine complex args if
	fnargs is unchanged from orig_fnargs.
	(split_complex_args): Return args without complex before copying.
	Re-layout the modified parameters.

2003-07-11  J"orn Rennecke <joern.rennecke@superh.com>

	* regclass.c (choose_hard_reg_mode): Add third argument.
	Changed all callers.
	* rtl.h (choose_hard_reg_mode): Update declaration.
	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes):
	Take HARD_REGNO_CALL_PART_CLOBBERED into account.

2003-07-11  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (finish_decl): Handle 'used' here...
	* cgraphunit.c (cgraph_finalize_function): ... and here ...
	* c-common.c: (handle_used_attribute): ... not here.

	* configure.in (onstep): Support --enable-intermodule.
	* Makefile.in (OBJS-common): New.
	(OBJS-md): New.
	(OBJS-archive): New.
	(OBJS): Build from OBJS-common, OBJS-md, OBJS-archive.
	(OBJS-onestep): New.
	(libbackend.a): Support @onestep@.
	(libbackend.o): New.
	* configure: Regenerate.

	* c-common.h (c_reset_state): New prototype.
	(c_parse_file): New prototype.
	(finish_file): Move prototype from c-tree.h.
	* c-decl.c: Include <hashtab.h>.
	(builtin_decls): New.
	(current_file_decl): New.
	(duplicate_decls): Add extra parameter. Change all callers.  Don't
	output duplicate common symbols.
	(link_hash_hash): New.
	(link_hash_eq): New.
	(poplevel): Handle popping of the top level.
	(warn_if_shadowing): Handle TRANSLATION_UNIT_DECL.
	(pushdecl): Set DECL_CONTEXT to TRANSLATION_UNIT_DECL if appropriate.
	(pushdecl_top_level): Likewise.
	(redeclaration_error_message): Handle TRANSLATION_UNIT_DECL.
	(c_init_decl_processing): Create TRANSLATION_UNIT_DECL.
	(finish_decl): Handle TRANSLATION_UNIT_DECL.
	(merge_translation_unit_decls): New.
	(c_write_global_declarations): New.
	(c_reset_state): New.
	(implicitly_declare): Handle TRANSLATION_UNIT_DECL.
	* c-lang.c (LANG_HOOKS_WRITE_GLOBALS): New.
	* c-objc-common.c (c_cannot_inline_tree_fn): Handle
	TRANSLATION_UNIT_DECL.
	(c_objc_common_finish_file): Call merge_translation_unit_decls.
	* c-opts.c (in_fnames): Rename from in_fname.
	(c_common_decode_option): Handle multiple input filenames.
	(c_common_post_options): Likewise.
	(c_common_parse_file): Likewise; also, call c_parse_file rather than
	yyparse.
	* c-parse.in: Move cleanup code to c_parse_file.
	(free_parser_stacks): Move contents to c_parse_file.
	(c_parse_file): New.
	* c-tree.h (union lang_tree_node): Chain along TYPE_NEXT_VARIANT
	for integer types.
	(C_DECL_FILE_SCOPE): New.
	(finish_file): Move prototype to c-common.h.
	(merge_translation_unit_decls): New prototype.
	(comptypes): Add extra parameter to prototype.
	(c_write_global_declarations): New prototype.
	* c-typeck.c (tagged_types_tu_compatible_p): New.
	(function_types_compatible_p): Add extra parameter, change all callers.
	(type_lists_compatible_p): Likewise.
	(comptypes): Likewise.
	(struct tagged_tu_seen): New.
	(tagged_tu_seen_base): New.
	(build_unary_op): Handle TRANSLATION_UNIT_DECL.
	(c_mark_addressable): Remove #if 0 code.
	* calls.c (special_function_p): Handle TRANSLATION_UNIT_DECL, add
	comment explaining why it shouldn't have to.
	* cgraph.h (struct cgraph_node): Add chain_next and chain_prev GTY
	options.
	* cppinit.c (cpp_read_next_file): New.
	(cpp_read_main_file): Use it.
	* cpplib.c (undefine_macros): New.
	(cpp_undef_all): New.
	* cpplib.h (cpp_read_next_file): Prototype.
	(cpp_undef_all): Prototype.
	* langhooks-def.h (write_global_declarations): Remove prototype.
	* toplev.h (write_global_declarations): Add prototype.
	* tree.c (decl_type_context): Use switch statement, handle
	TRANSLATION_UNIT_DECL.
	* tree.def: Update documentation for TRANSLATION_UNIT_DECL.
	(TRANSLATION_UNIT_DECL): New kind of tree.
	* tree.h: Update documentation for TRANSLATION_UNIT_DECL.
	* Makefile.in (c-decl.o): Add $(HASHTAB_H) to dependencies.
	* doc/invoke.texi: Make attempt to document new functionality.

	2003-05-19  Per Bothner <bothner@apple.com>

	* gcc.c (combine_inputs): New.
	(process_command): Set combine_inputs.
	(do_spec_1): Handle combine_inputs.
	(main): Likewise.

2003-07-10  James E Wilson  <wilson@tuliptree.org>

	PR optimization/9745
	* loop.c (loop_iv_add_mult_emit_before): Call loop_regs_update before
	loop_insn_emit_before.
	(loop_iv_add_mult_sink, loop_iv_add_mult_hoist): Likewise.

2003-07-10  Zack Weinberg  <zack@codesourcery.com>

	* cppcharset.c: Fix comment.
	(iconv_close [!HAVE_ICONV]): #define to (void)0 to prevent warning.
	(EILSEQ): #define to EINVAL if not already defined.
	(convert_using_iconv): #if out when !HAVE_ICONV.
	(init_iconv_desc): Handle !HAVE_ICONV here...
	(cpp_init_iconv): ...not here.

2003-07-11  Neil Booth  <neil@daikokuya.co.uk>

	* common.opt: More --help messages.
	* opts.c (print_help): Use puts().
	* toplev.c (f_options): Remove help text.
	(display_help): Don't dump f_options.

2003-07-11  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/mkfixinc.sh: Drop reference to unsupported alpha-*-interix*.
	Move i?86-*-interix* to the don't-fix list.
	* fixinc/fixinc.interix: Delete with extreme prejudice.

2003-07-10  Dara Hazeghi  <dhazeghi@yahoo.com>

	PR bootstrap/10758
	* doc/install.texi: Document requirements for ia64-*-hpux* target.

2003-07-10  Roger Sayle  <roger@eyesopen.com>

	* config/ia64/hpux.h (TARGET_C99_FUNCTIONS): Define.

2003-07-10  Zack Weinberg  <zack@codesourcery.com>

	* cppcharset.c (one_utf8_to_cppchar, one_cppchar_to_utf8,
	one_utf8_to_utf32, one_utf32_to_utf8, one_utf8_to_utf16,
	one_utf16_to_utf8, conversion_loop, convert_utf8_utf16,
	convert_utf8_utf32, convert_utf16_utf8,	convert_utf32_utf8,
	convert_no_conversion, convert_using_iconv): New functions.
	(APPLY_CONVERSION): New macro.
	(struct conversion, conversion_tab): New data structure.
	(init_iconv_desc): Check conversion_tab for a custom conversion
	primitive before trying to use iconv.
	(convert_cset): Deleted.
	(cpp_init_iconv): Use UTF- terminology, not UCS-.
	(_cpp_destroy_iconv): Update to match.
	(_cpp_valid_ucn): We don't need iconv to implement UCNs.
	(convert_ucn): Use one_cppchar_to_utf8 and APPLY_CONVERSION.
	(convert_escape, cpp_interpret_string): Use APPLY_CONVERSION.
	(_cpp_interpret_string_notranslate): New function, moved here
	from cpplib.c.

	* cpphash.h (convert_f, struct cset_converter): New types.
	(struct cpp_reader): narrow_cset_desc and wide_cset_desc
	are now struct cset_converter, not bare iconv_t.
	Update prototypes.
	* cpplib.c (interpret_string_notranslate): Moved to cppcharset.c;
	all callers changed.

2003-07-10  Kelley Cook  <kelleycook@wideopenwest.com>

	* Makefile.in (options.h): Depend on Makefile.  Add move-if-change
	to opts.sh command line.
	* opts.sh: Write to temporary files with a move-if-change at the end.

2003-07-10  Denis Chertykov  <denisc@overta.ru>
	    Richard Kenner <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (gen_binary): Handle the CLOBBER rtx and
	don't build a binary operation with it.

2003-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcse.c (load_kills_store, find_loads, store_killed_in_insn,
	store_killed_after, store_killed_before): Keep track of the correct
	dependency function to use.

2003-07-10  Steven Bosscher  <steven@gcc.gnu.org>
	* toplev.c (do_compile): Don't try to open dump files before
	lang_dependent_init initializes dump_base_name.

2003-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/arm/arm.c (arm_init_iwmmxt_builtins, arm_expand_builtin):
	Use ARRAY_SIZE.
	* config/frv/frv.c (frv_expand_builtin): Likewise.
	* config/sh/sh.c (sh_media_init_builtins): Likewise.

2003-07-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/10032
	* doc/invoke.texi (C++ Dialect Options): Change documentation of
	-fpermissive.

2003-07-10  J"orn Rennecke <joern.rennecke@superh.com>

	* tm.texi (RETURN_ADDR_OFFSET): Document.

2003-07-10  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h: Update documentation.
	(GCOV_UNSIGNED2STRING): New.
	(GCOV_TAG_FUNCTION_LENGTH, GCOV_TAG_BLOCKS_LENGTH,
	GCOV_TAG_ARCS_LENGTH, GCOV_TAG_COUNTER_LENGTH,
	GCOV_TAG_SUMMARY_LENGTH): Adjust.
	(GCOV_TAG_BLOCKS_NUM, GCOV_TAG_ARCS_NUM,
	GCOV_TAG_COUNTER_NUM): New.
	(GCOV_BLOCK_SIZE): Number of words.
	(gcov_var): Adjust buffer type.
	* gcov-io.c (gcov_write_bytes, gcov_read_bytes): Rename to ...
	(gcov_write_words, gcov_read_words): ... here. Take a 4-byte word
	count, not byte count.
	(gcov_open): Adjust overread init.
	(gcov_allocate, gcov_write_unsigned, gcov_write_counter,
	gcov_write_string, gcov_write_tag, gcov_write_length,
	gcov_write_tag_length): Adjust.
	(gcov_read_unsigned, gcov_read_counter, gcov_read_string): Adjust.
	(gcov_sync, gcov_seek): Adjust.
	* gcov-dump.c (print_usage): Show gcc version only.
	(dump_file): Use GCOV_UNSIGNED2STRING.
	(tag_blocks, tag_arcs, tag_counters): Use GCOV_TAG_*_NUM macros.
	* gcov.c (print_version): Show gcc version only.
	(read_graph_file): Use GCOV_UNSIGNED2STRING. Use
	GCOV_TAG_*_NUM macros.
	(read_count_file): Use GCOV_UNSIGNED2STRING. Use
	GCOV_TAG_COUNTER_LENGTH.
	* coverage.c (read_counts_file): Use GCOV_UNSIGNED2STRING.
	Use GCOV_TAG_COUNTER_NUM.
	* libgcov.c (gcov_version): Use GCOV_UNSIGNED2STRING.
	(__gcov_merge_single, __gcov_merge_delta): Use GCOV_CHECK.

2003-07-10  Andreas Schwab  <schwab@suse.de>

	* gcov-dump.c (dump_file): Fix missing address operator.

2003-07-10  Kazu Hirata  <kazu@cs.umass.edu>

	PR c/11449
	* fold-const.c (sign_bit_p): Return EXP if VAL is the sign bit
	of HOST_WIDE_INT.
	(fold_single_bit_test): If sign_bit_p() fails, assume that the
	bit being tested is not a sign bit.

2003-07-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-07-10  Alexandre Oliva  <aoliva@redhat.com>

	2001-12-13  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/linux.h (LINK_SPEC): Rename the dynamic linker
	from ld-linux.so.2 to ld.so.1.
	2001-11-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/linux.h (LINK_SPEC): -lpthread, not -lthread.
	* config/mn10300/linux.h (LINK_SPEC): Don't handle -Wl,-rpath
	nor -Wl,-rpath-link.
	(LIB_SPEC): Add -rpath-link if !static.
	2001-08-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.c (mn10300_protect_label): New
	variable.
	* config/mn10300/linux.h (PRINT_OPERAND,
	PRINT_OPERAND_ADDRESS): Set it during their execution.
	(ASM_OUTPUT_LABELREF): Output `+' before symbol name if
	mn10300_protect_label is set.
	* config/mn10300/linux.h (LINK_SPEC): Recognize -Wl,-rpath and
	-Wl,-rpath-link.
	(LIB_SPEC, STARTFILE_SPEC): Define.
	2001-05-11  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/t-linux (dp-bit.c, fp-bit.c): Don't define
	FLOAT_BIT_ORDER_MISMATCH.
	2001-05-09  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc (am33_2.0-*-linux*): Added.
	* config/mn10300/linux.h: New.
	* config/mn10300/t-linux: New.

2003-07-10  Andreas Jaeger  <aj@suse.de>

	* fold-const.c: Properly wrap prototypes.

2003-07-09  Alexandre Oliva  <aoliva@redhat.com>

	2003-06-16  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.c (mn10300_unspec_int_label_counter):
	Moved from...
	* config/mn10300/mn10300.md (GOTaddr2picreg): ... here.
	* config/mn10300/mn10300.h: GTY-declare it.
	2003-06-11  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.c (mn10300_encode_section_info): Fix
	prototype.  Use incoming RTL argument.
	2002-12-12  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.md (int_label): Move C statements...
	(GOTaddr2picreg): ... here.
	2002-08-15  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.h (ENCODE_SECTION_INFO): Move...
	* config/mn10300/mn10300.c (mn10300_encode_section_info):
	... here.  New function.
	(TARGET_ENCODE_SECTION_INFO): Define to it.
	2001-11-04  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.md (builtin_setjmp_receiver): Fix typo in
	pattern name.
	(mn10300_loadPC): Define as insn splittable after reload.
	2001-05-13  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/mn10300.h (JUMP_TABLES_IN_TEXT_SECTION): Let them
	be defined in .rodata even in PIC, now that the assembler
	supports that.
	2001-05-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.h (GOT_SYMBOL_NAME): Don't let the
	symbol take an underscore prefix.
	2001-04-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300-protos.h (legitimate_pic_operand_p,
	legitimize_pic_address): Declare.
	* config/mn10300/mn10300.h (CONDITIONAL_REGISTER_USAGE): Mark
	the PIC register as fixed.
	(EXTRA_CONSTRAINT): Match UNSPEC_PLT and UNSPEC_PIC for 'S'.
	(GO_IF_LEGITIMATE_ADDRESS): Require legitimate_pic_operand for
	PIC.
	(LEGITIMATE_PIC_OPERAND_P): Define.
	(PIC_OFFSET_TABLE_REGNUM): Define.
	(GOT_SYMBOL_NAME): Define.
	(SYMBOLIC_CONST_P): Define.
	(ENCODE_SECTION_INFO): Use SYMBOL_REF_FLAG to mark local
	symbols.
	(MN10300_GLOBAL_P): Test it.
	(OUTPUT_ADDR_CONST_EXTRA): Handle PIC-related unspecs.
	(JUMP_TABLES_IN_TEXT_SECTION): Enable for PIC.
	* config/mn10300/mn10300.c (print_operand): Handle unspec.
	(expand_prologue): Set PIC register.
	(call_address_operand): Don't match SYMBOL_REFs in PIC.
	(legitimize_address): Call legitimize_pic_address.
	(legitimize_pic_address): New fn.
	(legitimate_pic_operand_p): New fn.
	* config/mn10300/mn10300.md (PIC_REG, SP_REG): New constants.
	(UNSPEC_INT_LABEL, UNSPEC_PIC, UNSPEC_GOT, UNSPEC_GOTOFF,
	UNSPEC_PLT): New constants.
	(pop_pic_reg): New insn.
	(movsi): Adjust non-PIC addresses.
	(builtin_setjmp_receiver): Restore the PIC register.
	(casesi): New insn.
	(call): Adjust non-PIC addresses.
	(int_label, GOTaddr2picreg): New expands.
	(am33_loadPC): New insn.
	(mn10300_loadPC): New expand.
	(call_next_insn): New insn.
	(add_GOT_to_pic_reg): New expand.
	(symGOT2reg, symGOT2reg_i): New expands.
	(symGOTOFF2reg, symGOTOFF2reg_i): New expands.
	(sym2PIC, sym2PLT): New expands.

2003-07-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (PREDICATE_CODES): Define.
	2001-05-01  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.md (sqrtsf2): flag_fast_math was renamed
	to flag_unsafe_math_optimizations.
	2001-04-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.c (expand_prologue): Mark
	FP-register-saving insns as frame-related.
	2001-02-13  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.c
	(mn10300_get_live_callee_saved_regs): Don't search past
	LAST_EXTENDED_REGNUM.
	(mn10300_gen_multiple_store, store_multiple_operation): Likewise.
	* config/mn10300/mn10300.md: Remove excessive line breaks from
	`@' output patterns that were accounted as additional
	alternatives.
	* config/mn10300/mn10300.md, config/mn10300/mn10300.c:
	Re-introduce changes accidentally removed in Richard Sandiford's
	2000-12-05's patch.
	* config/mn10300/t-mn10300 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES):
	Re-instate am33-2 lost in merge from net GCC.
	2000-08-26  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.h (DBX_REGISTER_NUMBER): Added
	floating-point registers.
	2000-08-07  Alexandre Oliva  <aoliva@redhat.com>
	* config/mn10300/mn10300.md (movdf): Revert some am33-specific
	pessimizations that had gone in on 2000-05-08.
	2000-06-28  Graham Stott  <grahams@cygnus.co.uk>
	* config/mn10300/mn10300.h (REG_CLASS_CONTENTS): Fix typo.
	2000-06-22  Graham Stott  <grahams@cygnus.co.uk>
	* config/mn10300/mn10300.md (movqi): Use nonimmediate_operand for
	operand 0.
	* (movhi): Likewise.
	* (movsi): Likewise.
	* (movsf): Likewise.
	* (movdi): Likewise.
	* (movdf): Likewise.
	2000-05-24  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.c (fp_regs_to_save): New function.
	(can_use_return_insn, initial_offset): Add fp_regs_to_save.
	(expand_prologue, expand_epilogue): Save and restore FP regs.
	2000-05-20  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (movdi, movdf): 64-bit clean-up.
	2000-05-13  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (abssf2, negsf2, rsqrtsf2, addsf3,
	subsf3, mulsf3, divsf3, fmaddsf4, fmsubsf4, fnmaddsf4, fnmsubsf4):
	Do not clobber cc0.
	2000-05-12  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (abssf2, negsf2, rsqrtsf2):
	Discourage the two-argument, longer opcodes.
	(addsf3, subsf3, mulsf3, divsf3): Likewise for three-argument
	ones.
	* config/mn10300/mn10300.h (struct mn10300_cc_status_mdep): New.
	(CC_STATUS_MDEP, CC_STATUS_MDEP_INIT): Define.
	* config/mn10300/mn10300.md (cmpsf): New pattern.
	(branch): Test mdep.fpCC and output fbCC.
	* config/mn10300/mn10300.c (print_operand): Output conditions.
	(notice_cc_update): Recognize fcmp and set mdep.fpCC.
	2000-05-10  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (movsf, movdf, addsf3, subsf3,
	mulsf3, divsf3): Use the `F' constraint for FP values.
	* config/mn10300/mn10300.c (const_1f_operand): New function.
	* config/mn10300/mn10300-protos.h (const_1f_operand): Declare.
	* config/mn10300/mn10300.md (sqrtsf2): New expand.
	(rsqrtsf2): New insn.
	2000-05-09  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (movdf): Oops, I missed it in my
	previous check-in.
	2000-05-08  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.md (abssf2, negdf2): On
	TARGET_AM33_2, expand to...
	(abssf2_am33_2, negdf2_am33_2): New insns.
	(addsf3, subsf3, mulsf3, divsf3): Likewise.
	(fmaddsf4, fmsubsf4, fnmaddsf4, fnmsubsf4): Likewise.
	* config/mn10300/mn10300.md (movqi, movhi, movsi, movsf,
	movdi, movdf): Added FP regs.
	* invoke.texi (-mam33-2, -mno-am33-2): Document.
	2000-04-29  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.h (FIRST_FP_REGNUM, LAST_FP_REGNUM):
	New macros.
	(REGNO_AM33_2_FP_P): Renamed to...
	(REGNO_FP_P): Redefine in terms of FIRST_* and LAST_*.
	(CONDITIONAL_REGISTER_USAGE, REGNO_REG_CLASS): Likewise.
	2000-04-27  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.h (REG_CLASS_CONTENTS): Remove FP
	regs from GENERAL_REGS.
	2000-04-27  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.h (REGNO_AM33_2_FP_P): New macro.
	* config/mn10300/mn10300.c (mn10300_address_cost): Added FP_REGS.
	* config/mn10300/mn10300.h (REGISTER_MOVE_COST): Added FP_REGS.
	2000-04-23  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.h (CLASS_CANNOT_CHANGE_SIZE): Defined
	as FP_REGS.
	2000-04-21  Alexandre Oliva  <aoliva@cygnus.com>
	* config/mn10300/mn10300.h (OK_FOR_Q): New macro.
	(EXTRA_CONSTRAINT): Added OK_FOR_Q.
	* config/mn10300/mn10300.c (secondary_reload_class): Adjust.
	* config/mn10300/mn10300.c (print_operand): Support `D' for doubles.
	* config/mn10300/mn10300.h (FIRST_PSEUDO_REGISTER): Adjust.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER): Added
	AM33/2.0 floating-point registers.
	(CONDITIONAL_REGISTER_USAGE): Adjust.
	(enum reg_class, REG_CLASS_NAMES): Added FP_REGS and FP_ACC_REGS.
	(REG_CLASS_CONTENTS, REGNO_REG_CLASS): Adjust.
	(REG_CLASS_FROM_LETTER): Added `f' and `A'.
	(REGISTER_NAMES, ADDITIONAL_REGISTER_NAMES): Adjust.
	* config/mn10300/t-mn10300 (MULTILIB_OPTIONS): Added am33-2.
	(MULTILIB_DIRNAMES): Likewise.
	* config/mn10300/mn10300.h (CPP_SPEC): Define `__AM33__=2' and
	`__AM33_2__' when `-mam33-2' is given.
	(TARGET_AM33_2): Define.
	(TARGET_SWITCHES): Adjust.
	* config/mn10300/mn10300.c (asm_file_start): Print `.am33_2'
	when appropriate.

2003-07-09  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi: Add missing @.

2003-07-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (CRT_CALL_STATIC_FUNCTION): Define.

2003-07-09  Aldy Hernandez  <aldyh@redhat.com>

	PR/11144
	* config/i386/i386.c (ix86_function_arg_boundary): Remove abort.

2003-07-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/11043
	* config/arc/t-arc: Replace bogus references to "x-crtinit.o",
	"x-crtfini.o" with "crtinit.o", "crtfini.o".

	* fixinc/inclhack.def (limits_ifndefs): Add select test.
	* fixinc/fixincl.x: Rebuild.

	* fixinc/inclhack.def (math_exception):  Improve bypass and comment.
	* fixinc/fixincl.x: Rebuild.

2003-07-09  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/install.texi (Configuration): Document the valgrind option
	to --enable-checking.

2003-07-09  Jan Hubicka  <jh@suse.cz>

	* objc-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.

2003-07-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* c-lex.c (cb_ident): Cast cstr.text to const char *.

2003-07-09  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h: Update documentation.
	(GCOV_GRAPH_SUFFIX, GCOV_GRAPH_MAGIC): Rename to GCOV_NOTE_SUFFIX,
	GCOV_NOTE_MAGIC.
	(GCOV_DATA_SUFFIX, GCOV_NOTE_SUFFIX): Update.
	(GCOV_DATA_MAGIC, GCOV_NOTE_MAGIC): Make non-palindromic.
	(struct gcov_var): Change buffer's type. Add endian flag.
	(gcov_open): Remove mode in libgcov.
	(gcov_magic): Prototype.
	* gcov-io.c (from_file): New.
	(gcov_open): Clear endian flag.
	(gcov_magic): New.
	(gcov_write_bytes, gcov_read_bytes): Return gcov_unsigned_t
	pointers.
	(gcov_write_unsigned, gcov_write_counter, gcov_write_string,
	gcov_write_tag, gcov_write_length, gcov_write_tag_length): Update.
	(gcov_read_unsigned, gcov_read_counter, gcov_read_string): Update.
	* gcov-iov.c (main): Correct cast.
	* coverage.c (read_counts_file): Use gcov_magic. Remove endianness
	conversion.
	(gcov_begin_output): Use GCOV_NOTE_MAGIC.
	(coverage_init): Use GCOV_NOTE_SUFFIX.
	* libgcov.c (gcov_version_mismatch): Remove endianness conversion.
	Rename to gcov_version, and return flag.
	(gcov_exit): Use gcov_version.
	(__gcov_init): Use gcov_version.
	* Makefile.in (coverageexts): Update.
	* gcov.c (print_version): Remove endianness conversion.
	(create_file_names): Use GCOV_NOTE_SUFFIX.
	(read_graph_file): Use gcov_magic.
	(read_count_file): Likewise.
	* gcov-dump.c (dump_file): Remove endianness conversion, use
	gcov_magic.

2003-07-09  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.in (BUILD_PREFIX, BUILD_PREFIX_1): Set if enable
	coverage is on.
	* configure: Regenerated.
	* Makefile.in (ALL_CFLAGS): Correct its comment.

2003-07-08  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (make_range): Do not access operand 1 for a
	zero-operand operator.

2003-07-09  Neil Booth  <neil@daikokuya.co.uk>

	* toplev.c (warn_dummy, W_options): Die.
	(display_help): Don't print W_options.
	* common.opt: Add W_options help from toplev.c.

2003-07-09  Andreas Jaeger  <aj@suse.de>

	* opts.c (wrap_help): Only pass int arguments as arguments to
	printf's '*' modifier.  Change argument of function.

2003-07-08  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/invoke.texi: Fix misspelling of "@item".

2003-07-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.md: Remove an old comment about
	NOTICE_UPDATE_CC.

2003-07-09  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_node_name): New function.
	(dump_cgraph): Use it.
	* cgraph.h (cgraph_dump_file): Declare.
	(cgraph_node_name): Declare.
	* cgraphunit.c: Include timevar.h
	(cgraph_finalize_compilation_unit): Use timevar; reorganize dumps.
	(cgraph_optimize_function): Use TV_INTEGRATION.
	(cgraph_mark_local_functions): reorganize dumps.
	(cgraph_mark_functions_to_inline_once): Likewise.
	(cgraph_optimize): Likewise; use timevar.
	* timevar.def (TV_CGRAPH, TV_CGRAPHOPT): New.
	* toplev.c (dump_file_index): Add DFI_cgraph.
	(dump_file_info): Likewise.
	(cgraph_dump_file): New global variable.
	(do_compile): Open and close cgraph dump.
	* invoke.texi (-d): Document new flag; renumber.

2003-07-08  Roger Sayle  <roger@eyesopen.com>

	PR c/11370
	* calls.c (emit_call_1): Don't bother popping the arguments off of
	the stack after a noreturn function call;  The adjustment is dead.
	(expand_call): Likewise.

2003-07-08  Geoffrey Keating  <geoffk@apple.com>

	* expr.c (MOVE_MAX_PIECES): Move from here...
	* defaults.h (MOVE_MAX_PIECES): ... to here.

2003-07-08  Matt Kraai  <kraai@alumni.cmu.edu>

	* Makefile.in (stage1-start): Handle an empty SUBDIRS.

2003-07-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattr.c (internal_dfa_insn_code): Don't prototype.
	* genattrtab.c (attr_desc): Add `static_p' field.
	(expand_units): Make blockage range and ready cost functions
	static.
	(write_attr_get): Don't add extern prototypes in C file.  Mark
	static functions as appropriate.
	(find_attr, make_internal_attr): Initialize static_p.
	* genattrtab.h (ATTR_STATIC): New macro.
	* genautomata.c (output_internal_reset_func): Mark output function
	as inline.
	(make_internal_dfa_insn_code_attr): Mark output function as static.

2003-07-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattrtab.h: Add new macros for attr `special' flags.
	* genattrtab.c (attr_desc): Reorder/resize fields better.
	Use attr `special' macros in all calls to make_internal_attr.
	* genautomata.c: Likewise.

2003-07-09  Jan Hubicka  <jh@suse.cz>

	* c-common.c (c_estimate_num_insns_1): New static function.
	(c_estimate_num_insns): New global function.
	* c-common.h (DECL_NUM_STMTS): Rename to...
	(DECL_ESTIMATED_INSNS): ... this.
	(c_estimate_num_insns): Declare.
	* c-decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.
	* c-semantics.c (add_stmt): Do not account statements.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS):
	New.
	* langhooks.h (lang_hooks_for_tree_inlining): Add
	estimate_num_insns
	* params.def (max-inline-insns-auto, max-inline-insns-auto): set
	to 100.
	(max-inline-insns): set to 300.
	(min-inline-insns): set to 10.
	* tree-inline.c (struct inline_data): Rename inlined_stmts to
	inlined-insns.
	(INSNS_PER_STMT): Kill.
	(inlinable_function_p): Compute and store body size.
	(expand_call_inline): Likewise.
	(optimize_inline_calls): Likewise.

2003-07-08  James E Wilson  <wilson@tuliptree.org>

	PR target/10021
	* emit-rtl.c (set_mem_attribute_minus_bitpos): When handle ARRAY_REF,
	loop over new variable t2 instead of t.

2003-07-08  Danny Smith  <dannysmith@users.sourceforge.net>

	PR bootstrap/11455
	* config/i386/winnt.c: Replace use of error(), warning() with
	error_with_decl(), warning_with_decl(),  throughout.

2003-07-08  Neil Booth  <neil@daikokuya.co.uk>

	* opts.c (wrap_help): Use unsigned int, not size_t.

2003-07-08  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (HAVE_AS_DWARF2_DEBUG_LINE): Don't define
	as .file/.loc directives are incompatible with linker relaxation.

2003-07-08  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (fixinc.sh): Remove gnu-regex.[ch] from dependencies.
	* fixinc/Makefile.in: Remove all references to gnu-regex.[och].
	* fixinc/fixfixes.c, fixinc/fixincl.c, fixinc/fixlib.c
	* fixinc/fixtests.c: Use xregexec not regexec, xregcomp not regcomp.
	* fixinc/fixlib.h: Include xregex.h not gnu-regex.h.
	* fixinc/inclhack.def (hpux10_cpp_pow_inline, hpux11_cpp_pow_inline):
	Escape { and } characters which are not part of range expressions.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/gnu-regex.c, fixinc/gnu-regex.h: Delete file.

2003-07-08  Steven Bosscher  <steven@gcc.gnu.org>

	PR c/1687
	* tree-inline.c (find_alloca_call): Use
	walk_tree_without_duplicates, instead of walk_tree.
	(find_builtin_longjmp_call): Likewise.
	* c-objc-common.c (c_cannot_inline_fn): Likewise.
	* c-semantics.c (find_reachable_label): Likewise.

2003-07-08  Jakub Jelinek  <jakub@redhat.com>

	PR c/11420
	* config/i386/i386.c (ix86_check_movabs): New function.
	* config/i386/i386-protos.h (ix86_check_movabs): New prototype.
	* config/i386/i386.md (movabs[shqd]i_1_rex64): Kill broken alternative.
	(movabs[shqd]i_[12]_rex64): Add ix86_check_movabs check to conditions.

2003-07-08  Chris Demetriou  <cgd@broadcom.com>

	* Makefile.in (install-po): Cope with empty CATALOGS.

2003-07-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/elf64.h (TARGET_ASM_UNIQUE_SECTION): Delete.
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Delete.
	(SECTION_FUNCTION_TEMPLATE): Delete.
	* config/mips/elf.h: As for elf64.h.
	(ASM_OUTPUT_ALIGNED_BSS): Use named_section rather than sbss_section.
	* config/mips/linux.h: As for elf.h
	* config/mips/iris6gld.h (TARGET_ASM_UNIQUE_SECTION): Delete.
	* config/mips/iris6.h (EXTRA_SECTIONS): Delete.
	(EXTRA_SECTION_FUNCTIONS): Remove sdata_section.  Remove the handling
	of in_sdata from current_section_name and current_section_flags.
	* config/mips/iris6gld.h (TARGET_ASM_UNIQUE_SECTION): Delete.
	* config/mips/mips.h (sdata_section, sbss_section): Remove prototypes.
	(MASK_GP_OPT, TARGET_GP_OPT): Delete.
	(MASK_NO_FUSED_MADD): Use MASK_GP_OPT's old value.
	(TARGET_SWITCHES): Neuter gpOPT, gpopt, no-gpOPT and no-gpopt.
	(SMALL_DATA_SECTION, EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove.
	* config/mips/mips.c (TARGET_IN_SMALL_DATA_P): Override.
	(TARGET_SECTION_TYPE_FLAGS): Override if TARGET_IRIX6.
	(mips_classify_symbol): Use SYMBOL_REF_SMALL_P.
	(override_options): Remove setting of MASK_GPOPT.
	(mips_output_external): Use mips_in_small_data_p to check whether a
	symbol needs an .extern directive.  Don't emit such directives for
	TARGET_EXPLICIT_RELOCS.
	(mips_declare_object): Update accordingly.
	(mips_select_rtx_section): Call named_section rather than
	SMALL_DATA_SECTION.
	(mips_select_section): Use default_elf_section_section for everything
	except .text string constants.
	(mips_in_small_data_p): New function.
	(mips_encode_section_info): Remove small data handling.
	(mips_unique_section): Delete.
	(iris6_section_type_flags): New function.
	* doc/tm.texi: Remove documentation of -mgpopt and -mhalf-pic.

2003-07-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR Target/11453
	* pa.md: Disparage all mtsar constraints.
	(extzv, extv, insv): Don't fail on length of {32|64}.

2003-07-08  Zack Weinberg  <zack@codesourcery.com>

	* system.h: Poison MAP_CHARACTER.
	* config/i370/i370-protos.h (mvs_map_char): Delete.
	* config/i370/i370.c (ascebc, ebcasc, mvs_map_char): Delete.
	* config/i370/i370.h (MAP_CHARACTER): Delete definition.
	(ASM_OUTPUT_ASCII): Don't use MAP_CHARACTER.

2003-07-08  Danny Smith  <dannysmith@users.sourceforge.net>

	* toplev.c (randomize): Correct call to time().

2003-07-08  Jakub Jelinek  <jakub@redhat.com>

	* unroll.c (reg_dead_after_loop): Check for reg in REG_EQUAL and
	REG_EQUIV notes as well.

2003-07-08  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/md.texi: Fix the description of addmodecc.

2003-07-07  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (top_builddir): Set to "..", not ".".
	(INTLLIBS, INTLDEPS): Delete.
	(LIBINTL, LIBINTL_DEP, LIBICONV_DEP): New variables to be substituted.
	(LIBDEPS): Add $(LIBICONV_DEP).
	(LIBS): Take out $(INTLLIBS), add $(LIBINTL) and $(LIBICONV).
	(INCLUDES): Replace -I../intl with @INCINTL@.
	($(top_builddir)/intl/libintl.a): Delete rule.
	(stage2-start, stage3-start, stage4-start, stageprofile-start,
	stagefeedback-start): Use $$ for variable to be evaluated by
	shell, not make.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT,
	HAVE_LC_MESSAGES, HAVE_STPCPY): Delete.
	* aclocal.m4: sinclude ../config/progtest.m4.  Add
	contents of lcmessage.m4 from gettext distro.
	* configure.in: Check for wchar.h and setlocale.  Set
	LIBICONV_DEP to the empty string and substitute it.
	Call AM_LC_MESSAGES.  Delete AC_ARG_ENABLE for --enable-nls;
	this is handled elsewhere.  Use ZW_GNU_GETTEXT_SISTER_DIR,
	not CY_GNU_GETTEXT.  Clear $LIBICONV if its text is included
	in $LIBINTL, to avoid linking it twice.
	* configure, config.in: Regenerate.

2003-07-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/mkfixinc.sh: Remove winnt support.
	* fixinc/fixinc.winnt: Delete with extreme prejudice.

2003-07-08  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-opts.c (c_common_handle_option): opt_text now contains the '-'.
	* c.opt: Update documentation.
	* common.opt: Add some help text.
	* opts.c: Include intl.h.
	(wrap_help, print_help): New.
	(find_opt, handle_option, common_handle_option): opt_text now
	contains the '-'.  Use print_help to output help.
	* opts.h (struct cl_option): New member "help".
	* opts.sh: Update to handle help text output and to prepend
	options with '-'.
	* toplev.c (display_help): Remove some help text.

2003-07-07  David Edelsohn  <edelsohn@gnu.org>
	    Fariborz Jahanian  <fjahanian@apple.com>

	* configure.in: Test for PowerPC mfcr field support in assembler.
	* config.in, configure: Regenderated.

	* config/rs6000/power4.md: Add mfcrf reservation.
	* config/rs6000/rs6000-protos.h (mfcr_operation): Declare.
	* config/rs6000/rs6000.c (mfcr_operation): Define.
	(print_operand): Add 'Q' case for mfcrf.
	* config/rs6000/rs6000.h (TARGET_MFCRF): New.
	* config/rs6000/rs6000.md (attribute "type"): Add mfcrf.
	(movcc_internal1): Emit optional field operand for mfcr and set
	"type" attribute appropriately.
	(mfcr SCC): Likewise.
	(movesi_from_cr_one): New.

2003-07-07  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md: Correct check-in of incorrect version.

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

	* bitmap.c (debug_bitmap_file): Merge uses of HOST_PTR_PRINTF with
	adjacent stdio calls.
	* c-decl.c (c_print_identifier): Likewise.
	* mips-tfile.c (write_varray, write_object, allocate_cluster): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* system.h (HOST_PTR_PRINTF): Ensure we have a literal string.

	* configure.in (AC_COMPILE_CHECK_SIZEOF): Check for `void *'.
	* config.in, configure: Regenerated.

2003-07-07  Roger Sayle  <roger@eyesopen.com>

	PR target/10979
	* config/i386/i386.md (atan2df3, atan2sf3, atan2xf3, atan2tf3):
	Changed to define_expand patterns that copy operand[1] to prevent
	it from being clobbered before emitting an atan2?f3_1 insn.
	(atan2df3_1, atan2sf3_1, atan2xf_1, atan2tf3_1): New define_insn
	patterns that actually specify the behaviour of x87's FPATAN.

2003-07-07  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Remove bogus
	clearing of SYMBOL_FLAG_LOCAL bit.
	If vcall_offset fits into signed 16-bit immediate, use
	one instruction for both addition and load.

2003-07-07  Neil Booth  <neil@daikokuya.co.uk>

	* opts.c (common_handle_option): Correct handling of the
	-falign- switches that do and don't take an argument.

2003-07-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (pushqi1_h8300hs): Revert my patch
	today.
	(pushhi1_h8300hs): Likewise.

2003-07-07  Andreas Jaeger  <aj@suse.de>

	* genextract.c: Convert remaining prototypes to ISO C90.

	* cpplex.c (_cpp_free_buff): Convert prototype to ISO C90.
	* fold-const.c (fold_single_bit_test): Likewise.
	* diagnostic.c (default_diagnostic_finalizer): Likewise.
	* cfgrtl.c (rtl_redirect_edge_and_branch): Likewise.

	* gengtype.c (write_array): Generate ISO C90 prototypes.

	* genflags.c (gen_proto): Generate ISO C90 prototypes.

2003-07-07  Roger Sayle  <roger@eyesopen.com>

	PR optimization/11059
	* expr.c (can_store_by_pieces): Return true if length is zero.
	(store_by_pieces): If length is zero and endp is two, abort,
	othwerise, if length is zero and endp is not two, return "to".
	(clear_by_pieces): Do nothing if length is zero.
	(clear_storage): Do nothing if length is zero.
	(store_constructor): Simplify code when size is zero, or the
	target has already been cleared.  This avoids emitting a
	blockage instruction when initializing empty structures.

2003-07-07  Andreas Jaeger  <aj@suse.de>

	* mips-tfile.c: Convert prototypes to ISO C90.
	* mips-tdump.c: Convert prototypes to ISO C90.

2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.h (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	(set_file_and_line_for_statement): Take a location_t.
	* tree.g (emit_line_note): Take a location_t.
	* emit-rtl.c (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	* function.c (init_function_start): Adjust emit_line_note call.
	(expand_function_end): Use force_next_line_note, not
	emit_line_note_force.
	* c-parse.in (maybe_type_qual): Adjust emit_line_note calls.
	* c-semantics.c (genrtl_do_pushlevel, genrtl_goto_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt_1, genrtl_return_stmt,
	genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
	genrtl_continue_stmt, genrtl_switch_stmt,
	genrtl_asm_stmt): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (set_file_and_line_for_stmt): Take a location_t.
	(expand_decl_init): Adjust emit_line_note call.

2003-07-07  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/darwin-tramp.asm:  Fix trampolines.  PR 10900.

2003-07-07  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386-protos.h: Convert prototypes to ISO C90.
	* config/i386/i386.c: Likewise.

2003-07-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Use gen_int_mode instead of
	GEN_INT (trunc_int_for_mode (...)).

2003-07-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (pushqi1_h8300hs): Optimize by pushing
	2 bytes and then subtract 2 from the stack pointer.
	(pushhi1_h8300hs): Likewise.

2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.in (enable_coverage): Remove -DSELF_COVERAGE, add
	-frandom-seed.
	* configure: Regenerated.
	* Makefile.in: Remove extraneous comment.
	* toplev.c (randomize): Protect against potential multiple calls.
	* doc/invoke.texi (-frandom-seed): Document use for in coverage
	files.

2003-07-07  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11198
	* alias.c (objects_must_conflict_p): Return 1 if the types have
	the same alias set, not if the alias sets only conflict.

2003-07-07  Andrew Pinski  <pinskia@physics.uc.edu>

	* cppcharset.c (ICONV_CONST): Define iff !HAVE_ICONV.
	(convert_cset): Change inbuf to type ICONV_CONST char.
	* Makefile.in (LIBS): Add LIBICONV.

	* doc/invoke.texi (-falign-functions): Document that
	when n is zero then a machine-dependent default is used.
	(-falign-labels): Document that when n is zero then a
	machine-dependent default is used and that -falign-labels =1
	is equivalent to -fno-align-labels.
	(-falign-loops): Likewise.
	(-falign-jumps): Likewise.

2003-07-06  Art Haas  <ahaas@airmail.net>

	* f/global.c (ffeglobal_type_string_): Fix obsolete GCC array
	initializer syntax.

2003-07-06  James E Wilson  <wilson@tuliptree.org>

	PR optimization/9812
	* rtl.h (mem_for_const_double): Delete prototype.
	* varasm.c (mem_for_const_double): Delete function.
	* config/m68k/hp320.h, config/m68k/linux.h, config/m68k/m68kelf.h,
	config/m68k/m68kv4.h, config/m68k/netbsd-elf.h
	(LEGITIMATE_PIC_OPERAND_P): Delete duplicate definitions.
	* config/m68k/m68k.h (LEGITIMATE_CONSTANT_P): Disallow XFmode.
	(LEGITIMATE_PIC_OPERAND_P): Delete CONST_DOUBLE tests.
	* config/m68k/m68k.md (movxf): Add reload_in_progress guard.  Add
	comment about confused support for XFmode constants.

2003-07-07  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (fixup_reorder_chain): Call delete_dead_jumptables.

2003-07-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c: Fix comment typos.
	* config/h8300/h8300.md: Likewise.
	* config/i386/athlon.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/pentium.md: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/itanium1.md: Likewise.
	* config/ia64/itanium2.md: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/m68hc11/m68hc11.c: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mips/sr71k.md: Likewise.
	* config/mips/t-iris5-as: Likewise.
	* config/mmix/mmix.h: Likewise.
	* config/ns32k/ns32k.h: Likewise.
	* config/ns32k/NOTES: Fix a typo.

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

	* stmt.c: Convert remaining prototypes to ISO C90.
	* cfglayout.c: Likewise.
	* dbxout.c: Likewise.
	* gcc.c: Likewise.
	* genemit.c: Likewise.

	* basic-block.h: Convert prototypes to ISO C90.
	* c-parse.in: Likewise.
	* c-pragma.h: Likewise.
	* c-typeck.c: Likewise.
	* cfghooks.h: Likewise.
	* cfgloopanal.c: Likewise.
	* dbxout.h: Likewise.
	* debug.h: Likewise.
	* dwarf2asm.h: Likewise.
	* gcov.c: Likewise.
	* gengtype-lex.l: Likewise.
	* sched-int.h: Likewise.
	* timevar.c: Likewise.

2003-07-06  Neil Booth  <neil@daikokuya.co.uk>

	* c-common.h (c_comon_handle_filename,
	c_common_missing_arguement): New.
	* c-lang.c (LANG_HOOKS_HANDLE_FILENAME,
	LANG_HOOKS_MISSING_ARGUMENT): New.
	* c-opts.c (missing_arg): Rename c_common_missing_argument,
	update to be an appropriate langhook.
	(c_common_handle_option): Don't handle filenames.
	(c_common_handle_filename): New.
	* hooks.c (hook_void_constcharptr,
	hook_bool_constcharptr_size_t_false): New.
	* hooks.h (hook_void_constcharptr,
	hook_bool_constcharptr_size_t_false): New.
	* langhooks-def.h (LANG_HOOKS_HANDLE_FILENAME,
	LANG_HOOKS_MISSING_ARGUMENT): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): Add handle_filename and
	missing_argument.
	* opts.c (handle_option): Don't handle filenames here, but ...
	(handle_options): ... here.
	(common_handle_option): Don't handle missing arguments here.
	* objc/objc-lang.c (LANG_HOOKS_HANDLE_FILENAME,
	LANG_HOOKS_MISSING_ARGUMENT): New.

2003-07-06  Neil Booth  <neil@daikokuya.co.uk>

	* Makfile.in: Remove traces of mbchar.
	* c-parse.in (MULTIBYTE_CHARS): Remove.
	* config.in (MULTIBYTE_CHARS): Remove.
	* configure: Remove --enable-mbchar.
	* configure.in: Remove --enable-mbchar.
	* mbchar.c, mbchar.h: Remove.
	* system.h: Poison MULTIBYTE_CHARS.
	* config/linux-aout.h (MULTIBYTE_CHARS): Remove.
	* config/linux.h (MULTIBYTE_CHARS): Remove.
	* config/svr4.h (MULTIBYTE_CHARS): Remove.
	* config/sparc/linux.h (MULTIBYTE_CHARS): Remove.

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

	* varray.c (varray_check_failed): Fix typo.

	* unroll.c: Convert prototypes to ISO C90.
	* varasm.c: Likewise.
	* varray.c: Likewise.
	* varray.h: Likewise.
	* vmsdbgout.c: Likewise.
	* xcoffout.c: Likewise.
	* xcoffout.h: Likewise.

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

	* gcov-io.h: Add a local time stamp.
	(struct gcov_info): Add stamp field.
	(gcov_truncate): New.
	* coverage.c (read_counts_file): Skip the stamp.
	(coverage_begin_output): Write the stamp.
	(build_gcov_info): Declare and init the stamp.
	(coverage_finish): Only unlink data file, if stamp is zero.
	* gcov-dump.c (dump_file): Dump the stamp.
	* gcov.c (bbg_stamp): New.
	(release_structures): Clear bbg_stamp.
	(read_graph_file): Read stamp.
	(read_count_file): Check stamp.
	* libgcov.c (gcov_exit): Check stamp and truncate if needed.

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

	* tree.h (default_flag_random_seed): Remove.
	* toplev.h (local_tick): Declare.
	* tree.c (flag_random_seed, default_flag_random_seed): Move to
	toplev.c.
	(append_random_chars): Don't call default_flag_random_seed.
	* toplev.c (flag_random_seed): Define here. Set local_tick.
	(local_tick): Define.
	(randomize): New, moved from tree.c.
	(print_switch_values): Adjust.
	(toplev_main): Call randomize.

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

	* tree.h (crc32_string): Declare.
	* tree.c (append_random_chars): Remove.
	(crc32_string): New.
	(get_file_function_name_long): Use crc32_string here.

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

	* gcc.c: Convert prototypes to ISO C90.
	* gcc.h: Likewise.
	* gcov-dump.c: Likewise.
	* gcov-iov.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.h: Likewise.
	* ggc.h: Likewise.
	* global.c: Likewise.
	* graph.c: Likewise.
	* graph.h: Likewise.
	* hosthooks.h: Likewise.
	* hooks.h: Likewise.
	* hooks.c: Likewise.
	* hashtable.h: Likewise.
	* hashtable.c: Likewise.
	* haifa-sched.c: Likewise.
	* integrate.h: Likewise.
	* integrate.c: Likewise.
	* input.h: Likewise.
	* ifcvt.c: Likewise.
	* jump.c: Likewise.
	* langhooks-def.h: Likewise.  Add extern to prototypes.
	* langhooks.c: Likewise.
	* langhooks.h: Likewise.
	* lcm.c: Likewise.
	* local-alloc.c: Likewise.
	* loop-init.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise. Add extern to prototypes.
	* machmode.h: Likewise.
	* main.c: Likewise.
	* mbchar.c: Likewise.
	* mbchar.h: Likewise.
	* mkdeps.c: Likewise.
	* mkdeps.h: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* output.h: Likewise.
	* gccspec.c: Likwise.
	* postreload.c: Likewise.
	* prefix.c: Likewise.
	* prefix.h: Likewise.
	* print-rtl.c: Likewise.
	* print-tree.c: Likewise.
	* profile.c: Likewise.
	* read-rtl.c: Likewise.
	* real.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* reg-stack.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* regrename.c: Likewise.
	* regs.h: Likewise.
	* reload.c: Likewise.
	* reload.h: Likewise.
	* reload1.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* resource.h: Likewise.
	* rtl-error.c: Likewise.
	* rtl.c: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.
	* sbitmap.c: Likewise.
	* sbitmap.h: Likewise.
	* scan-decls.c: Likewise.
	* scan.c: Likewise.
	* sched-deps.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* sched-vis.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* sreal.c: Likewise.
	* sreal.h: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa-dce.c: Likewise.
	* ssa.c: Likewise.
	* ssa.h: Likewise.
	* stack.h: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* stringpool.c: Likewise.
	* target.h: Likewise.
	* timevar.c: Likewise.
	* timevar.h: Likewise.
	* tlink.c: Likewise.
	* tracer.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-inline.h: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.

2003-07-05  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (nonzero_bits1): Fix a warning.

2003-07-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (compute_mov_length): Correct the
	length of loading CONST0_RTX (SFmode).

2003-07-05  Nathan Sidwell  <nathan@codesourcery.com>

	* toplev.c (output_clean_symbol_name): Remove.
	* toplev.h (output_clean_symbol_name): Remove.
	* config/alpha/alpha.c (unicosmk_output_module_name): Use
	lbasename & clean_symbol_name.

2003-07-05  Kazu Hirata  <kazu@cs.umass.edu>

	* ggc.h: Follow spelling conventions.
	* config/i386/i386.c: Likewise.
	* config/i386/winnt.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.

2003-07-05  Kazu Hirata  <kazu@cs.umass.edu>

	* bt-load.c: Fix comment typos.
	* c-incpath.c: Likewise.
	* cfg.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfgloop.h: Likewise.
	* cfgloopmanip.c: Likewise.
	* cfgrtl.c: Likewise.
	* diagnostic.h: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* et-forest.c: Likewise.
	* et-forest.h: Likewise.
	* expr.c: Likewise.
	* gcse.c: Likewise.
	* genattr.c: Likewise.
	* jump.c: Likewise.
	* langhooks.h: Likewise.
	* local-alloc.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* ra-build.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* rtl.def: Likewise.
	* rtlanal.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-rgn.c: Likewise.
	* simplify-rtx.c: Likewise.
	* ssa.c: Likewise.
	* tracer.c: Likewise.
	* tree.c: Likewise.

2003-07-05  Zack Weinberg  <zack@codesourcery.com>

	* cppcharset.c: Use the correct return type for the fallback iconv
	macro.

2003-07-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Blame to Jan Hubicka  <jh@suse.cz>
	* cfglayout.c (record_effective_endpoints): Split insns before
	first basic block correctly.

2003-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case COMPONENT_REF): When seeing if should use
	bitfield operations, use STRICT_ALIGNMENT, not SLOW_UNALIGNED_ACCESS
	if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.

2003-07-05  Andreas Jaeger  <aj@suse.de>

	* genattrtab.c (write_attr_get): Revert part of last patch to
	always write out a prototype.

	* genemit.c (gen_split): Readd lost unused attributes in last
	patch.

2003-07-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopmanip.c (force_single_succ_latches): Force latch to be
	different from header.

2003-07-05  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.c: Remove code protected by CRDS.
	* config/m68k/m68k.md: Likewise.

2003-07-05  Neil Booth  <neil@daikokuya.co.uk>

	PR driver/11417
	* c-opts.c (permit_fortran_options): New.
	(c_common_init_options): Accept fortran front end options if
	it looks like we might be preprocessing Fortran.
	(c_common_handle_option): Don't reject switch if permit_fotran_options.

2003-07-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattr.c (internal_dfa_insn_code): Output prototype.
	* genattrtab.c: Don't output unnecessary decls, output in ISO C.
	* genautomata.c: Likewise.
	* genconditions.c: Likewise.
	* genemit.c: Likewise.
	* genextract.c: Likewise.
	* gengenrtl.c: Likewise.
	* gengtype.c: Likewise.
	* genopinit.c: Likewise.
	* genoutput.c: Likewise.
	* genpeep.c: Likewise.
	* genrecog.c: Likewise.

2003-07-04  Zack Weinberg  <zack@codesourcery.com>

	* cpplib.h (CPP_AT_NAME, CPP_OBJC_STRING): New token types.
	(struct cpp_options): Add narrow_charset, wide_charset,
	bytes_big_endian fields.  Remove EBCDIC field.
	(cpp_init_iconv, cpp_interpret_string): New external interfaces.

	* cpphash.h: Include <iconv.h> if we have it, otherwise
	provide a dummy definition of iconv_t.
	(struct cpp_reader): Add narrow_cset_desc and wide_cset_desc fields.
	(_cpp_valid_ucn): Update prototype.
	(_cpp_destroy_iconv): New prototype.

	* doc/cpp.texi: Document character set handling.
	* doc/cppopts.texi: Document -fexec-charset= and -fexec-wide-charset=.
	* doc/extend.texi: Delete entire section on multiline strings.
	Rewrite section on __FUNCTION__ etc now that these are
	variables in C.

	* cppucnid.tab, cppucnid.pl: New files.
	* cppucnid.h: New generated file.
	* cppcharset.c: Include cppucnid.h.  Lots of commentary added.
	(iconv_open, iconv, iconv_close): Provide dummy definitions
	if !HAVE_ICONV.
	(SOURCE_CHARSET, struct strbuf, init_iconv_desc, cpp_init_iconv,
	_cpp_destroy_iconv, convert_cset, width_to_mask, convert_ucn,
	emit_numeric_escape, convert_hex, convert_oct, convert_escape,
	cpp_interpret_string, narrow_str_to_charconst,
	wide_str_to_charconst): New.
	(ucn_valid_in_identifier): Use a binary search through the
	ucnranges table defined in cppucnid.h, not a long chain of if
	statements.
	(_cpp_valid_ucn): Add a limit pointer.  Downgrade "universal
	character names are only valid in C++ and C99" to a warning.
	Issue the "meaning of \[uU] is different in traditional C"
	warning here.  Take care not to let iconv see an invalid UCS
	value if we get a malformed UCN.  Issue an error if we don't
	have iconv.
	(cpp_interpret_charconst): Moved here from cpplex.c.  Use
	cpp_interpret_string to do the heavy lifting.

	* cppinit.c (cpp_create_reader): Initialize bytes_big_endian,
	narrow_charset, wide_charset fields of options structure.
	(cpp_destroy): Call _cpp_destroy_iconv.
	* cpplex.c (forms_identifier_p): Adjust call to _cpp_valid_ucn.
	(maybe_read_ucn, hex_digit_value, cpp_parse_escape): Delete.
	(cpp_interpret_charconst): Moved to cppcharset.c.
	* cpplib.c (dequote_string): Delete.
	(interpret_string_notranslate): New.
	(do_line, do_linemarker): Use interpret_string_notranslate.

	* Makefile.in (cppcharset.o): Depend on cppucnid.h.

	* c-common.c (fname_string, combine_strings): Delete.
	* c-common.h (fname_string, combine_strings): Delete prototypes.
	* c-lex.c (ignore_escape_flag): Delete.
	(cb_ident): Use cpp_interpret_string, not lex_string.
	(get_nonpadding_token): New function.
	(c_lex): Handle Objective-C @-prefixed identifiers and strings here.
	Adjust calls to lex_string.  Don't write *value twice.
	(lex_string): Now handles string constant concatenation.
	Most of the work handed off to cpp_interpret_string.
	Call fix_string_type here.
	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): Replace with
	FUNC_NAME, throughout.
	(OBJC_STRING): New token type.
	(primary:STRING): No need to call fix_string_type here.
	(primary:objc_string): Make that OBJC_STRING.
	(objc_string nonterminal): Delete.
	(yylexname): Delete code to handle fake string constants.
	(yylexstring): Delete entirely.
	(_yylex): Handle CPP_AT_NAME and CPP_OBJC_STRING.  No need
	to handle CPP_ATSIGN.

	* c.opt (-fexec-charset=, -fwide-exec-charset=): New options.
	* c-opts.c (missing_arg, c_common_handle_option): Handle
	OPT_fexec_charset_ and OPT_fwide_exec_charset_.
	(c_common_init): Set cpp_opts->bytes_big_endian, not
	cpp_opts->EBCDIC.  Call cpp_init_iconv.
	(print_help): Document -fexec-charset= and -fexec-wide-charset=.
	(TARGET_EBCDIC): Delete default definition.

	* objc/objc-act.c (build_objc_string_object): No need to
	handle string constant concatenation.

2003-07-04  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/install.texi: Fix typos.
	* doc/invoke.texi: Likewise.
	* doc/tm.texi: Likewise.

2003-07-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/pa/fptr.c: Fix comment typos.
	* config/pa/pa-64.h: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pa/pa.h: Likewise.
	* config/rs6000/603.md: Likewise.
	* config/rs6000/7xx.md: Likewise.
	* config/rs6000/darwin.h: Likewise.
	* config/rs6000/freebsd.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/spe.h: Likewise.

2003-07-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/2064.md: Change GNU CC to GCC.
	* config/s390/2084.md: Likewise.
	* config/s390/fixdfdi.h: Likewise.
	* config/s390/linux.h: Likewise.
	* config/s390/s390-modes.def: Likewise.
	* config/s390/s390-protos.h: Likewise.
	* config/s390/s390.c: Likewise.
	* config/s390/s390.h: Likewise.
	* config/s390/s390.md: Likewise.
	* config/s390/s390x.h: Likewise.

2003-07-04  Jeff Law  <law@redhat.com>

	PR c/11428
	* expr.c (do_store_flag): Pass in the correct result type
	when calling fold_single_bit_test.
	* fold-const.c (fold_single_bit_test): Use result_type for the
	result when folding a sign bit test.

2003-07-04  Neil Booth  <neil@daikokuya.co.uk>

	* opts.c (common_handle_options): Negate sense of -falign- switches.

2003-07-04  H.J. Lu <hongjiu.lu@intel.com>

	* Makefile.in: Replace PWD with PWD_COMMAND.

2003-07-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopanal.c (count_strange_loop_iterations): New static function.
	(constant_iterations, count_loop_iterations, simple_loop_exit_p):
	Handle strange loops.

2003-07-04  Toon Moene  <toon@moene.indiv.nluug.nl>

	* install.texi: Even the g77 manpage is derived from
	the full g77 manual.

2003-07-04  Zack Weinberg  <zack@codesourcery.com>

	* ABOUT-NLS: Delete.
	* intl: Delete entire directory.
	* aclocal.m4: Include ../config/gettext.m4.  Delete
	AC_ISC_POSIX, AM_LANGINFO_CODESET, jm_GLIBC21, AM_LC_MESSAGES,
	AM_PATH_PROG_WITH_TEST, AM_WITH_NLS, and AM_GNU_GETTEXT.
	* configure.in: Use CY_GNU_GETTEXT, not AM_GNU_GETTEXT.
	Remove intl/Makefile from all_outputs.
	* configure, config.in: Regenerate.
	* Makefile.in: Expunge all references to intl subdirectory.
	Add -I../intl to INCLUDES.
	* intl.h: Include libintl.h if and only if ENABLE_NLS is defined.

2003-07-04  Roger Sayle  <roger@eyesopen.com>

	* config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Define.
	* config/rs6000/aix52.h (TARGET_C99_FUNCTIONS): Likewise.

2003-07-04  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c++/5287, PR c++/7910, PR c++/11021
	* config/i386/winnt.c (ix86_handle_dll_attribute): Don't add
	dllimport attribute if function is defined at declaration, but
	report error instead. Likewise for dllimport'd variable
	definitions.  Set implicit TREE_PUBLIC for dllimport'd variables
	declared within functions, Report error if dllimport or dllexport
	symbol is not global.
	(i386_pe_dllimport_p): Ignore dllimport attribute of functions
	if defined after declaration or if inlined. Don't allow definition
	of static data members of C++ classes. Don't dllimport virtual
	methods.
	(i386_pe_mark_dllexport): Warn about inconsistent dll attributes.
	(i386_pe_mark_dllimport): Remove unnecessary checks.
	(i386_pe_encode_section_info): Warn if the dllimport attribute
	and symbol prefix have been instantiated and then overridden.

	* doc/extend.texi: Document dllimport and dllexport attributes.

	* config/i386/winnt.c (i386_pe_output_labelref): Fix indents.

2003-07-03 Uwe Stieber <uwe@kaos-group.de>

	* config/kaos.h (CPP_PREDEFINES): Delete.
	(TARGET_OS_CPP_BUILTINS): New.

2003-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-aux-info.c: Include toplev.h after c-tree.h.
	* c-common.c: Likewise.
	(GCC_DIAG_STYLE): Undef.
	* c-semantics.c (GCC_DIAG_STYLE): Define.
	* c-tree.h (GCC_DIAG_STYLE): Likewise.
	* diagnostic.h (inform): Move prototype to toplev.h.
	* jump.c: Include diagnostic.h before toplev.h.
	* toplev.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_DIAG): Define.
	(warning, error, fatal_error, pedwarn, sorry, inform,
	error_for_asm, warning_for_asm): Mark with ATTRIBUTE_GCC_CXXDIAG.

2003-07-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfglayout.c (cfg_layout_duplicate_bb): Do not update frequencies
	at all if edge is not specified.
	(can_copy_bbs_p, copy_bbs): New.
	* cfglayout.h (can_copy_bbs_p, copy_bbs): Declare.
	* cfgloop.c (get_loop_body): Comment more precisely.
	* cfgloopmanip.c (copy_bbs, record_exit_edges): Removed.
	(scale_bbs_frequencies): Fix comment typo.
	(can_duplicate_loop_p): Use can_copy_bbs_p.
	(duplicate_loop_to_header_edge): Simplify by using copy_bbs.

2003-07-03  Devang Patel <dpatel@apple.com>

	* c-opts.c (c_common_parse_file): Remove extra
	debug_hooks->start_source_file call.

2003-07-03  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_trunc, real_floor, real_ceil): New functions
	to implement trunc, floor and ceil respectively.
	* real.h (real_trunc, real_floor, real_ceil): Prototype here.
	* builtins.c (integer_valued_real_p): New function to test if
	a floating point expression has an integer valued result.
	(fold_trunc_transparent_mathfn): Optimize foo(foo(x)) as
	foo(x) where foo is an integer rounding function.  Similarly,
	optimize foo(bar(x)) as bar(x), and foo((double)(int)x) as
	(double)(int)x when both foo and bar are integer rounding
	functions and we don't need to honor errno.
	(fold_builtin_trunc, fold_builtin_floor, fold_builtin_ceil):
	New functions to fold trunc, floor and ceil.
	(fold_builtin): Use fold_builtin_trunc to fold BUILT_IN_TRUNC*,
	fold_builtin_floor to fold BUILT_IN_FLOOR* and fold_builtin_ceil
	to fold BUILT_IN_CEIL*.
	* fold-const.c (tree_expr_nonnegative_p): Handle FLOAT_EXPR and
	the remaining integer rounding functions.

2003-07-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_partial_nregs): Use
	SPARC_INT_ARG_MAX to determine where to split unnamed
	complex FP arguments.

2003-07-03  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (create_basic_block, merge_blocks_nomove): Kill.
	* cfgcleanup.c (merge_blocks): Rename to merge_blocks_move.
	(merge_blocks_move_predecessor_nojumps,
	 merge_blocks_move_successor_nojumps): Use merge_blocks.
	(try_optimize_cfg): Use merge_blocks_move.
	* cfgrtl.c (create_basic_block): Rename to rtl_create_basic_block.
	(merge_blocks_nomove): Rename to rtl_merge_blocks.
	(cfg_layout_create_basic_block): New.
	(rtl_can_merge_blocks): New.
	(cfg_layout_split_block): Do not alloc aux by hand.
	* cfghooks.h (cfg_hooks): Add create_basic_block, can_merge_blocks_p,
	merge_blocks.
	(create_basic_block, can_merge_blocks_p, merge_blocks): New macros.
	* cfglayout.c (cfg_layout_duplicate_bb): Do not allocate aux by hand.
	* cfgloopmanip.c (loop_split_edge_with): Likewise.
	* ifcvt.c (merge_if_block): Use merge_blocks_nomove.

	* basic-block.h (basic_block_def): Add field 'rbi'.
	* bb-reorder.c (find_traces, rotate_loop, mark_bb_visited,
	find_traces_1_round, copy_bb, connect_traces): Update use of rbi.
	* cfg.c (entry_exit_blocks): Add new field.
	* cfglayout.c: Include alloc-pool.h;
	(cfg_layout_pool): New.
	(record_effective_endpoints, fixup_reorder_chain,
	fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update use
	of rbi.
	(cfg_layout_initialize_rbi): New function.
	(cfg_layout_initialize): Use it.
	(cfg_layout_finalize): Clear rbi fields.
	* cfglayout.h (RBI): Kill.
	(cfg_layout_initialize_rbi): Declare.
	* cfgloopmanip.c (copy_bbs): Use rbi.
	(record_exit_edges): Likewise.
	(duplicate_loop_to_header_edge): Likewise.
	* cfgrtl.c (cfg_layout_create_basic_block): Use
	cfg_layout_initialize_rbi.
	(cfg_layout_split_block): Use rbi.
	(cfg_layout_delete_block): Likewise.
	* loop-init.c (loop_optimizer_finalize): Likewise.
	* loop-unswitch.c (unswitch_loop): Likewise.
	* tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.

	* cfgrtl.c: Update comments.
	(try_redirect_by_replacing_jump): New argument.
	(redirect_branch_edge): Break out from ...
	(rtl_redirect_edge_and_branch): ... this one.
	(update_cfg_after_block_merging): Break out from ...
	(rtl_merge_blocks): ... this one.
	(cfg_layout_split_edge): New.
	(cfg_layout_merge_blocks): New.
	(cfg_layout_can_merge_blocks_p): New.
	(cfg_layout_redirect_edge_and_branch): Reorganize.
	(cfg_layout_rtl_cfg_hooks): Fill in.
	(cfg_layout_delete_block): Kill barriers.
	* cfganal.c (can_fallthru): Deal with exit blocks
	* cfglayout.c (cfg_layout_function_header): New function
	(record_effective_endpoints): Record function header.
	(fixup_reorder_chain): Fixup dead jumptables; place header

	* basic-block.h (CLEANUP_CFGLAYOUT): New flag.
	* bb-reorder.c (cfg_layout_initialize): Update call.
	* cfgcleanup.c (try_optimize_cfg): Supress optimizations of fallthru
	edges in cfglayout mode.
	* cfglayout.c (cleanup_unconditional_jumps): Kill.
	(cfg_layout_initialize): Kill agrument loops; use cfgcleanup.
	* cfglayout.h (cfg_layout_initialize): Update prototype.
	* cfgloop.h (CP_INSIDE_CFGLAYOUT): Kill.
	* cfgloopmanip.c (loop_split_edge_with): Use split_edge.
	* flow.c (propagate_block): Do not crash when basic block ends
	by first insn in the chain.
	* loop-init.c (loop_optimizer_init):  First enter cfglayout mode; later
	do loop discovery.
	* tracer.c (tracer): Update call of cfg_layout_initialize.

2003-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in: Use dependency variables in lieu of explicit
	files throughout.

2003-07-03  Steven Bosscher  <steven@gcc.gnu.org>

	* rtl.h (ECF_*, flags_from_decl_or_type): Move from here...
	* tree.h: ...to here.

2003-07-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/s390/2064.md: Fix comment typos.
	* config/s390/2084.md: Likewise.
	* config/s390/s390.c: Likewise.
	* config/s390/s390.md: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sh/sh.md: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.md: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/stormy16/stormy-abi: Fix a typo.

2003-07-03  Kelley Cook  <kelleycook@wideopenwest.org>

	* Makefile.in (ifcvt.o): Depend on OPTABS_H.

2003-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/mips/mips.h (save_argv): Delete.

2003-07-03  Roger Sayle  <roger@eyesopen.com>

	PR target/10700
	* fold-const.c (extract_muldiv_1): There's nothing that can be done
	if the expression is a SAVE_EXPR.

2003-07-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.c: Fix comment typos.
	* config/m68hc11/m68hc11.c: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/m68k/m68k.c: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mcore/mcore.h: Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/netbsd.h: Likewise.
	* config/mn10300/mn10300.c: Likewise.

2003-07-03  Andreas Schwab  <schwab@suse.de>

	* dbxout.c (pending_bincls): Move decl down inside
	DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO section.

2003-07-02  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.h (NOTE_DATA): Refer to whole union.
	* emit-rtl.c (emit_note): Use memset to clear NOTE_DATA.

2003-07-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11381
	* simplify-rtx.c (simplify_relational_operation): Check that
	two equal operands have no side-effects before simplifying
	the comparison.

2003-07-02  Jeff Law  <law@redhat.com>

	* expr.c (do_store_flag): Remove special case folding for
	single bit tests.  Instead call back into the commonized folder
	routine.
	* fold-const.c (fold_single_bit_test): New function, mostly
	extracted from do_store_flag, with an additional case extracted
	from fold.
	(fold): Call fold_single_bit_test appropriately.
	* tree.h (fold_single_bit_test): Prototype.

2003-07-02  Zack Weinberg  <zack@codesourcery.com>

	* system.h: Include filenames.h.
	(IS_DIR_SEPARATOR, IS_ABSOLUTE_PATHNAME): Don't define.
	(DIR_SEPARATOR, DIR_SEPARATOR_2): If not already defined,
	define based on HAVE_DOS_BASED_FILE_SYSTEM.
	* config/i386/xm-cygwin.h, config/i386/xm-djgpp.h
	* config/i386/xm-mingw32.h: Don't define
	HAVE_DOS_BASED_FILE_SYSTEM,
	DIR_SEPARATOR, or DIR_SEPARATOR_2.
	* doc/hostconfig.texi: Update to match.

	* cppfiles.c, gcc.c, gensupport.c, protoize.c,
	config/i386/cygwin.h:
	Use IS_ABSOLUTE_PATH throughout.
	* gcc.c (DIR_UP): Delete, unused.
	* protoize.c (IS_SAME_PATH): Define in terms of
	FILENAME_CMP.
	(is_abspath): Delete.

2003-07-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/emmintrin.h: Fix comment typos.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/sco5.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/itanium2.md: Likewise.

2003-07-02  H.J. Lu  <hongjiu.lu@intel.com>

	* dbxout.c (pending_bincls): Replace DBX_USE_BINCLS with
	DBX_USE_BINCL.
	(emit_bincl_stab): Same.
	(emit_pending_bincls): Same.

2003-07-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (compute_mov_length): Fix the length of
	loading CONST0_RTX (SFmode).
	* config/h8300/h8300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Change
	'G' to CONST0_RTX (SFmode).
	* config/h8300/h8300.md (movsf_h8300): Change the first
	constraint to 'G'.
	(movsf_h8300h): Likewise.

2003-07-02  Neil Booth  <neil@daikokuya.co.uk>

	* c-common.h (c_common_init_options): New prototype.
	* c-opts.c (deferred_size): Remove.
	(defer_opt): Array is now pre-allocated.
	(c_common_init_options): Pre-allocate deferred_opts.  Make
	lang_flags unsigned.
	(push_command_line_options): Free deferred_opts.
	* hooks.c (hook_uint_uint_constcharptrptr_0): New.
	* hooks.h (hook_uint_uint_constcharptrptr_0): New.
	* langhooks-def.h (LANG_HOOKS_INIT_OPTIONS): Update.
	* langhooks.h (struct lang_hooks): New prototype for init_options.
	* main.c (main): Cast argv.
	* opts.c (handle_option, handle_options): Update prototypes.
	(decode_options): save_argc, save_argv are not global.  Constify.
	* opts.h (decode_options): New prototype.
	* toplev.c (general_init): New protoype.
	(save_argv): Make static.
	(save_argc): Remove.
	(print_switch_values, general_init): Constify.
	(toplev_main): Save argv.
	* toplev.h (toplev_main): Update prototype.
	(save_argc, save_argv): Remove.

2003-07-02  David Edelsohn  <edelsohn@gnu.org>

	* dbxout.c (pending_bincls): Guard with DBX_USE_BINCLS.
	(emit_bincl_stab): Same.
	(emit_pending_bincls): Same.

2003-07-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/11072
	* ginclude/stddef.h (offsetof): Remove cast to 'char &'. Explain why.

2003-07-02  Andreas Schwab  <schwab@suse.de>

	* dbxout.c (pending_bincls): Only define if DBX_DEBUGGING_INFO.

2003-07-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11210
	* expr.c (handled_component_p) [NOP_EXPR]: Add ??? note
	about the behaviour with regard to bitfields.
	* fold-const (decode_field_reference): Record outermost type in
	case the expression is a NOP. Strip all NOPs. Set the signedness
	to that of the outermost type (if any) when the bitsize is equal
	to the size of the type.

2003-07-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (addsi3): Remove workaround for adds of -32768.
	(addsi3_internal, adddi3, adddi3_internal_2): Likewise.
	(adddi3_internal_3, addsi3_internal_2): Likewise.

2003-07-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (machine_function): Add new fields:
	ignore_hazard_length_p and all_noreorder_p.
	(mips_flag_delayed_branch): New variable.
	(override_options): Treat '/' as an operand punctuation character.
	Set up mips_flag_delayed_branch.
	(print_operand): Handle '/'.
	(mips_output_function_prologue): Put the whole function in
	.set noreorder and .set nomacro if all_noreorder_p is true.
	(mips_output_function_epilogue): End the noreorder/nomacro sequence.
	(mips16_optimize_gp): Remove "first insn" parameter.
	(mips16_lay_out_constants): New function, split out from mips_reorg.
	(mips_avoid_hazard, mips_avoid_hazards): New functions.
	(mips_reorg): For mips16 code, call mips16_lay_out_constant
	and (optionally) mips16_optimize.  If TARGET_EXPLICIT_RELOCS,
	do delayed-branch scheduling followed by hazard detection.
	(mips_adjust_insn_length): Only account for hazards if
	!ignore_hazard_length_p.
	(mips_output_load_label): Add a nop to the o32 sequence if
	the target suffers from load delays.
	(mips_output_conditional_branch): Add %/ to the end of branches.
	(mips_output_division): Fill the branch delay slot with %#.
	* config/mips/mips.md: Remove redundant '%*' from mips16 branch
	instructions.  End all other %* branches with %/.
	(ffssi2, ffsdi2): Fix lengths.
	(truncdisi2, truncdihi2, truncdiqi2): Add store attributes.
	(fix_truncdfsi2_macro): Turn off .set nomacro if appropriate.
	(fix_truncsfsi2_macro): Likewise.
	(mov_lwl): Set hazard to "none".
	(ashldi3_internal): Fill the branch delay slot with %#.
	(ashrdi3_internal, lshrdi3_internal): Likewise.
	(exception_receiver): Explicitly set $28.
	(hazard_nop): New pattern.

2003-07-02  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_finalize_unit): Set current_function_decl
	before calling tree_inlinable_function_p.

2003-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (irix_stdio_va_list): Apply to IRIX 6.5
	<internal/stdio_core.h> too.
	(stdio_va_list): Apply to IRIX 6.5 <internal/stdio_core.h> and
	<internal/wchar_core.h> too.
	Substitute va_list uses in inline definition.
	* fixinc/fixincl.x: Regenerate.

2003-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris5.h (SET_FILE_NUMBER): Moved here from iris3.h.
	Undef before redefinition.
	(LABEL_AFTER_LOC): Likewise.
	(DEFAULT_SIGNED_CHAR): Likewise.
	(ASM_OUTPUT_ASCII): Moved here from iris4.h.
	Fix IRIX spelling.

	* config/mips/iris3.h: Remove, unused.
	* config/mips/iris4.h: Likewise.

	* config/mips/mips.h (STACK_ARGS_ADJUST): Remove, unused.

	* config/mips/iris5.h (TARGET_DEFAULT): Move ...
	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): ... here to
	target_cpu_default.

	* config/mips/iris5.h: Move explicit includes ...
	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): ... here.

	* config/mips/iris6.h (MIPS_ISA_DEFAULT, MIPS_ABI_DEFAULT): Move ...
	* config.gcc (mips-sgi-irix6*, mips-sgi-irix5cross64): ... here to
	tm_defines.

	* config/mips/iris6.h (TARGET_DEFAULT): Move ...
	* config.gcc (mips-sgi-irix6*, mips-sgi-irix5cross64): ... here to
	target_cpu_default.

	* config/mips/iris6.h: Fix IRIX spelling.
	(MULTILIB_DEFAULTS): Undef before redefinition.

	* config/mips/iris6.h: Move explicit includes ...
	* config.gcc (mips-sgi-irix6*, mips-sgi-irix5cross64): ... here.

2003-07-02  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_mark_needed_node, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
	Use next_needed field instead of aux to maintain the queue.
	* cgraph.h (cgraph_node): Add next_needed.
	(cgraph_varpool_node): Add next_needed; remove aux.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Use next_needed.

2003-07-02  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_finalize_function): Set finalized.
	(cgraph_finalize_function): Do not examine inlinablility.
	(cgraph_finalize_compilation_unit): Do it here.
	* cgraph.h (cgraph_local_info): Add finalized field.

2003-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* ggc-common.c (gt_pch_save): Cast MAP_FAILED to void *.
	(gt_pch_restore): Likewise.

2003-07-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.c: Fix comment typos.
	* config/alpha/elf.h: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/t-arm-coff: Likewise.
	* config/arm/t-strongarm-pe: Likewise.
	* config/arm/xscale-elf.h: Likewise.
	* config/avr/avr.h: Likewise.

2003-07-01  Jeff Law  <law@redhat.com>

	* stmt.c (any_pending_cleanups): Remove another redundant test.

2003-07-01  David Edelsohn  <edelsohn@gnu.org>
	    J"orn Rennecke <joern.rennecke@superh.com>

	* config/rs6000/rs6000.md (ctr{s,d}i_internal?): Add earlyclobber
	for MEM case.

2003-07-01  Devang Patel  <dpatel@apple.com>

	* dbxout.c (DBXOUT_DECR_NESTING): Emit pending bincls, if required.
	(binclstatus): New.
	(struct dbx_file): New members - bincl_status, pending_bincl_name and
	prev.
	(pending_bincls): New.
	(dbxout_init): Initialize new dbx_file members.
	(dbxout_start_source_file): Same.
	(emit_bincl_stab): New function.
	(emit_pending_bincls): Same.
	(emit_pending_bincls_if_required): Same.
	(dbxout_end_source_file): Emit EINCL stab only if BINCL is  already
	processed.
	(dbxout_begin_block): Emit pending BINCL stabs.
	(dbxout_end_block): Same.
	(dbxout_function_decl): Same.
	(dbxout_continue): Same.
	(dbxout_type): Same.
	(dbxout_class_name_qualifiers): Same.
	(dbxout_symbol): Same.
	(dbxout_symbol_location): Same.
	(dbxout_parms): Same.

2003-07-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-semantics.c (genrtl_case_label): Fix format specifier bug.
	* cfgrtl.c (rtl_verify_flow_info_1): Likewise.

2003-07-01  Andreas Jaeger  <aj@suse.de>

	* fold-const.c: Convert prototypes to ISO C90.
	* function.c: Likewise.
	* function.h: Likewise.

2003-07-01  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/contrib.texi: Fix typos.
	* doc/invoke.texi: Likewise.
	* doc/passes.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/tm.texi: Likewise.

2003-07-01  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Fix comment typos.
	* bb-reorder.c: Likewise.
	* c-format.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfghooks.h: Likewise.
	* cfgloop.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cfgrtl.c: Likewise.
	* cgraph.h: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* dbxout.c: Likewise.
	* df.c: Likewise.
	* df.h: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* et-forest.h: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.h: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* ra-build.c: Likewise.
	* ra-colorize.c: Likewise.
	* ra-rewrite.c: Likewise.
	* ra.h: Likewise.
	* regmove.c: Likewise.
	* reload.c: Likewise.
	* rtlanal.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-int.h: Likewise.
	* sched-vis.c: Likewise.
	* sreal.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa.c: Likewise.
	* toplev.c: Likewise.
	* tree-inline.c: Likewise.
	* value-prof.c: Likewise.
	* value-prof.h: Likewise.

2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.h (emit_line_note_after): Remove.
	(emit_note_copy_after, emit_note_copy): New.
	* emit-rtl.c (reorder_insns_with_line_notes): Replace
	emit_line_note_after with emit_note_copy_after.
	(emit_insn_after_with_line_notes): Likewise.
	(emit_line_note_after): Kill.
	(emit_note_copy_after): New.
	(emit_note_copy): New.
	* function.c (emit_return_into_block): Use emit_note_copy_after.
	(thread_prologue_and_epilogue_insns): Likewise.
	* integrate.c (expand_inline_function): Use emit_note_copy.
	(copy_insn_list): Likewise.
	* unroll.c (copy_loop_body): Likewise.
	* cfglayout.c (duplicate_insn_chain): Likewise.

2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>

	* c-tree.h (define_label): Replace filename and lineno arguments
	with a location_t.
	* c-decl.c (poplevel): Adjust define_label call.
	(pop_label_level): Likewise.
	(define_label): Replace filename and lineno arguments with a
	location_t.
	(store_parm_decls): Use DECL_SOURCE_LOCATION.
	* c-parse.in (label): Adjust define_label call.

2003-07-01  Neil Booth  <neil@daikokuya.co.uk>

	* config/sol2.h, config/alpha/alpha.h, config/alpha/linux.h,
	config/i386/i386-interix.h, config/ia64/hpux.h, config/mips/iris6.h,
	config/mips/linux.h, config/mips/mips.h, config/pa/pa-hpux.h,
	config/pa/pa-hpux10.h, config/pa/pa-hpux11.h, config/pa/pa-pro-end.h,
	config/pa/pa.h, config/pa/rtems.h: Use c_dialect_ macros.

2003-07-01  Andreas Jaeger  <aj@suse.de>

	* final.c: Convert prototypes to ISO C90.
	* flow.c: Likewise.
	* flags.h: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.

2003-06-30  Bruno Haible  <bruno@clisp.org>

	PR middle-end/6578
	* libgcc2.c (__subvsi3): Remove simplification that would not work
	when subtracting -0x80000000.
	(__subvdi3): Remove simplification that would return a wrong result.
	(__mulvsi3): Fix overflow check.
	(__absvdi2): Fix simplification that would return a wrong result.
	(__mulvdi3): Fix overflow check.

2003-06-30  Jeff Law  <law@redhat.com>

	* stmt.c (any_pending_cleanups): Lose argument THIS_CONTOUR, it
	was always passed in the value '1'.  Simplify body appropriately.
	* tree.h (any_pending_cleanups): Corresponding changes.
	* calls.c: (expand_call): Corresponding changes.

2003-06-30  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (distribute_notes): Don't bother REG_WAS_0.
	* cse.c (cse_insn): Likewise.
	* final.c (final_scan_insn): Likewise.
	* jump.c (duplicate_loop_exit_test): Likewise.
	* rtl.c (reg_note_name): Remove REG_WAS_0.
	* rtl.h (REG_WAS_0): Remove.
	* unroll.c (final_reg_note_copy): Don't bother REG_WAS_0.
	* config/avr/avr.c (output_movqi): Don't use reg_was_0.
	(output_movhi): Likewise.
	(output_movsisf): Likewise.
	(reg_was_0): Remove.
	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Don't use
	REG_WAS_0.
	(m68hc11_gen_movqi): Likewise.
	* config/vax/vax-protos.h: Remove the prototype for
	reg_was_0_p.
	* config/vax/vax.c (follows_p): Remove.
	(reg_was_0_p): Likewise.
	* config/vax/vax.md (movsi): Don't use reg_was_0_p.
	(movhi): Likewise.
	(movqi): Likewise.
	* doc/rtl.texi (REG_WAS_0): Remove.

2003-06-30  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/spe.h (__ev_set_spefscr_frmc): Set the flag.

2003-06-30  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm: Use "xtensa-config.h" from
	top-level include directory.
	* config/xtensa/lib2funcs.S: Likewise.
	* config/xtensa/xtensa.h: Likewise.
	* config/xtensa/xtensa-config.h: Remove.
	* doc/install.texi: Update location of "xtensa-config.h" header.

2003-06-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_extra_constraint): New function.
	* config/s390/s390-protos.h (s390_extra_constraint): Declare it.
	* config/s390/s390.h (EXTRA_CONSTRAINT): Use it.
	* config/s390/s390.c (q_constraint): Remove.
	* config/s390/s390-protos.h (q_constraint): Likewise.
	* config/s390/s390.h (EXTRA_MEMORY_CONSTRAINT): Add 'R', 'S', 'T'.
	(EXTRA_ADDRESS_CONSTRAINT): Define.

	* config/s390/s390.c (larl_operand): Refuse out-of-range operands.
	(DISP_IN_RANGE, s390_short_displacement): New.
	(legitimate_reload_operand_p): Support long displacements.
	(s390_decompose_address): Likewise.
	(legitimize_pic_address): Likewise.
	(legitimize_address): Likewise.
	(s390_fixup_clobbered_return_reg): Likewise.
	(s390_emit_prologue, s390_emit_epilogue): Likewise.
	(s390_output_mi_thunk): Likewise.

	* config/s390/s390.md (attr "op_type"): Add "RXY", "RSY", "SIY".
	(attr "atype", attr "length"): Add defaults for new op_types.
	(all insns): Change op_type attribute where appropriate.

	("*movdi_lay", "*movsi_lay", "*extendqidi2", "*extendqisi2"): New insns.
	("*tmqi_ext", "*tmdi_mem", "*tmsi_mem", "*tmhi_mem", *tmqi_mem",
	"*tstsi", "*tstsi_cconly", "*tsthiCCT", "*tsthiCCT_cconly",
	"*tsthi", "*tsthi_cconly", "*tstqiCCT", "*tstqiCCT_cconly",
	"*tstqi", "*tstqi_cconly", "*cmpsi_ccs_sign", "*cmpsi_ccs",
	"*cmpsi_ccu", "*cmphi_ccu", "*cmpqi_ccu", "*cli",
	"movti", "*movdi_64", "*movdi_31", "*movsi", "movhi", "movqi_64",
	"movqi", "*movstrictqi", "*movstricthi", "movstrictsi",
	"*movdf_64", "*movdf_31", "*movsf",
	"*load_multiple_si", "*store_multiple_di",
	"*sethighqisi", "*sethighhisi", "*sethighqidi_31", "*extendhisi2",
	"*la_64", "*la_31", "*la_31_and", "force_la_31",
	"*addsi3_carry1_cc", *addsi3_carry1_cconly",
	"*addsi3_carry2_cc", *addsi3_carry2_cconly",
	"*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
	"*addsi3_sign", "*addsi3_sub", "addsi3",
	"*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
	"*subsi3_cconly", "*subsi3_sign", "*subsi3_sub", "subsi3",
	"mulsi3"
	"*andsi3_cc", "*andsi3_cconly", "andsi3",
	"*andqi3_ss", "*andqi3_ss_inv",
	"*iorsi3_cc", "*iorsi3_cconly", "iorsi3",
	"*iorqi3_ss", "*iorqi3_ss_inv",
	"*xorsi3_cc", "*xorsi3_cconly", "xorsi3",
	"*xorqi3_ss", "*xorqi3_ss_inv",
	"*tls_load_31"): Add alternatives for long-displacement instructions.

	("*cmpdf_ccs", "*cmpdf_ccs_ibm", "*cmpsf_ccs", "*cmpsf_ccs_ibm",
	"*load_multiple_di", "*store_multiple_di",
	"*sethighqidi_64", "*zero_extendhisi2_31",
	"truncdfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
	"adddf3", "*adddf3", "*adddf3_ibm",
	"addsf3", "*addsf3", "*addsf3_ibm",
	"subdf3", "*subdf3", "*subdf3_ibm",
	"subsf3", "*subsf3", "*subsf3_ibm",
	"mulsi_6432", "divmoddisi3",
	"muldf3", "*muldf3", "*muldf3_ibm",
	"mulsf3", "*mulsf3", "*mulsf3_ibm",
	"divdf3", "*divdf3", "*divdf3_ibm",
	"divsf3", "div*sf3", "*divsf3_ibm",
	"sqrtdf2", "sqrtsf2",
	"*cjump_long", "*icjump_long", "indirect_jump", "casesi_jump",
	"*doloop_si_long", "*doloop_di_long", "bas_64", "bas_31",
	"bas_r_64", "bas_r_31", "bas_tls_31", "bas_tls_64"): Adapt memory
	and address constraints for instructions that do not accept long
	displacements.

2003-06-30  Hartmut Penner  <hpenner@de.ibm.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/2084.md: New file.
	* config/s390/s390.md: Include it.
	* config/s390/s390.c (s390_adjust_priority): New function.
	(TARGET_SCHED_ADJUST_PRIORITY): Define.
	(s390_first_cycle_multipass_dfa_lookahead): New function.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define.
	(s390_sched_reorder2): New function.
	(TARGET_SCHED_REORDER2): Define.
	(s390_adjust_cost): Support PROCESSOR_2084_Z990 cpu type.
	(s390_issue_rate): Likewise.

Mon Jun 30 23:47:33 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (GTFILES): Add cgraph.h.
	* cgraph.c (known_decls): Remove.
	(cgraph_hash, cgraph_nodes, cgraph_nodes_queue,
	cgraph_varpool_hash, cgraph_varpool_nodes_queue): GTYize.
	(cgraph_node): Do not allocate known_decls; use polutate hashtable.
	(cgraph_varpool_node): Likewise; add next pointer.
	(cgraph_varpool_nodes): New static variable.
	* cgraph.h (cgraph_local_info, cgraph_global_info, cgraph_rtl_info,
	cgraph_node, cgraph_edge, cgraph_varpool_node, cgraph_nodes, cgraph_n_nodes,
	cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): GTYize.
	* gengtype.c (open_base_files): Include cgraph.h

2003-06-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Changelog: Remove ">>>>>>>" from previous change.

2003-06-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* config/cris/cris.c: Fix spelling for "testcase".
	* config/cris/cris.h: Likewise.
	* config/cris/cris.md: Likewise.
	* config/mmix/crti.asm: Likewise.
	* config/mmix/mmix.h: Likewise.
	* config/mmix/mmix.md: Likewise.

2003-06-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Make it always
	1.

2003-06-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config.gcc [s390*-*-*]: Support --with-arch, --with-tune, and
	--with-mode configure options.
	* config/s390/s390.h (OPTION_DEFAULT_SPECS): Define.
	(DRIVER_SELF_SPECS): Define.
	* config/s390/linux.h (ASM_SPEC): Pass architecture mode and cpu
	architecture to assembler.
	(LINK_SPEC): Merge 31-bit and 64-bit variants.
	(LINK_ARCH31_SPEC, LINK_ARCH64_SPEC, EXTRA_SPECS): Remove.
	* config/s390/s390.c (override_options): New default rules for
	architecture mode and cpu architecture selection.
	* doc/invoke.texi (-mesa, -mzarch, -march, -mtune): Document
	new default rules.

	* config/s390/s390.h (enum processor_type): Add PROCESSOR_2084_Z990.
	* config/s390/s390.md (attr "cpu"): Add "z990" processor type.
	* config/s390/s390.c (override_options): Add "z990" to
	processor_alias_table.
	* doc/invoke.texi (-march): Document "z990" processor type.

	* config/s390/s390.c (s390_tune_flags, s390_arch_flags): New variables.
	* config/s390/s390.h (s390_tune_flags, s390_arch_flags): Declare.
	(enum processor_flags, TARGET_CPU_IEEE_FLOAT, TARGET_CPU_ZARCH,
	TARGET_CPU_LONG_DISPLACEMENT, TARGET_LONG_DISPLACEMENT): New.
	* config/s390/s390.c (override_options): Replace enum pta_flags by
	enum processor_flags.  Fill in s390_tune_flags and s390_arch_flags.

	* config/s390/s390.c (s390_cpu): Rename to ...
	(s390_tune): ... this.
	* config/s390/s390.h (s390_cpu, s390_tune): Likewise.
	* config/s390/s390.c (s390_issue_rate, override_options): Likewise.
	* config/s390/s390.md (attr "cpu"): Likewise.

2003-06-30  Neil Booth  <neil@daikokuya.co.uk>

	* c-common.c (enum c_language_kind, flag_objc): Remove.
	(fix_string_type, check_case_value, c_common_nodes_and_builtins,
	c_add_case_label, finish_label_addr_expr, boolean_increment):
	Use c_dialect_ macros.
	* c-common.h (enum c_language_kind): Extend.
	(c_dialect_cxx, c_dialect_objc): New.
	(flag_objc): Remove.
	(c_common_init_options): Update prototype.
	* c-cppbuiltin.c (define__GNUC__, c_cpp_builtins): Use c_dialect_
	macros.
	* c-decl.c (finsih_decl, grokfield, finish_struct): Use c_dialect_
	macros.
	* c-format.c (C_STD_VER, C_STD_NAME): Similarly.
	* c-lang.c (c_init_options): Remove.
	(c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	* c-lex.c (lex_charconst): Use c_dialect_ macros.
	* c-opts.c (lang_flags): Make function-local.
	(c_common_init_options): Use c_dialect_ macros.  Handle
	C++ diagnostic requirements.
	(c_common_handle_option, c_common_post_options): Use flag_cxx.
	* c-parse.in (init_reswords): Use c_dialect_objc ().
	* c-pch.c (get_ident): Use c_language.
	* c-pretty-print.c (pp_c_bool_literal): Use c_dialect_ macros.
	* c-typeck.c (comptypes, build_c_cast): Similarly.
	* objc/objc-lang.c (c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	(objc_init_options): Remove.

2003-06-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.h (FUNCTION_ARG_PADDING): Remove.
	* config/alpha/unicosmk.h: Don't #undef FUNCTION_ARG_PADDING.

2003-06-30  Wolfgang Bangerth  <bangerth@dealii.org>

	* doc/sourcebuild.texi: Don't reference gnats.html any more.

2003-06-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (compute_mov_length): Fix length of
	mov:SF on H8/300.

2003-06-30  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h (BIGGEST_FIELD_ALIGNMENT): Make defintion
	constant.

Mon Jun 30 15:36:29 CEST 2003  Jan Hubicka  <jh@suse.cz>

	(fyl2x_sfxf3, fyl2x_dfxf3, fscale_sfxf3, fscale_dfxf3): Fix condition.

2003-06-30 Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (rs6000_split_altivec_in_gprs): New function.
	(altivec_in_gprs_p): New function.

	* config/rs6000/rs6000-protos (rs6000_split_altivec_in_gprs): New
	prototype.
	(altivec_in_gprs_p): New prototype.

	* config/rs6000/altivec.md (*movv4si_internal): Change
	multi-assembler alternative to '#'. Add postreload splitter to
	handle this cases.
	(*movv4hi_internal): Likewise.
	(*movv4qi_internal): Likewise.
	(*movv4sf_internal): Likewise.

2003-06-30  Jason Merrill  <jason@redhat.com>

	* defaults.h (PUSH_ARGS_REVERSED): Define default here.
	* calls.c: Not here.

2003-06-30  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/arm.c (arm_rtx_costs): Remove #if 0 block.
	(bad_signed_byte_operand): Likewise.
	(arm_output_epilogue): Likewise.
	(arm_final_prescan_insn): Likewise.

2003-06-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* cfgrtl.c (mark_killed_regs): Cast HARD_REGNO_NREGS to int.

2003-06-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* c-pch.c (c_common_write_pch): Flush asm_out_file to allow for
	subsequent writes.

Mon Jun 30 10:03:02 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (verify_flow_info): Accept degenerated condjumps
	in cfglayout mode.

Mon Jun 30 09:52:39 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (standard_80387_constant_p): Accept TFmode constants too.
	(init_ext_80387_constants): Likewise.
	(standard_80387_constant_rtx): Likewise.
	* i386.md (atanxf): Disable for TARGET_128BIT_LONG_LONG
	(atantf): Disable for !TARGET_128BIT_LONG_LONG
	(fyl2x_sfxf3, fyl2x_dfxf3): Accept TFmode operands.
	(fyl2x_xfxf3, fyl2x_tfxf3): Enable/disable as needed.
	(fscale_sfxf3, fscale_dfxf3): Accept TFmode operands.
	(fscale_xfxf3, fscale_tfxf3): Enable/disable as needed.
	(frndinttf2): New.
	(f2xm1tf2): New.
	(exp?f2): Use expsf2_tf when needed.
	(exp?f2_tf): New.
	(exptf): New.

2003-06-29 Uwe Stieber <uwe@kaos-group.de>

	* config.gcc (sh*-*-kaos*): Put tm_file setting in separate case
	statement from tmake_file set.

2003-06-29  James E Wilson  <wilson@tuliptree.org>

	* reload.c (find_reloads): Change push_reloads to push_reload in
	comment.
	* reload1.c (eliminate_regs): Likewise.
	(dump_needs): Delete prototype for deleted function.

2003-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def (gcc_diag, gcc_cdiag, gcc_cxxdiag): New
	format attributes.
	* c-format.c (enum format_type): Add gcc_diag_format_type,
	gcc_cdiag_format_type, and gcc_cxxdiag_format_type.
	(gcc_diag_length_specs, gcc_cdiag_length_specs,
	gcc_cxxdiag_length_specs, gcc_diag_flag_pairs,
	gcc_cdiag_flag_pairs, gcc_cxxdiag_flag_pairs, gcc_diag_flag_specs,
	gcc_cdiag_flag_specs, gcc_cxxdiag_flag_specs, gcc_diag_char_table,
	gcc_cdiag_char_table, gcc_cxxdiag_char_table): New.
	(format_types_orig): Add new data.
	(find_char_info_specifier_index, init_dynamic_diag_info): New
	functions.
	(handle_format_attribute): Update to handle new format attributes.

2003-06-29  Dara Hazeghi  <dhazeghi@yahoo.com>

	* doc/install.texi: Remove install documentation for obsoleted targets
	i?86-*-sco, i?86-*-sco3.2v4, powerpcle-*-pe, powerpcle-*-winnt,
	arm-*-aof.
	Update information about IA64 toolchain, AIX make requirements,
	and binutils for m68k-*-hpux and *-*-linuxaout targets.

Mon Jun 30 00:50:43 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* regmove.c (regmove_optimize): Don't try to make src and dst match
	when they are in different modes.

Sun Jun 29 23:06:32 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2): Avoid
	busy work when builtin is not supported by the backend.

2003-06-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop.c (count_one_set): Fix detection of registers set in more
	than one basic block.

2003-06-29  Andreas Jaeger  <aj@suse.de>

	* target-def.h: Remove usage of OBJECT_FORMAT_ROSE.
	* system.h: Poison OBJ_FORMAT_ROSE.
	* doc/tm.texi (Macros for Initialization): Remove documentatin of
	OBJECT_FORMAT_ROSE.
	* config/rs6000/lynx.h: Remove undef of OBJECT_FORMAT_ROSE.
	* collect2.c: Remove usage of OBJECT_FORMAT_ROSE.

2003-06-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (update_total_code_bytes): New function.
	(last_address): Number of bytes output for a function and its
	associated thunks.
	(compute_frame_size): Use BITS_PER_UNIT.
	(pa_output_function_epilogue): Compute last_address.  Use
	update_total_code_bytes.
	(output_lbranch): Handle long branch on portable runtime.
	(attr_length_millicode_call, attr_length_call,
	attr_length_indirect_call): Only use total_code_bytes for calls in
	the text section.
	(output_call): Only use an indirect call sequence when the target is
	not local.
	(pa_asm_output_mi_thunk): Handle updating of total_code_bytes.  Improve
	test to determine when an IA-relative branch can be used.  Add various
	long branch sequences.  Avoid using an indirect branch on all ports
	except SOM.

2003-06-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (clear_by_pieces): Fix prototype.

2003-06-29  Andreas Jaeger  <aj@suse.de>

	* cse.c: Convert prototypes to ISO C90.
	* cselib.c: Likewise.
	* cselib.h: Likewise.
	* dbxout.c: Likewise.
	* debug.c: Likewise.
	* df.c: Likewise.
	* df.h: Likewise.
	* dojump.c: Likewise.
	* doloop.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2asm.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarf2out.h: Likewise.
	* dwarfout.c: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* emit-rtl.c: Likewise.
	* et-forest.c: Likewise.
	* et-forest.h: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.

2003-06-29  Kazu Hirata  <kazu@cs.umass.edu>

	* alloc-pool.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* caller-save.c: Likewise.
	* cfganal.c: Likewise.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cse.c: Likewise.
	* df.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* final.c: Likewise.
	* flags.h: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* genautomata.c: Likewise.
	* libgcov.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* prefix.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.
	* vmsdbgout.c: Likewise.

2003-06-29  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (emit_single_push_insn): If padding is needed
	downward, adjust the stack pointer first, and then store the
	data into the stack location using an offset.

2003-06-29  Andreas Jaeger  <aj@suse.de>

	* collect2.h: Convert prototypes to ISO C90.
	* collect2.c: Likewise.
	* conflict.c: Likewise.
	* coverage.c: Likewise.
	* convert.h: Likewise.
	* convert.c: Likewise.

2003-06-29  Nathan Sidwell  <nathan@codesourcery.com>

	* c-decl.c (c_init_decl_processing): Use a location_t. Set input
	filename to <internal>.
	* tree.c (make_node): Just copy the current location.

2003-06-29  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11210
	* fold-const (decode_field_reference): Revert 2003-06-26 patch.

2003-06-29  Neil Booth  <neil@daikokuya.co.uk>

	* toplev.c (flag_dummy): Remove.
	(f_options): Restore flag pointers.

2003-06-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (processor_target_table): Add 970.
	* config.gcc: Add 970.

2003-06-29  Kazu Hirata  <kazu@cs.umass.edu>

	* dwarf2out.c (add_AT_string): Replace ggc_alloc_string (X,
	-1) with ggc_strdup.
	* stmt.c (expand_asm_operands): Likewise.
	* config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ip2k/ip2k.c (ip2k_reorg): Use INSN_P instead of its
	definition.

2003-06-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* opts.c: Include insn-attr.h.
	* Makefile.in (opts.o): Depend on INSN_ATTR_H.

2003-06-27  J"orn Rennecke <joern.rennecke@superh.com>

	* flow.c (propagate_one_insn): Use proper test for a register
	being part of the return value.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.c: Fix a comment typo.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr-protos.h: Replace avr_simplify_comparision_p
	with avr_simplify_comparison_p.
	* config/avr/avr.c: Likewise.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Follow spelling conventions.
	* cgraph.c: Likewise.
	* cpplex.c: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/iwmmxt.md: Likewise.
	* config/c4x/c4x-modes.def: Likewise.
	* config/c4x/c4x.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/i386/i386-interix.h: Likewise.
	* config/mips/mips.h: Likewise.

2003-06-28  Neil Booth  <neil@daikokuya.co.uk>

	* config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Predicate
	__mc68020__ on TARGET_68020.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

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

2003-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* c-parse.in (yylexstring): Use a location_t.

	* diagnostic.h (diagnostic_set_info): Replace file and lineno
	parameters with a location_t.
	* diagnostic.c (diagnostic_set_info): Replace file and lineno
	parameters with a location_t.
	(inform, warning, pedwarn, error, sorry, fatal_error,
	internal_error, warning_with_decl, pedwarn_with_decl,
	error_with_decl): Adjust.
	* c-error.c (pedwarn_c99): Adjust.
	* c-format.c (status_warning): Adjust.
	* rtl-error.c (file_and_line_for_asm): Rename to ...
	(location_for_asm): Return a location_t.
	(diagnostic_for_asm): Adjust.

2003-06-28  Neil Booth  <neil@daikokuya.co.uk>

	* cpptrad.c (skip_macro_block_comment): New.
	(copy_comment): Use it if appropriate.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (compute_ld_motion_mems): Use INSN_P instead of its
	definition.
	(store_killed_in_insn): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* config/frv/frv.c (frv_final_prescan_insn): Likewise.
	* config/m68hc11/m68hc11.c (dead_register_here): Likewise.
	(m68hc11_reassign_regs): Likewise.
	(m68hc11_reorg): Likewise.

2003-06-28  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* diagnostic.c (output_integer_with_precision): New macro.
	(output_format): Use it.  Handle more format specifiers.
	(output_long_decimal): Remove.
	(output_unsigned_decimal): Likewise.
	(output_long_unsigned_decimal): Likewise.
	(output_octal): Likewise.
	(output_long_octal): Likewise.
	(output_hexadecimal): Likewise.
	(output_long_hexadecimal): Likewise.
	(output_long_long_decimal): Likewise.

2003-06-28  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64.md: Follow recent emit_note API change.

2003-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* c-parse.in (%union): Replace filename & lineno with location.
	(save_filename, save_lineno): Remove.
	(save_location): New.
	(fndef, old_style_parm_decls_1, lineno_datadecl, lineno_decl,
	nested_function, notype_nested_function, if_prefix, lineno_stmt,
	lineno_label, label): Adjust.

2003-06-28  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (c_strlen): Add only_value argument.
	Handle COND_EXPR and COMPOUND_EXPR.
	(expand_builtin_strlen): Optimize also strlen (i++ ? "foo" : "bar").
	Adjust c_strlen callers.
	(expand_builtin_strcpy, expand_builtin_strncpy,
	expand_builtin_strcmp, expand_builtin_strncmp,
	expand_builtin_fputs, expand_builtin_sprintf,
	fold_builtin): Adjust c_strlen callers.

2003-06-28  Josef Zlomek  <zlomekj@suse.cz>

	* bb-reorder.c (find_traces_1_round): Do not send basic block
	to next round when we are in the last round.

2003-06-28  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* opts.c: Include tm_p.h.
	(handle_options): Make static.
	(decode_options): Copied from toplev.c.
	* opts.h (decode_options): New.
	* toplev.c (parse_options_and_default_flags): Move most to opts.c,
	some to...
	(general_init): ...here.
	(toplev_main): Use decode_options instead.
	* toplev.h (save_argc, save_argv): New.

2003-06-28  Kazu Hirata  <kazu@cs.umass.edu>

	* explow.c (find_next_ref): Remove.
	* rtl.h: Remove the prototype for find_next_ref.

2003-06-27  Roger Sayle  <roger@eyesopen.com>

	* config/alpha/alpha.md (anonymous define_split): Adjust emit_note
	call to match recent API change.

2003-06-27  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c (flag_debug_only_used_symbols): Delete redundant
	declaration.

	* c-format.c (check_format_string, get_constant)
	* cfgrtl.c (rtl_split_edge):
	Mark the definition static, matching the forward declaration.

2003-06-27  Gunther Nikl <gni@gecko.de>

	* unwind-c.c (PERSONALITY_FUNCTION): Delete duplicate define.

	PR target/11014
	* config/m68k/m68k.c (m68k_output_mi_thunk): Use correct assembly
	syntax for MIT / MOTOROLA.

	PR other/10240
	* configure.in: Removed $(XCFLAGS) from BUILD_CFLAGS for build != host.
	* configure: Rebuilt.

2003-06-27  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (mips_build_va_list): Make padding in
	va_list structure explicit to avoid -Wpadded warnings.

2003-06-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (SECONDARY_OUTPUT_RELOAD_CLASS): Define.
	* config/s390/s390.c (s390_secondary_output_reload_class): New function.
	* config/s390/s390-protos.h (s390_secondary_output_reload_class):
	Declare it.
	* config/s390/s390.md ("reload_outti", "reload_outdi",
	"reload_outdf"): New expanders.

	* config/s390/s390.md ("movti" + splitters): Handle non-offsettable
	memory operands as source.
	("movdi" + splitters): Likewise.
	("movdf" + splitters): Likewise.
	* config/s390/s390.c (s390_split_ok_p): New function.
	* config/s390/s390-protos.h (s390_split_ok_p): Declare it.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (force_to_mode): Replace the equality comparison
	of INTVALs with a pointer equality comparison.
	(simplify_comparison): Likewise.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* jump.c (rtx_renumbered_equal_p): Replace an expression that
	is known to be 0 with 0.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (expr_equiv_p): Replace expressions that are known to
	be 0 with 0.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* cse.c (fold_rtx): Replace the equality comparison of INTVALs
	with a pointer equality comparison.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* rtlanal.c (reg_mentioned_p): Return 0 earlier if REG and IN
	are known to be not equivalent.

2003-06-27  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (function_arg): Don't pass small aggregates
	in floating point registers.  Validate that we don't receive complex
	values here.  Use #elif.
	(return_in_memory, function_value): New.
	(alpha_va_arg): Handle complex values as two arguments.
	* config/alpha/alpha.h (RETURN_IN_MEMORY): Use return_in_memory.
	(FUNCTION_VALUE, LIBCALL_VALUE): Use function_value.
	(SPLIT_COMPLEX_ARGS): New.
	* config/alpha/alpha-protos.h: Update.

2003-06-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* ggc-page.c (inverse_table): Change type of mult to size_t.
	(compute_inverse): Compute inverse using size_t, not unsigned int.
	Compute inverse also for sizes larger than half a machine page.

Fri Jun 27 18:36:12 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_decl_compilation):  Only varpoolize argument
	when called before cgraph_optimize.

2003-06-27  Zack Weinberg  <zack@codesourcery.com>

	* config/darwin.h, config/elfos.h, config/i960/i960-coff.h
	* config/m68k/coff.h: ASM_FILE_START_FILE_DIRECTIVE should
	be TARGET_ASM_FILE_START_FILE_DIRECTIVE.

Fri Jun 27 17:41:16 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_node, cgraph_varpool_node): Avoid re-initializing
	of known_decls.

2003-06-27  Hans-Peter Nilsson  <hp@axis.com>

	* defaults.h (REGISTER_MOVE_COST): Define default here.
	* regclass.c: Don't define default REGISTER_MOVE_COST here.
	* reload.c, reload1.c: Ditto.

2003-06-27  Richard Earnshaw <rearnsha@arm.com>

	* flags.h: Really install previous change.

2003-06-27  Nathan Sidwell  <nathan@codesourcery.com>

	* rtl.h (emit_note): Remove FILE parameter.
	* emit-rtl.c (emit_line_note): Adjust emit_note call.
	(emit_note): Remove FILE parameter. Adjust.
	* builtins.c (expand_builtin_expect): Adjust emit_note call.
	* c-semantics.c (genrtl_scope_stmt): Likewise.
	(expand_stmt): Likewise.
	* cfglayout.c (reemit_insn_block_notes): Likewise.
	(duplicate_insn_chain): Likewise.
	* except.c (expand_eh_region_start, expand_eh_region_end,
	sjlj_emit_function_enter): Likewise.
	* explow.c (probe_stack_range): Likewise.
	* expr.c (emit_block_move_via_loop): Likewise.
	* function.c (init_function_start, expand_function_start,
	expand_function_end, thread_prologue_and_epilogue_insns): Likewise.
	* integrate.c (expand_inline_function, copy_insn_list): Likewise.
	* reg-stack.c (compensate_edge): Likewise.
	* reload1.c (reload): Likewise.
	* rtlanal.c (hoist_insn_to_edge): Likewise.
	* stmt.c (expand_fixup, expand_start_loop, expand_start_null_loop,
	expand_loop_continue_here, expand_end_loop, expand_continue_loop,
	expand_exit_loop_top_cond, expand_value_return,
	expand_start_bindings_and_block, expand_end_bindings,
	expand_decl_cleanup, expand_start_case): Likewise.
	* unroll.c (copy_loop_body
	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_eh_toc_restore,
	rs6000_emit_allocate_stack, rs6000_output_function_prologue,
	rs6000_output_function_epilogue, rs6000_output_mi_thunk): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.

2003-06-27  Nathan Sidwell  <nathan@codesourcery.com>

	* c-tree.h (grokfield): Remove unused filename and line parameters.
	* c-decl.c (grokfield): Remove unused filename and line	parameters.
	* c-parse.in (component_decl): Adjust field grokking rules, adjust
	grokfield calls.
	(component_declarator): Likewise.
	(component_notype_declarator): Likewise.
	* objc/objc-act.c (build_module_descriptor): Adjust grokfield
	calls.
	(build_protocol_template, build_method_prototype_list_template,
	build_method_prototype_template, build_category_template,
	build_selector_template, build_class_template,
	build_super_template, build_ivar_template,
	build_ivar_list_template, build_method_list_template,
	build_method_template, add_instance_variable): Likewise.

2003-06-27  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (do_jump_if_equal): Return 0 earlier if OP1 and
	OP2 are known to be not equivalent.

2003-06-26  Devang Patel <dpatel@apple.com>

	* final.c (debug_flush_symbol_queue): New function.
	(debug_queue_symbol): New function.
	(debug_free_queue): New function.
	(debug_nesting): New variable.
	(symbol_queue): New variable.
	(symbol_queue_index): Same.
	(symbol_queue_size): Same.
	* debug.h (debug_flush_symbol_queue): New.
	(debug_queue_symbol): New.
	(debug_free_queue): New.
	(debug_nesting): New.
	(symbol_queue_index): New.
	* dbxout.c (DBXOUT_DECR_NESTING): New macro.
	(DBXOUT_DECR_NESTING_AND_RETURN): New macro.
	(dbxout_init): Delay symbol output.
	(dbxout_global_decl): Save, set and reset TREE_USED bit around
	dbxout_symbol() call.
	(dbxout_begin_function): Same.
	(dbxout_finish): Free symbol queue.
	(dbxout_type): Put appropriate symbols in queue.
	(dbxout_symbol): Put info for symbol's type in queue.
	Decrement/Increment nesting counts flush symbol queue appropriately.
	(dbxout_parms): Increment dbxout nesting.
	(dbxout_reg_parms): Same.
	* flags.h (flag_debug_only_used_symbols): New.
	* toplev.c (flag_debug_only_used_symbols): New variable.
	(lang_independent_options): Add entries for new option
	-feliminate-unused-debug-symbols.
	* common.opt: Add entry for -feliminate-unused-debug-symbols.
	* opts.c (common_handle_options): Same.
	* config/rs6000/darwin.h (CC1_SPEC): Interpret -gused as
	-feliminate-unused-debug-symbols.
	* doc/invoke.texi (Debugging Options): Document
	-feliminate-unused-debug-symbols.

2003-06-26  Roger Sayle  <roger@eyesopen.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_sprintf): Use c_getstr and strlen to
	obtain the format string instead of using TREE_STRING_POINTER and
	TREE_STRING_LENGTH.  Only optimize sprintf(dst,"%s",src) when the
	return value is unused or the length of src is a known constant.

2003-06-26  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (REGISTER_NAMES): R0 is really AP.

2003-06-26  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_expand_call): Don't add ar.pfs for sibcalls.
	(ia64_split_call): Only load descriptor for GP register inputs.
	(ia64_expand_epilogue): Check current_frame_info.mask not
	current_function_is_leaf to restore ar.pfs.

2003-06-26  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (try_split): Append to new CALL_INSN_FUNCTION_USAGE
	instead of replacing it.

2003-06-26  Richard Henderson  <rth@redhat.com>

	* flow.c (propagate_one_insn): Kill function return value
	registers across tail calls.

	* flow.c (propagate_one_insn): Preserve live-at-end registers
	across tail calls.

2003-06-26  J"orn Rennecke <joern.rennecke@superh.com>

	* reload.c (can_reload_into): New function.
	(push_reload): Use it.

2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (compute_a_rotate_length): Fix the
	references to the amount of a rotation.

2003-06-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/sh/coff.h: Don't include dbxcoff.h.
	* config.gcc: List it here.

2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* postreload.c (reload_cse_simplify_set): Call cselib_lookup
	earlier.  Don't check if SRC is a constant.

2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* Makefile.in (OBJS): Add postreload.o.
	Remove cselib.h from the dependency list for reload1.o.
	Add a dependency list for postreload.o.
	* reload.h: Change the comment for the prototype of
	reload_cse_regs.
	* reload1.c: Don't include cselib.h.
	(reload_cse_regs): Move to postreload.c
	(reload_cse_regs_1): Likewise.
	(reload_cse_noop_set_p): Likewise.
	(reload_cse_simplify_set): Likewise.
	(reload_cse_simplify_operands): Likewise.
	(RELOAD_COMBINE_MAX_USES): Likewise.
	(reload_combine_ruid): Likewise.
	(LABEL_LIVE): Likewise.
	(reload_combine): Likewise.
	(reload_combine_note_use): Likewise.
	(reload_combine_note_store): Likewise.
	(reg_set_luid): Likewise.
	(reg_offset): Likewise.
	(reg_base_reg): Likewise.
	(reg_mode): Likewise.
	(move2add_luid): Likewise.
	(move2add_last_label_luid): Likewise.
	(MODES_OK_FOR_MOVE2ADD): Likewise.
	(reload_cse_move2add): Likewise.
	(move2add_note_store): Likewise.
	(reload_cse_simplify): Likewise.
	* postreload.c: New.

2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.c (final_prescan_insn): Remove support for
	-mrtl.
	* config/avr/avr.h (MASK_RTL_DUMP): Remove.
	(TARGET_RTL_DUMP): Likewise.
	(TARGET_SWITCHES): Remove -mrtl.

2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Change emit_a_rotate to
	output_a_rotate.  Add a prototype for compute_a_rotate_length.
	* config/h8300/h8300.c (emit_a_rotate): Change to
	output_a_rotate.
	(compute_a_rotate_length): New.
	(h8300_adjust_insn_length): Remove.
	* config/h8300/h8300.h (ADJUST_INSN_LENGTH): Remove.
	* config/h8300/h8300.md (adjust_length): Remove.
	(*rotlqi3_1): Use output_a_rotate and compute_a_rotate_length.
	(*rotlhi3_1): Likewise.
	(*rotlsi3_1): Likewise.

2003-06-26  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin_mathfn): Always stabilize the argument
	list against re-evaluation.  If expand_unop fails, call expand_call
	with the stabilized argument list rather than return NULL_RTX.
	(expand_builtin_mathfn2): Likewise, always stabilize the argument
	list, and call expand_call ourselves if expand_binop fails.

2003-06-26  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11210
	* fold-const (decode_field_reference): Strip only NOPs that
	don't affect the sign.

2003-06-26  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>

	* gcc/config/sh/sh.md (push_fpscr): Enable for TARGET_SH2E.
	(pop_fpscr, fpu_switch): Likewise.

2003-06-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* value-prof.c: New.
	* value-prof.h: New.
	* Makefile.in (value-prof.o): New.
	(LIBGCOV): Add _gcov_merge_single and _gcov_merge_delta
	(profile.o): Add value-prof.h and tree.h dependency.
	* flags.h (flag_profile_values): Declare.
	* gcov-io.h (GCOV_COUNTERS, GCOV_COUNTER_NAMES, GCOV_MERGE_FUNCTIONS):
	Add new counters.
	(GCOV_COUNTER_V_INTERVAL, GCOV_COUNTER_V_POW2, GCOV_COUNTER_V_SINGLE,
	GCOV_COUNTER_V_DELTA): New counter sections.
	(__gcov_merge_single, __gcov_merge_delta): Declare.
	* flow.c (mark_used_regs): Set subregs_of_mode only when the
	structure is initialized.
	* libgcov.c (__gcov_merge_single, __gcov_merge_delta): New functions.
	* profile.c: Include value-prof.h and tree.h.
	(gen_interval_profiler, gen_pow2_profiler, gen_one_value_profiler,
	gen_const_delta_profiler, instrument_values): New static functions.
	(get_exec_counts): Fix comment.
	(branch_prob): Invoke instrument_values.
	* toplev.c (flag_profile_values): New flag.
	* doc/invoke.texi (-fprofile-values): Document.

2003-06-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (cfgrtl.o): Add expr.h dependency.
	* cfgrtl.c: Include expr.h.
	(mark_killed_regs, safe_insert_insn_on_edge): New
	functions.
	* config/i386/i386.h (AVOID_CCMODE_COPIES): Define.
	* basic-block.h (safe_insert_insn_on_edge): Declare.

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

	* c-opts.c (missing_arg): Make non-static.
	(c_common_handle_option): Don't check for missing arguments.
	* opts.c (handle_option): Check for missing arguments.

2003-06-26  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md (power4-veccomplex): Correct latency.

2003-06-25  Loren James Rittle  <ljrittle@acm.org>

	* configure.in (ld_vers): Portability [sed].
	* configure: Regenerate with autoconf213.

2003-06-25  H.J. Lu <hongjiu.lu@intel.com>

	* doc/extend.texi: Document new builtin functions for Intel
	Prescott New Intrunctions.

	* doc/invoke.texi: Document new command-line options, -mpni and
	-mno-pni, for Intel Prescott New Intrunctions.

	* config.gcc (extra_headers): Add pmmintrin.h for i[34567]86-*-*.

	* config/i386/i386.c (override_options): Turn on MASK_SSE2
	for -mpni. Turn on MASK_SSE for -msse2.
	(bdesc_2arg): Add PNI builtins with 2 args.
	(bdesc_1arg): Add PNI builtins with 1 arg.
	(ix86_init_mmx_sse_builtins): Handle PNI builtins.
	(ix86_expand_builtin): Likewise.

	* config/i386/i386.h (MASK_3DNOW, MASK_3DNOW_A,
	MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT,
	MASK_TLS_DIRECT_SEG_REFS): Renumbered.
	(TARGET_PNI): New.
	(TARGET_SWITCHES): Don't enable MASK_SSE for -msse2 here. Add
	-mpni and -mno-pni.
	(TARGET_CPU_CPP_BUILTINS): Defined __PNI__ for PNI.
	(ix86_builtins): Add PNI builtins.
	(config/i386/i386.md): Add PNI patterns.

	* config/i386/pmmintrin.h: New file.

2003-06-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (call): Fix the insn lengths.
	(call_value): Likewise.

Thu Jun 26 00:13:35 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* c-common.c (handle_used_attribute): Use mark_referenced.
	* varasm.c (mark_referenced): Break out from ...
	(assemble_name): ... here.
	* tree.h (mark_referenced): Declare.

2003-06-25  Wolfgang Bangerth  <bangerth@dealii.org>

	* gccbug.in: Add PCH to list of categories.

2003-06-25 Martin Schaffner <schaffner@gmx.li>

	* cppfiles.c: Clarify comments.
	* cpphash.h: Likewise.
	* cpplib.h: Likewise.
	* cppmacro.c: Likewise.
	* mkdeps.h: Likewise.

2003-06-25  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (complain_wrong_lang, write_langs): Remove.
	(c_common_handle_option): Complaints about wrong language are
	handled in opts.c now.
	* opts.c (complain_wrong_lang, write_langs, handle_options): New.
	(find_opt): Fix thinko.
	(handle_option): Update prototype.  Complain about switches for
	a different front end.
	* opts.h (lang_names, handle_options): New.
	(handle_option): Remove.
	* opts.sh: Write out language names array.
	* toplev.c (parse_options_and_default_flags): Use handle_options.

2003-06-25  H.J. Lu <hongjiu.lu@intel.com>

	* config/i386/i386.c (MASK_SSE1): Removed.
	(MASK_SSE164): Removed.
	(MASK_SSE264): Removed.
	(bdesc_2arg): Replace MASK_SSE1 with MASK_SSE. Replace
	MASK_SSE164 with MASK_SSE | MASK_64BIT. Replace MASK_SSE264
	with MASK_SSE2 | MASK_64BIT.
	(bdesc_1arg): Likewise.
	(ix86_init_mmx_sse_builtins): Likewise.

	* config/i386/i386.h (TARGET_SSE): Remove MASK_SSE2.
	(TARGET_SWITCHES): Enable both MASK_SSE and MASK_SSE2 for
	-msse2.

2003-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* hwint.h (HOST_WIDE_INT_PRINT, HOST_WIDE_INT_PRINT_C): New macros.
	(HOST_WIDE_INT_PRINT_DEC_SPACE,
	HOST_WIDE_INT_PRINT_UNSIGNED_SPACE,
	HOST_WIDEST_INT_PRINT_DEC_SPACE,
	HOST_WIDEST_INT_PRINT_UNSIGNED_SPACE): Delete.
	(HOST_WIDE_INT_PRINT_DEC, HOST_WIDE_INT_PRINT_DEC_C,
	HOST_WIDE_INT_PRINT_UNSIGNED, HOST_WIDE_INT_PRINT_HEX): Define in
	terms of HOST_WIDE_INT_PRINT and possibly HOST_WIDE_INT_PRINT_C.

	* final.c (asm_fprintf): Use HOST_WIDE_INT_PRINT.
	* ra-debug.c (dump_static_insn_cost): Likewise.

2003-06-26  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h (BIGGEST_FIELD_ALIGNMENT): Define instead
	of ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.
	Replace occurances of '???' with 'XXX' incase they are
	mistaken for trigraphs.
	(THUMB_PRINT_OPERAND_ADDRESS): abort if a compound address
	does not have a register for the first operand.

2003-06-25	Dhananjay Deshpande <dhananjayd@kpitcummins.com>

	* config/sh/sh.c (sh_register_move_cost):
	Add case for moving between MAC_REGS.

2003-06-25  Zack Weinberg  <zack@codesourcery.com>

	PR 10178
	* langhooks.h (struct lang_hooks): Add no_body_blocks bool.
	* langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): New; default false.
	* c-lang.c, objc/objc-lang.c: Override LANG_HOOKS_NO_BODY_BLOCKS
	to true.
	* stmt.c (is_body_block): If lang_hooks.no_body_blocks, always
	return 0.

2003-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (bt-load.o): Depend on $(TM_P_H).
	* bt-load.c: Include "tm_p.h".

2003-06-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (compute_mov_length): Adjust for the
	new optimization.
	* config/h8300/h8300.md (*movsi_h8300): Optimize the load of
	an SImode constant whose upper and lower are the same.

Wed Jun 25 11:31:59 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* varasm.c (assemble_name): Mark needed variables even when
	global info is ready.

2003-06-24  Jerry Quinn  <jlquinn@optonline.net>

	PR other/11280
	* gcc/doc/invoke.texi (Optimization Options): Remove -Os from
	-freorder-functions description.

2003-06-25  Josef Zlomek  <zlomekj@suse.cz>

	* dwarf2out.c (gen_field_die): Return if type of decl is error mark.

2003-06-25  Neil Booth  <neil@daikokuya.co.uk>

	* opts.c (common_handle_option): Add missing break;s.

2003-06-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	compute_mov_length.
	* config/h8300/h8300.c (compute_mov_length): New.
	* config/h8300/h8300.md (*movqi_h8300): Use it.
	(*movqi_h8300hs): Likewise.
	(movstrictqi): Likewise.
	(*movhi_h8300): Likewise.
	(*movhi_h8300hs): Likewise.
	(movstricthi): Likewise.
	(*movsi_h8300): Likewise.
	(*movsf_h8300): Likewise.
	(*movsi_h8300hs): Likewise.
	(*movsf_h8300hs): Likewise.

2003-06-24  Kazu Hirata  <kazu@cs.umass.edu>

	* jump.c (next_nondeleted_insn): Remove.
	* rtl.h: Remove the prototype for next_nondeleted_insn.

2003-06-24  Roger Sayle  <roger@eyesopen.com>

	PR optimization/11311
	* builtins.c (powi_cost): Fix typo.  The number of multiplications
	required is the number to reduce the argument, result, plus the
	cost of calculating the residual, val [not n, the original value].

2003-06-24  Roger Sayle  <roger@eyesopen.com>

	* config/alpha/osf5.h (TARGET_C99_FUNCTIONS): Define.

2003-06-24  Richard Henderson  <rth@redhat.com>
	    (blame to: Loren James Rittle  <ljrittle@acm.org>)

	* real.h (ieee_extended_intel_96_round_53_format): New.
	* real.c (ieee_extended_intel_96_round_53_format): New.
	* config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Use it
	for XFmode and TFmode.

2003-06-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (4 anonymous patterns): Give internal
	names.
	(movsi_h8300): Change the name to *movsi_h8300.
	(movsi_h8300hs): Change the name to *movsi_h8300hs.
	(movsf_h8300): Change the name to *movsf_h8300.
	(movsf_h8300hs): Change the name to *movsf_h8300hs.

2003-06-24  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_strcpy): Don't evaluate side-effects in
	src twice.

2003-06-24  J"orn Rennecke <joern.rennecke@superh.com>

	Back out these patches:
	 2003-06-02  J"orn Rennecke <joern.rennecke@superh.com>
	  * sh.h (OLD_ARG_MODE): New macro.
	  (FUNCTION_ARG_ADVANCE, FUNCTION_ARG_PASS_BY_REFERENCE): Use it.
	  (FUNCTION_ARG_1): Break out of:
	  (FUNCTION_ARG).  Use OLD_ARG_MODE.
	 2003-06-06  J"orn Rennecke <joern.rennecke@superh.com>
	  * sh.h (FUNCTION_ARG_1): Consistently use NEW_MODE for the mode
	  of the generated register.

	* sh.h (FUNCTION_ARG_SCmode_WART): Define.
	(FUNCTION_ARG): Unless FUNCTION_ARG_SCmode_WART is defined and
	an even number of floating point regs are in use, use the same
	sequence of argument passing registers for SCmode as would be
	used for two SFmode values.
	* sh.c (sh_va_arg): If FUNCTION_ARG_SCmode_WART is defined,
	swap real / imaginary parts in incoming SCmode values passed
	in registers.

2003-06-24  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR target/11260
	* config/alpha/alpha.md (sqrtdf2): Fix operand substitution.

Tue Jun 24 18:49:33 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cgraph.o): Depend on output.h, not depend on
	tree-inline.h
	* cgraph.c: Do not include tree-inline.h; include output.h
	(known_fns): Rename to ...
	(known_decls): ... this one; update all uses.
	(cgraph_varpool_hash): New static variable.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): New global
	variables.
	(cgraph_varpool_hash_node, eq_cgraph_varpool_node, cgraph_varpool_node,
	cgraph_varpool_node_for_identifier, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
	New functions.
	* cgraph.h (cgraph_varpool_node): New structure.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): Declare.
	(cgraph_varpool_node, cgraph_varpool_node_for_identifier,
	cgraph_varpool_finalize_decl, cgraph_varpool_mark_needed_node,
	cgraph_varpool_asemble_pending_decls): Declare.
	* cgraphunit.c (record_call_1): Notice variable references.
	(cgraph_finalize_compilation_unit): Assemble pending variables.
	* toplev.c (wrapup_global_declarations): Use varpool.
	(compile_file): Assemble pending declarations.
	(rest_of_decl_compilation): Use varpool in unit-at-a-time mode.
	* varasm.c (assemble_name): Notice varpool references.

Tue Jun 24 13:52:11 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): New macro.
	* langhooks.h (lang_hooks_for_decls): Add prepare_assemble_variable.
	* varasm.c (assemble_variable): Call prepare_assemble_variable.

2003-06-23  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin): Use expand_builtin_pow to expand
	calls for pow, powf, powl and their __builtin_ variants.
	(expand_builtin_pow): If the second argument is a constant
	integer and compiling with -ffast-math, use expand_powi to
	generate RTL if powi_cost is less than POWI_MAX_MULTS.
	(powi_cost): New function to return the number of multiplications
	necessary to evaluate an Nth power, for integer constant N.
	(expand_powi): New function to expand the RTL for evaluating
	the Nth power of a floating point value, for integer constant N.

	* doc/tm.texi (POWI_MAX_MULTS): Document new target macro.

Mon Jun 23 23:07:35 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_nodes_queue): Declare.
	(eq_node): Take identifier as p2.
	(cgraph_node): Update htab_find_slot_with_hash call.
	(cgraph_node_for_identifier): New.
	(cgraph_mark_needed_node): Move here from cgraphunit.c.
	* cgraph.h (cgraph_nodes_queue): Declare.
	(cgraph_node_for_identifier): Declare.
	* cgraphunit.c (cgraph_finalize_function): Collect entry points here
	instead of in cgraph_finalize_compilation_unit; constructors and
	destructors are entry points.
	(cgraph_finalize_compilation_unit): Reorganize debug outout;
	examine nested functions after lowerng; call collect_functions hook.
	(cgraph_mark_local_functions): DECL_COMDAT functions are not local.
	(cgraph_finalize_compilation_unit): Do not collect entry points.
	* varasm.c: Include cgraph.h
	(assemble_name): Mark referenced identifier as needed.

	* cgraphunit.c (record_call_1): Use get_callee_fndecl.

2003-06-23  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (x86_output_mi_thunk): Don't pass MEM to %P0,
	just SYMBOL_REF.
	* config/s390/s390.c (s390_output_mi_thunk): Avoid .plt in -m31
	mode, as it requires pic register loaded.

	* varasm.c (resolve_unique_section): Remove prototype.  No longer
	static.
	* tree.h (resolve_unique_section): New prototype.

2003-06-23  Andreas Schwab  <schwab@suse.de>

	PR debug/9905
	* dwarf2out.c (loc_descriptor_from_tree): Handle MODIFY_EXPR by
	recursing through first argument.

2003-06-23  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog.1: Fix a typo.
	* cfgrtl.c: Fix comment typos.
	* dwarf2out.c: Likewise.
	* expmed.c: Likewise.
	* genrecog.c: Likewise.
	* jump.c: Likewise.
	* rtlanal.c: Likewise.
	* ssa-dce.c: Likewise.
	* toplev.c: Likewise.

2003-06-23  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/extend.texi: Fix typos.
	* doc/md.texi: Likewise.
	* doc/tm.texi: Likewise.

2003-06-23  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Fix comment formatting.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-format.c: Likewise.
	* coverage.c: Likewise.
	* cpplib.h: Likewise.
	* cpppch.c: Likewise.
	* dbxout.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* profile.c: Likewise.
	* real.h: Likewise.
	* sched-deps.c: Likewise.

2003-06-23  Roger Sayle  <roger@eyesopen.com>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add a note on testing and
	remove duplicates from testers list.

2003-06-23  Nick Clifton  <nickc@redhat.com>

	* read-rtl.c (read_braced_string): Check for EOF.  If
	encountered issue an error message.

2003-06-23  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Document dump options, dT and dW.

2003-06-23  Kazu Hirata  <kazu@cs.umass.edu>

	* genrecog.c (pred_table): Remove the entry for
	mode_independent_operand.
	* recog.c (next_insns_test_no_inequality): Remove.
	(mode_independent_operand): Likewise.
	* recog.h: Remove the prototype for mode_independent_operand.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_simode_bld): Use rotxl.l to
	store into bit 0.
	* config/h8300/h8300.md (*extzv_1_r_h8300hs): Change cc of the
	second alternative to set_znv.
	(*extzv_1_r_inv_h8300hs): Likewise.

2003-06-23  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (in_tree_gas): Find out here whether GAS is ELF,
	set in_tree_gas_is_elf accordingly.
	(in_tree_ld): Find out whether LD emulation is ELF, set
	in_tree_ld_is_elf accordingly.
	(gcc_cv_as_subsections, gcc_cv_as_hidden, gcc_cv_as_leb128)
	(gcc_cv_as_eh_frame, gcc_cv_as_shf_merge)
	(gcc_cv_as_dwarf2_debug_line, gcc_cv_as_gdwarf2_flag)
	(gcc_cv_as_gstabs_flag): Use $in_tree_gas_is_elf instead of
	grepping gas/Makefile.
	(gcc_cv_ld_ro_rw_mix, gcc_cv_ld_eh_frame_hdr, gcc_cv_ld_pie): Use
	$in_tree_ld_is_elf instead of grepping ld/Makefile.
	* configure: Regenerate.

2003-06-22  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_mathfn_2): Use tree_cons to build
	up the stabilized argument list, not build_tree_list.
	(expand_builtin_strcpy): Construct new argument list manually
	instead of using chainon to modify the original argument list.
	(expand_builtin_stpcpy): Construct new argument list manually
	instead of using copy_list and chainon.
	(expand_builtin_sprintf): New function.  Optimize calls to
	sprintf when the format is "%s" or doesn't contain a '%'.
	(expand_builtin): Expand BUILT_IN_SPRINTF using the new function
	expand_builtin_sprintf.

2003-06-22  Andreas Schwab  <schwab@suse.de>

	* function.c (set_insn_locators): Mark as unused.

2003-06-22  Neil Booth  <neil@daikokuya.co.uk>

	* common.opt: Add -finline-limit.
	* opts.c (common_handle_options): Handle it.
	* opts.sh: Temporary kludge for -finline-limit.
	* toplev.c (decode_f_option, independent_decode_option): Die.
	(parse_options_and_default_flags): No independent_decode_option.

2003-06-22  Andreas Jaeger  <aj@suse.de>

	* calls.c (emit_call_1): Readd lost ATTRIBUTE_UNUSED.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Document dumps, .btl, .cfg, and .bypass.

2003-06-22  Andreas Schwab  <schwab@suse.de>

	* doc/invoke.texi: Remove leading `-' from options in index.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* bt-load.c: Follow spelling conventions.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (emit_move_insn_1): Fix a comment typo.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Alphabetize dump options.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Remove a duplicate -dk.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Update dump file names.

2003-06-22  Zack Weinberg  <zack@codesourcery.com>

	* config/i370/i370.c, config/i370/i370.h: Use HOST_CHARSET_ASCII
	and HOST_CHARSET_EBCDIC, not HC_ASCII and HC_EBCDIC.

2003-06-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/rtl.texi: Fix the @findex for pre_modify.

2003-06-22  Andreas Jaeger  <aj@suse.de>

	* caller-save.c: Convert to ISO C90.
	* calls.c: Likewise.
	* cfg.c: Likewise.
	* cfganal.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfghooks.c: Likewise.
	* cfglayout.c: Likewise.
	* cfglayout.h: Likewise.
	* cfgloop.c: Likewise.
	* cfgloop.h: Likewise.
	* cfgloopanal.c: Likewise.
	* cfgloopmainip.c: Likewise.
	* cfgrtl.c: Likewise.

2003-06-22  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (BIGGEST_ALIGNMENT): Use TARGET_REALLY_IWMMXT for selecting
	64-bit alignment.

2003-06-22  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (all call_value patterns): Remove register constraints on
	value operand.

2003-06-22  Neil Booth  <neil@daikokuya.co.uk>

	* common.opt: More -f switches.
	* opts.c (common_handle_options): Handle them.
	* toplev.c (time_report): Make extern.
	(f_options): USe flag_dummy.
	(decode_f_option): No need to use f_options now.
	* toplev.h (flag_cprop_registers, flag_ssa, flag_ssa_ccp,
	flag_ssa_dce, time_report, flag_new_regalloc): Make extern.

2003-06-22  Andreas Jaeger  <aj@suse.de>

	* c-lex.c: Convert to ISO C90.
	* c-objc-common.c: Likewise.
	* c-opts.c: Likewise.
	* c-pch.c: Likewise.
	* c-ppoutput.c: Likewise.
	* c-pragma.h: Likewise.
	* c-pretty-print.c: Likewise.
	* c-pretty-print.h: Likewise.
	* c-semantics.c: Likewise.
	* c-tree.h: Likewise.
	* c-typeck.c: Likewise.

	* c-lang.c: Convert to ISO C90.

2003-06-22  Neil Booth  <neil@daikokuya.co.uk>

	* opts.c (find_opt): Fix to always guarantee a find of a
	switch with joined parameter.
	* opts.h (struct cl_option): New member back_chain.
	* opts.sh: Update to calculate and add back_chain member.

2003-06-22  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* diagnostic.h (output_host_wide_integer): Declare.
	* diagnostic.c (output_long_long_decicaml): New function.
	(output_host_wide_integer): Likewise.
	(output_format): Use them.  Handle "%ll" and "%w".

2003-06-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (*-*-netbsd*): Add t-libgcc-pic to tmake_file.

2003-06-21  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (gcc_AC_C_CHARSET): Delete.
	* configure.in: Don't use gcc_AC_C_CHARSET.
	* configure, config.in: Regenerate.
	* config/i370/i370.c, config/i370/i370.h: Use
	(HOST_CHARSET == HC_EBCDIC) or (HOST_CHARSET == HC_ASCII)
	instead of HOST_EBCDIC or !HOST_EBCDIC.  Clarify comments a tad.

2003-06-21  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* common.opt: New switches.
	* opts.c: Include diagnostic.h.
	(common_handle_option): Handle new switches.
	* toplev.c (flag_loop_optimize, flag_crossjumping, flag_if_conversion,
	flag_if_conversion2, flag_delete_null_pointer_checks,
	flag_rerun_cse_after_loop): Make extern.
	(flag_dummy): New.
	(f_options): Update to use flag_dummy for moved options.
	(decode_f_option): Some switches moved to opts.c.
	* toplev.h (flag_loop_optimize, flag_crossjumping, flag_if_conversion,
	flag_if_conversion2, flag_delete_null_pointer_checks,
	flag_rerun_cse_after_loop, flag_keep_static_consts, flag_peel_loops,
	flag_tracer, flag_thread_jumps, flag_unroll_loops,
	flag_unroll_all_loops, flag_unswitch_loops): New.

Sat Jun 21 13:41:00 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_va_arg): Fix allocation of temporary slot.

2003-06-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	same_cmp_preceding_p.
	* config/h8300/h8300.c (same_cmp_preceding): New.
	* config/h8300/h8300.md: Extend peephole2's that transform
	compare:SI into shorter sequences so that they can deal with
	signed comparisons.

2003-06-21  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Use Windows instead of Win32.

	Update Andreas Jaeger's entry.

	Merge the two entries of Kaveh Ghazi, David Edelsohn, and
	Loren J. Rittle.

2003-06-21  Nathanael Nerode  <neroden@gcc.gnu.org>

	* mkconfig.sh: Add multiple inclusion guards to generated headers.

2003-06-20  Neil Booth  <neil@daikokuya.co.uk>

	* c-decl.c (store_parm_decls): Make saved_warn_shadow boolean.
	* common.opt: Add remaining -W options and -g.
	* diagnostic.c (warnings_are_errors): Remove.
	* flags.h: Make most warning flags boolean.
	* opts.c (common_handle_option): Handle remaining -W options, and -g.
	Move many warning flags from toplev.c, making them boolean.
	* toplev.c: Remove many warning flags.
	(decode_W_option): Remove.
	(decode_g_option): Make extern.  Error on unknown switch.
	(lang_independent_W_options): Use warn_dummy.
	(independent_decode_option): Just handle -f switches now.
	* toplev.h (decode_g_option): New.

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

	PR/11092
	* config/rs6000/rs6000.h (LEGITIMATE_CONSTANT_P): Adjust for
	vectors.

2003-06-20  Kelley Cook  <kelleycook@wideopenwest.com>

	* opts.sh: Tweak awk script for portability.

2003-06-20  Mark Mitchell  <mark@codesourcery.com>

	PR c++/10888
	* tree-inline.c (expand_call_inline): Do not warn about failing to
	inline functions declared in system headers.
	* doc/invoke.texi (-Winline): Expand on documentation.

2003-06-20  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_file_start): Disable
	file_start_file_directive for ELF and not MDEBUG.

2003-06-20  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (ROUND_TYPE_ALIGN): Remove.

2003-06-20  Richard Henderson  <rth@redhat.com>

	* hooks.c (hook_int_void_no_regs): Rename from
	hook_reg_class_void_no_regs; change return type.
	* hooks.h: Update.
	* target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Update.
	* target.h (branch_target_register_class): Change return type to int.
	Add documentation.
	* config/sh/sh.c (sh_target_reg_class): Change return type.
	* doc/tm.texi (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.

2003-06-20  Andreas Tobler <toa@pop.agri.ch>

	* c-format.c: Change _Bool to bool reverting part of the last
	patch.

2003-06-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* som.h (ASM_OUTPUT_SOURCE_LINE): Use targetm.strip_name_encoding to
	strip name encoding.

2003-06-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_as_gstabs_flag): Disable if assembler warns.
	* configure: Regenerate.
	Fixes PR driver/9362.

2003-06-20  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (alpha_file_start): Fix typo.

2003-06-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/mips.h (PUT_SDB_FUNCTION_END): Pass 0 as third arg
	to ASM_OUTPUT_SOURCE_LINE.

2003-06-20  Daniel Egger  <degger@fhm.edu>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Building): Correct and improve statement
	about parallel builds.

2003-06-20  Andreas Jaeger  <aj@suse.de>

	* c-common.c: Change _Bool to bool reverting part of the last
	patch.

2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (expand_function_end): Remove all parameters.
	* function.c (expand_function_end): Remove all parameters.
	Use input_location. Never expand_end_bindings.
	* c-decl.c (c_expand_body_1): Adjust expand_function_end call.
	* coverage.c (create_coverage): Likewise.

2003-06-20  Nick Clifton  <nickc@redhat.com>

	* doc/extend.texi (ARM Built-in Functions): New node.  Document
	ARM builtin functions for iWMMXt support.

2003-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (--with-gnu-as): Mention SPARC/Solaris and
	SPARC64/Solaris as platforms where --with-gnu-as makes a difference.
	(--with-as): Add @anchor.
	(--with-gnu-ld): Fix typo.
	(--with-ld): Add @uref to --with-as.

2003-06-19  Zack Weinberg  <zack@codesourcery.com>

	* doc/tm.texi: Uniformly use @defmac for macros, rather than
	@table items.  Minor formatting and editorial corrections.

2003-06-20  Neil Booth  <neil@daikokuya.co.uk>

	* line-map.c, line-map.h: Convert to ISO prototypes.

2003-06-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcse.c (store_killed_in_insn): Fix.

2003-06-19  Zack Weinberg  <zack@codesourcery.com>

	* target.h (asm_out.file_start, file_start_app_off,
	file_start_file_directive): New hooks.
	* target-def.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
	TARGET_ASM_FILE_START_APP_OFF, TARGET_ASM_FILE_START):
	New hook-definition macros.
	* doc/tm.texi: Document new hooks; remove docs of ASM_FILE_START.
	* varasm.c (default_file_start): New.
	* output.h: Prototype it.
	* toplev.c (init_asm_output): Use targetm.asm_out.file_start.
	* system.h: Poison ASM_FILE_START.

	* config/alpha/alpha.c (alpha_write_verstamp): Delete.
	(alpha_file_start): New, define if !TARGET_ABI_UNICOSMK.
	(unicosmk_asm_file_start): Rename unicosmk_file_start,
	make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_END,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set as appropriate.
	* config/alpha/unicosmk.h: Don't define ASM_FILE_START nor
	TARGET_ASM_FILE_END.  Remove reference to ASM_FILE_START in
	comment.
	* config/arc/arc.c (arc_asm_file_start): Rename
	arc_file_start, take no arguments, make static.
	(TARGET_ASM_FILE_START): Set it.
	* config/arm/arm.c (aof_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it, when appropriate.
	* config/arm/coff.h, config/arm/elf.h:
	Set TARGET_ASM_FILE_START_APP_OFF to true.
	* config/avr/avr.c (asm_file_start): Rename avr_file_start,
	take no arguments, make static.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/c4x/c4x.c (c4x_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/cris/cris.c (cris_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/dsp16xx/dsp16xx.c (coff_dsp16xx_file_start): Rename
	dsp16xx_file_start, make static.
	(luxworks_dsp16xx_file_start): Delete.
	(TARGET_ASM_FILE_START): Set it.
	* config/h8300/h8300.c (asm_file_start): Rename
	h8300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/i370/i370.c (i370_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.c (x86_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.h (X86_FILE_START_VERSION_DIRECTIVE,
	X86_FILE_START_FLTUSED): New macros, default to false.
	* config/i386/i386-interix.h: Override X86_FILE_START_FLTUSED to 1.
	* config/i386/sysv4.h, config/i386/sco5.h: Override
	X86_FILE_START_VERSION_DIRECTIVE to true.
	* config/ia64/ia64.c (ia64_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	(emit_safe_across_calls): Take no arguments.
	* config/ia64/ia64.md: Update to match.
	* config/m32r/m32r.c (m32r_asm_file_start): Rename
	m32r_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Rename
	m68hc11_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	(print_options): Delete.
	* config/m68k/m68k.c (m68k_hp320_file_start): New static function.
	(TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/m68k/hp320.h: Set TARGET_ASM_FILE_START to
	m68k_hp320_file_start.
	* config/mips/mips.c (iris6_asm_file_start, mips_asm_file_start):
	Make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mmix/mmix.c (mmix_asm_file_start): Rename
	mmix_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mn10300/mn10300.c (asm_file_start): Rename
	mn10300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/ns32k/ns32k.c (TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/pa/pa.c (pa_file_start_level, pa_file_start_space,
	pa_file_start_file, pa_file_start_mcount, pa_elf_file_start,
	pa_som_file_start, pa_linux_file_start, pa_hpux64_gas_file_start,
	pa_hpux64_hpas_file_start): New static functions.
	* config/pa/elf.h: Set TARGET_ASM_FILE_START to pa_elf_file_start.
	* config/pa/pa-linux.h: Set TARGET_ASM_FILE_START to
	pa_linux_file_start.
	* config/pa/pa64-hpux.h: Set TARGET_ASM_FILE_START to
	pa_hpux64_gas_file_start or pa_hpux64_hpas_file_start, as
	appropriate.
	* config/pa/som.h: Set TARGET_ASM_FILE_START to pa_som_file_start.
	* config/rs6000/rs6000.c: Include xcoffout.h when TARGET_XCOFF.
	(rs6000_file_start): Make static, take no arguments.  Reset
	default_cpu under certain conditions.
	(rs6000_xcoff_file_start): New function.
	* config/rs6000/rs6000.h (TARGET_ASM_FILE_START): Set.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_START,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Override.
	* config/sh/sh.c (output_file_start): Rename
	sh_file_start, make static, take no arguments.  Merge in old
	code from sh/elf.h's ASM_FILE_START, conditioned on TARGET_ELF.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/sh/sh.c (TARGET_ELF): Define to 0.
	* config/sh/elf.h (TARGET_ELF): Redefine to 1.
	* config/v850/v850.c (asm_file_start): Delete.
	(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/vax/vax.c (vax_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_APP_OFF): Set.

	* config/darwin.h: Override ASM_FILE_START_FILE_DIRECTIVE to false.
	* config/elfos.h, config/svr3.h, config/arm/elf.h, config/arm/pe.h
	* config/i386/att.h, config/i386/gas.h, config/i386/linux.h
	* config/i386/sysv4.h, config/i386/sco5.h, config/i960/i960-coff.h
	* config/m68k/coff.h, config/m68k/hp320.h, config/mcore/mcore-pe.h
	* config/vax/vaxv.h: Set ASM_FILE_START_FILE_DIRECTIVE to true.

	* config/darwin.h, config/elfos.h, config/alpha/elf.h
	* config/alpha/openbsd.h, config/alpha/osf.h, config/alpha/vms.h
	* config/arc/arc.h, config/arm/aof.h, config/arm/aout.h
	* config/arm/coff.h, config/arm/elf.h, config/arm/pe.h
	* config/avr/avr.h, config/c4x/c4x.h, config/cris/cris.h
	* config/dsp16xx/dsp16xx.h, config/h8300/elf.h, config/h8300/h8300.h
	* config/i370/i370.h, config/i386/att.h, config/i386/gas.h
	* config/i386/i386-interix.h, config/i386/linux.h, config/i386/sysv4.h
	* config/i386/sco5.h, config/i960/i960-coff.h, config/i960/i960.h
	* config/ia64/ia64.h, config/ia64/sysv4.h, config/m32r/m32r.h
	* config/m68hc11/m68hc11.h, config/m68k/coff.h, config/m68k/m68k.h
	* config/mcore/mcore-pe.h, config/mips/iris6.h, config/mips/mips.h
	* config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h
	* config/pa/elf.h, config/pa/pa-linux.h, config/pa/pa64-hpux.h
	* config/pa/som.h, config/pdp11/pdp11.h, config/rs6000/linux64.h
	* config/rs6000/lynx.h, config/rs6000/xcoff.h, config/sh/elf.h
	* config/sh/sh.h, config/sparc/sparc.h, config/v850/v850.h
	* config/vax/vax.h, config/vax/vaxv.h: Don't (re)define ASM_FILE_START.

	* config/alpha/alpha-protos.h, config/arc/arc-protos.h
	* config/avr/avr-protos.h, config/dsp16xx/dsp16xx-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/m32r/m32r-protos.h, config/m68hc11/m68hc11-protos.h
	* config/mips/mips-protos.h, config/mmix/mmix-protos.h
	* config/mn10300/mn10300-protos.h, config/rs6000/rs6000-protos.h
	* config/sh/sh-protos.h, config/v850/v850-protos.h: Update.

	* xcoffout.h, config/rs6000/aix.h, config/rs6000/xcoff.h:
	Remove reference to ASM_FILE_START in comment.
	* config/arm/aof.h, config/arm/aout.h, config/arm/freebsd.h
	* config/arm/linux-gas.h, config/arm/netbsd-elf.h
	* config/arm/netbsd.h: Delete definition of ARM_OS_NAME.

2003-06-19  Graeme Peterson <gp@qnx.com>

	* gcc.c (target_sysroot_suffix, target_sysroot_hdrs_suffix,
	SYSROOT_SUFFIX_SPEC, SYSROOT_HEADERS_SUFFIX_SPEC, sysroot_suffix_spec,
	sysroot_hdrs_suffix_spec): New.
	(static_specs): Initialize new variables.
	(add_sysroot_suffix_prefix, do_spec_1, main): Use new variables.
	* doc/tm.texi (SYSROOT_SUFFIX_SPEC, SYSROOT_HEADERS_SUFFIX_SPEC):
	New macros.

2003-06-19  Andreas Jaeger  <aj@suse.de>

	* c-aux-info.c: Convert to ISO C90.
	* c-pragma.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-convert.c: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-dump.c: Likewise.
	* c-decl.c: Likewise
	* c-format.c: Likewise.
	* c-incpath.c: Likewise.
	* c-incpath.h: Likewise.

2003-06-19  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_errno_check): Assume that flag_errno_math
	and HONOR_NANS have been tested before calling here.  Only try
	to set errno ourselves if the decl can't throw an exception.
	(expand_builtin_mathfn): Move the code to stabilize the arg
	after the main switch, so that that its only done when needed.
	BUILT_IN_SQRT{,F,L} doesn't set errno if its arg is nonnegative.
	Don't modify the original expr when stabilizing the argument.
	(expand_builtin_mathfn_2): Likewise, move the code to stabilize
	the args after the main switch, and don't modify the orginal exp.

2003-06-19  Aldy Hernandez  <aldyh@redhat.com>

	* expr.c (const_vector_from_tree): Initialize remaining elements
	to 0.

2003-06-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md ("spe_evfscfsi"): Change operand types.
	Change "fix" to "float".

2003-06-19  Andreas Jaeger  <aj@suse.de>

	* c-tree.h: Remove declaration of poplevel.

	* tree.h: Remove declaration of approx_sqrt.

	* c-lex.c: Remove redundant declaration of asm_out_file.

	* flags.h: Remove declaration of warn_unknown_pragma and
	main_input_filename.

	* rtl.h: Remove functions from fold-const.c since they're already
	declared in tree.h.

	* regs.h: Remove redundant declaration of reg_names.

	* bt-load.c (migrate_btr_defs): Correct printf arguments.

	* protoize.c: Fix breakage from last patch.

2003-06-19  J"orn Rennecke <joern.rennecke@superh.com>

	* hooks.h (hook_reg_class_void_no_regs): Only declare if tm.h
	has been included.

2003-06-18  James A Morrison <ja2morri@student.math.uwaterloo.ca>

	* config/sparc/sparc.c: Update copyright year.

2003-06-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (init_cumulative_args): Limit CALL_LIBCALL
	to ABI_V4.

2003-06-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR bootstrap/4068
	* config/i386/liunx.h: Don't include sys/ucontext.h for glibc 2.0.

2003-06-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (TARGET_INITIALIZER and friends): Move
	to the end of the file.  Remove unnecessary prototypes.

2003-06-19  Hans-Peter Nilsson  <hp@axis.com>

	* bt-load.c (migrate_btr_def) [INSN_SCHEDULING]: Conditionalize
	calls to insn_default_latency and result_ready_cost.  Initialize
	def_latency to 1.

2003-06-18  Richard Henderson  <rth@redhat.com>

	* config/ia64/unwind-ia64.c (_Unwind_GetCFA): New.
	(_Unwind_FindEnclosingFunction): Implement.

2003-06-18  Kazu Hirata  <kazu@cs.umass.edu>

	* toplev.c (rest_of_handle_sched): Hide the entire function if
	INSN_SCHEDULING is not defined.
	(rest_of_compilation): Call rest_of_handle_sched() only when
	INSN_SCHEDULING is defined.

2003-06-18  Stephen Clarke <stephen.clarke@superh.com>
	    J"orn Rennecke <joern.rennecke@superh.com>

	* bt-load.c: New file.
	* Makefile.in (OBJS): Include bt-load.o
	(bt-load.o): Add dependencies.
	* flags.h (flag_branch_target_load_optimize): Declare.
	(flag_branch_target_load_optimize2): Likewise.
	* hooks.c (hook_reg_class_void_no_regs): New function.
	(hook_bool_bool_false): Likewise.
	* hooks.h (hook_reg_class_void_no_regs, hook_bool_bool_false): Declare.
	* rtl.h (branch_target_load_optimize): Declare.
	* target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	(TARGET_INITIALIZER): Include these.
	* target.h (struct gcc_target): Add branch_target_register_class
	and branch_target_register_callee_saved members.
	* toplev.c (enum dump_file_index): Add DFI_branch_target_load
	(dump_file) Add "tars" entry.
	(flag_branch_target_load_optimize): New variable.
	(flag_branch_target_load_optimize2): Likewise.
	(lang_independent_options): Add entries for new options.
	(rest_of_compilation): Call branch_target_load_optimize.
	* doc/tm.texi (TARGET_BRANCH_TARGET_REGISTER_CLASS): Document.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	* doc/invoke.texi: Document -fbranch-target-load-optimize and
	-fbranch-target-load-optimize2.
	* rtl.h (epilogue_completed): Declare.
	* recog.c (epilogue_completed): New variable.
	* toplev.c (rest_of_compilation): Set it.
	* flow.c (mark_regs_live_at_end): Use it.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Set it.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.

	* sh.c (shmedia_space_reserved_for_target_registers): New variable.
	(sh_target_reg_class): New function.
	(sh_optimize_target_register_callee_saved): Likwise.
	(shmedia_target_regs_stack_space): Likewise.
	(shmedia_reserve_space_for_target_registers_p): Likewise.
	(shmedia_target_regs_stack_adjust): Likewise.
	(TARGET_BRANCH_TARGET_REGISTER_CLASS): Override.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	(calc_live_regs): If flag_branch_target_load_optimize2 and
	TARGET_SAVE_ALL_TARGET_REGS is enabled, and we have space reserved
	for target registers, make sure that we save all target registers.
	(sh_expand_prologue, sh_expand_epilogue): Take target register
	optimizations into account.  Collapse stack adjustments if that
	is beneficial.
	(initial_elimination_offset): Reserve space for target registers
	if necessary.
	* sh.h (SAVE_ALL_TR_BIT, TARGET_SAVE_ALL_TARGET_REGS): Define.
	(OPTIMIZATION_OPTIONS): Enable flag_branch_target_load_optimize.

2003-06-18  Nick Clifton  <nickc@redhat.com>

	* config.gcc: Add an extra_header for ARM targets.
	Support configuring with --with-cpu=iwmmxt.
	* doc/invoke.texi: Document new value for -mcpu= ARM switch.
	* config/arm/aof.h (REGISTER_NAMES): Add iwmmxt register
	names.  Fix formatting.
	* config/arm/aout.h (REGISTER_NAMES): Add iwmmxt register
	names.
	* config/arm/arm-protos.h (arm_emit_vector_const): New
	prototype.
	(arm_output_load_gr): New prototype.
	* config/arm/arm.c (extra_reg_names1): Delete.
	(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN, FL_IWMMXT,
	* arch_is_iwmmxt): Define.
	(all_cores, all_architecture): Add entry for iwmmxt.
	(arm_override_options): Add support for iwmmxt.
	(use_return_insn, arm_function_arg, arm_legitimate_index_p,
	arm_print_value, arm_rtx_costs_1, output_move_double,
	arm_compute_save_reg_mask, arm_output_epilogue,
	arm_get_frame_size, arm_expand_prologue, arm_print_operand,
	arm_assemble_integer, arm_hard_regno_ok, arm_regno_class):
	Likewise.
	(arm_init_cumulative_args): Count iwmmxt registers.
	(arm_function_ok_for_sibcall): Return false of sibcall_blocked
	has been set.
	(struct minipool_node): Add fix_size field.
	(add_minipool_forward_ref): Add support for 8-byte aligning of
	the pool.
	(add_minipool_backward_ref, add_minipool_offsets,
	dump_minipool, push_minipool_fix): Likewise.
	(struct builtin_description): New struct.
	(builtin_description): New array of iwmmxt builtin functions.
	(arm_init_iwmmxt_builtins): New function.
	(arm_init_builtins): New function.
	(safe_vector_operand): New function.
	(arm_expand_binop_builtin): New function.
	(arm_expand_unop_builtin): New function.
	(arm_expand_builtin): New function.
	(arm_emit_vector_const): New function.
	(arm_output_load_gr): New function.
	* config/arm/arm.h (TARGET_CPU_iwmmxt, TARGET_IWMMXT,
	TARGET_REALLY_IWMMXT, arm_arch_iwmmxt, IWMMXT_ALIGNMENT,
	TYPE_NEEDS_IWMMXT_ALIGNMENT, ADJUST_FIELD_ALIGN,
	DATA_ALIGNMENT, LOCAL_ALIGNMENT, VECTOR_MODE_SUPPORTED_P): Define.
	(BIGGEST_ALIGNMENT): Set to 64 if ATPCS support is enabled.
	(CPP_CPU_ARCH_SPEC): Add entries for iwmmxt.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER,
	reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
	REG_CLASS_FOR_LETTER): Add iwmmxt registers.
	(SUBTARGET_CONDITIONAL_REGISTER_USAGE): Disable iwmmxt
	registers unless the iwmmxt target is selected.
	(FIRST_IWMMXT_GR_REGNUM, LAST_IWMMXT_GR_REGNUM,
	FIRST_IWMMXT_REGNUM, LAST_IWMMXT_REGNUM, IS_IWMMXT_REGNUM,
	IS_IWMMXT_GR_REGNUM): Define.
	(FIRST_PSEUDO_REGISTER): Bump to 63.
	(struct machine_function): Add sibcall_blocked field.
	(Struct CUMULATIVE_ARGS): Add iwmmxt_nregs, named_count and
	nargs fields.
	(enum arm_builtins): New enum list.
	* config/arm/arm.md (UNSPEC_WSHUFH, UNSPEC_WACC,
	UNSPEC_TMOVMSK, UNSPEC_WSAD, UNSPEC_WSADZ, UNSPEC_WMACS,
	UNSPEC_WMACU, UNSPEC_WMACSZ, UNSPEC_WMACUZ, UNSPEC_CLRDI,
	UNSPEC_WMADDS, UNSPEC_WMADDU): New unspecs.
	(VUNSPEC_TMRC, VUNSPEC_TMCR, VUNSPEC_ALIGN8, VUNSPEC_WCMP_EQ,
	VUNSPEC_WCMP_GTU, VUNSPEC_WCMP_GT): New vunspecs.
	(movv2si, movv4hi, movv8qi): New expands for vector moves.
	Include iwmmxt.md.
	* config/arm/t-xscale-elf (MULTILIB_OPITONS): Add iwmmxt
	multilib.
	(MULTILIB_DIRNAMES, MULTILIB_REDUNDANT_DIRS): Likewise.
	* config/arm/mmintrin.h: New ARM specific header file.
	* config/arm/iwmmx.md: New iWMMXt specific machine patterns.

2003-06-18  J"orn Rennecke <joern.rennecke@superh.com>

	* toplev.c (Remaining -d letters summary): Update.

2003-06-18  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.c (init_cumulative_args): Add and handle LIBCALL
	argument.
	(function_arg): Handle CALL_LIBCALL flag.
	* config/rs6000/rs6000-protos.h (init_cumulative_args): Update
	prototype.
	* config/rs6000/rs6000.h (CALL_LIBCALL): New macro.
	(INIT_CUMULATIVE_LIBCALL_ARGS): New macro.
	(INIT_CUMULATIVE_ARGS): Add LIBCALL argument.
	(INIT_CUMULATIVE_INCOMING_ARGS): Likewise.

2003-06-18  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* common.opt: New options.
	* opts.c (maybe_warn_unused_parameter, set_Wextra, handle_param,
	set_Wunused): New.
	(common_handle_option): Handle new options.
	* toplev.c (set_target_switch): Export.
	(set_Wextra, set_Wunused, maybe_warn_unused_parameter): Move to opts.c.
	(decode_W_option): -Wunused and -Wextra handled in opts.c now.
	(independent_decode_option): More options handled in opts.c now.
	Change prototype.
	* toplev.h (set_target_switch): New.

2003-06-17  Robert Abeles  <rabeles@archaelogic.com>

	PR debug/4252
	* c-opts.c (c_common_handle_option): Pass -fdump argument suffix
	to dump_switch_p().
	* tree-dump.c (dump_switch_p): Remove redundant 'dump-' prefix
	from static strings in dump_files.

2003-06-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (ANSI_PROTOTYPES, PTR_CONST, LONG_DOUBLE, VPARAMS,
	VA_OPEN, VA_FIXEDARG, VA_CLOSE, VA_START): undef and poison these
	libiberty macros.

2003-06-17  Jason Merrill  <jason@redhat.com>

	PR c++/10929
	* tree-inline.c (expand_call_inline): Don't warn about failing to
	inline a function which was made inline by -finline-functions.

2003-06-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update to ISO C.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.

2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Replace BUILD_CC references with CC_FOR_BUILD.
	* configure: Regenerate.
	* Makefile.in: Replace BUILD_CC references with CC_FOR_BUILD.

2003-06-17  Ranjit Mathew  <rmathew@hotmail.com>

	* install.texi (Testing): Add information on how to run Java
	runtime tests separately.

2003-06-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/mips.md (trap): Use break 0 when !TARGET_GAS.

	* config/mips/iris6-o32.h (MIPS_ISA_DEFAULT): Remove.
	(MIPS_CPU_STRING_DEFAULT): Redefine to mips2.

2003-06-17  Christopher Faylor  <cgf@redhat.com>

	* doc/install.texi: Add msvc rebuild caveat.

2003-06-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/coff.h: Replace Hitachi with Renesas.
	* config/sh/elf.h: Likewise.
	* config/sh/embed-elf.h: Likewise.
	* config/sh/lib1funcs.asm: Likewise.
	* config/sh/sh-protos.h: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sh/sh.md: Likewise.

2003-06-17  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog.3: Fix comment typos.
	* ChangeLog.6: Likewise.
	* config/d30v/d30v.c: Likewise.
	* config/h8300/h8300.md: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.md: Likewise.
	* config/ns32k/NOTES: Likewise.

2003-06-17  Ranjit Mathew  <rmathew@hotmail.com>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/sourcebuild.texi (libgcj Tests): Simplify instructions on how
	to run Java runtime tests separately.

2003-06-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update a comment.

2003-06-17  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (ROUND_TYPE_ALIGN, LOCAL_ALIGNMENT): Complex modes
	are aligned like integral modes.
	(SH5_WOULD_BE_PARTIAL_NREGS): Also test for CDImode and DCmode.

	* sh.h (EXTRA_CONSTRAINT_Csy): Allow PIC_DIRECT_ADDR_P.
	(LEGITIMATE_PIC_OPERAND_P): Allow LABEL_REF.
	* sh.md (*pt): Remove.

	* sh.h (REG_ALLOC_ORDER): Avoid squandering call-saved registers.

	* sh.md (return_media_rte): New pattern.
	(return_media): Use it.

2003-06-17  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/contrib.texi: Replace Hitachi with Renesas.
	* doc/install.texi: Likewise.
	* doc/invoke.texi: Likewise.

2003-06-17  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (CONST_OK_FOR_J16): Fix HOST_BITS_PER_WIDE_INT >= 64
	behaviour.

2003-06-17  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* doc/tm.texi (MD_FALLBACK_FRAME_STATE_FOR): Mention MAKE_THROW_FRAME.

	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Partly revert
	2003-01-23 patch. Corrected to handle kernels with changed ucontext.

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Error on invalid
	-msdata=eabi usages.

	* gcc/config/rs6000/sysv4.h (USE_LIBC_1): Delete all uses.

2003-06-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alloc-pool.c: Don't check HAVE_LONG_DOUBLE.
	* fixinc/gnu-regex.c: Don't define `volatile'.
	* ggc-page.c: Don't check HAVE_LONG_DOUBLE.
	* ggc-simple.c: Likewise.
	* system.h: Don't define `volatile'.

	* aclocal.m4 (gcc_AC_C_VOLATILE, gcc_AC_C_LONG_DOUBLE): Delete.
	* configure.in (gcc_AC_C_VOLATILE, gcc_AC_C_LONG_DOUBLE): Don't
	call these macros.
	* config.in, configure: Regenerated.

2003-06-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/ia64/ia64.c (ia64_expand_builtin, case IA64_BUILTIN_BSP):
	Handle POINTERS_EXTEND_UNSIGNED.

2003-06-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/mips.c (TARGET_ASM_UNALIGNED_DI_OP) [TARGET_IRIX5 &&
	!TARGET_IRIX6]: Define as NULL.

2003-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (sparc_va_arg): Don't align 16-byte+ structures.

2003-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* dbxout.c (dbxout_source_line_counter): New global variable.
	Mark it with GTY(()).
	(dbxout_source_line): Increment dbxout_source_line_counter
	and pass it to ASM_OUTPUT_SOURCE_LINE.
	* sdbout.c (sdbout_source_line_counter): New global variable.
	Mark it with GTY(()).
	(unnamed_struct_number): Mark it with GTY(()).
	(sdbout_source_line): Increment sdbout_source_line_counter
	and pass it to ASM_OUTPUT_SOURCE_LINE.
	* xcoffout.c (ASM_OUTPUT_SOURCE_LINE): Add third parameter
	(xcoffout_source_line): Pass 0 as third argument to
	ASM_OUTPUT_SOURCE_LINE.
	(xcoffout_begin_prologue): Likewise.
	* config/dbxout.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	Use it instead of 'sym_lineno' but without incrementing it.
	* config/dbxelf.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/lynx.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/ptx4.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/alpha/alpha.c (alpha_start_function): Pass 0 as third
	argument to ASM_OUTPUT_SOURCE_LINE.
	* config/alpha/alpha.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	* config/arm/aout.h: Remove useless comment.
	* config/avr/avr.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	* config/i960/i960.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/m32r/m32r.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	Use it instead of 'sym_lineno' but without incrementing it.
	* config/m68k/hp320.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	* config/mcore/mcore-pe.h (ASM_OUTPUT_SOURCE_LINE): Add third
	parameter. Use it instead of 'sym_lineno' but without incrementing it.
	* config/mips/mips.c (mips_output_function_prologue): Pass 0 as third
	argument to ASM_OUTPUT_SOURCE_LINE.
	* config/mips/mips.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	* config/mmix/mmix.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/pa/som.h (ASM_OUTPUT_SOURCE_LINE): Add third parameter.
	Use it instead of 'sym_lineno' but without incrementing it.
	* config/rs6000/linux64.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/sh/elf.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/sparc/aout.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* config/sparc/pbd.h (ASM_OUTPUT_SOURCE_LINE): Likewise.
	* doc/tm.texi (ASM_OUTPUT_SOURCE_LINE): Document third parameter.

2003-06-17  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_expand_block_move): Declare.
	(expand_block_move, output_block_move): Remove.
	* config/mips/mips.h (enum block_move_type): Remove.
	* config/mips/mips.c (block_move_call, output_block_move): Remove.
	(mips_block_move_straight, mips_adjust_block_mem): New function.
	(mips_block_move_loop): Renamed and reworked from block_move_loop.
	(mips_expand_block_move): Likewise expand_block_move.  Return false
	to fall back on the target-independent code.
	* config/mips/mips.md (movstrsi): Use mips_expand_block_move.
	(movstrsi_internal*): Remove.

2003-06-16  Zack Weinberg  <zack@codesourcery.com>

	* cpplib.h, cpphash.h, cppcharset.c, cpperror.c, cppexp.c
	* cppfiles.c, cpphash.c, cppinit.c, cpplex.c, cpplib.c
	* cppmacro.c, cpppch.c, cpptrad.c, cppspec.c: Convert to
	ISO C: new-style function declarations, no need for PARAMS,
	no special punctuation on indirect function calls, use string
	constant concatenation where convenient.

2003-06-17  Andreas Jaeger  <aj@suse.de>

	* rtl.h: Remove declarations from coverage.h.
	* toplev.c: Include coverage.h.
	* Makefile.in (toplev.o): Depend on coverage.h.

	* toplev.h: Remove extra declaration of print_time.

	* gengtype.c (close_output_files): Remove duplicated declaration.

2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/sparc/sysv4.h: Remove target-independent comment;
	replace "GNU CC" with "GCC".
	* config/vxworks.h: Replace "GNU compiler" with "GCC".
	* config/sparc/aout.h, config/sparc/biarch64.h, config/sparc/elf.h,
	config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/lite.h, config/sparc/litecoff.h, config/sparc/liteelf.h,
	config/sparc/netbsd-elf.h, config/sparc/openbsd.h,
	config/sparc/rtemself.h, config/sparc/sol2-64.h,
	config/sparc/sol2-bi.h, config/sparc/sol2-gas-bi.h,
	config/sparc/sol2-gld-bi.h, config/sparc/sol2-gld.h,
	config/sparc/sol2.h, config/sparc/sp64-aout.h,
	config/sparc/sp64-elf.h, config/sparc/sp86x-elf.h,
	config/sparc/sparc-protos.h, config/sparc/sysv4-only.h: Replace
	"GNU compiler", "GNU CC" with "GCC".
	* config/sparc/cypress.md, config/sparc/hypersparc.md,
	config/sparc/sparc-modes.def, config/sparc/sparc.c,
	config/sparc/sparc.md, config/sparc/sparclet.md,
	config/sparc/supersparc.md, config/sparc/ultra1_2.md,
	config/sparc/ultra3.md: Replace "GNU CC", "GNU Compiler", and
	"GNU C Compiler" with "GCC".
	* config/ip2k/ip2k.h: Replace "GNU CC" and "GNU compiler" with "GCC".

2003-06-16  Aldy Hernandez  <aldyh@redhat.com>

	* simplify-rtx.c (simplify_subreg): Do not over-extend vector
	constants.

	* testsuite/gcc.c-torture/execute/simd-4.c: New.

2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/ip2k/ip2k.h: Remove target-independent comments.

	* config.gcc: Explicitly mention elfos.h in ip2k entry.
	* config/ip2k/ip2k.h: Don't #include it here.

2003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c,
	config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c,
	dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c,
	function.c, gcc.c, genoutput.c, gensupport.c, global.c,
	haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c,
	loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c,
	read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c,
	stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use
	the PTR macro.

	* gengtype.c: Don't use UNION_INIT_ZERO.
	* system.h (UNION_INIT_ZERO): Delete.

2003-06-16  Richard Henderson  <rth@redhat.com>

	* simplify-rtx.c (simplify_subreg): Use GET_MODE_SIZE instead of
	GET_MODE_UNIT_SIZE when simplifying constant vectors.

2003-06-16  Andreas Jaeger  <aj@suse.de>

	* timevar.c (get_run_time): Remove function provided also by
	libiberty.
	* timevar.h: Remove get_run_time declaration.

2003-06-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68hc11/m68hc11.c (m68hc11_rtx_costs): Remove
	unreachable code.

2003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def, builtin-attrs.def, builtins.c, cpplex.c,
	cpplib.c, gencheck.c, gengenrtl.c, machmode.def, protoize.c: Don't
	use macros from "symcat.h", instead rely on ISO C.

	* system.h: Don't include "symcat.h".
	* configure.in (AC_C_STRINGIZE): Delete.
	* config.in, configure: Regenerate.

2003-06-16  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Makefile.in (install-mkheaders): Use INSTALL_SCRIPT for scripts.

	* tree.h (STMT_CHECK): New macro.
	Also upper-case argument names on all checking macros and
	fix some whitespace problems; assume CODE argument does not
	have side-effects.

2003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* scan.h: Convert to ISO C.
	* system.h: Likewise.

	* c-format.c (dynamic_format_types): New pointer for dynamic data.
	(find_length_info_modifier_index, init_dynamic_asm_fprintf_info):
	New functions split out of...
	(handle_format_attribute): ...here.

2003-06-16  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (REG_CLASS_FROM_LETTER): Change to:
	(REG_CLASS_FROM_CONSTRAINT).
	(CONST_OK_FOR_I): Rename to:
	(CONST_OK_FOR_I08).  Changed all users.
	(CONST_OK_FOR_J): Rename to:
	(CONST_OK_FOR_I16).  Changed all users.
	(CONST_OK_FOR_K): Rename to:
	(CONST_OK_FOR_P27).  Changed all users.
	(CONST_OK_FOR_L): Rename to:
	(CONST_OK_FOR_K08).  Changed all users.
	(CONST_OK_FOR_O): Rename to:
	(CONST_OK_FOR_I06).  Changed all users.
	(CONST_OK_FOR_P): Rename to:
	(CONST_OK_FOR_I10).  Changed all users.
	(CONSTRAINT_LEN, CONST_OK_FOR_I, CONST_OK_FOR_J16): Define.
	(CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_P): Likewise.
	(EXTRA_CONSTRAINT_A, EXTRA_CONSTRAINT_Bsc): Likewise.
	(EXTRA_CONSTRAINT_B, PIC_OFFSET_P, PIC_DIRECT_ADDR_P): Likewise.
	(EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C): Likewise.
	(EXTRA_MEMORY_CONSTRAINT,(EXTRA_CONSTRAINT_Sr0): Likewise.
	(CONST_OK_FOR_LETTER_P): Replace with
	(CONST_OK_FOR_CONSTRAINT_P).
	(EXTRA_CONSTRAINT_S): Rename to:
	(EXTRA_CONSTRAINT_C16).  Changed all users.
	(MOVI_SHORI_BASE_OPERAND_P): Don't allow direct addresses.
	(EXTRA_CONSTRAINT_T): Rename to:
	(EXTRA_CONSTRAINT_Csy).  Changed all users.
	(EXTRA_CONSTRAINT_Z): Remove.
	(EXTRA_CONSTRAINT): Replace with:
	(EXTRA_CONSTRAINT_STR).
	(EXTRA_CONSTRAINT_U): Rename to:
	 (EXTRA_CONSTRAINT_Z).  Changed all users.
	* sh.c (and_operand): Use CONST_OK_FOR_J16.
	* sh.md (cmpeqsi_t-1, cmpeqsi_t, adddi3_media): Use new constraints.
	(addsi3_media, addsi3_compact, andsi3_compact, anddi3): Likewise.
	(iorsi3, iordi3, xorsi3, xordi3, ashlsi3_std, ashlhi3_k): Likewise.
	(lshrsi3_k, movsi_i, movsi_ie, movsi_i_lowpart, movsi_media): Likewise.
	(movsi_media_nofpu, movqi_media, movhi_i, movhi_media): Likewise.
	(*movdi_i, movdi_media, movdi_media_nofpu, shori_media): Likewise.
	(movdf_media, movdf_media_nofpu, movv2sf_i, movv4sf_i): Likewise.
	(movsf_media, movsf_media_nofpu, movsi_y, beq_media): Likewise.
	(beq_media_i, bne_media, pt, ptb, movv8qi_i, movv2hi_i): Likewise.
	(movv4hi_i, movv2si_i, negcmpeqv8qi, negcmpeqv2si): Likewise.
	(negcmpeqv4hi, negcmpgtuv8qi, negcmpgtv2si, negcmpgtv4hi): Likewise.
	(mcmv, mcnvs_lw, mcnvs_wb, mcnvs_wub, mextr_rl, mextr_lr): Likewise.
	(mextr1, mextr2, mextr3, mextr4, mextr5, mextr6, mextr7): Likewise.
	(mperm_w, mperm_w_little, mperm_w_big, msad_ubq_i): Likewise.
	(mshards_q, mshfhi_b, mshflo_b, mshf4_b, mshf0_b, mshfhi_l): Likewise.
	(mshflo_l, mshf4_l, mshf0_l, mshfhi_w, mshflo_w, mshf4_w): Likewise.
	(mshf0_w, mshflo_w_x, mshfhi_l_di, mshfhi_l_di_rev): Likewise.
	(mshflo_l_di_rev, mshflo_l_di_x, concat_v2sf): Likewise.
	(mshflo_l_di_x_rev, subv2si3, subv4hi3, sssubv2si3): Likewise.
	(sssubv4hi3): Likewise.
	(movsf_i): Change I[08]/r to G/r.
	(movsf_ie): Change f/{G,H}/c/X to f/{G,H}/c/Bsc.

	* sh.c (sh_output_mi_thunk): Use CONST_OK_FOR_ADD.

2003-06-16  Vladimir Makarov  <vmakarov@redhat.com>

	* config/i386/i386.c (ix86_memory_move_cost): Fix typo.

2003-06-16  Andreas Jaeger  <aj@suse.de>

	* basic-block.h: Remove duplicate prototype of
	note_prediction_to_br_prob.

	* tree.h: Remove duplicate prototype of strip_float_extensions.

2003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/c4x/c4x.c: Don't include "c-tree.h".
	* config/pa/pa.c: Likewise.
	* langhooks.c: Likewise.
	* tree.h (poplevel): Declare.

2003-06-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (const_costs): Move this to ...
	(h8300_rtx_costs): ... here.

2003-06-16  Roger Sayle  <roger@eyesopen.com>

	* optabs.h (enum optab_index): Add new OTI_tan and OTI_atan.
	(tan_optab, atan_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize tan_optab and atan_optab.
	* genopinit.c (optabs): Implement tan_optab and atan_optab
	using tan?f2 and atan?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_TAN{,F,L}
	using tan_optab, and BUILT_IN_ATAN{,F,L} using atan_optab.
	Change the default value of errno_set to false.
	(expand_builtin): Expand BUILT_IN_TAN{,F,L} and BUILT_IN_ATAN{,F,L}
	using expand_builtin_mathfn.

	* config/i386/i386.md (atansf2, atandf2, atanxf2, atantf2): New
	expander patterns implemented using existing atan2?f3 patterns.

2003-06-16  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr <PLUS_EXPR>): If operand_equal_p considers
	both operands of the addition equal, reuse the expanded RTL.
	(expand_expr <MULT_EXPR>): Likewise for multiplication.

2003-06-16  Roger Sayle  <roger@eyesopen.com>
	    Jeff Law  <law@redhat.com>

	* fold-const.c (operand_equal_p): Consider two calls to "const"
	functions with identical non-volatile arguments to be equal.
	Consider the FUNCTION_DECL for the "__builtin_foo" form of a
	built-in function to be equal to the "foo" form.

2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/rs6000/sysv4le.h: Remove target-independent comment.
	Replace "GNU compiler" with "GCC" in comment.

2003-06-16  Andreas Jaeger  <aj@suse.de>

	* tracer.c: Remove duplicate declaration.

	* toplev.c: Remove extra declaration of decode_d_option.

	* ssa.c: Remove duplicate declaration.

	* sreal.c: Remove extra declaration of dump_sreal.

	* reload1.c: Remove duplicate declarations.

	* integrate.c: Remove extra declaration of
	set_decl_abstract_flags.

	* flow.c: Remove extra declaration of dump_flow_info.

	* alias.c: Remove extra declaration of get_addr.

2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/rtems.h, config/sol2.h, config/svr4.h, config/usegas.h,
	config/vxworks.h: GNU CC -> GCC.

	* convert.c, dwarf2out.c, dwarfout.c, emit-rtl.c, function.c,
	lists.c, print-rtl.c, print-tree.c, read-rtl.c, rtl-error.c,
	stmt.c, toplev.c, integrate.h, loop.h, machmode.h, rtl.h,
	ssa.h, tree.def: Replace overly specific references to "GNU C"
	and "GNU C Compiler" with references to "GCC".

2003-06-16  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (prepare_move_operand): Check if operand 0 is an invalid
	memory reference.  Fix test that checks if operand 1 is using r0.
	* sh.md (movhi_i): Don't allow st.w r0,@(rX,rY) .

	* defaults.h (REG_CLASS_FROM_CONSTRAINT): Only define if not already
	defined.

2003-06-15  Nathan Sidwell  <nathan@codesourcery.com>

	* function.h (struct emit_status): Remove x_last_linenum,
	x_last_filename. Add x_last_location.
	* rtl.h: #include "input.h".
	(NOTE_DATA): New.
	* cfglayout.c (duplicate_insn_chain): Use emit_line_note for line
	number notes.
	* emit-rtl.c (last_linenum, last_filename): Remove.
	(last_location): New.
	(emit_line_note_after): LINE must always be >= 0.
	(emit_line_note): Likewise. Check not duplicate here...
	(emit_note): ... rather than here.
	(emit_line_note_force, force_next_line_note, init_emit): Adjust.
	* integrate.c (expand_inline_function): Use emit_line_note for
	line number notes.
	(copy_insn_list): Likewise.
	* unroll.c (copy_loop_body): Likewise.
	* Makefile.in (RTL_H): Add input.h.

2003-06-16  Richard Sandiford  <rsandifo@redhat.com>

	* optabs.c (emit_libcall_block): Don't hoist insns past a label.

2003-06-16  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha-protos.h, config/alpha/elf.h,
	config/alpha/osf.h, config/alpha/unicosmk.h, config/alpha/vms.h,
	config/alpha/vms-cc.c, config/alpha/vms-ld.c: Update to ISO C.
	* config/alpha/alpha.c: Likewise.  Move targetm init to end of file.
	Remove unneeded static function decls.

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

	* c-opts.c (c_common_handle_option): s/on/value/.
	(OPT_fabi_version_, OPT_ftabstop_, OPT_ftemplate_depth_): Use value
	directly rather than converting the argument.
	* c.opt: Update docs.  Use UInteger where appropriate.
	* common.opt: Use UInteger where appropriate.
	* opts.c (integral_argument): New.
	(handle_argument): Handle integral arguments, and optional
	joined arguments.
	(common_handle_option): Update.
	* opts.h (CL_MISSING_OK, CL_UINTEGER): New.
	* opts.sh: Handle JoinedOrMissing and UInteger flags.

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

	* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Remove
	unnecessary extern declaration.

2003-06-15  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/gofast.h, config/interix.h, config/interix3.h,
	config/libgloss.h, config/linux-aout.h, config/linux.h,
	config/lynx-ng.h, config/lynx.h: GNU CC -> GCC.
	* config/kaos.h: "GNU compiler" -> GCC.
	* config/linux-aout.h, config/lynx.h: Clarify comment describing file.

	* config/ip2k/crt0.S, config/ip2k/ip2k-protos.h,
	config/ip2k/ip2k.c, config/ip2k/ip2k.md, config/ip2k/libgcc.S:
	GNU CC -> GCC.

	* config/svr3.h: Remove #if 0 code, misleading comments.
	GNU CC -> GCC.

2003-06-15  Zack Weinberg  <zack@codesourcery.com>

	* vmsdbgout.c (vmsdbgout_finish): Rename parameter to
	main_input_filename to avoid conflict with input_filename macro.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* config/mips/mips.h (asm_file_name, g_switch_set,
	g_switch_value): Remove.
	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
	unnecessary extern declarations.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* config/frv/frv.h: Remove declaration of g_switch_value.
	* config/m32r/m32r.h: Remove declaration of g_switch_value.
	* config/m68hc11/m68hc11.c: Remove declaration of asm_file_name.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* opts.sh: Quote '+' in regex.

2003-06-15  Andrew Pinski <pinskia@physics.uc.edu>

	* config/rs6000/t-rs6000: Add dependence of cfglayout.h to rs6000.o.
	* config/rs6000/rs6000.c: Include cfglayout.h.
	* config/alpha/alpha.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/sh/sh.c: Likewise.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* opts.sh: Quote '+' in regex.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (lang_flags): Update for new spelling of flags.
	(write_langs): Similarly.
	* c.opt: Specify languages.
	* opts.h: Remove languages.
	* opts.sh: Recognise front-end defined languages.
	* doc/sourcebuild.texi: Update.

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

	* alloc-pool.c: Convert to ISO C90 prototypes.
	* alloc-pool.h: Likewise.
	* alias.c: Likewise.
	* attribs.c: Likewise.
	* bb-reorder.c: Likewise.
	* bitmap.h: Likewise.
	* bitmap.c: Likewise.
	* builtins.c: Likewise.

	* tree.h: Convert prototypes of attribs.c to ISO C90.
	* basic-block.h: Convert prototypes of bb-reorder.c to ISO C90.
	* rtl.h: Convert prototypes of alias.c and builtins.c to ISO C90.
	* expr.h: Convert prototypes of builtins.c to ISO C90.

2003-06-15  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md (expsf2, expdf2, expxf2): New patterns to
	implement exp, expf and expl built-ins as inline x87 intrinsics.
	(UNSPEC_FSCALE, UNSPEC_FRNDINT, UNSPEC_F2XM1): New unspecs to
	represent x87's fscale, frndint and f2xm1 insns respectively.
	(*fscale_sfxf3, *fscale_dfxf3, *fscale_xf3): New insn patterns
	to encode x87's "fscale" instruction followed by a pop.
	(*frndintxf2): New insn pattern for "frndint".
	(*f2xm1xf2): New insn pattern for "f2xm1".

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FRNDINT and
	UNSPEC_F2XM1 like UNSPEC_{SIN,COS} and handle UNSPEC_FSCALE like
	UNSPEC_FPATAN.

2003-06-15  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gencheck.c (main): Avoid generating duplicate macros.

	* Makefile.in (stagefeedback-start): Use $(SUBDIRS) instead of
	knowing names of language subdirectories.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* c-pch.c (asm_file_name): Remove.
	* common.opt: Add more switches.
	* flags.h (g_switch_set): Boolify.
	* opts.c (g_switch_value, g_switch_set, exit_after_options,
	version_flag): Move from toplev.c.
	(common_handle_option): Handle more switches from toplev.c.
	* toplev.c (display_help, display_target_options, decode_d_option,
	print_version): Make non-static, remove prototypes.
	(aux_base_name, asm_file_name, aux_info_file_name): Constify.
	(version_flag, g_switch_value, g_switch_set, exit_after_options):
	Remove.
	(independent_decode_option): Move some handlers to opts.c.
	* toplev.h (aux_info_file_name, aux_base_name, asm_file_name,
	exit_after_options, version_flag, display_help, display_target_options,
	print_version, decode_d_option): New.

2003-06-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.md: Follow spelling conventions.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/crtn.asm: Likewise.
	* config/m32r/m32r.c: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/rs6000/rs6000.c: Likewise.

2003-06-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Call
	insn_locators_initialize.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Do it later.

2003-06-15  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c (expand_builtin_expect_jump): Remove redundant
	tests that are also in any_condjump_p().

2003-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* libgcc2.c: Delete sysV68 L_trampoline section.
	* config/m68k/mot3300-crt0.S: Delete file.
	* config/m68k/mot3300Mcrt0.S: Likewise.

2003-06-15  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/aoutos.h: Remove.
	* config.gcc: Remove reference to aoutos.h.
	* config/m68k/m68k-aout.h: Remove reference to aoutos.h.

2003-06-14  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/install.texi: Follow spelling conventions.
	* doc/tm.texi: Likewise.
	* config/fp-bit.c: Likewise.
	* config/arm/arm.c: Likewise.
	* config/frv/frv.c: Likewise.
	* config/ns32k/NOTES: Likewise.
	* config/ns32k/STATUS: Likewise.

2003-06-14  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* rtl.h (STORE_FLAG_VALUE): Remove default definition from here.
	* defaults.h (STORE_FLAG_VALUE): Move default definition to here.
	* doc/tm.texi (STORE_FLAG_VALUE): Document the default value.

	* config/alpha/alpha.h (STORE_FLAG_VALUE): Remove definition.
	* config/arc/arc.h (STORE_FLAG_VALUE): Likewise.
	* config/arm/arm.h (STORE_FLAG_VALUE): Likewise.
	* config/cris/cris.h (STORE_FLAG_VALUE): Likewise.
	* config/i370/i370.h (STORE_FLAG_VALUE): Likewise.
	* config/i386/i386.h (STORE_FLAG_VALUE): Likewise.
	* config/i960/i960.h (STORE_FLAG_VALUE): Likewise.
	* config/ia64/ia64.h (STORE_FLAG_VALUE): Likewise.
	* config/ip2k/ip2k.h (STORE_FLAG_VALUE): Likewise.
	* config/m32r/m32r.h (STORE_FLAG_VALUE): Likewise.
	* config/mcore/mcore.h (STORE_FLAG_VALUE): Likewise.
	* config/mips/mips.h (STORE_FLAG_VALUE): Likewise.
	* config/mmix/mmix.h (STORE_FLAG_VALUE): Likewise.
	* config/ns32k/ns32k.h (STORE_FLAG_VALUE): Likewise.
	* config/pa/pa.h (STORE_FLAG_VALUE): Likewise.
	* config/pdp11/pdp11.h (STORE_FLAG_VALUE): Likewise.
	* config/sh/sh.h (STORE_FLAG_VALUE): Likewise.
	* config/sparc/sparc.h (STORE_FLAG_VALUE): Likewise.
	* config/v850/v850.h (STORE_FLAG_VALUE): Likewise.
	* config/xtensa/xtensa.h (STORE_FLAG_VALUE): Likewise.

2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>

	* opts.sh (POSIXLY_CORRECT): Unset it.

	* tree.h (init_function_start): Remove filename and line paramters.
	* function.c (init_function_start): Remove filename and line
	parameters. Use DECL_SOURCE_LOCATION.
	* c-decl.c (store_parm_decls): Adjust init_function_start call.
	(c_expand_body_1): Likewise.
	* coverage.c (create_coverage): Likewise.
	* objc/objc-act.c (build_tmp_function_decl): Set line number to
	zero.
	(hack_method_prototype): Adjust init_function_start call.

2003-06-14  Richard Earnshaw  <rearnsha@arm.com>

	PR target/3724
	* arm/linux-elf.h (PROFILE_HOOK): Define.

2003-06-14  Richard Earnshaw  <rearnsha@arm.com>

	PR target/11183
	* arm.h (CANNOT_CHANGE_MODE_CLASS): Define.

2003-06-14  Roger Sayle  <roger@eyesopen.com>

	* opts.sh: Work around a mysterious feature in cygwin's gawk
	where specifying the input files explicitly has a different
	behavior to piping them via stdin.

2003-06-14  Neil Booth  <neil@daikokuya.co.uk>

	* doc/sourcebuild.texi: Update.

2003-06-14  Richard Earnshaw  <rearnsha@arm.com>

	PR target/11183
	* arm.c (output_move_double): Pass SImode to adjust_address.

2003-06-14  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update to use common.opt and lang_opt_files.
	(c-options.c, c-options.h): Remove.
	(options.c, options.h): Add.
	* c-opts.c: Include options.h not c-options.h.
	* common.opt: New file.
	* configure, configure.in: Add lang_opt_files.
	* opts.c: Include flags.h and diagnostic.h.
	(common_handle_option): New.
	(handle_option): Update to recognize common options and all
	language-dependent options.
	* opts.h (CL_F77, CL_JAVA, CL_ADA, CL_COMMON, CL_TREELANG): New.
	(struct cl_option): Make flags of type int.
	* opts.h: Flag option with front ends to which it applies.
	Handle duplicate options.
	* toplev.c (filename): Remove.
	(independent_decode_option): Don't handle filenames and -quiet.
	(process_options, do_compile): Update.

2003-06-14  Nick Clifton  <nickc@redhat.com>

	* doc/install.texi (Specific): Add description of different
	ARM supported file format targets.

Sat Jun 14 11:12:04 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* reorg.c (emit_delay_sequence, dbr_schedule): Clear insn locators
	inside delay slots.

2003-06-13  Matt Kraai  <kraai@alumni.cmu.edu>

	* unwind-c.c: Define NO_SIZE_OF_ENCODED_VALUE.
	* unwind-pe.h (size_of_encoded_value): Do not define if
	NO_SIZE_OF_ENCODED_VALUE is defined.

2003-06-13  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr <COMPLEX_CST>): Handle the case of
	expanding a complex constant into a CONCAT target.

2003-06-13  Zack Weinberg  <zack@codesourcery.com>

	* config/svr3.h (ASM_FILE_START): Don't use ASM_FILE_START_1.
	(ASM_FILE_START_1): Delete.
	* config/i386/att.h, config/i386/sco5.h,
	config/i386/sysv3.h
	(ASM_FILE_START_1): Delete.

2003-06-13  Kelley Cook  <kelleycook@wideopenwest.com>

	* config/i386/bsd.h: Remove ASM_FILE_START.
	* config/i386/djgpp.h: Likewise.
	* config/i386/gas.h (ASM_FILE_START): Output .file before .intel_syntax.

	* config/i386/djgpp.h: Move included unix.h, bsd.h, gas.h to ...
	* config.gcc (i[34567]86-pc-msdosdjgpp): ... here.

2003-06-13  Vladimir Makarov  <vmakarov@redhat.com>

	PR bootstrap/10835
	* haifa-sched.c (max_lookahead_tries,
	cached_first_cycle_multipass_dfa_lookahead,
	cached_issue_rate): New variables.
	(max_issue): Check the number of tries.
	(choose_ready): Calculate max_lookahead_tries.
	(sched_init): Check cached_issue_rate.

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

	* cfgbuild.c (make_edges): Set ABNORMAL with SIBCALL.
	* cfgrtl.c (purge_dead_edges): Expect it too.

2003-06-13  Jim Wilson  <wilson@tuliptree.org>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR bootstrap/10983
	* combine.c (make_extraction): Use gen_lowpart_for_combine
	when extracting from a REG and not in the destination of a SET.

2003-06-13  Doug Evans  <dje@sebabeach.org>

	* tsystem.h (abort): Declare in inhibit_libc case to remove build
	warnings for addvsi3, et.al.

2003-06-13  Aldy Hernandez  <aldyh@redhat.com>

	* c-common.c (handle_mode_attribute): Use VECTOR_MODE_P macro.

	* simplify-rtx.c (simplify_subreg): Same.

	* emit-rtl.c (gen_lowpart_common): Same.

2003-06-13  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Fix comment typos.
	* fold-const.c: Likewise.

2003-06-13  Doug Evans  <dje@sebabeach.org>
	    Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r-protos.h (m32r_pass_by_reference): Declare.
	* config/m32r/m32r.c (m32r_pass_by_reference): New fn.
	(m32r_va_arg): Use it.
	* config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Ditto.
	(RETURN_IN_MEMORY): Ditto.

2003-06-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* c-typeck.c: Remove #if 0 clauses.

	PR other/1494
	* config/alpha/openbsd.h, config/i386/openbsd.h,
	config/m68k/openbsd.h, config/sparc/openbsd.h: Remove
	residual reference to EGCS.

2003-06-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (output_call_mem): If the address references the link-register
	use an instruction sequence that avoids early-clobbering IP.
	(eliminate_lr2ip): Delete.

2003-06-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-format.c (format_types_orig): Disallow '*' width/precision in
	asm_fprintf format checks.

2003-06-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_va_arg): Fix alignment when retrieving
	non-integral types from integer register save area slots.

2003-06-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/i386/svr3dbx.h: GNU CC -> GCC; Intel 385 -> Intel 386.

2003-06-13  Florian Weimer  <fw@deneb.enyo.de>

	* doc/invoke.texi (SPARC Options): Document ``-mimpure-text''.

2003-06-13  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (TARGET_ASM_FILE_END): Set TARGET_ASM_FILE_END
	to file_end_indicate_exec_stack.

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

	PR target/11089
	* config/i386/i386.md (sse_movaps): Use an expander to force
	one operand to be a register.
	(sse_movups): Likewise.

2003-06-13  Doug Evans  <dje@sebabeach.org>

	Remove some build warnings.
	* config/m32r/initfini.c (__CTOR_LIST__,__DTOR_LIST__): Attribute used.
	(__do_global_ctors,__do_global_dtors): Ditto.

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

	PR middle-end/10557
	* rtlanal.c (subreg_offset_representable_p): Relax subreg check.

2003-06-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Fix a comment typo.

2003-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>

	PR target/10142
	* config/sparc/sparc.c (function_arg_record_value_parms): Add
	new 'stack' field.
	(function_arg_record_value_1): Set 'stack' to 1 if we run out of
	integer slots for an integer field.
	(function_arg_record_value_3): Shift vector index.
	(function_arg_record_value_2): Likewise.
	(function_arg_record_value): Initialize 'stack' to 0.
	Set 'stack' to 1 if we run out of integer slots for an integer field.
	Generate (parallel [(expr_list (nil) ...) ...]) if 'stack' is set to 1.

2003-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/10955
	* unroll.c (unroll_loop): Fix off-by-one bug.

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

	* config/rs6000/rs6000.c (function_arg): Remove typo.

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

	* config/i386/i386.c (legitimate_constant_p): Handle UNSPEC_NTPOFF
	and UNSPEC_DTPOFF.

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

	PR middle-end/10475
	* expmed.c (emit_store_flag): Use simplify_gen_subreg directly
	for extracting sub-words.

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

	PR target/7594
	* config/m68k/m68k.md (zero_extendhisi2): Use gen_lowpart_SUBREG.
	(zero_extendqihi2, zero_extendqisi2): Likewise.

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

	* config/rs6000/rs6000.c (function_arg): Always split vectors for
	e500 if it's a stdarg function.
	(function_arg_advance): Advance 2 registers for vectors in a
	stdarg function.
	(init_cumulative_args): Initialize stdarg.
	(rs6000_spe_function_arg): New.

	* config/rs6000/rs6000.h (rs6000_args): Add stdarg.

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

	* config/rs6000/rs6000.h (MODES_TIEABLE_P): Add SPE vectors.

2003-06-12  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/168
	* fold-const.c (tree_expr_nonnegative_p):  Handle addition
	and multiplication of zero extensions, floating point division,
	and integer<->fp, fp<->fp and zero extension conversions.
	The built-in ceil and floor functions preserve signedness.

2003-06-12  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog: Follow spelling conventions.
	* ChangeLog.2: Likewise.
	* c-decl.c: Likewise.
	* cfgloop.h: Likewise.
	* cgraph.c: Likewise.
	* coverage.c: Likewise.
	* cppcharset.c: Likewise.
	* cpphash.h: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* dbxout.c: Likewise.
	* df.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* explow.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gengtype.c: Likewise.
	* ggc.h: Likewise.
	* opts.c: Likewise.
	* real.c: Likewise.
	* reload.c: Likewise.
	* stmt.c: Likewise.

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

	* doc/install.texi (m32r-*-elf): Change company to Renesas.

Thu Jun 12 20:00:55 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (flow_delete_block_noexpunge): Kill.
	* cfgrtl.c (flow_delete_block_noexpunge): Merge to
	rtl_delete_block.

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

	PR inline-asm/4823
	* reg-stack.c (any_malformed_asm): New.
	(check_asm_stack_operands): Set it.
	(convert_regs_1): Check it before aborting.

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

	* config/rs6000/spe.md: Change all clobbers of the accumulator to sets.

2003-06-12  Jakub Jelinek  <jakub@redhat.com>

	* c-opts.c (complain_wrong_lang): Add on argument.
	Print no- switch if on is false.
	(c_common_decode_option): Adjust caller.

2003-06-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologue): Use LA instead of AR
	to initialize GOT register.

2003-06-12  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (tree_expr_nonnegative_p): Add support for
	floating point constants, addition and multiplication.

2003-06-12  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (adddi3_compact, subdi3_compact): Add earlyclobber
	constraint modifier for operand 0.

2003-06-12  Hans-Peter Nilsson  <hp@axis.com>

	Don't warn on dollars in builtin macro definitions,
	e.g. __REGISTER_PREFIX__.
	* cpphash.h (struct cpp_reader): Move member warn_dollars...
	* cpplib.h (struct cpp_options): ...to here.  Change type to
	unsigned char.
	* cppinit.c (cpp_create_reader): Set it to 1 here.
	(post_options): Don't set it here.
	* c-opts.c (c_common_init_options): Reset it to 0 here.
	(finish_options): Set it here.
	* cpplex.c (forms_identifier_p): Tweak for new location of
	warn_dollars.

	* configure.in (assembler dwarf2 debug_line support): Define insn
	for cris-*-* and mmix-*-*.
	* configure: Regenerate.

2003-06-11  Uwe Stieber  <uwe@kaos-group.de>

	* config.gcc (arm*-*-kaos*, i[34567]86-*-kaos*, powerpc-*-kaos*,
	powerpcle-*-kaos*, strongarm-*-kaos*): New targets.
	(sh-*-elf*): Add sh*-*-kaos* support.
	* config/kaos.h, config/arm/kaos-strongarm.h, config/arm/kaos-arm.h,
	config/i386/kaos-i386.h, config/rs6000/kaos-ppc.h,
	config/sh/kaos-sh.h: New files.

2003-06-12  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (fis_get_condition): Make it a global function.
	* reload1.c (reload_cse_move2add): Detect implicit sets.
	* rtl.h: Add a prototype for fis_get_condition.

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

	* stmt.c (expand_asm_operands): Don't warn for memories with
	queued addresses.

2003-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.h (SUBTARGET_ASM_RELAX_SPEC): Rewrite without
	brackets.

2003-06-11  Neil Booth  <neil@daikokuya.co.uk>

	* hooks.c (hook_int_size_t_constcharptr_int_0): New.
	* hooks.h (hook_int_size_t_constcharptr_int_0): New.
	* langhooks-def.h (lhd_decode_option, LANG_HOOKS_DECODE_OPTION): Die.
	(LANG_HOOKS_HANDLE_OPTION, LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decode_option): Remove.
	* langhooks.h (struct lang_hooks): Remove decode_option.
	* opts.c (handle_option): No longer use decode_option.

2003-06-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopanal.c (variable_initial_value): Update the set of altered
	registers correctly.

2003-06-11  Roger Sayle  <roger@eyesopen.com>
	    Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/d30v/d30v.h: Delete reference to ASM_FINAL_SPEC.
	* config/i386/netbsd-elf.h: Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/mn10300/mn10300.h: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/v850/v850.h: Likewise.
	* config/vax/netbsd-elf.h: Likewise.
	* config/xtensa/elf.h: Likewise.
	* config/xtensa/linux.h: Likewise.

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

	* config/mips/iris5gas.h (MDEBUG_ASM_SPEC): Override to match
	DWARF 2 default.

	* config/mips/dbxmdebug.h: New file.
	* config.gcc (mips-sgi-irix6*o32, mips-sgi-irix5*): Use it with
	gas and --with-stabs.

2003-06-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (can_move_by_pieces): align argument may be unused.

2003-06-11  J"orn Rennecke <joern.rennecke@superh.com>

	* expr.c (convert_move): Handle moves between two CONCATs.

2003-06-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (RETURN_IN_MEMORY): Accept DImode if
	!TARGET_H8300.

2003-06-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (final_prescan_insn): Don't dump rtl.
	* config/h8300/h8300.h (MASK_RTL_DUMP): Remove.
	(TARGET_RTL_DUMP): Likewise.
	(TARGET_SWITHCES): Remove -mrtl-dump.

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

	* optabs.c (gen_cond_trap): Fix prepare_operand typo.

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

	* config/ia64/ia64.md (call_gp): Fix memory mode.

2003-06-10  James E Wilson  <wilson@tuliptree.org>

	PR target/8812
	* reload1.c (choose_reload_regs): For equiv reg, add loop over all
	hard regs for reload_reg_used_at_all and reg_class_contents checks.

2003-06-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (print_operand): Remove support for
	operand character 'b'.
	Add the AND case to operand character 'c'.
	* config/h8300/h8300.md (two anonymous patterns): Replace
	operand character 'b' with 'c'.

2003-06-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (print_operand): Remove support for
	operand character 'u'.

2003-06-10  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Fix typo.
	* configure: Regenerate.

2003-06-10  Loren James Rittle  <ljrittle@acm.org>

	* config/alpha/alpha.c (unicosmk_file_end): Add conditional
	compilation guard.

2003-06-10  J"orn Rennecke <joern.rennecke@superh.com>

	* sh-protos.h (function_symbol): Declare.
	* sh.c (expand_block_move, expand_ashiftrt): Use it.
	(sh_expand_prologue, sh_expand_epilogue): Likewise.
	(sh_initialize_trampoline): Likewise.
	(function_symbol): New function.
	* sh.md (udivsi3, divsi3, mulsi3, ic_invalidate_line): Use it.
	(initialize_trampoline, call, call_pop, call_value, sibcall): Likewise.
	(call_value_pop, shcompact_return_tramp): Likewise.

	* sh.h (OVERRIDE_OPTIONS): Don't suppress --profile-arc-flag.

	* sh.md (GOTaddr2picreg): Use gen_lowpart to get lowpart of
	target register.

2003-06-10  DJ Delorie  <dj@redhat.com>

	* doc/md.texi (Machine Constraints): Document stormy's Z
	constraint.

2003-06-10  Geoffrey Keating  <geoffk@apple.com>

	* except.c (call_site_base): Mark with GTY.

2003-06-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm-proto.h: Convert to ISO C90 prototypes.
	* arm.c: Likewise.

2003-06-10  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_output_mi_thunk): Call insn_locators_initialize.

2003-06-10  Steve Ellcey  <sje@cup.hp.com>

	* calls.c (expand_call): Convert structure_value_addr to Pmode if
	necessary.

2003-06-10  Andrew Haley  <aph@redhat.com>

	* langhooks-def.h (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
	(LANG_HOOKS_DECLS): Add LANG_HOOKS_DECL_OK_FOR_SIBCALL.
	(lhd_decl_ok_for_sibcall): New.
	* langhooks.c (lhd_decl_ok_for_sibcall): New.
	* langhooks.h (lang_hooks_for_decls.ok_for_sibcall): New field.
	* calls.c (expand_call): Check lang_hook before generating a
	sibcall.

2003-06-10  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_extra_constraint_p): Add Z,
	which matches (const_int 0) for addhi3.
	* config/stormy16/stormy16.md: Document known constraints.
	(addhi3): Handle adding zero.

2003-06-10  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (HARD_REGNO_RENAME_OK): New.
	* config/m32r/m32r.c (m32r_hard_regno_rename_ok): New.
	* config/m32r/m32r-protos.h: Prototype it.

2003-06-10  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/eabi.h (TARGET_OS_CPP_BUILTINS): Define builtins
	common to rs6000 sysv targets.
	* config/rs6000/eabisim.h (TARGET_OS_CPP_BUILTINS): Ditto.
	* config/rs6000/rtems.h (TARGET_OS_CPP_BUILTINS): Ditto.

2003-06-10  Nick Clifton  <nickc@redhat.com>

	* config.gcc: Add arm-wince-pe target.
	* config/arm/pe.h (MULTILIB_DEFAULTS): Define.
	Add comment about default apcs26 support.
	* config/arm/t-pe (MULTILIB_OPTIONS): Add an -mapcs-32
	multilib.
	(MULTILIB_DIRNAMES): Add 'apcs32'.
	* config/arm/t-wince-pe: New makefile fragment.
	* config/arm/wince-pe.h: New file.  Overrides a few definitions
	in arm/pe.h

2003-06-10  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin): Optimize cos(-x) as cos(x).
	* fold-const.c (fold <NEGATE_EXPR>): Convert -f(x) into f(-x)
	when x is easily negated and f is sin, tan or atan.
	(fold <MULT_EXPR>): Optimize tan(x)*cos(x) and cos(x)*tan(x) as
	sin(x) with flag_unsafe_math_optimizations.
	(fold <RDIV_EXPR>): With flag_unsafe_math_optimizations fold
	sin(x)/cos(x) as tan(x) and cos(x)/sin(x) as 1.0/tan(x).

2003-06-10  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold <EQ_EXPR>):  Don't fold x == x only if x
	is a floating point type *and* we currently honor NaNs.
	(fold <NE_EXPR>): Likewise.

2003-06-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/11131
	* tree-inline.c (inlinable_function_p): Call the language-specific
	hook early.

2003-06-09  David Taylor  <dtaylor@emc.com>

	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_va_arg):  Skip over
	the f_res field.

2003-06-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove references to host_truncate_target.
	* configure: Regenerate.
	* config.gcc: Remove references to truncate_target,
	host_truncate_target.

	* Makefile.in, configure.in, config/m68hc11/t-m68hc11-gas:
	Replace "build_canonical" with build, "host_canonical" with host.
	* configure.in: Use GCC_TOPLEV_SUBDIRS.
	* aclocal.m4: Include ../config/acx.m4.
	* configure: Regenerate.

2003-06-09  David Taylor  <dtaylor@emc.com>

	* config/rs6000/rs6000.c (rs6000_build_va_list): Give the two
	bytes of padding in the __va_list_tag structure a name (reserved).

2003-06-09  Jason Merrill  <jason@redhat.com>

	* fold-const.c (operand_equal_p): Handle ADDR_EXPR and TRUTH_NOT_EXPR.

2003-06-09  Osku Salerma  <osku@iki.fi>

	* c-format.c (check_format_string, get_constant): New.
	(handle_format_attribute, handle_format_arg_attribute,
	decode_format_attr): Change to use above functions.

2003-06-09  Richard Henderson  <rth@redhat.com>

	* stmt.c (expand_asm_operands): Re-word warning.

2003-06-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/8787
	* config/i386/djgpp.h (ASM_FILE_START): emit `.intel_syntax'
	if -masm=intel.

2003-06-09  James E Wilson  <wilson@tuliptree.org>

	* config/frv/cmovc.c, config/frv/cmovh.c, config/frv/cmovw.c,
	config/frv/frvbegin.c, config/frv/frvend.c, config/frv/lib1funcs.asm:
	Add libgcc exception.

2003-06-09  David Edelsohn  <edelsohn@gnu.org>
	    Ayal Zaks  <gcchaifa@us.ibm.com>

	* config/rs6000/rs6000.md (define_attr "type"): Add insert_word.
	(insvsi*): Add insert_word attribute.
	* config/rs6000/rs6000.c (rs6000_variable_issue): Add TYPE_INSERT_WORD.
	* config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
	power4.md,rios1.md,rios2.md,rs64.md}: Add insert_word.

2003-06-09  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Fix a comment typo.

2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>

	* tree-inline.c (expand_call_inline): DECL_SOURCE_LINE_FIRST is
	removed.

2003-06-09  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (gen_block_redirect): Use locators.

2003-06-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (THUMB_PRINT_OPERAND_ADDRESS): Use %wd in format and remove
	cast to int.

2003-06-09  Richard Sandiford  <rsandifo@redhat.com>

	* configure.in: Assume gas 2.14 and above can handle MIPS relocation
	operators.
	* configure: Regenerated.

2003-06-09  Richard Sandiford  <rsandifo@redhat.com>
	    Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (GLOBAL_POINTER_REGNUM): New macro.
	(PIC_OFFSET_TABLE_REGNUM): Look at pic_offset_table_rtx after reload.
	(STARTING_FRAME_OFFSET): Don't allocate a cprestore slot for
	n32/64 PIC.
	(MUST_SAVE_REGISTERS): Delete.
	* config/mips/mips.c (mips_frame_info): Remove extra_size field.
	(machine_function): Add global_pointer field.
	(mips_classify_constant): Check for (const $gp) using pointer equality
	with pic_offset_table_rtx.
	(mips_classify_constant): Handle RELOC_LOADGP_HI and RELOC_LOADGP_LO.
	(mips_restore_gp): Use current_function_outgoing_args_size.
	(print_operand): Use PIC_OFFSET_TABLE_REGNUM instead of
	GP_REG_FIRST + 28.  Handle relocation strings that have
	more than one '('.
	(mips_reloc_string): Handle RELOC_LOADGP_HI and RELOC_LOADGP_LO.
	(mips_global_pointer): New function.
	(mips_save_reg_p): New function, mostly split out from...
	(compute_frame_size): ...here.  Remove handling of extra_size.
	Reclaim args_size if no variables depend on it.  Don't treat gp
	as a special case: handle it in the main GPR loop.
	(mips_initial_elimination_offset): Fix comment.
	(save_restore_insns): Save every register in the GPR mask,
	removing distinction between mask and real_mask.
	(mips_output_function_prologue): Update .frame psuedo-op after
	the removal of extra_size.  Move the SVR4 PIC stack allocation
	and cprestore instructions to mips_expand_prologue.
	(mips_gp_insn): New function.
	(mips_expand_prologue): Set REGNO (pic_offset_table_rtx) to
	the chosen global pointer.  Handle SVR4 PIC stack allocation
	in the same way as other ABIs.  Adjust varargs code accordingly.
	Emit a cprestore insn after allocating the stack.  Use mips_gp_insn
	to emit the loadgp sequence.  Follow it with a loadgp_blockage
	if not using explicit relocs.
	(mips_output_function_epilogue): Reinstate the default gp register.
	(mips16_gp_pseudo_reg): Use pic_offset_table_rtx.
	(mips16_optimize_gp): Likewise.
	* config/mips/mips.md (UNSPEC_LOADGP): Remove.
	(UNSPEC_SETJMP, UNSPEC_LONGJMP): Remove.
	(UNSPEC_CPRESTORE, RELOC_LOADGP_HI, RELOC_LOADGP_LO): New.
	(loadgp): Remove.
	(loadgp_blockage, cprestore): New instructions.
	(builtin_setjmp_setup): Implement using emit_move_insn.  Use
	pic_offset_table_rtx.
	(builtin_setjmp_setup_32, builtin_setjmp_setup_64): Remove.
	(builtin_longjmp): Use gen_raw_REG to force use of $28.

2003-06-09  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_output_division): Declare.
	* config/mips/mips.h (MASK_CHECK_RANGE_DIV): Remove.
	(MASK_BRANCHLIKELY): Use MASK_CHECK_RANGE_DIV's old number.
	(TARGET_NO_CHECK_ZERO_DIV, TARGET_CHECK_RANGE_DIV): Remove.
	(TARGET_CHECK_ZERO_DIV): New macro.
	(TARGET_SWITCHES): Remove -mcheck-range-div & -mno-check-range-div.
	* config/mips/mips.c (mips_output_division): New function.
	* config/mips/mips.md (length): Take TARGET_CHECK_ZERO_DIV into
	account when calculating the default length of a division.
	(divmodsi4, divmoddi4, udivmodsi4, udivmoddi4): Turn into define_insns.
	Enable regardless of optimization level.  Use mips_output_division.
	(divmodsi4_internal, divmoddi4_internal, udivmodsi4_internal,
	udivmoddi4_internal, div_trap, div_trap_normal, div_trap_mips16,
	divsi3, divsi3_internal, divdi3, divdi3_internal, modsi3,
	modsi3_internal, moddi3, moddi3_internal, udivsi3, udivsi3_internal,
	udivdi3, udivdi3_internal, umodsi3, umodsi3_internal, umoddi3,
	umoddi3_internal): Remove.

2003-06-09  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_reg_names): Change hilo entry to "".
	(mips_sw_reg_names): Likewise.
	(mips_regno_to_class): Change hilo entry to NO_REGS.
	(hilo_operand): Use MD_REG_P.
	(extend_operator): New predicate.
	(override_options): Remove 'a' constraint.
	(mips_secondary_reload_class): Remove hilo handling.  Also remove
	handling of (plus sp reg) reloads for mips16.
	(mips_register_move_cost): Remove hilo handling.
	* config/mips/mips.h (FIXED_REGISTERS): Make hilo entry fixed.
	(MD_REG_LAST): Remove hilo from range.
	(HILO_REGNUM): Delete.
	(reg_class): Remove HILO_REG and HILO_AND_GR_REGS.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
	(PREDICATE_CODES): Add entry for extend_operator.
	(DEBUG_REGISTER_NAMES): Change hilo entry to "".
	* config/mips/mips.md: Remove hilo clobbers wherever they occur.
	Remove constraints from multiplication define_expands.  Remove
	clobbers from "decorative" define_expand patterns.
	(UNSPEC_HILO_DELAY): Delete.
	(*mul_acc_si, *mul_sub_si): Add early-clobber to operand 6.
	(mulsidi3, umulsidi3): Change pattern to match the TARGET_64BIT case.
	Adjust C code to just emit insns for !TARGET_64BIT.
	(mulsidi3_internal): Rename to mulsidi3_32bit.
	(mulsidi3_64bit): Use a "d" constraint for the destination.
	Use extend_operator so that the pattern can handle umulsidi3 as well.
	Split the instruction after reload.
	(*mulsidi3_64bit_parts): New pattern, generated by mulsidi3_64bit.
	(umulsidi3_internal): Rename to umulsidi3_32bit.
	(umulsidi3_64bit): Remove.
	(*smsac_di, *umsac_di): Line-wrap fixes.
	(udivsi3_internal): Don't allow operand 2 to be constant.
	(udivdi3_internal, umodsi3_internal, umoddi3_internal): Likewise.
	(movdi_internal2, movsi_internal): Remove hilo alternatives.
	(reload_in[sd]i, reload_out[sd]i, hilo_delay): Remove.

2003-06-09  Richard Sandiford  <rsandifo@redhat.com>

	PR target/10913
	* config/mips/mips.h (TARGET_FILE_SWITCHING, NO_DBX_FUNCTION_END,
	PUT_SDB_SCL, PUT_SDB_INT_VAL, PUT_SDB_VAL, PUT_SDB_ENDEF,
	PUT_SDB_TYPE, PUT_SDB_SIZE, PUT_SDB_DIM, PUT_SDB_START_DIM,
	PUT_SDB_NEXT_DIM, PUT_SDB_LAST_DIM, PUT_SDB_TAG, PUT_SDB_SRC_FILE,
	SDB_GENERATE_FAKE, TEXT_SECTION): Delete.
	(PUT_SDB_DEF, PUT_SDB_PLAIN_DEF, PUT_SDB_BLOCK_START,
	PUT_SDB_BLOCK_END, PUT_SDB_FUNCTION_END): Replace use of
	asm_out_text_file with asm_out_file.
	* config/mips/iris5gas.h (PUT_SDB_SIZE, PUT_SDB_TYPE): Likewise.
	* config/mips/elf.h (TEXT_SECTION): Undefine.
	* config/mips/elf64.h (TEXT_SECION): Undefine.
	* config/mips/openbsd.h (TEXT_SECION): Undefine.
	* config/mips/mips.c (asm_out_text_file, asm_out_data_file): Delete.
	(override_options): Disable small-data optimizations unless using
	gas or explicit relocations.
	(mips_asm_file_start, mips_asm_file_end, mips_output_function_epilogue,
	iris6_asm_named_section, iris6_asm_file_start): Remove code for
	handling TARGET_FILE_SWITCHING.
	(copy_file_data): Move into TARGET_IRIX6 block.

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

	* expr.h (EXPAND_MEMORY): New.
	* expr.c (expand_expr): Check it.
	* stmt.c (expand_asm_operands): Provide it when the constraint
	requires a memory.  Warn for memory input constraints without
	a memory operand.

2003-06-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* varasm.c: Don't include c-tree.h.

2003-06-08  Andreas Jaeger  <aj@suse.de>

	* predict.h: Convert to ISO C90 prototypes.
	* predict.c: Likewise.
	* tree-dump.h: Likewise.
	* tree-dump.c: Likewise.
	* diagnostic.h: Likewise.
	* diagnostic.c: Likewise.
	* combine.c: Likewise.

	* rtl.h: Convert prototypes of combine.c to ISO C90.

Sun Jun  8 21:27:41 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (insn_scope): New static function
	(block_locators_*, line_locators*, file_locators*): New static varrays.
	(scope_to_insns_initialize): Use them.
	(insn_line, insn_file): New functions.
	(scope_to_insns_finalize): Use insn_scope.
	(prologue_locator, epilogue_locator): New global variables.
	* emit-rt.c (try_split, make_insn_raw, make_jump_insn_raw,
	make_call_insn_raw, emit_copy_of_insn_after): Use locators.
	(emit_insn_after_scope, emit_insn_before_scope
	emit_jump_insn_after_scope, emit_jump_insn_before_scope
	emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
	(emit_insn_after_setloc, emit_insn_before_setloc
	emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
	emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
	use locators.
	* final.c (notice_source_line): Use locators.
	(final_start_function): Set initial source file and line.
	(final_scan_insn): Use locators.
	* ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
	noce_process_if_block, find_cond_trap): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* jump.c (duplicate_loop_exit_test): LIkewise.
	* print-rtl.c (print_rtx): Print locators.
	* recog.c (peephole2_optimize): Likewise.
	* rtl.h (INSN_SCOPE): Remove.
	(emit_insn_after_scope, emit_insn_before_scope
	emit_jump_insn_after_scope, emit_jump_insn_before_scope
	emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
	(emit_insn_after_setloc, emit_insn_before_setloc
	emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
	emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
	(insn_file, insn_line, prologue_locator, epilogue_locator): Declare.
	* unroll.c (copy_loop_body): Use locators.
	* function.c (set_insn_locators): New function.
	(thread_prologue_and_epilogue_insns): Set the locators accordingly.

2003-06-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (LONG_LONG_TYPE_SIZE): Set to 64.
	* config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _floatdisf
	_fixsfdi _fixunssfdi.
	(LIB2FUNCS_EXTRA): Add entries for clzhi2, ctzhi2, parityhi2,
	popcounthi2.
	(TARGET_LIBGCC2_CFLAGS): Remove -DDI=SI.
	* config/h8300/clzhi2.c: New.
	* config/h8300/ctzhi2.c: Likewise.
	* config/h8300/parityhi2.c: Likewise.
	* config/h8300/popcounthi2.c: Likewise.

Sun Jun  8 15:52:17 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.md (subsi_3_zext, sse2_nandv2di3): Fix predicates.
	* i386.c (k8_avoid_jump_misspredicts): Fix debug output.

	* cfg.c (verify_flow_info): Move IL independent checks from cfgrtl here.
	(dump_bb): New based on old dump_bb in cfgrtl.c
	(debug_bb, debug_bb_n): Move the functions from cfgrtl.c here.
	* cfghooks.h (cfgh_verify_flow_info): Return status.
	* cfglayout.c (cfg_layout_finalize): Verify CFG correctness.
	* cfgrtl.c (debug_bb, debug_bb_n): Move to cfg.c
	(dump_bb): Remove generic parts.
	(rtl_verify_flow_info_1): Break out from rtl_verify_flow_info.
	(rtl_verify_flow_info): Only check things dependeing on linearized RTL.

2003-06-08  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Rename options.c and options.h to c-options.c and
	c-options.h.
	(OBJS): Remove options.o.
	* c-opts.c: Don'tInclude c-options.h instead of options.h.
	* opts.c: Don't include options.h.
	(find_opt): Can't use enum opt_code or N_OPTS.
	* opts.h (struct cl_option, cl_options, cl_options_count): Move from...
	* opts.sh: ... here.

2003-06-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>

	PR pch/9830
	* ggc-common.c (HAVE_MMAP_FILE): Include sys/types.h
	if HAVE_MINCORE is defined.
	(MAP_FAILED): Define if not defined.
	(gt_pch_save): Test against MAP_FAILED.
	(gt_pch_restore): If HAVE_MINCORE, use MAP_FIXED to force
	the mapping address to the preferred base after checking it
	is possible to do so. Test against MAP_FAILED.
	* configure.in: Test for the presence of mincore in libc.
	* config.in: Regenerate.
	* configure: Regenerate.

2003-06-07  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_setup_incoming_varargs): Fix
	conditional compilation guard.

2003-06-08  Kazu Hirata  <kazu@cs.umass.edu>

	* optabs.c (expand_abs): Set result_unsignedp to 1 if
	flag_trav is zero.

2003-06-07  Richard Henderson  <rth@redhat.com>

	* c-cppbuiltin.c (c_cpp_builtins): Define __EXCEPTIONS for C also.

2003-06-07  Richard Henderson  <rth@redhat.com>

	* basic-block.h (EDGE_SIBCALL): New.
	(EDGE_ALL_FLAGS): Update.
	* cfg.c (dump_edge_info): Add sibcall name.
	* cfgbuild.c (make_edges): Use EDGE_SIBCALL.
	* cfgrtl.c (purge_dead_edges): Handle sibcalls.

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

	* mklibgcc.in (lib2funcs): Remove _exit.
	* libgcc2.c: Remove L_exit.
	* gbl-ctors.h: Remove declarations dependend on NEED_ATEXIT.

	* system.h: Poison NEED_ATEXIT, ON_EXIT, EXIT_BODY.

	* doc/tm.texi (Misc): Remove NEED_ATEXIT, ON_EXIT, EXIT_BODY.

	* ggc.h: Convert to ISO C90 prototypes.
	* ggc-none.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* ggc-simple.c: Likewise.

	* crtstuff.c: Remove undefined usage of INIT_SECTION_PREAMBLE.

	* system.h: Poison INIT_SECTION_PREAMBLE.

2003-06-07  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc (with_cpu handling): Translate sparc64 in
	$machine to --with-cpu=v9.
	* config/alpha/alpha.c
	(TARGET_ASM_GLOBALIZE_LABEL [TARGET_ABI_UNICOSMK]): Correct definition.
	(alpha_setup_incoming_varargs): #ifdef out when TARGET_ABI_UNICOSMK.

	* target.h: New hook asm_out.file_end.
	* target.h: Update to match.  New hook macro TARGET_ASM_FILE_END.
	* toplev.c (compile_file): Use targetm.asm_out.file_end.
	* system.h: Poison ASM_FILE_END.
	* varasm.c (file_end_indicate_exec_stack): New.
	* output.h: Prototype it.
	* doc/tm.texi: Document TARGET_ASM_FILE_END and
	file_end_indicate_exec_stack.  Delete references to attasm.h.

	* config/darwin.h (TARGET_ASM_FILE_END): Reset to darwin_file_end.
	(ASM_FILE_END): Delete; move code...
	* config/darwin.c (darwin_file_end): Here; new function.
	* config/darwin-protos.h: Prototype it.
	* config/alpha/alpha.c (unicosmk_asm_file_end): Make static,
	rename unicosmk_file_end.
	* config/arm/aof.h (ASM_FILE_END): Delete; move code...
	* config/arm/arm.c (aof_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to aof_file_end if AOF_ASSEMBLER.
	Make aof_dump_imports and aof_dump_pic_table static.
	* config/avr/avr.c (asm_file_end): Rename avr_file_end, make static.
	Set TARGET_ASM_FILE_END to avr_file_end.
	* config/c4x/c4x.c (c4x_file_end): Make static.  Take no arguments.
	Set TARGET_ASM_FILE_END to c4x_file_end.
	* config/h8300/h8300.c (asm_file_end): Rename h8300_file_end,
	make static. Take no arguments.  Set TARGET_ASM_FILE_END to
	h8300_file_end.
	* config/i370/i370.h (ASM_FILE_END): Delete; move code...
	* config/i370/i370.c (i370_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to i370_file_end.
	 * config/i386/i386.c (ix86_asm_file_end): Rename ix86_file_end.
	 Take no arguments.  Call file_end_indicate_exec_stack if
	 NEED_INDICATE_EXEC_STACK; don't use SUBTARGET_FILE_END.
	* config/i386/i386.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	Define NEED_INDICATE_EXEC_STACK to 0.
	* config/i386/linux.h, config/i386/linux64.h: Redefine
	NEED_INDICATE_EXEC_STACK to 1 instead of setting SUBTARGET_FILE_END.
	* config/i386/winnt.c (i386_pe_asm_file_end): Rename to
	i386_pe_file_end.  Take no arguments.  Use ix86_file_end.
	* config/ia64/ia64.c (ia64_hpux_asm_file_end): Rename to
	ia64_hpux_file_end, make static.  Take no arguments.
	* config/ip2k/ip2k.c (asm_file_start, asm_file_end,
	commands_in_prologues, commands_in_epilogues): Delete.
	(function_epilogue): Update to match.
	* config/mips/mips.c (mips_asm_file_end): Rename mips_file_end,
	make static.  Take no arguments.
	(iris6_asm_file_end): Rename iris6_file_end, make static, use
	mips_file_end, take no arguments.
	Set TARGET_ASM_FILE_END to iris6_file_end or mips_file_end as
	appropriate.
	* config/mmix/mmix.c (mmix_asm_file_end): Rename mmix_file_end,
	make static, take no arguments. Set TARGET_ASM_FILE_END to
	mmix_file_end.
	* config/pa/pa.c (output_deferred_plabels): Make static, take
	no arguments.  Set TARGET_ASM_FILE_END to output_deferred_plabels.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_END): Set it.
	(ASM_FILE_END): Delete; move code...
	* config/rs6000/rs6000.c (rs6000_xcoff_file_end): ... here;
	new static function.

	* config/avr/avr.h, config/cris/cris.h, config/h8300/h8300.h
	* config/mmix/mmix.h, config/mips/iris6.h, config/mips/mips.h:
	Don't set ASM_FILE_END.
	* config/alpha/linux-elf.h, config/m68k/linux.h, config/rs6000/linux.h
	* config/rs6000/linux64.h, config/s390/linux.h, config/sparc/linux.h
	* config/sparc/linux64.h: Set TARGET_ASM_FILE_END to
	file_end_indicate_exec_stack; don't set ASM_FILE_END.
	* config/alpha/unicosmk.h, config/i386/cygming.h
	* config/ia64/hpux.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	* config/arm/arm-protos.h, config/alpha/alpha-protos.h
	* config/avr/avr-protos.h, config/c4x/c4x-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/ip2k/ip2k-protos.h, config/mips/mips-protos.h
	* config/mmix/mmix-protos.h, config/pa/pa-protos.h: Update.

Sat Jun  7 18:32:13 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.h (OPTION_DEFAULT_SPECS): Avoid -mcpu default when -march is
	specified.

Sat Jun  7 15:20:01 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (stageprofile_build): Kill redundant target.
	* i386.c (mdep_reorg): Don't pad jumps for Athlon.

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

	* doc/tm.texi (Costs): Remove DONT_REDUCE_ADDR documentation.

	* config/avr/avr.h: Remove comment regarding DONT_REDUCE_ADDR.
	* config/dsp16xx/dsp16xx.h: Likewise.
	* config/i386/i386.h: Likewise.
	* config/ip2k/ip2k.h: Likewise.

2003-06-07  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (OJBS, c-opts.o): Update.
	(c-options.c, c-options.h): Rename options.h and options.c.
	(options.h): Rename options_.h.
	(opts.o): New.
	* c-common.h (c_common_handle_option): Replace c_common_decode_option.
	(c_common_init_options): Update prototype.
	* c-lang.c (c_init_options): Update prototype.
	(LANG_HOOKS_HANDLE_OPTION): Override.
	(LANG_HOOKS_DECODE_OPTION): Drop.
	* c-opts.c: Include opts.h and options.h instead of c-options.h
	and c-options.c.
	(lang_flags): Move to file scope.
	(find_opt, c_common_decode_option): Remove.
	(CL_C, CL_OBJC, CL_CXX, CL_OBJCXX, CL_JOINED, CL_SEPARATE,
	CL_REJECT_NEGATIVE): Move to opts.h.
	(missing_arg): Update prototype.
	(c_common_init_options): Update for new prototype.
	(c_common_handle_options): Filenames are passed as N_OPTS.
	* hooks.c (hook_int_void_0): New.
	* hooks.h (hook_int_void_0): New.
	* langhooks-def.h (LANG_HOOKS_INIT_OPTIONS): New default.
	(LANG_HOOKS_HANDLE_OPTION): Default to NULL for now.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (init_options): Update.
	(handle_option): New.
	* opts.c, opts.h: New files.
	* opts.sh: Update c file to include opts.h and options.h.
	* toplev.c: Include opts.h; change options.h to options_.h.
	(parse_options_and_default_flags): Get lang_mask, use
	handle_option for language-specific handling.
	* objc/objc-lang.c (LANG_HOOKS_DECODE_OPTON): Drop.
	(LANG_HOOKS_HANDLE_OPTION): Override.
	(objc_init_options): Update.

2003-06-07  Magnus Kreth <magnus.kreth@gmx.de>
	    Thibaud Gaillard <thibaud.gaillard@nto.atmel.com>

	PR other/7031
	* Makefile.in (install-common): Remove GCOV_INSTALL_NAME instead of
	gcov.

2003-06-07  Kelley Cook  <kelleycook@wideopenwest.com>

	* configure.in (HAVE_LD_RO_RW_SECTION_MIXING): Remove quotes in
	section names.
	* configure: Regenerate.

2003-06-07  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (CRT_CALL_STATIC_FUNCTION): Define.

2003-06-06  James E Wilson  <wilson@tuliptree.org>

	PR inline-asm/10890
	* reload1.c (merge_assigned_reloads): Abort only if two reloads have
	different in fields.

2003-06-06  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Make $(target_subdir) correspond with top level usage.
	* Makefile.in: Likewise.
	* configure: Regenerate.

2003-06-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL): Cast `SIZE' and `ALIGNED' parameters to
	unsigned HOST_WIDE_INT.
	* pa-pro-end.h (ASM_OUTPUT_ALIGNED_COMMOM, ASM_OUTPUT_ALIGNED_LOCAL):
	Likewise.
	* pa64-hpux.h (ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL):
	Likewise.

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

	* doc/install.texi (Prerequisites): New section documenting
	tools and packages necessary prior to building and/or
	modifying GCC.
	* doc/install.texi2html: Also generate prerequisites.html.

2003-06-06  Richard Earnshaw  <rearnsha@arm.com>

	PR target/11052
	* ifcvt.c (noce_process_if_block): Fail if the destination has
	side-effects.

2003-06-06  Jason Merrill  <jason@redhat.com>

	* stmt.c (resolve_asm_operand_names): Rename from
	resolve_operand_names.  No longer static.  Avoid needless copying.
	Don't build array of constraints.
	(expand_asm_operands): Build it here.
	* tree.h: Declare resolve_asm_operand_names.

	* stmt.c (expand_decl): Put artificial vars into registers even
	when not optimizing, and don't mark the regs as user vars.

2003-06-06  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (FUNCTION_ARG_1): Consistently use NEW_MODE for the mode
	of the generated register.

2003-06-06  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Add a missing sparc64 case.

2003-06-06  Jakub Jelinek  <jakub@redhat.com>

	* mklibgcc.in: Propagate .note.GNU-stack section if needed into
	the .hidden assembly stubs.

2003-06-06  H.J. Lu <hongjiu.lu@intel.com>

	* config.gcc (extra_headers): Add emmintrin.h for i[34567]86-*-*
	and x86_64-*-*.

	* config/i386/mmintrin.h: Update version and add alternate
	intrinsic names.
	* config/i386/xmmintrin.h: Likewise.

	* config/i386/xmmintrin.h: Include <emmintrin.h>. Move SSE2
	intrinsics to ...
	* config/i386/emmintrin.h: Here. New file.

2003-06-06  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold <ABS_EXPR>):  Re-fold the result of folding
	fabs(-x) into fabs(x).  Use tree_expr_nonnegative_p to determine
	when the ABS_EXPR (fabs or abs) is not required.
	(tree_expr_nonnegative_p): Move the logic that sqrt and exp are
	always nonnegative from fold to here.  Additionally, cabs and fabs
	are always non-negative, and pow and atan are non-negative if
	their first argument is non-negative.

	* builtins.c (fold_builtin_cabs): New function to fold cabs{,f,l}.
	Evaluate cabs of a constant at compile-time.  Convert cabs of a
	non-complex argument into fabs.  Convert cabs(z) into
	sqrt(z.r*z.r + z.i*z.i) at the tree-level with -ffast-math or
	-funsafe-math-optimizations or -ffast-math.
	(fold_builtin): Convert BUILT_IN_FABS{,F,L} into an ABS_EXPR.
	Fold BUILT_IN_CABS{,F,L} using fold_builtin_cabs.

Thu Jun  5 20:51:09 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* sourcebuild.texi (Front End Directory): Document new hooks.

Fri Jun  6 11:02:35 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* function.c (FLOOR_ROUND, CEIL_ROUND): Fix.
	* i386.md (gen_pro_epilogue_adjust_stack): Deal with gigantic
	stack frames.
	(pro_epilogue_adjust_stack_rex64_2): New pattern

Fri Jun  6 11:03:14 CEST 2003  Jan Hubicka  <jh@suse.cz>
			       Pop Sebastian
			       Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.h, cfghooks.c: New files.
	* Makefile.in (BASIC_BLOCK_H): Depends on cfghooks.h.
	(OBJS): Add cfghooks.o.
	(cfghooks.o): New rule.
	* basic-block.h (split_edge): Rename to rtl_split_edge.
	(verify_flow_info): Rename to rtl_verify_flow_info.
	(cfghooks.h): Included here.
	* cfgrtl.c (split_edge): Renamed rtl_split_edge.
	(verify_flow_info): Renamed rtl_verify_flow_info.
	* toplev.c (rest_of_compilation): Call rtl_register_cfg_hooks.

	* basic-block.h (split_block, split_edge, flow_delete_block,
	redirect_edge_and_branch, redirect_edge_and_branch_force): Delete.
	(flow_delete_block_noexpunge):  Return void.
	* cfg.c (verify_flow_info): New function.
	* cfgcleanup.c (try_simplify_condjump, outgoing_edges_match,
	try_crossjump_to_edge, try_optimize_cfg, delete_unreachable_blocks):
	Use delete_block.
	* cfglayout.c (function_footer): Rename to...
	(cfg_layout_function_footer): ... this variable
	(unlink_insn_chain): Make global.
	(fixup_reorder_chain, record_effective_endpoints): Update.
	(cleanup_unconditional_jumps): Use delete_block.
	(cfg_layout_redirect_edge, cfg_layout_split_block): Move to cfgrtl.c
	(cfg_layout_duplicate_bb): Use redirect_edge_and_branch_force.
	(cfg_layout_initialize, cfg_layout_finalize): Update hooks.
	* cfglayout.h (cfg_layout_redirect_edge, cfg_layout_split_block):  Delete.
	(cfg_layout_function_footer): Declare.
	* cfgloopmanip (split_loop_bb): Do not update RBI.
	(remove_bbs): Use delete_block.
	(loop_reidrect_edge, loop_delete_branch_edge): Use
	redirect_edge_and_branch.
	(create_preheader): Use split_block and redirect_edge_and_branch_force.
	(split_edge_with): Likewise.
	* cfgrtl.c: Include cfglayout.h
	(split_edge): Rename to ...
	(rtl_split_edge) ... this one; make local.
	(redirect_edge_and_branch): Rename to ...
	(rtl_redirect_edge_and_branch) ... this one; make local.
	(redirect_edge_and_branch_force): Rename to ...
	(rtl_redirect_edge_and_branch_force) ... this one; make local.
	(cfg_layout_delete_block, cfg_layout_delete_edge_and_branch_force): New.
	(cfg_layout_redirect_edge_and_branch, cfg_layout_split_block): Move here from
	cfglayout.c; update to directly call RTL counterparts.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): New functions.
	* ifcvt.c (find_cond_trap): Use delete_block.
	(find_if_case_1): Use delete_block.
	(find_if_case_2): Use delete_block.
	* rtl.h (unlink_insn_chain): Declare.
	* toplev.c (rtl_reigster_cfg_hooks): New.

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

	* recog.c (peephole2_optimize): Revert last change.

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

	* recog.c (peephole2_optimize): Don't split block unless
	can_throw_internal.

2003-06-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (get_shift_alg): Correct the syntax of rotxl.
	* config/h8300/h8300.md (*addsi3_lshiftrt_16_zexthi): Likewise.

2003-06-05  Kelley Cook  <kelleycook@wideopenwest.com>

	PR optimization/4490
	* config/i386/i386.md: Don't use XFMode if TARGET_128BIT_LONG_DOUBLE.
	* doc/invoke.texi (m96bit-long-double, m128bit-long-double):  Reword
	documentation to accurately reflect what these options do.

2003-06-06  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (STARTFILE_SPEC): Handle -pie.  Simplify.
	(ENDFILE_SPEC): Redefine to handle -pie.

2003-06-05  Phil Edwards <phil@jaj.com>

	* Makefile.in (qmtest-g++): Use target_alias, not target.

2003-06-05  Per Bothner  <pbothner@apple.com>

	* toplev.c (push_srcloc):  Simplify behavior to save current location
	and set current location to parameters.
	(pop_srcloc):  Simplify semantics.
	(lang_dependent_init):  Remove now-useless initial push_srcloc.

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

	* dwarf2out.c (loc_descriptor_from_tree): Return 0 for
	language-specific tree codes.

2003-06-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/9986
	* pa.c (pa_init_builtins): Also set implicit_built_in_decls for
	BUILT_IN_FPUTC_UNLOCKED to NULL_TREE.

Thu Jun  5 18:32:46 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* install.tex: Document profiledbootstrap.

	* configure.in:  Add support for lang.stageprofile and
	lang.stagefeedback
	* Makefile.in (clean, distclean): Kill new stages
	(POSTSTAGE1_FLAGS_TO_PASS): Break from ...
	(STAGE2_FLAGS_TO_PASS): ... this one.
	(STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS): New.
	(stage[2-4]_build): Add POSTSTAGE1_FLAGS_TO_PASS.
	(stageprofile_build, stageprofile_copy, stagefeedback_build,
	stagefeedback_copy): New.
	(restageprofile, restagefeedback, stageprofile-start,
	stageprofile, stagefeedback-start): Likewise.

2003-06-05  David Miller  <davem@redhat.com>
	    Richard Henderson  <rth@redhat.com>

	* optabs.c (HAVE_conditional_trap): Provide default.
	(gen_conditional_trap): Likewise.
	(init_optabs): Merge init_traps.
	(gen_cond_trap): Use prepare_operand.  Restructure and avoid ifdef.

Thu Jun  5 14:59:44 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* combine.c (simplify_if_then_else): (IF_THEN_ELSE (NE REG 0) (0) (8))
	is REG for nonzero_bits (REG) == 8.

Thu Jun  5 13:23:51 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.md (align): Fix warning; clarify what to do when no p2align
	is available.

2003-06-05  Nick Clifton  <nickc@redhat.com>

	* config.gcc (m32r-elf): Revert previous delta.
	* config/m32r/t-m32r (crtinit.o): Fix rule to work with
	multilibs.  Remove m32rx specific version.
	(crtfini.o): Likewise.
	(EXTRA_MULTILIB_PARTS): Define.

2003-06-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/md.texi (Machine Constraints): Correct the meaning of
	constraints related to floating-point registers on SPARC.

2003-06-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Paolo Bonzini  <bonzini@gnu.org>

	PR target/10663
	* configure.in (HAVE_LD_RO_RW_SECTION_MIXING): Redirect
	assembler and linker output to /dev/null.
	Use a 'sed' construct instead of 'grep -A1'.
	* configure: Regenerate.

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

	* config/i386/i386.c (struct ix86_address): Add seg.
	(no_seg_address_operand): New.
	(ix86_decompose_address): Restructure PLUS loop.  Accept one
	UNSPEC_TP if TARGET_TLS_DIRECT_SEG_REFS.  Adjust ESP swap test
	to test for a regnum, not stack_pointer_rtx.
	(ix86_address_cost): Reduce cost if non-default segment.
	(legitimate_address_p): Remove UNSPEC_TP check.
	(get_thread_pointer): Add to_reg argument.  Don't represent
	the thread pointer as a memory load.
	(legitimize_tls_address): Split out of ...
	(legitimize_address): ... here.
	(print_operand_address): Handle parts.seg.
	(ix86_expand_move): Use legitimize_tls_address.
	(ix86_rtx_costs): Handle UNSPEC_TP.
	* config/i386/i386.h (MASK_TLS_DIRECT_SEG_REFS): New.
	(TARGET_TLS_DIRECT_SEG_REFS): New.
	(TARGET_SWITCHES): Add tls-direct-seg-refs.
	(TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Default.
	(PREDICATE_CODES): Add no_seg_address_operand.
	* config/i386/i386.md (lea_1): Use it.
	(lea_1_rex64, lea_1_zext, lea_2_rex64): Likewise.
	(load_tp_si, add_tp_si, load_tp_di, add_tp_di): New.
	* config/i386/linux.h (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): New.
	* config/i386/linux64.h (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): New.
	* doc/invoke.texi: Add -mtls-direct-seg-refs.

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

	* Makefile.in (QMTESTRUNFLAGS): Set for DejaGNU emulation.
	(QMTEST_GPP_TESTS): Use "g++" by default.
	(stamp-qmtest): Tweak database creation.
	(QMTEST_DIR/context): Update context file format.
	(qmtest-g++): Tweak command-line.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (varasm.o): Don't set -Wno-error.
	* rs6000/t-rs6000 (varasm.o, out_object_file): Don't clear.

2003-06-04  Zack Weinberg  <zack@codesourcery.com>

	PR bootstrap/3163
	* aclocal.m4 (AC_FUNC_MMAP_ANYWHERE, AC_FUNC_MMAP_FILE): Delete.
	(gcc_AC_FUNC_MMAP_BLACKLIST): New.
	* configure.in: Check for sys/mman.h and mmap in AC_CHECK_HEADERS
	and AC_CHECK_FUNCS lists, respectively.  Use
	gcc_AC_FUNC_MMAP_BLACKLIST, not AC_FUNC_MMAP_ANYWHERE nor
	AC_FUNC_MMAP_FILE.
	* configure, config.in: Regenerate.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arm/aout.h (ASM_OUTPUT_SKIP): Fix cast for format specifier warning.
	* arm.c (arm_output_function_prologue): Fix format specifiers.
	* arm.h (ARM_PRINT_OPERAND_ADDRESS): Likewise.
	* m68k.c (m68k_output_mi_thunk): Use more readable %wd instead of
	HOST_WIDE_INT_PRINT_DEC.
	* vax.c (vax_output_function_prologue): Fix format specifiers.

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

	* cse.c (find_best_addr): Consider binary operators even if second
	argument is not CONST_INT.

2003-06-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* doc/invoke.texi (max-cse-path-length): Document.

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

	* config/i386/i386.md (align): Use ASM_OUTPUT_*ALIGN macros.

2003-06-04  Andrew Pinski <pinskia@physics.uc.edu>

	* config/rs6000/darwin.h (RS6000_OUTPUT_BASENAME):
	Remove semi-colon at the end of the expression.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i370.c (mvs_function_name_length): Fix signed/unsigned warnings.
	* i370.h (mvs_function_name_length): Likewise.
	* i960.h (CONSTANT_ALIGNMENT): Likewise.
	* mips/linux.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* pa/pa-pro-end.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* pa.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Delete unused
	variable.

2003-06-04  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Reorganize --with-cpu logic.  Set
	configure_default_options according to the default CPU, --with-cpu,
	--with-arch, --with-tune, --with-schedule, --with-abi, and
	--with-float.  Check for legal values of various options.
	* configure.in: Define configure_default_options in configargs.h.
	* configure: Regenerated.
	* config/mips/mips.h (TARGET_DEFAULT_ARCH_P)
	(TARGET_DEFAULT_FLOAT_P): New macros.
	* gcc.c (do_option_spec): New function.
	(struct default_spec, option_default_specs): New.
	(main): Call do_option_spec.
	* config/alpha/alpha.h, config/arm/arm.h, config/i386/i386.h,
	config/mips/mips.h, config/pa/pa.h, config/rs6000/rs6000.h,
	config/sparc/sparc.h (OPTION_DEFAULT_SPECS): Define.

	* doc/install.texi: Update --with-cpu documentation.  Mention
	--with-arch, --with-schedule, --with-tune, --with-abi, and
	--with-float.
	* doc/tm.texi (Driver): Document OPTION_DEFAULT_SPECS.

2003-06-04  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Only process --with-cpu logic in the third pass.

2003-06-04  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Reorganize --with-cpu section.  Remove an
	obsolete comment about the default CPU for x86-64.  Fix
	a typo for the ep9312.  Update the list of supported PowerPC
	CPUs.  Support a limited set of new --with-cpu options
	for i386.

2003-06-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_complex_function_value): Unpack
	complex numbers <= 32 bits into two registers.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha.c (print_operand_address): Fix format specifier warnings.
	* alpha/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* arm/aof.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
	* arm/pe.h (ASM_OUTPUT_COMMON): Likewise.
	* avr.h (ASM_OUTPUT_COMMON, ASM_GENERATE_INTERNAL_LABEL,
	ASM_OUTPUT_SKIP): Likewise.
	* c4x.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* dsp16xx.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* h8300.h (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_COMMON):
	Likewise.
	* i370.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* i386/cygming.h (ASM_OUTPUT_COMMON): Likewise.
	* i386/darwin.h (ASM_OUTPUT_COMMON): Likewise.
	* i960.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* m68k/hp320.h (PRINT_OPERAND_ADDRESS): Likewise.
	* mcore.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* pdp11.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* ptx4.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	* sparc/freebsd.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
	* svr3.h (ASM_OUTPUT_COMMON): Likewise.

2003-06-04  J"orn Rennecke <joern.rennecke@superh.com>

	* c-decl.c (c_init_decl_processing): Clear input_file_name
	while building common nodes.
	* dwarf2out.c (gen_compile_unit_die, dwarf2out_finish):
	Don't add working directory for strings like <built-in> .

2003-06-04  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Native as and ld required
	to bootstrap on AIX 5L.

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

	* c-common.c (handle_cleanup_attribute): New.
	(c_common_attributes): Add it.
	* c-decl.c (finish_decl): Honor the cleanup attribute.
	* doc/extend.texi (Variable Attributes): Document it.

	* unwind-c.c: New file.
	* Makefile.in (LIB2ADDEH): Add it.
	* config/t-darwin, config/t-linux, config/t-linux-gnulibc1,
	config/ia64/t-ia64: Likewise.

2003-06-04  Jakub Jelinek  <jakub@redhat.com>

	* function.c (trampolines_created): New variable.
	(expand_function_end): Set it when doing INITIALIZE_TRAMPOLINE.
	* function.h (trampolines_created): Add.
	* config/s390/linux.h (ASM_FILE_END): Define.
	* config/alpha/linux-elf.h (ASM_FILE_END): Define.
	* config/m68k/linux.h (ASM_FILE_END): Define.
	* config/rs6000/linux.h (ASM_FILE_END): Define.
	* config/rs6000/linux64.h (ASM_FILE_END): Define.
	* config/rs6000/ppc-asm.h: Add .note.GNU-stack on powerpc-linux.
	* config/sparc/linux.h (ASM_FILE_END): Define.
	* config/sparc/linux64.h (ASM_FILE_END): Define.
	* config/i386/i386.c (ix86_asm_file_end): Use SUBTARGET_FILE_END.
	* config/i386/linux.h (SUBTARGET_FILE_END): Define.
	* config/i386/linux64.h (SUBTARGET_FILE_END): Define.

Wed Jun  4 18:39:33 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (min_insn_size, k8_avoid_jump_misspredicts): New functions
	(ix86_reorg): Use it.
	* i386.md (align): New insn pattern.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.c (rest_of_type_compilation): Fix typo.

2003-06-04  Jakub Jelinek  <jakub@redhat.com>
	    Alan Modra  <amodra@bigpond.net.au>

	* config/i386/linux.h (NO_PROFILE_COUNTERS): Define to 1.
	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
	* config/i386/netbsd-elf.h (NO_PROFILE_COUNTERS): Likewise.
	* config/xtensa/xtensa.h (NO_PROFILE_COUTNERS): Likewise.
	* config/darwin.h (NO_PROFILE_COUNTERS): Likewise.
	* final.c (NO_PROFILE_COUNTERS): Define to 0 if not defined.
	(profile_function): Allow NO_PROFILE_COUNTERS to be non-constant.
	* config/rs6000/rs6000.c (output_profile_hook): Likewise.

	* configure.in (powerpc*-*, s390*-*): Set tls_as_opt.
	Pass it to $gcc_cv_as.
	* configure: Rebuilt.

	* config/rs6000/rs6000.c (rs6000_abi_name): Remove initializer.
	(print_operand): Allow TARGET_AIX to be non-constant.
	(rs6000_aix_emit_builtin_unwind_init, rs6000_emit_eh_toc_restore):
	Define unconditionally.
	(rs6000_elf_declare_function_name): New function.
	* config/rs6000/rs6000.md (eh_return): Allow TARGET_AIX to be
	non-constant.
	* config/rs6000/linux64.h [!RS6000_BI_ARCH] (TARGET_64BIT): Define
	to 1.
	(DEFAULT_ARCH64_P, RS6000_BI_ARCH_P): Define.
	[IN_LIBGCC2] (TARGET_64BIT): Define based on whether __powerpc64__
	is defined.
	(TARGET_AIX): Define to 1 if TARGET_64BIT.
	(PROCESSOR_DEFAULT): Remove.
	(TARGET_RELOCATABLE, RS6000_ABI_NAME, INVALID_64BIT,
	INVALID_32BIT, SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
	[RS6000_BI_ARCH] (OVERRIDE_OPTIONS, ASM_FILE_START): Define.
	(ASM_DEFAULT_SPEC, ASM_SPEC, LINK_OS_LINUX_SPEC): Define for both
	-m32 and -m64.
	(MULTILIB_DEFAULTS): Define.
	(SUBSUBTARGET_EXTRA_SPECS): Define.
	(ASM_SPEC32, ASM_SPEC64, ASM_SPEC_COMMON): Define.
	(TARGET_TOC): Define only if !RS6000_BI_ARCH.
	(TARGET_NO_TOC): Remove.
	[!RS6000_BI_ARCH] (TARGET_RELOCATABLE, TARGET_EABI,
	TARGET_PROTOTYPE): Define to 0.
	(NO_PROFILE_COUNTERS): Define to TARGET_64BIT.
	(PROFILE_HOOK): Only call output_profile_hook if TARGET_64BIT.
	(ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Adjust to work properly
	if !TARGET_64BIT.
	(USER_LABEL_PREFIX): Remove.
	(JUMP_TABLES_IN_TEXT_SECTION): Define to TARGET_64BIT.
	(SETUP_FRAME_ADDRESSES): Only call rs6000_aix_emit_builtin_unwind_init
	if TARGET_64BIT.
	(TARGET_OS_CPP_BUILTINS): Handle both -m32 and -m64.
	(LINK_OS_LINUX_SPEC32, LINK_OS_LINUX_SPEC64): Define.
	(STARTFILE_LINUX_SPEC, ENDFILE_LINUX_SPEC): Remove.
	(TOC_SECTION_ASM_OP): Define depending on TARGET_64BIT.
	(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
	(SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Define depending on
	TARGET_64BIT.
	(RS6000_CALL_GLUE): Likewise.
	(SAVE_FP_PREFIX, SAVE_FP_SUFFIX, RESTORE_FP_PREFIX,
	RESTORE_FP_SUFFIX): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Remove.
	(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_SOURCE_LINE,
	DBX_OUTPUT_BRAC, DBX_OUTPUT_NFUN): Only output dot before function
	name if TARGET_64BIT.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Handle both TARGET_64BIT and
	!TARGET_64BIT.
	(ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Remove undefs.
	(ASM_PREFERRED_EH_DATA_FORMAT): Take TARGET_64BIT into account.
	(DRAFT_V4_STRUCT_RET): Define.
	(SIGNAL_FRAMESIZE): New enum value.
	(MD_FALLBACK_FRAME_STATE_FOR): Define.
	* config/rs6000/default64.h: New file.
	* config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -m32 and -m64
	options.
	(SUBTARGET_OVERRIDE_OPTIONS): If rs6000_abi_name is NULL, set it
	to RS6000_ABI_NAME.  Only disallow mixing of -fPIC with -mcall-aixdesc
	if !TARGET_64BIT.
	[!RS6000_BI_ARCH] (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
	(ASM_DECLARE_FUNCTION_NAME): Use rs6000_elf_declare_function_name
	function.
	(TARGET_OS_SYSV_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Use it.
	(CPP_SYSV_SPEC): Remove.
	(CPP_SPEC): Remove cpp_sysv.
	(SUBTARGET_EXTRA_SPECS): Remove cpp_sysv.
	Add SUBSUBTARGET_EXTRA_SPECS.
	(SUBSUBTARGET_EXTRA_SPECS): Define.
	* config/rs6000/biarch64.h: New file.
	* config/rs6000/rs6000-protos.h (rs6000_elf_declare_function_name):
	New prototype.
	* config/rs6000/x-linux64: New file.
	* config/rs6000/t-linux64: Build -m64, -m32 and -m32 -msoft-float
	multilibs.
	* config/rs6000/eabi-ci.asm: Protect with #ifndef __powerpc64__.
	* config/rs6000/eabi-cn.asm: Likewise.
	* config/rs6000/tramp.asm: Likewise.
	* config/rs6000/sol-ci.asm: Likewise.
	* config/rs6000/sol-cn.asm: Likewise.
	* config/rs6000/linux.h (TARGET_64BIT): Define to 0.
	(TARGET_OS_CPP_BUILTINS): Use TARGET_OS_SYSV_CPP_BUILTINS.
	* config/rs6000/ppc-asm.h: Move __powerpc64__ section before
	_CALL_AIXDESC section.
	* config.gcc (powerpc64-*-linux*): Configure a bi-arch compiler,
	defaulting to -m64 unless --with-cpu= is one of the 32-bit CPUs
	or default32.

2003-06-04  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Revert accidentally committed ARM changes.

2003-06-04  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (dconstpi, dconste): New mathematical constants.
	(init_builtin_dconsts): New function to initialize dconstpi
	and dconste.
	(fold_builtin): Optimize exp(1.0) = e.  Evaluate exp(x) at
	compile time with -ffast-math when x is an integer constant.
	Optimize tan(0.0) = 0.0.  Optimize atan(0.0) = 0.0,
	atan(1.0) = pi/4 and tan(atan(x)) = x with -ffast-math.

2003-06-04  Roger Sayle  <roger@eyesopen.com>

	* calls.c (expand_call): Avoid calling pure or const functions
	when the result is ignored (or void) and none of the arguments
	are volatile.  Move warning diagnostic earlier in function.

2003-06-04  Andreas Jaeger  <aj@suse.de>

	* system.h: Do not poison TDESC_SECTION_ASM_OP,
	RDATA_SECTION_ASM_OP and SUBTARGET_PROLOGUE.

2003-06-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* final.c (asm_fprintf): Update comments, accept "-+ #0" flags,
	optimize '%' case, handle %c, don't accept %p, %e, %f or %g,
	handle %ll, optimize regular character case.

2003-06-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (cse.o): Add params.h dependency.
	* cse.c: Include params.h.
	(PATHLENGTH): Removed.
	(struct cse_basic_block_data): Make path array dynamic.
	(cse_end_of_basic_block): Use PARAM_MAX_CSE_PATH_LENGTH instead
	of PATHLENGTH.
	(cse_main, cse_basic_block): Allocate path array.
	* params.def (PARAM_MAX_CSE_PATH_LENGTH): New.

Wed Jun  4 09:49:21 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_reorg): Replace the jump instead of adding nop.
	* i386.md (UNSPEC_REP): New constant.
	(return_internal_long): New pattern.

2003-06-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/11018
	* config/sparc/sparc.c (sparc_v8plus_shift): Use which_alternative
	consistently to decide whether the scratch register is really
	required.

2003-06-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/10876
	* config/sparc/sparc.h (CONST_OK_FOR_LETTER): Add
	new 'O' constraint for constant 4096.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
	* config/sparc/sparc.md (adddi3 expander): Canonicalize pattern.
	Do not transform into MINUS insn for constant 4096.
	(*adddi3_sp64 insn): Canonicalize pattern. Add new alternative
	for constant 4096 as third operand.
	(addsi3 expander): Remove.
	(*addsi3 insn): Rename into 'addsi3'. Canonicalize pattern. Add
	new alternative for constant 4096 as third operand.
	(subdi3 expander): Do not transform into PLUS insn for constant 4096.
	(*subdi3_sp64 insn): Add new alternative for constant 4096 as third
	operand.
	(subsi3 expander): Remove.
	(*subsi3 insn): Rename into 'subsi3'. Add new alternative for
	constant 4096 as third operand.
	* doc/md.texi (Machine Constraints): Document new 'O' constraint for
	the SPARC port.

2003-06-03  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/t-linux64 (CRTSTUFF_T_CFLAGS_S): Define.

2003-06-04  Andreas Jaeger  <aj@suse.de>

	* config/i386/uwin.h: Remove SUBTARGET_PROLOGUE.

	* config/i386/i386.c (ix86_expand_prologue): Do not use
	SUBTARGET_PROLOGUE.

	* system.h: Poision SUBTARGET_PROLOGUE.

	* config/arm/arm-protos.h: Remove unused rdate_section prototype.

	* output.h: Remove TDESC_SECTION_ASM_OP and RDATA_SECTION_ASM_OP
	dependend code.

	* system.h: Poison TDESC_SECTION_ASM_OP and RDATA_SECTION_ASM_OP.

	* system.h: Poison INSN_CACHE_DEPTH, INSN_CACHE_SIZE and
	INSN_CACHE_LINE_WIDTH.

	* libgcc2.c (INSN_CACHE_PLANE_SIZE): Removed.
	(__clear_cache): Remove code dependend on INSN_CACHE_DEPTH,
	INSN_CACHE_SIZE and INSN_CACHE_LINE_WIDTH.

	* doc/tm.texi (Trampolines): Remove INSN_CACHE_DEPTH,
	INSN_CACHE_SIZE and INSN_CACHE_LINE_WIDTH.

	* dbxout.c (dbxout_type): Remove usage of DBX_OUTPUT_ENUM.
	(dbxout_symbol): Remove usage of DBX_OUTPUT_CONSTANT_SYMBOL.
	(dbxout_block): Remove usage of DBX_OUTPUT_CATCH.
	(dbxout_block): Remove usage of DBX_LBRAC_FIRST.
	(dbxout_source_file): Remove usage of DBX_OUTPUT_SOURCE_FILENAME.
	(dbxout_init): Remove test for DBX_WORKING_DIRECTORY.

	* doc/tm.texi (DBX Options): Do not document DBX_LBRAC_FIRST,
	DBX_OUTPUT_SOURCE_FILENAME and DBX_OUTPUT_ENUM and
	DBX_WORKING_DIRECTORY.

	* system.h: Poison DBX_LBRAC_FIRST, DBX_OUTPUT_ENUM,
	DBX_OUTPUT_SOURCE_FILENAME and DBX_WORKING_DIRECTORY.

	* config/frv/frv-protos.h: Remove unused const_section
	declaration.
	* config/vax/vax-protos.h: Likewise.

	* output.h: Remove CONST_SECTION_ASM_OP usage.

	* system.h: Poison CONST_SECTION_ASM_OP.

	* crtstuff.c (__do_global_dtors_aux): Remove usage of
	CRT_GET_RFIB_TEXT.
	(frame_dummy): Likewise.
	* unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Likewise.
	* system.h: Poison CRT_GET_RFIB_TEXT.

	* collect2.c (is_ctor_dtor): Remove CFRONT_LOSSAGE dependend code.

	* fix-header.c: Remove ADD_MISSING_EXTERN_C dependend variables.
	(write_lbrac): Remove ADD_MISSING_EXTERN_C dependend code.
	(recognized_function): Likewise.
	(read_scan_file): Likewise.

2003-06-03  Roger Sayle  <roger@eyesopen.com>

	* optabs.c (expand_binop): Optimize complex multiplication for
	the case of squaring a complex argument.

2003-06-03  Roger Sayle  <roger@eyesopen.com>

	* optabs.c (expand_binop): Attempt to reuse pseudos for duplicate
	non-volatile operands of binary operations.
	(prepare_cmp_insn): Likewise.

2003-06-03  Roger Sayle  <roger@eyesopen.com>

	* varasm.c (force_const_mem): Handle alignment of constants not
	representable as a type in the front-end language.

2003-06-03  Kazu Hirata  <kazu@cs.umass.edu>

	* flow.c (initialize_uninitialized_subregs): Use
	emit_move_insn instead of emitting a hardcoded move.

2003-06-03  Richard Henderson  <rth@redhat.com>

	* optabs.c (expand_abs_nojump): Split out from ...
	(expand_abs): ... here.
	* optabs.h (expand_abs_nojump): Declare.
	* ifcvt.c: (noce_try_abs): Use expand_abs_nojump.
	* Makefile.in (ifcvt.o): Depend on optabs.h.

2003-06-03  Alan Modra  <amodra@bigpond.net.au>

	* dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Heed flag_merge_constants.

2003-06-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (default_use_cxa_atexit): New variable, defaults to no.
	(*-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*): Set default_use_cxa_atexit
	to yes.
	* configure.in: Allow default_use_cxa_atexit to determine the
	value of DEFAULT_USE_CXA_ATEXIT if not explicitly enabled or
	disabled.
	* configure: Regenerate.

2003-06-03  Douglas B Rupp  <rupp@gnat.com>

	* Makefile.in (TEXI_GCC_FILES): Remove vms.texi entry.
	* doc/gcc.texi: Remove vms.texi section.
	* doc/vms.texi: Remove obsolete file.

2003-05-23  J"orn Rennecke <joern.rennecke@superh.com>

	* configure.in (inhibit_libc): Don't define when configuring
	with --with-newlib --with-headers.
	* configure: Regenerate.

	* t-sh: Remove LIB2FUNCS_EXTRA and embed-bb.c rules.

2003-06-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in (gcc_cv_as_hidden): Disable .hidden completely on
	IRIX 6 without GNU ld.
	* configure: Regenerate.

2003-06-03  Roger Sayle  <roger@eyesopen.com>

	* expr.c (emit_move_insn_1): Use emit_move_insn to move the parts
	of a complex number rather than invoke mov_optab directly.

2003-06-03  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_set): Don't move a subreg in SET_SRC to
	SET_DEST if WORD_REGISTER_OPERATIONS is not defined.

2003-06-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/i386/x86-64.h: Remove two target-independent comments;
	 replace "GNU CC" with "GCC".

2003-06-03  Anthony Green  <green@redhat.com>

	* config/frv/t-frv (EXTRA_HEADERS): Remove media.h

2003-06-03  Roger Sayle  <roger@eyesopen.com>

	* builtins.def (BUILT_IN_CABS, BUILT_IN_CABSF, BUILT_IN_CABSL):
	New builtins representing ISO C99's cabs, cabsf and cabsl.
	* builtins.c (expand_builtin_fabs): New function.
	(expand_builtin_cabs): New function.
	(expand_builtin): Expand BUILT_IN_FABS{,F,L} and BUILT_IN_CABS{,F,L}
	using expand_builtin_fabs and expand_builtin_cabs respectively.

	* doc/extend.texi: Document new cabs, cabsf and cabsl builtins.

2003-06-03  Aldy Hernandez  <aldyh@redhat.com>

	* function.c (assign_parms): Split complex arguments.

	* doc/tm.texi (SPLIT_COMPLEX_ARGS): Document.

	* expr.h (SPLIT_COMPLEX_ARGS): Define.
	(split_complex_types): Protoize.
	(split_complex_values): Protoize.

	* calls.c (expand_call): Split complex arguments on architectures
	that require it.
	(split_complex_values): New.
	(split_complex_types): New.

	* config/rs6000/rs6000.c (rs6000_libcall_value): New.
	(rs6000_function_value): Handle complex values on AIX.
	(rs6000_complex_function_value): New.

	* config/rs6000/rs6000-protos.h (rs6000_libcall_value): Protoize.

	* config/rs6000/rs6000.h (LIBCALL_VALUE): Call function.
	(SPLIT_COMPLEX_ARGS): New.

2003-06-03  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (HAVE_LD_PIE): Check for ld -pie.
	* config.in: Rebuilt.
	* configure: Rebuilt.
	* toplev.c (flag_pie, flag_shlib): New variables.
	(f_options): Add -fpie and -fPIE.
	(parse_options_and_default_flags): Set flag_pic if -fpie/-fPIE.
	Set flag_shlib if flag_pic and not -fpie/-fPIE.
	* flags.h (flag_pic, flag_shlib): Add.
	* varasm.c (default_binds_local_p): Use flag_shlib instead of
	flag_pic.
	* gcc.c (LINK_PIE_SPEC): Define.
	(LINK_COMMAND_SPEC): Use LINK_PIE_SPEC.
	(option_map): Add --pie -> -pie mapping.
	* config/sol2.h (ASM_SPEC): Handle -fpie the same way as -fpic
	and -fPIE the same way as -fPIC.
	* config/openbsd.h (ASM_SPEC): Likewise.
	* config/frv/frv.h (ASM_SPEC): Likewise.
	* config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Likewise.
	* config/arm/semi.h (ASM_SPEC): Likewise.
	* config/arm/netbsd-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
	* config/freebsd-spec.h (FBSD_CPP_SPEC): Likewise.
	* config/i386/beos-elf.h (CC1_SPEC): Likewise.
	* config/i386/freebsd-aout.h (ASM_SPEC): Likewise.
	* config/m68k/linux.h (CPP_SPEC): Likewise.
	* config/m68k/netbsd.h (ASM_SPEC): Likewise.
	* config/m68k/openbsd.h (ASM_SPEC): Likewise.
	* config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
	* config/mips/linux.h (SUBTARGET_CPP_SPEC): Likewise.
	* config/mips/openbsd.h (SUBTARGET_ASM_SPEC): Likewise.
	* config/pa/pa-linux.h (CPP_SPEC): Likewise.
	* config/netbsd-aout.h (ASM_SPEC): Likewise.
	* config/rs6000/sysv4.h (ASM_SPEC, CPP_SYSV_SPEC): Likewise.
	* config/rs6000/vxworks.h (CPP_SPEC): Likewise.
	* config/sparc/linux.h (CPP_SUBTARGET_SPEC, ASM_SPEC): Likewise.
	* config/sparc/linux64.h (CPP_SUBTARGET_SPEC, ASM_SPEC): Likewise.
	* config/sparc/sparc.h (ASM_SPEC): Likewise.
	* config/sparc/sp64-elf.h (ASM_SPEC): Likewise.
	* config/sparc/sysv4.h (ASM_SPEC): Likewise.
	* config/sparc/netbsd-elf.h (ASM_SPEC): Likewise.
	* config/sparc/openbsd64.h (ASM_SPEC): Likewise.
	* config/cris/linux.h (CRIS_ASM_SUBTARGET_SPEC): Likewise.
	* config/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Handle -pie.
	Simplify.
	* config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/i386/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/ia64/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/rs6000/sysv4.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/rs6000/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/sparc/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* config/sparc/linux64.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
	* doc/invoke.texi: Document -pie, -fpie and -fPIE options.

2003-06-03  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_memcpy): Remove endp argument and endp
	!= 0 handling.  Pass 0 to store_by_pieces.
	(expand_builtin_mempcpy): Add endp argument.  Don't call
	expand_builtin_memcpy, call store_by_pieces resp. move_by_pieces
	directly.  If ignoring result, only do expand_call.
	(expand_builtin_stpcpy): Likewise.  Call expand_builtin_mempcpy
	otherwise.
	(expand_builtin_strncpy, expand_builtin_memset): Adjust
	store_by_pices callers.
	(expand_builtin): Adjust expand_builtin_memcpy and
	expand_builtin_mempcpy callers.
	* expr.c (can_move_by_pieces): New function.
	(move_by_pieces): Add endp argument, return to resp. memory at end
	or one byte earlier depending on endp.
	(store_by_pieces): Likewise.
	(emit_block_move): Adjust call to move_by_pieces.
	(emit_push_insn): Adjust move_by_pieces caller.
	* expr.h (can_move_by_pieces): New prototype.
	(store_by_pieces): Adjust prototypes.
	* rtl.h (move_by_pieces): Adjust prototype.
	* config/mips/mips.c (expand_block_move): Adjust move_by_pieces
	caller.

2003-06-03  Ben Elliston  <bje@wasabisystems.com>

	* doc/md.texi (Processor pipeline description): Improve wording.

2003-06-03  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (c_common_handle_option): New, pulled out of
	c_common_decode_option.  Substitute uses of argv.
	(c_common_decode_option): Broken into two.

2003-06-02  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* emit-rtl.c (gen_complex_constant_part):  Remove unnecessary
	test of TREE_CONSTANT_POOL_ADDRESS_P.

2003-06-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.c: Don't include output.h twice.
	* stormy16.c: Likewise.
	* xtensa.c: Likewise.
	* output.h: Protect against multiple inclusion.

2003-06-02  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (OLD_ARG_MODE): New macro.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG_PASS_BY_REFERENCE): Use it.
	(FUNCTION_ARG_1): Break out of:
	(FUNCTION_ARG).  Use OLD_ARG_MODE.

2003-06-02  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* gcc/config.gcc Add support multilib parts for m32rx processor.

2003-06-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (c-options.c): Pass in $(AWK) to opts.sh.
	(mostlyclean): Delete c-options.c and c-options.h.

2003-06-02  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (CL_REJECT_NEGATIVE): New.
	(c_common_decode_option): Update to use it.
	* c.opt: Update documentation; use RejectNegative.
	* opts.sh: Handle RejectNegative.

2003-06-01  Zack Weinberg  <zack@codesourcery.com>

	* ggc-page.c (init_ggc): Give better diagnostics on failure to
	open /dev/zero.
	* toplev.c (crash_signal): Reset handling for received signal
	to SIG_DFL.

2003-06-02  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/arm.c (arm_use_dfa_pipeline_interface): Declare.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define if not already.
	(arm_use_dfa_pipeline_interface): Implement.
	* config/arm/arm.md (arm): New automaton.
	(write_buf): Remove function units; new cpu unit.
	(write_blockage): Remove function units; new cpu unit.
	(core): Remove function units; new cpu unit.
	(r_mem_f_wbuf): New instruction reservation.
	(store1_wbuf, store2_wbuf, store3_wbuf, store4_wbuf): Likewise.
	(store1_ldsched, store2, store3, store4): Likewise.
	(load_ldsched, load_ldsched_xscale, load_or_store): Likewise.
	(mult, mult_ldsched, mult_ldsched_strongarm): Likewise.
	(multi_cycle, single_cycle): Likewise.
	* config/arm/fpa.md (armfp): New automaton.
	(fpa): Remove function units; new cpu unit.
	(fpa_mem): Remove function unit; new cpu unit.
	(fdivx, fdivd, fdivs, fmul, ffmul, farith, ffarith): New reservations.
	(r_2_f, f_2_r, f_load, f_store, r_mem_f, f_mem_r): Likewise.

2003-06-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def (ATTR_ASM_FPRINTF): New.
	* c-format.c (enum format_type): Add asm_fprintf_format_type.
	(NOARGUMENTS, asm_fprintf_length_specs, asm_fprintf_flag_specs,
	asm_fprintf_flag_pairs, asm_fprintf_char_table): New.
	(format_types_orig): Renamed from format_types.  Add new data.
	(format_types): Declare as pointer.
	(handle_format_attribute): Move later in file so we have all
	necessary declarations.  Add section to capture HOST_WIDE_INT.
	* output.h (ATTRIBUTE_ASM_FPRINTF, __gcc_host_wide_int__): New.
	(asm_fprintf): Mark with ATTRIBUTE_ASM_FPRINTF.

2003-06-01  Andreas Jaeger  <aj@suse.de>

	* doc/tm.texi (Storage Layout): Remove ROUND_TYPE_SIZE and
	ROUND_TYPE_SIZE_UNIT.

	* stor-layout.c (finalize_record_size): Remove usages of
	ROUND_TYPE_SIZE and ROUND_TYPE_SIZE_UNIT.
	(finalize_type_size): Likewise.
	(layout_type): Likewise.

	* system.h: Poison ROUND_TYPE_SIZE and ROUND_TYPE_SIZE_UNIT.

	* loop.c (check_insn_for_givs): Remove DONT_REDUCE_ADDR macro.

	* config/d30v/d30v.h: Remove text copied from the manual.

2003-06-01  Roger Sayle  <roger@eyesopen.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	    Geoffrey Keating  <geoffk@apple.com>

	* emit-rtl.c (gen_lowpart_common): Handle interpreting integer
	constants as condition code values.

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

	* cppmacro.c (warn_of_redefinition): Handle cases where the two
	definitions have different numbers of tokens.

2003-06-01  Andreas Jaeger  <aj@suse.de>

	* gen-protos.c (main): Readd unused attribute for argc.

2003-06-01  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (c-options.c, c-options.h): Parallel make safe.
	* c.opt: End in blank line.
	* opts.sh: Take AWK from environment if available; use C locale.

2003-06-01  Andreas Schwab  <schwab@suse.de>

	* config/m68k/linux.h: Remove code protected by USE_GNULIBC_1.

2003-06-01  Andreas Jaeger  <aj@suse.de>

	* gen-protos.c (main): Revert patch to check for argument.

2003-06-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/11044
	* config/i386/i386.md (length attribute): Set length to 4
	for instructions of type "fcmp".

2003-06-01  Andreas Jaeger  <aj@suse.de>

	* toplev.c: Use ISO C90 prototypes.

	* toplev.h: Use ISO C90 prototypes.

	* genrecog.c: Use ISO C90 prototypes.
	(nodes_identical): Correct declaration to match prototype.
	(maybe_both_true): Likewise.
	(merge_trees): Likewise.

	* genpeep.c (gen_peephole): Remove #if 0 code.
	Use ISO C90 prototypes.

	* genattrtab.c (copy_rtx_unchanging): Remove #if 0'ed code.
	Remove #if 0'ed function simplify_by_alternatives.
	(optimize_attrs): Remove #if 0'ed code.
	Remove ^L.
	Use ISO C90 prototypes.
	(make_canonical): Remove #if 0'ed code.
	(convert_const_symbol_ref): Remove #if 0'ed function.

	* gen-protos.c (main): Check for argument.

	* rtl.h: Use ISO C90 prototypes for functions from lists.c.

	* params.h: Use ISO C90 prototypes.
	* params.c: Likewise.
	* intl.c: Likewise.
	* intl.h: Likewise.
	* lists.c: Likewise.
	* errors.c: Likewise.
	* errors.h: Likewise.
	* gencodes.c: Likewise.
	* genpreds.c: Likewise.
	* genattr.c: Likewise.
	* gen-protos.c: Likewise.
	* genflags.c: Likewise
	* genconditions.c: Likewise.
	* genautomata.c: Likewise.
	* gencheck.c: Likewise.
	* genconfig.c: Likewise.
	* genconstants.c: Likewise.
	* genemit.c: Likewise.
	* genextract.c: Likewise.
	* gengenrtl.c: Likewise.
	* gengtype.c: Likewise.
	* gengtype.h: Likewise.
	* genopinit.c: Likewise.
	* genoutput.c: Likewise.
	* gensupport.c: Likewise.
	* gensupport.h: Likewise.

	* sdbout.h: Use ISO C90 prototypes.

	* sdbout.c (CONTIN): Removed empty macro.
	(sdbout_one_type): Remove CONTIN usages.
	Remove ^Ls.
	(tag_of_ru_type): Remove #if 0'ed function.
	(sdbout_symbol): Remove #if 0'ed code.
	(sdbout_one_type): Remove a #if 1.
	(sdbout_one_type): Remove #if 0'ed code.
	(sdbout_init): Remove RMS_QUICK_HACK_1 code.
	Remove PARAMS, use ISO C90 prototypes for all functions.

2003-06-01  Josef Zlomek  <zlomekj@suse.cz>

	* rtl.def (CONST_DOUBLE): Update comment.

2003-06-01  Neil Booth  <neil@daikokuya.co.uk>

	* opts.sh: Remove path from sort.

2003-06-01  Aldy Hernandez  <aldyh@redhat.com>

	PR/9680
	* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Require
	TARGET_SPE for SPE_VECTOR_MODE.

2003-05-31  Aldy Hernandez  <aldyh@redhat.com>

	* toplev.c (botch): Remove.
	(do_abort): Remove.
	(set_Wunused): Comment.
	(set_Wextra): Comment.
	Remove ^L's.
	(rest_of_compilation): Factor out common code into functions.
	(rest_of_handle_inlining): New.
	(rest_of_handle_ssa): New.
	(rest_of_handle_cse): New.
	(rest_of_handle_gcse): New.
	(rest_of_handle_loop_optimize): New.
	(rest_of_handle_jump_bypass): New.
	(rest_of_handle_sibling_calls): New.
	(rest_of_handle_null_pointer): New.
	(rest_of_handle_addresof): New.
	(rest_of_handle_flow): New.
	(rest_of_handle_branch_prob): New.
	(rest_of_handle_if_conversion): New.
	(rest_of_handle_tracer): New.
	(rest_of_handle_loop2): New.
	(rest_of_handle_cse2): New.
	(rest_of_handle_life): New.
	(rest_of_handle_combine): New.
	(rest_of_handle_if_after_combine): New.
	(rest_of_handle_regmove): New.
	(rest_of_handle_sched): New.
	(rest_of_handle_old_regalloc): New.
	(rest_of_handle_new_regalloc): New.
	(rest_of_handle_regrename): New.
	(rest_of_handle_reorder_blocks): New.
	(rest_of_handle_sched2): New.
	(rest_of_handle_new_regalloc): New.
	(rest_of_handle_old_regalloc): New.
	(rest_of_handle_regrename): New.
	(rest_of_handle_reorder_blocks): New.
	(rest_of_handle_stack_regs): New.
	(rest_of_handle_machine_reorg): New.
	(rest_of_handle_delay_slots): New.
	(rest_of_handle_final): New.

	* toplev.h (botch): Remove prototype.
	(do_abort): Same.

2003-05-31  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (c-opts.o, c-options.h): Update dependencies.
	* c-opts.c: Include c-options.h and c-options.c.
	(CL_C_ONLY, CL_OBJC_ONLY, CL_CXX_ONLY, CL_OBJCXX_ONLY):
	Rename CL_C, CL_OBJC, CL_CXX, CL_OBJCXX.
	(CL_ARG, CL_ALL, COMMAND_LINE_OPTIONS, struct cl_option,
	OPT, opt_comp): Remove.
	(missing_arg, c_common_init_options, c_common_decode_option,
	write_langs): Update for macro redefinitions and enumeration
	name changes.
	* c.opt, opts.sh: New files.
	* doc/passes.texi: Update.

2003-05-31  Andreas Jaeger  <aj@suse.de>

	* function.c (trampoline_address): Remove ALLOCATE_TRAMPOLINE
	usage.

	* doc/tm.texi (Trampolines): Remove ALLOCATE_TRAMPOLINE.

	* config/d30v/d30v.h: Remove traces of ALLOCATE_TRAMPOLINE.

	* system.h: Poison ALLOCATE_TRAMPOLINE.

	* doc/tm.texi (Misc): Remove HANDLE_PRAGMA.
	* system.h: Poison HANDLE_PRAGMA.

2003-05-31  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Update dump file names.

2003-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-format.c (format_length_info, format_char_info,
	format_flag_spec, format_flag_pair, format_kind_info):
	De-const-ify structure members.

2003-05-31  Roger Sayle  <roger@eyesopen.com>

	* flags.h (flag_wrapv): New flag controlling overflow semantics.
	* toplev.c (flag_wrapv): Declare the variable with default false.
	(lang_independent_options): New option "-fwrapv" to set the above.

	* fold-const.c (extract_muldiv_1): Disable optimization of (2*x)/2
	as x, when signed arithmetic overflow wraps around.
	(fold): Optimize "-A - B" as "-B - A" if overflow wraps around.
	* loop.c (basic_induction_var): Ignore BIVs that rely on undefined
	overflow when flag_wrapv is true.

	* doc/invoke.texi: Document new -fwrapv command line option.
	* doc/c-tree.texi: Mention that the overflow semantics of
	NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR and MULT_EXPR is dependent
	upon both flag_wrapv and flag_trapv.

2003-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (mips-sgi-irix5): Add missing
	HTML <hr> marker.

2003-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/md.texi (Machine Constraints): Document
	missing SPARC constraints.

2003-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/md.texi (Automaton pipeline description): Use
	"type" instead of "cpu" as the attribute in the examples.

2003-05-30  Stan Shebs  <shebs@apple.com>

	* system.h: Poison OBJC_PROLOGUE.

2003-05-30  Roger Sayle  <roger@eyesopen.com>

	* emit-rtl.c (gen_complex_constant_part): New function for getting
	the constant real or imaginary part of a complex constant.
	(gen_realpart): Use it.
	(gen_imagpart): Likewise.

2003-05-30  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Fix typos.
	* doc/rtl.texi: Likewise.

2003-05-30  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>

	* config/h8300/crti.asm: Use .h8300hn and .h8300sn for normal
	mode.
	* config/h8300/crtn.asm: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.
	* config/h8300/h8300.c (asm_file_start): Likewise.
	* config/h8300/elf.h (LINK_SPEC): Use h8300hnelf and
	h8300snelf emulations for normal mode.
	* config/h8300/h8300.h (LINK_SPEC): Use h8300hn and h8300sn
	emulations for normal mode.

2003-05-30  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>

	* config/h8300/h8300.c (h8300_tiny_constant_address_p): Return
	true if TARGET_NORMAL_MODE.

2003-05-30  Roger Sayle  <roger@eyesopen.com>

	* cse.c (cse_insn): Simplify REG_EQUAL note on libcalls when
	making a substitution.
	(dead_libcall_p): If directly replacing a libcall with a
	constant value produces an invalid instruction, also try forcing
	the constant into the constant pool.
	* expr.c (emit_move_insn): Add a REG_EQUAL note when it is not
	obvious that the source is a constant.
	(compress_float_constant): Use set_unique_reg_note to place
	REG_EQUAL notes on instructions.

2003-05-30  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (extern_list): Add GTY marker.
	(extern_head): Separate out definition. Add marker.
	(mips_output_external): Use ggc_alloc for extern_list
	allocation.
	(mips_output_external_libcall): Ditto.

2003-05-30  Florian Weimer  <fw@deneb.enyo.de>

	* doc/install.texi: Ada-enabled bootstrap requires GNAT 3.14 or
	later.

2003-05-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* vax.h (ASM_GENERATE_INTERNAL_LABEL): Fix format specifier
	warnings.
	(PRINT_OPERAND): Likewise.

2003-05-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Move
	-mdebug/-no-mdebug switches ...
	(MDEBUG_ASM_SPEC): ... here.
	Use only with gas.
	(EXTRA_SPECS): Initialize mdebug_asm_spec.

2003-05-29  Matt Kraai  <kraai@alumni.cmu.edu>

	* gthr-gnat.c: Remove #undef UNUSED.
	(__gnat_default_lock, __gnat_default_unlock): Prototype.
	(__gnat_task_lock, __gnat_task_unlock): Make declarations
	prototypes.
	(__gnat_install_locks): Convert declaration to ISO C90, make
	parameter declarations prototypes, and remove blank line.
	* gthr-gnat.h (__gnat_install_locks): Make parameter
	declarations prototypes.

2003-05-29  Jason Merrill  <jason@redhat.com>

	* Makefile.in (unstrap): Remove stage_last after make unstage1.

2003-05-29  Roger Sayle  <roger@eyesopen.com>

	* mips-tfile.c (PAGE_SIZE): Increase page size to 32K.

2003-05-29  Roger Sayle  <roger@eyesopen.com>
	    Kaveh Ghazi  <ghazi@caip.rutgers.edu>

	PR bootstrap/10169
	* mips-tfile.c (main): Use getopt_long instead of getopt.
	Add new command line option --version to display version.
	Treat --verbose like -v to report a single line version.
	(options): New global variable for getopt_long.
	* mips-tdump.c (main): Use getopt_long instead of getopt.
	New command line options -v, --version and -verbose to display
	the program version number (to match mips-tfile's behavior).
	(options): New global variable for getopt_long.

	* gcov.c (options): Zero-terminate getopt_long array.
	* gcov-dump.c (options): Likewise.

	* Makefile.in (mips-tdump.o): Add dependency on version.h.

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

	Remove OBJC_PROLOGUE everywhere.
	* objc/objc-act.c (finish_objc): Remove use of OBJC_PROLOGUE.
	* config/avr/avr.h: Remove no-op ref to OBJC_PROLOGUE.
	* config/d30v/d30v.h: Similarly.
	* config/ip2k/ip2k.h: Similarly.
	* doc/tm.texi: Remove doc of OBJC_PROLOGUE.

2003-05-29  Roger Sayle  <roger@eyesopen.com>

	* c-semantics.c (genrtl_do_stmt_1): New function split out from...
	(gen_rtl_do_stmt): ... here.  Call genrtl_do_stmt_1.
	(expand_unreachable_stmt): Expand unreachable while statements
	using genrtl_do_stmt_1.

2003-05-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_output_load_label): Declare.
	* config/mips/mips.c (mips_output_load_label): New function.
	(mips_output_conditional_branch): Use it.
	* config/mips/mips.md (jump): And here.

2003-05-28  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-protos.h (smalloffset_double_mem_p): Delete.
	(xtensa_split_operand_pair): New proto.
	* config/xtensa/xtensa.c (move_operand): Handle DFmode and DImode.
	(smalloffset_double_mem_p): Delete.
	(gen_float_relational, printx, print_operand, xtensa_va_arg):
	Fix whitespace.
	(xtensa_split_operand_pair): New.
	(xtensa_dbx_register_number): Fix formatting.
	* config/xtensa/xtensa.h (EXTRA_CONSTRAINT): Remove 'S' constraint.
	* config/xtensa/xtensa.md (movdi, movdf): Force constants to memory
	instead of splitting them into single-word moves.  Remove unnecessary
	checks for reload_in_progress and reload_completed.
	(movdi_internal, movdf_internal): Change to post-reload split patterns.
	Add constraints to allow constant operands.
	(movsf_internal): Allow CONST_INT operands.

2003-05-27  Danny Smith   <dannysmith@users.sourceforge.net>

	* config.gcc (i[34567]86-*-mingw32*): Add host makefile
	fragment i386/x-mingw32.
	* config/i386/x-mingw32: New file. Make local_includedir
	relative to EXEC_PREFIX.

2003-05-27  Aaron W. LaFramboise  <awlaframboise@aol.com>

	* config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Update.
	(MD_STARTFILE_PREFIX): Define.

2003-05-27  Denis Chertykov  <denisc@overta.ru>

	* cselib.c (cselib_invalidate_regno): Abort if hardreg have a
	VOIDmode.
	* cselib.c (cselib_process_insn): Pass reg_raw_mode for hardreg in
	call of cselib_invalidate_regno.

2003-05-28  Daniel Jacobowitz  <drow@mvista.com>

	* config/mips/linux.h (LIB_SPEC): Add missing -lc and correct
	-lthread to -lpthread.

2003-05-28  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Bruce Korb  <bkorb@gnu.org>
	    Arno Klaassen  <arno@heho.snv.jussieu.fr>

	* fixinc/inclhack.def: Add missing declaration of getpagesize()
	to unistd.h on Solaris 2.5.1.
	Fix prototype of recv() and send() in sys/socket.h on
	Solaris 2.5.1 and 2.6.
	* fixinc/tests/base/unistd.h: Add solaris_unistd fix test.
	* fixinc/tests/base/sys/socket.h: Add solaris_socket test.
	* fixinc/check.tpl: Use 'diff -c', not 'diff -u'.
	* fixinc/fixincl.x: Regenerate.

2003-05-27  Jason Merrill  <jason@redhat.com>

	* tree.c (expr_first, expr_length): New fns.
	* tree.h: Declare them.

	* tree.c (iterative_hash_expr): Hash commutative expressions
	consistently.

2003-05-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (contains_placeholder_p): Now returns bool.
	(CONTAINS_PLACEHOLDER_P): New macro.
	(type_contains_placeholder_p): New function.
	* tree.c (save_expr): Remove code avoiding folding COMPONENT_REF.
	(contains_placeholder_p): Now returns bool.
	Rework to use CONTAINS_PLACEHOLDER_P macro.
	(type_contains_placeholder_p): New function.
	* fold-const.c (fold, case COMPONENT_REF): Don't fold if
	type_contains_placeholder_p.
	(fold_range_test, fold_mathfn_compare, fold_inf_compare, fold):
	Use CONTAINS_PLACEHOLDER_P macro.
	* builtins.c (fold_builtin): Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* explow.c (expr_size): Likewise.
	* expr.c (store_constructor, get_inner_reference): Likewise.
	* function.c (assign_parms): Likewise.
	* stor-layout.c (variable_size): Likewise.

2003-05-25  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* diagnostic.h (output_verbatim, verbatim):  Remove  printf
	attribute.

2003-05-25  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Update Kean Johnston.

2003-05-24  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (save_fpregs_{si,di}): Add length attribute.

2003-05-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/rs6000/440.md, config/stormy16/stormy16protos.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.md:
	Replace "GNU CC" with "GCC".

2003-05-24  Matt Kraai  <kraai@alumni.cmu.edu>

	* builtins.c (expand_builtin_memcpy): Use mode of dest_addr for
	intermediate computation.

2003-05-23  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md (clzsi, clzdi): New patterns.

2003-05-23  Geoffrey Keating  <geoffk@apple.com>

	* gcc.c (default_compilers): Use -o to specify preprocessor's output
	file.  Make -no-integrated-cpp work when building PCH files.
	* objc/lang-specs.h: Likewise.

2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/Makefile.in: Correct description.
	* fixinc/Makefile.in, fixinc/fixfixes.c, fixinc/fixincl.c,
	fixinc/fixlib.c, fixinc/fixlib.h, fixinc/fixtests.c,
	fixinc/genfixes: Replace "GNU CC" with "GCC".

2003-05-23  Roger Sayle  <roger@eyesopen.com>

	* builtins.def: Define atan, atanf, atanl, tan, tanf and tanl
	builtin functions (and their __builtin_* variants).
	* builtins.c (mathfn_built_in): Handle tan{,f,l} and atan{,f,l}.
	(expand_builtin): Don't expand tan{,f,l} or atan{,f,l} when not
	optimizing.

	* doc/extend.texi: Document new tan and atan builtins, and
	their float and long double variants.

2003-05-23  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sparc/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
	__sparcv9 in the TARGET_ARCH64 case.

Fri May 23 22:17:32 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_reorg): Calls are also jumps.

2003-05-23  J"orn Rennecke <joern.rennecke@superh.com>

	* cse.c (count_reg_usage): When processing an INSNs REG_EQUAL
	note containing an EXPR_LIST, process all the arguments.

Fri May 23 21:19:31 CEST 2003  Jan Hubicka  <jh@suse.cz>
			       Andreas Jaeger  <aj@suse.de>

	* i386.h (TARGET_CPU_CPP_BUILTINS): Define __amd64 and __amd64__;
	do not use assertion.

2003-05-23  Mike Stump  <mrs@apple.com>

	* tlink.c (scan_linker_output): Add support for darwin linker, as it
	emits unresolved symbols one per line, consuming the entire line.

2003-05-23  Larin Hennessy <larin@science.oregonstate.edu>
	    Zack Weinberg <zack@codesourcery.com>

	* explow.c (allocate_dynamic_stack_space): Remove call to gen_probe.
	* config/m68k/m68k.c (m68k_output_function_prologue):
	Remove code under #if NEED_PROBE.
	* config/m68k/m68k.h: Don't define NEED_PROBE.
	* config/m68k/m68k.md: Remove "probe" insn.
	* doc/md.texi: Remove documentation of "probe" pattern.

2003-05-23  Dorit Naishlos  <gcchaifa@il.ibm.com>

	* config/rs6000/rs6000.md (save_fpregs_{si,di}): Add branch attribute.

2003-05-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi: Remove sparc64-*-*. Add sparc64-*-solaris2*.
	Document sparcv9-*-solaris2* as a synonym for sparc64-*-solaris2*.

2003-05-22  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_maxval): New function to return the largest finite
	value representable in a given mode (i.e. FLT_MAX and DBL_MAX).
	* real.h (real_maxval): Prototype here.
	* fold-const.c (fold_inf_compare): Transform comparisons against
	+-Infinity into comparisons against DBL_MAX (or equivalent).

2003-05-22  Mike Stump  <mrs@apple.com>

	* config.gcc (*-*-darwin*): Remove use_collect2=no, as it is the
	default.

2003-05-22  DJ Delorie  <dj@redhat.com>

	* calls.c (expand_call): If the arg block is going to grow
	downward, we need argblock to point to the top of the block,
	not the bottom.

2003-05-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-decl.c (duplicate_decls): Test DECL for ERROR_MARK.

	* expr.c (expand_expr, case CONSTRUCTOR): Put into memory if
	constant and EXPAND_CONST_ADDRESS, not just EXPAND_INITIALIZER.

2003-05-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m68hc11.c: Don't use the `0' flag for asm_fprintf specifiers.
	* m68k.c: Likewise.
	* m68k.h: Likewise.

2003-05-22  Zack Weinberg  <zack@codesourcery.com>

	PR other/2873
	* fixinc/inclhack.def (avoid_wchar_t_type): Add bypass
	expressions to prevent triggering on recent curses.h,
	linux/nls.h, or X11/Xlib.h.
	(stdio_va_list): Add _G_va_list to bypass pattern.
	(strict_ansi_not): Add bypass pattern for __SCO_VERSION__.
	* fixinc/fixincl.x: Regenerate.

2003-05-22 Rekha Bhintade <rekhad@kpitcummins.com>

	* gcc/config/sh/sh.h (TARGET_SWITCHES): Display all the target
	switches when --target-help option is specified.

2003-05-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR bootstrap/10805
	* doc/install.texi (sparc-sun-solaris2.7): Document bootstrap
	failure with Sun assembler 5.0 Alpha 03/27/98.

2003-05-21  Loren James Rittle  <ljrittle@acm.org>

	* config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Add -D__sparcv9
	to match system compiler convention.

2003-05-21  Danny Smith  <dannysmith@users.sourceforge.net>

	* gthr-win32.h (__GTHREAD_HIDE_WIN32API): Test for nonzero
	value, not just if defined.
	Update copyright year.

2003-05-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/6428
	* pa-hpux10.h (LINK_SPEC, LIB_SPEC): Move -L options for profiling
	directories from LIB_SPEC to LINK_SPEC.  Emit warning if `-p' or `-pg'
	option is used without `-static'.
	* pa-hpux11.h (LINK_SPEC, LIB_SPEC): Likewise.
	* pa64-hpux.h (LINK_SPEC, LIB_SPEC): Likewise.

2003-05-21  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (MASK_SERIALIZE_VOLATILE,
	TARGET_SERIALIZE_VOLATILE): Delete.
	(MASK_CONST16, MASK_ABS, MASK_ADDX): Renumber flag bits.
	(TARGET_DEFAULT): Remove MASK_SERIALIZE_VOLATILE.
	(TARGET_SWITCHES): Remove "-mserialize-volatile" and
	"-mno-serialize-volatile".
	* config/xtensa/xtensa.c (print_operand): Remove checks of
	TARGET_SERIALIZE_VOLATILE.
	* config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
	* doc/invoke.texi (Option Summary, Xtensa Options): Remove
	"-mserialize-volatile" and "-mno-serialize-volatile" options.

2003-05-21  Nathan Sidwell  <nathan@codesourcery.com>

	* c-parse.in (fndef): Set DECL_SOURCE_LINE and FILE earlier.
	(nested_function): Likewise.
	(notype_nested_function): Likewise.

2003-05-21  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy-abi: Update overflow type for
	R_XSTORMY16_16 reloc.

2003-05-21  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (enum rid): Remove RID_BOUNDED, RID_UNBOUNDED.
	* c-parse.in (reswords): Remove __bounded__ and __unbounded__.
	(rid_to_yy): Remove RID_BOUNDED, RID_UNBOUNDED slots.
	* print-tree.c (print_node): Remove ambient-boundedness.
	* tree.h (tree_common): Remove bounded_flag.
	(BOUNDED_INDIRECT_YPE_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, TYPE_QUAL_BOUNDED):
	Remove.
	(TYPE_QUALS): Remove BOUNDED.
	(TREE_EXPR_QUALS, TREE_FUNC_QUALS): Remove.
	(TYPE_BOUNDED_VALUE, TYPE_BOUNDED_BASE, TYPE_BOUNDED_EXTENT,
	TYPE_BOUNDED_SUBTYPE, TYPE_UNBOUNDED_VARIANT, TYPE_POINTER_DEPTH,
	TYPE_AMBIENT_BOUNDEDNESS, MAX_POINTER_DEPT,
	VA_LIST_POINTER_DEPTH): Remove.
	(struct tree_type): Remove pointer_depth.

2003-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-pretty-print.c (pp_c_integer_literal): Use
	HOST_WIDE_INT_PRINT_DOUBLE_HEX.

2003-05-20  Roger Sayle  <roger@eyesopen.com>
	    Kazu Hirata  <kazu@cs.umass.edu>
	    Joern Rennecke  <joern.rennecke@superh.com>

	* gcse.c (cprop_jump):  Make use of REG_EQUAL notes on both
	setcc and jump, if they exist.  If substituted instruction
	fails to validate, store current effort in a REG_EQUAL note.
	(cprop_insn): Don't attempt further substitutions if the
	current instruction has been deleted.
	(local_cprop_pass): Likewise.

	* jump.c (redirect_jump):  Also update REG_EQUAL note, if
	one is attached to the jump instruction.
	(invert_jump): Delete REG_EQUAL note on jump, if one exists.

2003-05-21  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c++/9738
	* config/i386/winnt.c (i386_pe_encode_section_info): Enable
	even if not first.

2003-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genautomata.c (output_description, output_automaton_units,
	output_state_arcs): Add missing specifiers.

2003-05-20  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm: Avoid use of .Lfe* in .size directives.
	(do_abs, do_addx2, do_addx4, do_addx8): New assembler macros.
	(__mulsi3): Use do_addx* instead of ADDX* instructions.  Formatting.
	(nsau): Rename to do_nsau.  Provide alternate version for use when
	the NSAU instruction is available.
	(__udivsi3, __divsi3, __umodsi3, __modsi3): Use do_nsau macro.
	(__divsi3, __modsi3): Use do_abs macro instead of ABS instruction.
	* config/xtensa/xtensa-config.h: Update comments to match binutils.
	(XCHAL_HAVE_ABS, XCHAL_HAVE_ADDX): Define.
	* config/xtensa/xtensa.h (MASK_ABS, MASK_ADDX): Define.
	(TARGET_ABS, TARGET_ADDX): Define.
	(TARGET_DEFAULT): Conditionally add MASK_ABS and MASK_ADDX.
	(TARGET_SWITCHES): Add "abs", "no-abs", "addx", and "no-addx".
	* config/xtensa/xtensa.md (*addx2, *addx4, *addx8, *subx2, *subx4,
	*subx8): Set predicate condition to TARGET_ADDX.
	(abssi2): Set predicate condition to TARGET_ABS.
	* doc/invoke.texi (Option Summary): Document new "-mabs", "-mno-abs",
	"-maddx", and "-mno-addx" options.
	(Xtensa Options): Likewise.  Also tag some opcode names with @code.

2003-05-20  Kevin Ryde <user42@zip.com.au>
	    Wolfgang Bangerth <bangerth@dealii.org>

	PR/10355
	* doc/extend.texi: Put a warning into the documentation
	of attribute regparm.

2003-05-20  Jason Merrill  <jason@redhat.com>

	* tree.c (expr_last): New fn.
	* tree.h: Declare it.
	* objc/objc-act (expr_last): Rename to objc_expr_last.

2003-05-20  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_register_move_cost): Add clase for moving between
	FP registers and MAC registers.

2003-05-19  John David Anglin  <dave.anglin@nrc-gnrc.gc.ca>

	* pa/milli64.S ($$mulI): Fix typo.

2003-05-19  Matt Kraai  <kraai@alumni.cmu.edu>

	* alias.c (nonlocal_mentioned_p, nonlocal_referenced_p)
	(nonlocal_set_p): Remove initial blank line.
	* dwarf2out.c (simple_type_size_in_bits): Likewise.
	* et-forest.c (et_forest_create): Likewise.
	* explow.c (stabilize): Likewise.
	* fix-header.c (write_lbrac): Likewise.
	* graph.c (start_fct, node_data): Likewise.
	* jump.c (only_sets_cc0_p, sets_cc0_p): Likewise.
	* rtlanal.c (global_reg_mentioned_p): Likewise.
	* tree.c (bit_position): Likewise.

2003-05-19  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/linux64.h (LIB_SPEC): Add missing -lc and correct
	-lthread to -lpthread.

2003-05-19  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (c_common_decode_option): Don't accept dollars
	as identifier characters in assembly.
	* doc/cpp.texi: Document this.

2003-05-19  Seth Arnold  <sarnold@wirex.com>
	    Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_stack_info): Do not add
	vrsave_size twice.

2003-05-19  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tm.texi (function_arg): Fix typo.

2003-05-19  Matt Austern  <austern@apple.com>

	* c-opts.c (COMMAND_LINE_OPTIONS): Add -Winvalid-offsetof option.
	* c-common.h (warn_invalid_offsetof): Declare.
	* c-common.c (warn_invalid_offsetof): Define.
	* doc/invoke.texi: Document -Winvalid-offsetof.
	* testsuite/g++.dg/other/offsetof3.C: New.
	* testsuite/g++.dg/other/offsetof4.C: New.

2003-05-19  Kevin B. Hendricks  <kevin.hendricks@sympatico.ca>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_alignment_string,
	rs6000_alignment_flags): New variables.
	(rs6000_parse_alignment_option): New function.
	(rs6000_override_options): Call it.
	* config/rs6000/rs6000.h (TARGET_OPTIONS): Add -malign-XXX option.
	(MASK_ALIGN_POWER, MASK_ALIGN_NATURAL, TARGET_ALIGN_NATURAL): New
	macros.
	* config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Always use COMPUTED
	natural alignment if TARGET_NATURAL_ALIGNMENT
	(ROUND_TYPE_ALIGN): Always use default record alignment if
	TAGET_NATURAL_ALIGNMENT.
	* config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Same
	(ROUND_TYPE_ALIGN): Same.
	* config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Same
	(ROUND_TYPE_ALIGN): Same.
	* doc/invoke.texi (Option Summary, PowerPC Options): Document
	new options.

2003-05-19  J"orn Rennecke <joern.rennecke@superh.com>

	* c-decl.c (finish_decl): When setting the DECL_ASSEMBLER_NAME
	of a function using ASMSPEC, prepend a star.

2003-05-19  Jason Merrill  <jason@redhat.com>

	* tree-inline.c (copy_body_r): Avoid generating &* during inline
	substitution.

2003-05-19  Andrew Macleod  <amacleod@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_expand_prologue): Do
	not mark assignments to the hard frame pointer as being stack
	frame related.
	(xstormy16_expand_epilogue): Mark adjustments to the stack
	pointer as being stack frame related.

2003-05-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (ISA_HAS_LOAD_DELAY, ISA_HAS_XFER_DELAY,
	ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS): New macros.
	(PREDICATE_CODES): Add hilo_operand.
	* config/mips/mips.c (hilo_operand): New predicate.
	(mips_adjust_insn_length): Account for the number nops that might
	be needed to avoid hardware hazards.
	* config/mips/mips.md (dslot): Remove attribute.
	(hazard): New attribute.
	(can_delay): Use it.  Check for calls, branches & jumps.
	(muldi3): Use the standard dmult pattern for mips16 code.
	(muldi3_internal, muldi3_internal2): Adjust conditions accordingly.

2003-05-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (final_prescan_insn,
	mips_count_memory_refs, mips_fill_delay_slot): Remove.
	* config/mips/mips.h (delay_type, dslots_load_total,
	dslots_load_filled, dslots_jump_total, dslots_jump_filled,
	dslots_number_nops, num_refs, mips_load_reg, mips_load_reg2,
	mips_load_reg3, mips_load_reg4): Remove.
	(MASK_STATS): Remove.
	(MASK_EXPLICIT_RELOCS): Reuse its value.
	(TARGET_STATS): Remove.
	(TARGET_SWITCHES): Turn -mstats and -mno-stats into no-ops.
	Warn that -mstats is now ignored.
	(FINAL_PRESCAN_INSN): Undefine.
	(DBR_OUTPUT_SEQEND): Remove handling of dslot statistics.
	(ASM_OUTPUT_REG_POP): Likewise.
	* config/mips/mips.c (dslots_load_total, dslots_load_filled,
	dslots_jump_total, dslots_jump_filled, dslots_number_nops, num_refs,
	mips_load_reg, mips_load_reg2, mips_load_reg3, mips_load_reg4,
	mips_fill_delay_slot, mips_count_memory_refs,
	final_prescan_insn): Remove.
	(output_block_move): Remove calls to mips_count_memory_refs.
	(print_operand): Remove printing of #nop for TARGET_STATS.
	(mips_output_function_epilogue): Remove TARGET_STATS code.
	Reorganize setting of fnnmae.
	* config/mips/mips.md: Remove handling of dslot statistics
	throughout file.  Change all fcmp patterns into normal asm
	templates, removing calls to mips_fill_delay_slot.
	* doc/invoke.texi: Remove documentation of -mstats.

2003-05-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_class_max_nregs): Return the number of
	words in the mode.

2003-05-19  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (override_options): Disable explicit
	relocs for old ABIs unless using gas.

2003-05-18  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h: Remove definition of g_switch_value.

2003-05-18  Matt Kraai  <kraai@alumni.cmu.edu>

	* flags.h (g_switch_value): Change to an unsigned
	HOST_WIDE_INT.
	* toplev.c (g_switch_value): Likewise.

	* config/alpha/alpha.c (small_symbolic_operand): Remove
	g_switch_value cast.
	(alpha_in_small_data_p): Cast size to an unsigned
	HOST_WIDE_INT.

	* config/frv/frv.c (frv_in_small_data_p): Cast size to an
	unsigned HOST_WIDE_INT.
	* config/frv/frv.h (g_switch_value, g_switch_set): Remove.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Declare g_switch_set.

	* config/m32r/m32r.c (m32r_in_small_data_p): Cast size to an
	unsigned HOST_WIDE_INT.
	(m32r_asm_file_start): Use HOST_WIDE_INT_PRINT_UNSIGNED.
	* config/m32r/m32r.h (g_switch_value, g_switch_set): Remove.
	(ASM_OUTPUT_ALIGNED_COMMON): Declare g_switch_value.

	* config/rs6000/rs6000.c (rs6000_file_start): Use
	HOST_WIDE_INT_PRINT_UNSIGNED.
	(small_data_operand): Cast summand to unsigned HOST_WIDE_INT.
	(rs6000_elf_in_small_data_p): Cast size to unsigned
	HOST_WIDE_INT.
	* config/rs6000/sysv4.h (g_switch_value, g_switch_set):
	Remove.
	(SUBTARGET_OVERRIDE_OPTIONS): Declare g_switch_value and
	g_switch_set.
	(ASM_OUTPUT_ALIGNED_LOCAL): Declare g_switch_value and remove
	g_switch_value cast.

2003-05-18  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg  <zack@codesourcery.com>

	PR middle-end/10472
	* builtins.c (expand_builtin_memcpy):  Call force_operand on
	expressions and use simplify_gen_binary to create the addition.

2003-05-18  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.md: Use define_constants for unspec numbers.

2003-05-18  Neil Booth  <neil@daikokuya.co.uk>

	* config/sparc/sparc.h: Define sparc for now.

2003-05-18  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Clear xm_file, md_file at the beginning of each pass.

	* config/stormy16/stormy16.h: Remove about 3000 lines of
	target-independent comments.  Update copyright notice.

	* doc/collect2.texi: GNU CC -> GCC.
	* doc/headerdirs.texi: GNU CC -> GCC.

2003-05-18  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* hashtable.h (struct ht_identifier): Add data member "hash_value".
	* hashtable.c (ht_lookup): Use it when searching, remember.
	(ht_expand): Do not recompute.
	* tree.h (IDENTIFIER_HASH_VALUE): New macro.

2003-05-18  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.c (gcov_read_bytes): Fix fread thinko.

2003-05-18  Neil Booth  <neil@daikokuya.co.uk>

	* c-cppbuiltin.c (TARGET_OS_CPP_BUILTINS, TARGET_OBJFMT_CPP_BUILTINS):
	Default here.
	(c_cpp_builtins): Invoke TARGET_OBJFMT_CPP_BUILTINS().
	* defaults.h: Don't default TARGET_OS_CPP_BUILTINS here.
	* config/elfos.h (TARGET_OBJFMT_CPP_BUILTINS): Define __ELF__.
	* config/freebsd-spec.h, config/netbsd-elf.h, config/alpha/gnu.h,
	config/arm/linux-elf.h, config/arm/rtems-elf.h,
	config/arm/unknown-elf.h, config/cris/cris.h, config/cris/linux.h,
	config/h8300/elf.h, config/i370/linux.h, config/i386/beos-elf.h,
	config/i386/gnu.h, config/i386/linux.h, config/i386/linux64.h,
	config/i386/moss.h, config/i386/rtemself.h, config/ia64/ia64.h,
	config/m68k/rtemself.h, config/mcore/mcore-elf.h, config/mips/linux.h,
	config/pa/pa-linux.h, config/rs6000/linux.h, config/rs6000/linux64.h,
	config/rs6000/sysv4.h, config/rs6000/vxworks.h, config/s390/linux.h,
	config/sh/coff.h, config/sh/elf.h, config/sh/rtemself.h,
	config/sh/sh.h, config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/openbsd64.h, config/sparc/sp64-elf.h,
	config/sparc/sp86x-elf.h, config/xtensa/elf.h, config/xtensa/linux.h:
	Don't define __ELF__.
	* config/alpha.h, config/m68k/linux.h (TARGET_OBJFMT_CPP_BUILTINS):
	Define __ELF__.
	* doc/cpp.texi: Document __ELF__.
	* doc/tm.texi: Document TARGET_OBJFMT_CPP_BUILTINS.	*

2003-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
	always use stdarg.
	* c-errors.c (pedwarn_c99): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-semantics.c (build_stmt): Likewise.
	* calls.c (emit_library_call, emit_library_call_value): Likewise.
	* collect2.c (notice, fatal_perror, fatal, error): Likewise.
	* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
	* diagnostic.c (build_message_string, output_printf,
	output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
	fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
	error_with_decl, fnotice): Likewise.
	* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
	dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
	dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
	dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
	dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
	dw2_asm_output_encoded_addr_rtx): Likewise.
	* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
	* errors.c (warning, error, fatal, internal_error): Likewise.
	* final.c (output_operand_lossage, asm_fprintf): Likewise.
	* fix-header.c (fatal): Likewise.
	* gcc.c (fatal, error, notice): Likewise.
	* gcov.c (fnotice): Likewise.
	* genattrtab.c (attr_rtx, attr_printf): Likewise.
	* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
	* gensupport.c (message_with_line): Likewise.
	* mips-tfile.c (fatal, error): Likewise.
	* protoize.c (notice): Likewise.
	* ra-debug.c (ra_debug_msg): Likewise.
	* read-rtl.c (fatal_with_file_and_line): Likewise.
	* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
	* tree.c (build, build_nt, build_function_type_list): Likewise.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	* defaults.h (TARGET_CPU_CPP_BUILTINS, CPP_PREDEFINES): Remove.
	* gcc.c (cpp_predefines): Remove.
	(cpp_unique_options, do_spec_1): Remove handling of CPP_PREDEFINES.
	(static_specs): Remove predefines.
	* system.h: Poison CPP_PREDEFINES.
	* config/freebsd.h, config/openbsd.h, config/ptx4.h, config/svr3.h,
	config/svr4.h, doc/tm.texi: Remove references to CPP_PREDEFINES.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	* config/m68k/hp320.h, config/m68k/linux.h, config/m68k/m68k-none.h,
	config/m68k/m68k.h, config/m68k/m68kemb.h, config/m68k/m68kv4.h,
	config/m68k/openbsd.h, config/m68k/rtemself.h: Remove CPP_PREDEFINES,
	use TARGET_OS_CPP_BUILTINS and TARGET_CPU_CPP_BUILTINS instead.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	PR c/9209
	* c-common.c, c-common.h (dollars_in_ident): Remove.
	* c-opts.c (DOLLARS_IN_IDENTIFIERS): Default to true.
	(c_common_init_options, c_common_decode_option): Set dollars_in_ident.
	* cpphash.h (warned_dollar): Rename warn_dollars.
	* cppinit.c (struct lang_flags, lang_defaults, cpp_set_lang)
	Permit dollars regardless of -std=.
	(post_options): Set warn_dollars.
	* cpplex.c (forms_identifier_p): Use warn_dollars.
	* config/darwin.h, config/alpha/vms.h, config/m68hc11/m68hc11.h:
	Remove redundant definitions of DOLLARS_IN_IDENTIFIERS.
	* doc/cpp.texi, doc/cppopts.texi, doc/invoke.texi, doc/tm.texi:
	Update documentation.

2003-05-17  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.c (m68k_output_function_prologue): Use
	HOST_WIDE_INT_PRINT_DEC for fprintf and %wd for asm_fprintf when
	formatting a HOST_WIDE_INT.
	(m68k_output_function_epilogue): Likewise.

2003-05-17  Zack Weinberg  <zack@codesourcery.com>

	* doc/install.texi: Remove information about desupported targets.

2003-05-17  Andreas Schwab  <schwab@suse.de>

	* config/m68k/coff.h: Remove support for Sun FPA and Sun SKY board.
	* config/m68k/linux.h: Likewise.
	* config/m68k/m68k-none.h: Likewise.
	* config/m68k/netbsd-elf.h: Likewise.
	* config/m68k/sgs.h: Likewise.
	* config/m68k/m68k.h: Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/m68k/m68k.c: Likewise.
	* doc/md.texi (Machine Constraints): Remove Sun FPA specific
	constraints.
	* doc/invoke.texi (Option Summary): Remove -mfpa.
	(M680x0 Options): Likewise.

2003-05-17  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.c (rs6000_function_value): Simplify REAL_TYPE logic.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	* config/sol2.h: Add TARGET_SUB_OS_CPP_BUILTINS.
	* config/sparc/liteelf.h, config/sparc/openbsd64.h,
	config/sparc/rtemself.h, config/sparc/sol2-64.h,
	config/sparc/sp64-elf.h, config/sparc/sp86x-elf.h:
	Update for use of TARGET_SUB_OS_CPP_BUILTINS.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	* i960/i960.h, i960/rtems.h: Use TARGET_OS_CPP_BUILTINS and
	TARGET_CPU_CPP_BUILTINS in preference to CPP_PREDEFINES.

2003-05-17  Neil Booth  <neil@daikokuya.co.uk>

	* config.gcc (sparc-*-sysv4*): Add sparc/sysv4-only.h.
	* sparc/aout.h, sparc/elf.h, sparc/freebsd.h, sparc/linux.h,
	sparc/linux64.h, sparc/lite.h, sparc/litecoff.h, sparc/liteelf.h,
	sparc/netbsd-elf.h, sparc/openbsd.h, sparc/openbsd64.h,
	sparc/pbd.h, sparc/rtemself.h, sparc/sol2-64.h, sparc/sol2-bi.h,
	sparc/sol2.h, sparc/sp64-elf.h, sparc/sp86-elf.h, sparc/sparc.h,
	sparc/sysv4.h,
	* sparc/sysv4-only.h: New.

2003-05-17  Alan Modra  <amodra@bigpond.net.au>

	* function.c (assign_parms): Check for zero size args.

2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cfgloopanal.c (test_for_iteration): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.
	* dbxout.c (dbxout_symbol): Likewise.
	* defaults.h (ASM_OUTPUT_SIZE_DIRECTIVE): Likewise.
	* dwarf2asm.c (dw2_asm_output_data_uleb128,
	dw2_asm_output_data_sleb128): Likewise.
	* genrecog.c (debug_decision_2): Likewise.
	* loop.c (emit_prefetch_instructions): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* ra-debug.c (dump_igraph, dump_graph_cost,
	dump_static_insn_cost): Likewise.
	* ra-rewrite.c (dump_cost): Likewise.
	* sdbout.c (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* sreal.c (dump_sreal): Likewise.
	* unroll.c (unroll_loop, precondition_loop_p): Likewise.
	* varasm.c (assemble_vtable_entry): Likewise.

	* avr.c (avr_output_function_prologue,
	avr_output_function_epilogue, print_operand): Fix format specifier
	warnings.
	(init_cumulative_args): Mark parameter with ATTRIBUTE_UNUSED.
	* avr.h (FUNCTION_VALUE_REGNO_P): Fix signed/unsigned warnings.

2003-05-16  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (expand_block_move): Unify the TARGET_STRING
	and ! TARGET_STRING cases.

	* doc/cppopts.texi (-undef): Fix texinfo warning.

	* doc/cppopts.texi (-H): Document that -H works for PCH files too.
	* cppfiles.c (validate_pch): When -H is used, print some information
	about PCH files found.

2003-05-16  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/mips/t-elf: Remove obsolete rules adding dependencies on tm.h.
	* config/mips/t-isa3264, config/mips/t-r3900: Likewise.
	* config/mips/t-sr71k: Likewise.

2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* arc.c (arc_output_function_prologue,
	arc_output_function_epilogue): Fix format specifier warnings.
	* arc.h (LARGE_INT): Fix signed/unsigned warnings.

	* v850.c (print_operand): Fix format specifier warnings.

	* ns32k.c (ADJSP, ns32k_output_function_prologue): Fix format
	specifier warnings.

	* mcore.c (mcore_print_operand_address, mcore_print_operand): Fix
	format specifier warnings.

	* ip2k.c (function_prologue, function_epilogue, print_operand):
	Fix format specifier warnings.
	* ip2k.md: Likewise.

	* i960.c (i960_output_function_prologue, i960_print_operand,
	i960_print_operand_addr): Fix format specifier warnings.

	* i370.c (ascebc, ebcasc): Wrap in macros controlling usage.
	(i370_output_function_prologue): Fix format specifier warnings.
	* i370.h (PRINT_OPERAND): Likewise.

	* fr30.c (fr30_print_operand): Fix format specifier warnings.

	* dsp16xx.c (print_operand_address): Fix format specifier warning.
	* dsp16xx.h (INCLUDE_DEFAULTS): Add missing initializers.

	* c4x.c (c4x_print_operand, c4x_print_operand_address): Fix format
	specifier warnings.

	* alpha.c (print_operand_address, alpha_start_function,
	unicosmk_output_ssib): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.
	* arm.c (arm_print_operand): Likewise.
	* cris.c (cris_asm_output_mi_thunk): Likewise.
	* frv.c (frv_asm_output_mi_thunk): Likewise.
	* ia64.c (ia64_print_operand, process_set): Likewise.
	* m68k.c (m68k_output_function_epilogue, m68k_output_mi_thunk):
	Likewise.
	* mips/iris5gas.h (PUT_SDB_SIZE): Likewise.
	* mips.h (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* pa.c (output_div_insn, pa_asm_output_mi_thunk): Likewise.
	* pa.h (PRINT_OPERAND_ADDRESS): Likewise.
	* rs6000.c (rs6000_va_start, print_operand_address): Likewise.
	* s390.c (s390_assemble_integer): Likewise.
	* sparc.c (sparc_flat_function_prologue,
	sparc_flat_function_epilogue): Likewise.
	* stormy16.c (xstormy16_print_operand_address, xstormy16_print_operand): Likewise.
	* vax.c (vax_output_mi_thunk): Likewise.

	* frv.c (frv_print_operand_memory_reference): Fix format specifier
	warning.
	(frv_rtx_costs): Mark parameter with ATTRIBUTE_UNUSED.

	* m68k.c (m68k_output_function_epilogue): Fix format specifier
	warnings.

	* stormy16-protos.h (xs_hi_general_operand,
	xs_hi_nonmemory_operand): Prototype.
	* stormy16.c (xstormy16_output_shift): Fix format specifier
	warnings.

	* cris.c: Fix format specifier warnings.

2003-05-16  Nick Clifton  <nickc@redhat.com>

	* config/arm/lib1funcs.asm: Fix typo: LSM instead of LSYM.

2003-05-16  Wolfgang Bangerth <bangerth@dealii.org>

	* doc/bugreport.texi: Remove most of the of the preface of the
	bugs section.

2003-05-16  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/unwind-ia64.c (uw_update_reg_address): Handle
	.save XX, r0.

2003-05-15  Roger Sayle  <roger@eyesopen.com>

	* config/alpha/alpha.h (ASM_OUTPUT_SKIP): Fix typo.

2003-05-15  Eric Christopher  <echristo@redhat.com>

	* cfgcleanup.c (merge_blocks): Fix return value.

2003-05-15 Eric Christopher <echristo@redhat.com>

	* combine.c (expand_compound_operation): Make sure
	that zero_extend operation is profitable.

2003-05-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/linux.h, config/alpha/linux-elf.h: Remove
	code protected by USE_GNULIBC_1.

2003-05-15  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Purge all targets obsoleted in GCC 3.3.  Also
	remove hppa*-*-mpeix* which could not be built, and prune
	files from tmake_file= or tm_file= lists that don't exist.

	* config/alpha/alpha-interix.h, config/alpha/alpha32.h
	* config/alpha/t-interix, config/arm/conix-elf.h
	* config/arm/t-arm-aout, config/arm/t-strongarm-coff
	* config/arm/unknown-elf-oabi.h, config/i386/win32.h
	* config/m68k/3b1.h, config/m68k/3b1g.h, config/m68k/amix.h
	* config/m68k/atari.h, config/m68k/ccur-GAS.h, config/m68k/crds.h
	* config/m68k/hp2bsd.h, config/m68k/hp3bsd.h
	* config/m68k/hp3bsd44.h, config/m68k/linux-aout.h
	* config/m68k/m68k-psos.h, config/m68k/mot3300.h
	* config/m68k/pbb.h, config/m68k/plexus.h, config/m68k/sun2.h
	* config/m68k/sun2o4.h, config/m68k/sun3.h, config/m68k/sun3mach.h
	* config/m68k/sun3n.h, config/m68k/sun3n3.h, config/m68k/sun3o3.h
	* config/m68k/t-mot3300, config/m68k/t-mot3300-gald
	* config/m68k/t-mot3300-gas, config/m68k/t-mot3300-gld
	* config/m68k/tower-as.h, config/m68k/tower.h
	* config/m88k/aout-dbx.h, config/m88k/m88k-aout.h
	* config/m88k/m88k-modes.def, config/m88k/m88k-move.sh
	* config/m88k/m88k-protos.h, config/m88k/m88k.c
	* config/m88k/m88k.h, config/m88k/m88k.md, config/m88k/openbsd.h
	* config/m88k/sysv4.h, config/m88k/t-luna, config/m88k/t-luna-gas
	* config/m88k/t-m88k, config/m88k/t-sysv4, config/mcore/gfloat.h
	* config/mips/rtems64.h, config/mips/sni-gas.h
	* config/mips/sni-svr4.h, config/mips/t-ecoff
	* config/mn10200/lib1funcs.asm, config/mn10200/mn10200-protos.h
	* config/mn10200/mn10200.c, config/mn10200/mn10200.h
	* config/mn10200/mn10200.md, config/mn10200/t-mn10200
	* config/pa/pa-hiux.h, config/pa/pa-hpux7.h, config/pa/pa-hpux9.h
	* config/pa/pa-oldas.h, config/pa/t-mpeix, config/psos.h
	* config/romp/romp-protos.h, config/romp/romp.c
	* config/romp/romp.h, config/romp/romp.md, config/rs6000/aix31.h
	* config/rs6000/aix3newas.h, config/rs6000/mach.h
	* config/sparc/bsd.h, config/sparc/hal.h
	* config/sparc/linux-aout.h, config/sparc/lynx-ng.h
	* config/sparc/lynx.h, config/sparc/netbsd.h
	* config/sparc/sp86x-aout.h, config/sparc/splet.h
	* config/sparc/sun4gas.h, config/sparc/sun4o3.h
	* config/sparc/sunos4.h, config/sparc/t-chorus-elf
	* config/sparc/t-halos, config/sparc/t-sparcbare
	* config/sparc/t-splet, config/sparc/t-sunos41
	* config/v850/rtems.h: Delete file.

2003-05-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000-protos.h (function_value): Protoize.

	* config/rs6000/rs6000.h (FUNCTION_VALUE): Call function.

	* config/rs6000/rs6000.c (rs6000_function_value): New.

2003-05-15  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_is_xscale): Rename to arm_arch_xscale.
	All uses updated.
	(arm_tune_xscale): New variable.
	(arm_override_options): Set it.
	(arm_adjust_cost): Use it in place of arm_arch_xscale.
	(arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	* config/arm/arm.md (is_xscale): Likewise.
	* config/arm/arm.h (arm_tune_xscale): Declare.

2003-05-15  Philip Blundell  <philb@gnu.org>

	PR target/10730
	* config/arm/arm.c (adjacent_mem_locations): Reject offsets
	involving invalid constants.

2003-05-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (hppa_expand_prologue): Remove blockage.

2003-05-15  Wolfgang Bangerth <bangerth@dealii.org>

	* doc/bugreport.texi: Remove most of the bug reporting
	instructions and merge them into bugs.html.

2003-05-14  Matt Kraai  <kraai@alumni.cmu.edu>

	* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Cast
	g_switch_value to unsigned HOST_WIDE_INT.

2003-05-14  Eric Christopher  <echristo@redhat.com>

	* combine.c: Fix header comments.
	(distribute_notes): Remove usage of elim_i1, elim_i2. Propagate
	to all calls and prototype.

2003-05-14  Roger Sayle  <roger@eyesopen.com>

	PR optimization/10764
	* config/i386/i386.md (atan2df3, atan2sf3, atan2xf3, atan2tf3):
	Add an explicit clobber to show that UNSPEC_FPATAN clobbers st(1).
	(*fyl2x_sfxf3, *fyl2x_dfxf3, *fyl2x_xf3, *fyl2x_tfxf3):  Likewise,
	add an explicit clobber to show that UNSPEC_FYL2X clobbers st(1).
	(logsf2, logdf2, logxf2, logtf2): Update expander patterns to match
	the corresponding *fyl2x_?fxf3 instructions.

2003-05-14  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib2funcs.S (TRAMPOLINE_SIZE): Change from 49 to 59.
	* config/xtensa/xtensa-config.h (XCHAL_HAVE_CONST16,
	XCHAL_HAVE_L32R): New.
	* config/xtensa/xtensa-protos.h (non_const_move_operand,
	xtensa_load_constant, xtensa_function_prologue,
	xtensa_function_epilogue): Delete prototypes.
	(xtensa_expand_prologue): New.
	* config/xtensa/xtensa.c (frame_size_const,
	TARGET_ASM_FUNCTION_PROLOGUE, TARGET_MACHINE_DEPENDENT_REORG,
	non_const_move_operand, xtensa_load_constant, xtensa_reorg,
	xtensa_function_prologue): Delete.
	(add_operand, xtensa_mem_offset): Formatting.
	(move_operand): If the const16 option is available, allow any SFmode
	and SImode constants.
	(xtensa_emit_move_sequence): Inline the former contents of
	xtensa_load_constant with modifications to handle the const16 option.
	(override_options): Add xtensa_char_to_class['W'] and set it to
	the general register class only if the const16 option is enabled.
	Fix formatting.  Disallow PIC when using the const16 option.
	(print_operand): Reorganize to switch on "letter" instead of the
	RTL code.  Add output_operand_lossage calls for invalid cases.
	Add support for 't' and 'b' letters.
	(xtensa_expand_prologue): New function to replace
	xtensa_function_prologue and xtensa_reorg.
	(xtensa_function_epilogue): Declare this as static.  Delete code
	to print the retw.n or retw instruction.
	(xtensa_return_addr): Use A0_REG instead of 0.
	(xtensa_rtx_costs): Add costs for using the const16 option.
	* config/xtensa/xtensa.h (MASK_CONST16, TARGET_CONST16): New.
	(TARGET_DEFAULT): Add CONST16 if L32R instructions not available.
	(TARGET_SWITCHES): Add "const16" and "no-const16".
	(REG_CLASS_FROM_LETTER): Add comment about new 'W' letter.
	(EXTRA_CONSTRAINT): Change 'T' constraint to only apply when not
	using the const16 option.
	(TRAMPOLINE_TEMPLATE): Rewrite to avoid hardwired use of l32r insn.
	(TRAMPOLINE_SIZE): Change from 49 to 59.
	(INITIALIZE_TRAMPOLINE): Adjust offsets to match new trampoline.
	(GO_IF_LEGITIMATE_ADDRESS): Do not allow constant pool addresses
	when using the const16 option.
	(PREDICATE_CODES): Delete non_const_move_operand.
	* config/xtensa/xtensa.md (define_constants): Add A1_REG, A8_REG, and
	UNSPECV_ENTRY.
	(movdi, movdf): If the source is a constant, always expand to a
	sequence of movsi insns.
	(movdi_internal, movdf_internal): Remove alternative using l32r insns.
	(movsi_internal, movsf_internal): Add alternative using const16 insns.
	(movsf): Add const16 support.
	(entry, prologue, epilogue): New.
	(set_frame_ptr): Add missing mode for unspec_volatile operation.
	Likewise for subsequent split pattern.
	* doc/invoke.texi (Option Summary, Xtensa Options): Document new
	"-mconst16" and "-mno-const16" options.

2003-05-14  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_expand_load_address): Force destination
	to be DImode register.  Merge load_symptr.
	* config/ia64/ia64.md (load_symptr): Remove.

2003-05-14  Richard Henderson  <rth@redhat.com>

	* rtl.h (TREE_CONSTANT_POOL_ADDRESS_P): Rename from
	DEFERRED_CONSTANT_P.
	* integrate.c (copy_rtx_and_substitute): Update use.
	* varasm.c (build_constant_desc): Set SYMBOL_REF_DECL
	to the copy generated.
	(maybe_output_constant_def_contents): Examine TREE_ASM_WRITTEN
	of the constant to see if we should emit.
	(mark_constant): Similarly.
	(output_constant_def_contents): Set TREE_ASM_WRITTEN.

2003-05-14  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (movsi_internal2): Use compare for self
	move record condition.
	(movdi_internal2): Same.

2003-05-14  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h (gcov_write_bytes, gcov_read_bytes): Remove here.
	(GCOV_TAG_*) Force type to gcov_unsigned_t.
	(GCOV_CHECK, GCOV_CHECK_READING, GCOV_CHECK_WRITING): New.
	(struct gcov_var): Remove modified. Add start, length, offset,
	overread. Have buffer array for libgcov.
	(gcov_sync, gcov_seek): Definitions moved to gcov-io.c.
	(gcov_position, gcov_rewrite, gcov_is_eof): Adjust.
	* gcov-io.c (gcov_open): Set mode, do not read anything.
	(gcov_close): Write final block.
	 (gcov_write_block, gcov_allocate): New.
	(gcov_write_bytes): Make static. Write or allocate buffer.
	(gcov_write_unsigned, gcov_write_counter): Buffer can never be
	null.
	(gcov_write_string): Adjust.
	(gcov_write_tag)
	(gcov_write_length): Adjust. Flush the block.
	(gcov_write_tag_length): Buffer can never be null.
	(gcov_read_bytes): Make static. Read in block.
	(gcov_sync): Moved here. Adjust.
	(gcov_seek): Moved here. Adjust.
	* coverage.c (read_counts_file): Adjust.
	* gcov-dump.c (print_prefix): Add position parameter.
	(flag_dump_positions): New flag.
	(options, main, print_usage): Add it.
	(dump_file, tag_blocks, tag_arcs, tag_lines, tag_counters,
	tag_summary): Adjust.
	* gcov.c (read_graph_file, read_count_file): Adjust.
	* libgcov.c (gcov_exit): Adjust.

	* Makefile.in (LIBGCC_DEPS): Use $(srcdir) on gcov files
	(libgcov.a): Depend on libgcc.a.
	(gcov.o, gcov-dump.o): Add gcov-io.c.
	* mklibgcc.in (libgcov_c_dep): Use $(srcdir).

	* loop.c (check_dbra_loop): Factor common test.

2003-05-14  Ben Elliston  <bje@wasabisystems.com>

	* doc/md.texi (Automaton pipeline description): Grammar fixes.

2003-05-14  Richard Sandiford  <rsandifo@redhat.com>

	* target-def.h (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(TARGET_INITIALIZER): Include it.
	* target.h (struct gcc_target): Add machine_dependent_reorg field.
	* toplev.c (rest_of_compilation): Use targetm.machine_dependent_reorg.
	* system.h: Poison MACHINE_DEPENDENT_REORG.

	* config/alpha/alpha-protos.h (alpha_reorg): Remove declaration.
	* config/alpha/alpha.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/alpha/alpha.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(alpha_handle_trap_shadows): Remove "first insn" parameter.
	(alpha_align_insns): Likewise.
	(alpha_reorg): Likewise.  Make static.  Update calls to above
	functions.

	* config/arm/arm-protos.h (arm_reorg): Remove declaration.
	* config/arm/arm.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/arm/arm.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(arm_reorg): Remove parameter.  Make static.

	* config/avr/avr-protos.h (machine_dependent_reorg): Remove.
	* config/avr/avr.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/avr/avr.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(avr_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/c4x/c4x-protos.h (c4x_process_after_reload): Remove.
	* config/c4x/c4x.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/c4x/c4x.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(c4x_reorg): Renamed from c4x_process_after_reload.  Make static.
	Remove parameter.

	* config/d30v/d30v-protos.h (d30v_machine_dependent_reorg): Remove.
	* config/d30v/d30v.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/d30v/d30v.c (d30v_machine_dependent_reorg): Remove.

	* config/frv/frv-protos.h (frv_machine_dependent_reorg): Remove.
	* config/frv/frv.c: Remove orphaned comment.

	* config/i386/i386-protos.h (x86_machine_dependent_reorg): Remove.
	* config/i386/i386.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/i386/i386.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ix86_reorg): Renamed from x86_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/ia64/ia64-protos.h (ia64_reorg): Remove declaration.
	* config/ia64/ia64.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ia64/ia64.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(emit_insn_group_barriers): Remove "first insn" parameter.
	(emit_all_insn_group_barriers): Likewise.
	(ia64_reorg): Likewise.  Make static.  Update calls to above functions.
	(ia64_output_mi_thunk): Update call to emit_all_insn_group_barriers.

	* config/ip2k/ip2k-protos.h (machine_dependent_reorg): Remove.
	* config/ip2k/ip2k.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ip2k/ip2k.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ip2k_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/m68hc11/m68hc11-protos.h (m68hc11_reorg): Remove declaration.
	* config/m68hc11/m68hc11.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/m68hc11/m68hc11.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(m68hc11_reorg): Make static.  Remove parameter.

	* config/mcore/mcore-protos.h (mcore_dependent_reorg): Remove.
	* config/mcore/mcore.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mcore/mcore.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(conditionalize_optimization): Remove parameter.
	(mcore_reorg): Renamed from mcore_dependent_reorg.  Remove parameter.
	Make static.  Update call to conditionalize_optimization.

	* config/mips/mips-protos.h (machine_dependent_reorg): Remove.
	* config/mips/mips.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mips/mips.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mips_reorg): Renamed from machine_dependent_reorg.  Remove parameter.
	Make static.

	* config/mmix/mmix-protos.h (mmix_machine_dependent_reorg): Remove.
	* config/mmix/mmix.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mmix/mmix.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mmix_reorg): Renamed from mmix_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/pa/pa-protos.h (pa_reorg): Remove declaration.
	* config/pa/pa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/pa/pa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(pa_combine_instructions): Remove "first insn" parameter.
	(remove_useless_addtr_insns): Likewise.
	(pa_reorg): Likewise.  Make static.  Update calls to above functions.

	* config/rs6000/rs6000.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/s390/s390-protos.h (s390_machine_dependent_reorg): Remove.
	* config/s390/s390.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/s390/s390.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(s390_reorg): Renamed from s390_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/sh/sh-protos.h (machine_dependent_reorg): Remove.
	* config/sh/sh.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/sh/sh.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(sh_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.
	(sh_output_mi_thunk): Call sh_reorg directly.
	* config/sh/sh.md: Update comment.

	* config/stormy16/stormy16.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/v850/v850-protos.h (v850_reorg): Remove declaration.
	* config/v850/v850.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/v850/v850.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(v850_reorg): Make static.  Remove parameter.

	* config/xtensa/xtensa-protos.h (xtensa_reorg): Remove declaration.
	* config/xtensa/xtensa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/xtensa/xtensa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(xtensa_reorg): Make static.  Remove parameter.

	* doc/tm.texi (MACHINE_DEPENDENT_REORG): Remove.
	(TARGET_MACHINE_DEPENDENT_REORG): Document.

2003-05-13  Richard Henderson  <rth@redhat.com>

	* c-decl.c (duplicate_decls): Re-invoke make_decl_rtl if
	the old decl had instantiated DECL_RTL.

2003-05-13  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (Option Summary): Kill off documentation for -$.

2003-05-13  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/sysv4.h (OUTPUT_ASM_ALIGNED_LOCAL): Expect
	HOST_WIDE_INT argument.

2003-05-13  Jason Merrill  <jason@redhat.com>

	* tree.h (STRIP_MAIN_TYPE_NOPS): New macro.

	* tree.c (iterative_hash_expr): New fn.

	* c-semantics.c (emit_local_var): Don't mess with temp slots if
	there's no initializer.

2003-05-13  Richard Sandiford  <rsandifo@redhat.com>

	* final.c (final_scan_insn): Apply the effects of frame-related
	delay slot insns before emitting a delayed branch.

2003-05-13  Nick Clifton  <nickc@redhat.com>

	* config/mcore/mcore.md (jump): Use emit_jump_insn.

2003-05-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Second
	parameter of ASM_OUTPUT_SKIP must have type unsigned HOST_WIDE_INT.

2003-05-12  DJ Delorie  <dj@redhat.com>

	* expr.c (move_by_pieces): Honor the alignment of TO and FROM.
	(emit_push_insn): Don't use push when the source alignment is less
	than the stack's push rounding.

2003-05-13  Zack Weinberg  <zack@codesourcery.com>

	* diagnostic.c (output_format): Add support for %m.
	(output_printf, output_verbatim, diagnostic_set_info,
	verbatim): Set err_no field of the text_info structure being
	initialized.
	(fatal_io_error): Delete function.
	* diagnostic.h (text_info): Add err_no field.
	* toplev.h (fatal_io_error): Delete prototype.

	* c-opts.c, c-pch.c, dwarfout.c, ggc-common.c, ggc-page.c, graph.c
	* toplev.c, config/mips/mips.c, config/rs6000/host-darwin.c
	* objc/objc-act.c: Replace all calls to fatal_io_error with
	calls to fatal_error; add ": %m" to the end of all the affected
	error messages.

2003-05-13  Zack Weinberg  <zack@codesourcery.com>

	* varasm.c (notice_rtl_inlining_of_deferred_constant): New function.
	* rtl.h: Prototype it.
	* integrate.c (copy_rtx_and_substitute <SYMBOL_REF>): Call it
	when appropriate.

2003-05-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*iordi3_oi"): Do not mark commutative.
	("*iorsi3_oi"): Likewise.

2003-05-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (compare_scc): Use shorter sequence for EQ case.
	(ior_scc_scc_cmp, and_scc_scc_cmp): New insn-and-split patterns.
	(and_scc_scc): Ensure split only applies when there is a dominance
	of the comparisons.
	(and_scc_scc_nodom): New insn-and-split pattern.

2003-05-13  Richard Sandiford  <rsandifo@redhat.com>

	* unwind-dw2.c (uw_init_context_1): Don't pass &outer_cfa directly
	to _Unwind_SetGRPtr().

2003-05-13  Michael Eager <eager@mvista.com>

	* Makefile.in: Initialize program_transform_cross_name from
	@program_transform_name@ instead of target_alias.

2003-05-12  Janis Johnson  <janis187@us.ibm.com>
	    Alan Modra  <amodra@bigpond.net.au>
	    Jakub Jelinek  <jakub@redhat.com>

	* configure.in (HAVE_AS_TLS): Add powerpc and powerpc64 tests.
	* configure: Rebuild.
	* config/rs6000/rs6000-protos.h: Update.
	* config/rs6000/rs6000.c (rs6000_tls_size): New.
	(rs6000_tls_size_string): New.
	(rs6000_parse_tls_size_option): New.
	(rs6000_legitimize_tls_address): New.
	(rs6000_tls_get_addr): New.
	(rs6000_got_sym): New.
	(rs6000_tls_symbol_ref): New.
	(rs6000_tls_symbol_ref_1): New.
	(rs6000_get_some_local_dynamic_name): New.
	(rs6000_get_some_local_dynamic_name_1): New.
	(TARGET_HAVE_TLS): New.
	(TARGET_CANNOT_FORCE_CONST_MEM): New.
	(rs6000_override_options): Handle -mtls-size option.
	(constant_pool_expr_1): Handle TLS symbols.
	(rs6000_legitimize_address): Handle TLS symbols.
	(rs6000_tls_referenced_p): New.
	(rs6000_legitimate_address): Handle TLS symbols.
	(rs6000_emit_move): Handle TLS symbols.
	(print_operand): Handle TLS symbols.
	(uses_TOC): Handle TLS symbols.
	(rs6000_emit_prologue): Use symbol for unspec constant.
	* config/rs6000/rs6000.h (HAVE_AS_TLS): New.
	(some_ld_name): New.
	(LEGITIMATE_CONSTANT_P): Handle TLS symbols.
	(PRINT_OPERAND_PUNCT_VALID_P): Handle TLS symbols.
	(PREDICATE_CODES): Add rs6000_tls_symbol_ref.
	* config/rs6000/rs6000.md (load_toc_v4_PIC_1, load_toc_v4_PIC_1b):
	Support TLS.
	(tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64, tls_dtprel_32,
	tls_dtprel_64, tls_dtprel_ha_32, tls_dtprel_ha_64, tls_dtprel_lo_32,
	tls_dtprel_lo_64, tls_got_dtprel_32, tls_got_dtprel_64, tls_tprel_32,
	tls_tprel_64, tls_tprel_ha_32, tls_tprel_ha_64, tls_tprel_lo_32,
	tls_tprel_lo_64, tls_got_tprel_32, tls_got_tprel_64, tls_tls_32,
	tls_tls_64): New.
	* config/rs6000/sysv4.h (SUBTARGET_OPTIONS): Add tls_size.

2003-05-12  Neil Booth  <neil@cat.daikokuya.co.uk>

	* Makefile.in (stage2_build, stage3_build, stage4_build):
	Set BUILD_CC to the same as CC.

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

	* alloc-pool.c (last_id): Put in ENABLE_CHECKING guards.

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

	* config/ia64/ia64.c (ia64_function_ok_for_sibcall): Mark 'exp'
	as unused.
	(bundling): Initialize 'pos'.
	(ia64_expand_builtin): Initialize 'rmode'.

2003-05-12  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (ASM_OUTPUT_SKIP): Accept HOST_WIDE_INT.
	(ASM_OUTPUT_ALIGNED_COMMON): Same.
	(ASM_OUTPUT_LOCAL): Same.

Mon May 12 21:53:29 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* varasm.c (output_constant):  Fix underflow.

2003-05-12  Mark Mitchell  <mark@codesourcery.com>

	PR other/10745
	* configure.in: Correct detection of GNU ld version number.
	* configure: Regenerated.

2003-05-12  Zack Weinberg  <zack@codesourcery.com>

	* diagnostic.c (diagnostic_for_decl): Take a
	diagnostic_context argument.  Restructure to be consistent
	with diagnostic_report_diagnostic.
	(diagnostic_count_diagnostic): Now static.  Take a
	diagnostic_info argument, not just a diagnostic_t.  Some code
	moved here from internal_error.  Move a case label for
	clarity.
	(diagnostic_action_after_output): New function.  Code moved
	here from internal_error and fatal_error.
	(bug_report_request): New #define so that this text appears in
	only one place.
	(diagnostic_report_diagnostic): Update to match changes to
	diagnostic_count_diagnostic.  Call diagnostic_action_after_output.
	(diagnostic_set_info): Call gettext here.

	(pedwarn): Update comment.  Don't call gettext here.
	(sorry): Use report_diagnostic.  Don't call gettext here.
	(fatal_error): Remove final fnotice and exit, but call
	real_abort to prevent warnings about noreturn function returning.
	(internal_error): Likewise.  Don't do ICE suppression here nor
	call context->internal_error.
	(warning_with_decl): Suppress for decls in system headers.
	Adjust call to diagnostic_for_decl.
	(pedwarn_with_decl): Likewise.
	(error_with_decl): Adjust call to diagnostic_for_decl.
	(error_recursion): Use bug_report_request.

	* diagnostic.h: Remove prototype of diagnostic_count_diagnostic.
	* objc/objc-act.c (error_with_ivar, warn_with_method): Don't call
	diagnostic_count_diagnostic.

2003-05-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa64-hpux.h (ASM_OUTPUT_ALIGNED_COMMON): Correct last patch.

Mon May 12 15:57:54 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* rs6000/darwin.h (ASM_OUTPUT_COMMON): Accept HOST_WIDE_INT
	* mips/elf.h (ASM_OUTPUT_ALIGNED_BSS): Fix warning.
	* mips/mips.h (ASM_OUTPUT_SKIP):  Fix typo in the previous patch.

2003-05-12  Roger Sayle  <roger@eyesopen.com>

	* doc/rtl.texi: Document zero_extract as a valid destination
	of a set insn.

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

	* arm/lib1funcs.asm (LSYM): Define -- on ELF prefix a local symbol with
	'.'.  Change all local symbol definitions and references to use LSYM.

Mon May 12 11:32:53 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* expr.h (assemble_static_space): Update prototype.
	* output.h (assemble_zeros, output_constant): Likewise.
	* elfos.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): Make it 64bit clean
	* alpha.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASK_OUTPUT_LOCAL): Make
	it 64bit clean.
	* elf.h (ASM_OTUPUT_SKIP): Likewise.
	* unicosmk.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMM): Likewise.
	* arm.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* unknown-elf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* avr.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP): Expect
	HOST_WIDE_INT operand.
	* c4x.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP,
	ASM_OUTPUT_BSS): Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OTUPUT_SKIP): Likewise.
	* cris.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
	* darwin.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON): Likewise.
	* dsp16xx.h (ASM_OTUPUT_SKIP): Likewise.
	* frv.h (ASM_OTUPUT_SKIP): Likewise.
	* h8300.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_LOCAL): Likewise.
	* 370.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit
	clean.
	* att.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand.
	* bsd.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit clean.
	* darwin.h (ASM_OUTPUT_SKIP): Make it 64bit clean..
	* sco5.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Expect
	HOST_WIDE_INT operand
	* svr3gas.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Expect HOST_WIDE_INT operand
	* sysv3.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand
	* i960.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL): Expect HOST_WIDE_INT operand
	* ip2k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m32r.h (ASM_OUTPUT_COMMON): Likewise.
	* 3b1.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* amix.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* crds.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* hp320.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m68kelf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68kv4.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* mot3300.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* netbsd-elf.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* sgs.h (ASM_OUTPUT_SKIP): Likewise.
	* tower-as.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* m88k.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP):
	Likewise.
	* mcore.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_BSS, ASM_OUTPUT_SKIP): Likewise.
	* iris.h (ASM_OUTPUT_LOCAL): Likewise.
	* mips.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* ns32k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* pa-pro-end.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL):
	Make it 64bit clean.
	* pa.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* hpux.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL): Make it
	64bit clean.
	* romp.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* s390.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT argument.
	* sh.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* sol2.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* sparc.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): HOST_WIDE_INT argument
	* svr3.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* vax.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	HOST_WIDE_INT argument
	* vaxv.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* xtensa.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	asm_emit_uninitialized, assemble_zeros, assemble_static_space):
	HOST_WIDE_INT argument

2003-05-10  Steven Bosscher  <steven@gcc.gnu.org>

	* cgraphunit.c (cgraph_create_edges): Drop walk_tree in
	favor of walk_tree_without_duplicates.  Add comments.

2003-05-12  Josef Zlomek  <zlomekj@suse.cz>

	* alloc-pool.h (ALLOC_POOL_ID_TYPE): New type.
	(struct alloc_pool_def): New element 'id'.
	* alloc-pool.c (fancy_abort): Extern function prototype.
	(abort): Macro which uses fancy_abort.
	(struct allocation_object_def): New structure.
	(ALLOCATION_OBJECT_PTR_FROM_USER_PTR): New macro.
	(USER_PTR_FROM_ALLOCATION_OBJECT_PTR): New macro.
	(last_id): New variable.
	(create_alloc_pool): Add the offset of u.data to size of element,
	increase and use last_id.
	(free_alloc_pool): Do the checking only when ENABLE_CHECKING.
	(pool_alloc): Likewise. Set ID for elements.
	(pool_free): Check whether the PTR was allocated from POOL.

2003-05-11  Richard Henderson  <rth@redhat.com>

	PR c/10675
	* c-decl.c: Include hashtab.h.
	(detect_field_duplicates): New.
	(finish_struct): Use it.
	* Makefile.in (c-decl.o): Update.
	* c-parse.in (structsp_attr): Nreverse component_decl_list results.
	(component_decl_list, component_decl_list2,
	components, components_notype): Build list in reverse order.
	(enumlist): Clarify docs.  Use TREE_CHAIN not chainon.

	* tree.c (chainon): Special case op2 null as well.
	Reorg for clarity.

2003-05-11  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md (logsf2, logdf2, logxf2, logdf2): New patterns
	to implement log, logf and logl built-ins as inline x87 intrinsics.
	(UNSPEC_FYL2X): New unspec to represent x87's "fyl2x" instruction.
	(*fyl2x_sfxf3, *fyl2x_dfxf3, *fyl2x_xf3, *fyl2x_tfxf3): New insn
	patterns for x87's "fyl2x" instruction, used by log?f2 patterns.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FYL2X like
	UNSPEC_FPATAN, i.e. replaces two stack operands with single result.

2003-05-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (out_object_file): Don't set -Wno-error for ${cpu}.o.

	* sparc.c (print_operand): Fix uninitialized warning.

2003-05-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopanal.c (num_loop_insns, average_num_loop_insns): Count only
	real insns.
	* loop-unroll.c (unroll_loop_runtime_iterations): Remove superfluous
	condition.

2003-05-11  Neil Booth  <neil@cat.daikokuya.co.uk>

	* doc/cpp.texi: Fix typos.

2003-05-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_function_arg_float): New function.
	(s390_function_arg_pass_by_reference): Use it.
	(s390_function_arg_advance): Likewise.
	(s390_function_arg): Likewise.
	(s390_va_arg): Likewise

2003-05-11  Nathan Sidwell  <nathan@codesourcery.com>

	* coverage.h (coverage_counter_alloc): New function.
	* function.h (struct function): Remove arc_profile flag.
	* coverage.c (fn_ident): Remove.
	(fn_b_ctrs, no_coverage): New.
	(get_coverage_counts): Use current_function_funcdef_no.
	(coverage_counter_alloc): New.
	(coverage_counter_ref): Adjust.
	(coverage_begin_output): Check no_coverage. Use
	current_function_funcdef_no.
	(coverage_end_function): Likewise.
	(create_coverage): Set no_coverage. Set DECL_UNINLINEABLE rather
	than clearing flag_inline_functions. Do not clear arc_profile
	flag.
	* function.c (prepare_function_start): Do not set arc_profile
	flag.
	* profile.c (instrument_edges): Return number of instrumented
	edges. Use a for loop.
	(branch_prob): Call coverage_counter_alloc. Make BB_TO_GCOV_INDEX
	local to here and simplify. Use profile_arc_flag not arc_profile
	flag.
	(find_spanning_tree): Reformat.
	* toplev.c (rest_of_compilation): Use profile_arc_flags and
	flag_test_coverage rather than arc_profile flag.

2003-05-11  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* doc/invoke.texi (Wctor-dtor-privacy): Update documentation.

2003-05-11  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* varasm.c (copy_constant, case VIEW_CONVERT_EXPR): New case.

2003-05-11  Bruno Haible  <bruno@clisp.org>

	* cppfiles.c (find_or_create_entry): Preserve errno.

2003-05-11  Neil Booth  <neil@cat.daikokuya.co.uk>

	* c-cppbuiltin.c (c_cpp_builtins): Move __STDC_HOSTED__ into
	cpplib as it's a Standard Predefined Macro.
	* c-opts.c (finish_options): Pass flag_hosted to cpp_init_builtins.
	* cppinit.c (_cpp_init_builtins): Take HOSTED.  Define
	__STDC_HOSTED__ appropriately.
	* cpplib.h (_cpp_init_builtins): Update.
	* fix-header.c (read_scan_file): Update.
	* doc/cpp.texi, doc/cppopts.texi: Update documentation.

2003-05-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR C++/689
	PR C++/9257
	* c-opts.c (c_common_decode_option): Don't set
	warn_ctor_dtor_privacy wen -Wall.
	* c-common.c (warn_ctor_dtor_privacy): Don't turn on by default.

2003-05-10  Alexandre Oliva  <aoliva@redhat.com>

	* reload1.c (reload_cse_move2add): Revert part of my 2003-05-09's
	patch.

2003-05-10  Zack Weinberg  <zack@codesourcery.com>

	* diagnostic.c: Reorder functions for clarity, putting all the
	functions in the "error" family next to each other, and
	likewise all the functions in the "error_with_decl" family.
	Some other routines were moved too.  Add comments.
	(vbuild_message_string): Fold into sole caller.


2003-05-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* except.c (EH_RETURN_STACKADJ_RTX): Do not define.
	(EH_RETURN_HANDLER_RTX): Likewise.
	(expand_builtin_eh_return): Do not copy stack adjustment
	if EH_RETURN_STACKADJ_RTX is not defined.
	(expand_eh_return): Likewise.  Also, do not pass stack
	adjustment as argument to the eh_return pattern.
	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Do not define just
	because EH_RETURN_STACKADJ_RTX is not defined.
	* unwind-dw.c (uw_update_context_1): If EH_RETURN_STACKADJ_RTX
	is not defined, treat stack pointer like a regular register.
	(uw_init_context_1): Set up fake initial stack pointer register.
	(uw_install_context_1): Do not compute stack adjustment if
	EH_RETURN_STACKADJ_RTX is not defined.

	* config/i386/i386.md ("eh_return"): Remove first argument.
	* config/mips/mips.md ("eh_return"): Likewise.
	* config/rs6000/rs6000.md ("eh_return"): Likewise.
	* config/sh/sh.md ("eh_return"): Likewise.

	* config/s390/s390.h (EH_RETURN_STACKADJ_RTX): Remove.

2003-05-10  Alexander Aganichev  <aaganichev@yandex.ru>

	* config/i386/i386.h (MODES_TIEABLE_P): Fix typo.

2003-05-10  Nathan Sidwell  <nathan@codesourcery.com>

	* defaults.h (GCOV_TYPE_SIZE): Remove.
	* gcov-io.h (gcov_type): Set to specific mode int on target.
	(gcov_unsigned_t, gcov_position_t): New.
	(GCOV_TYPE_NODE): New.
	(GCOV_TAG_SUMMARY_LENGTH): Adjust.
	(GCOV_COUNTERS_SUMMABLE): New.
	(gcov_ctr_summary, gcov_sumary, gcov_fn_info, gcov_merge_fn,
	gcov_ctr_info, gcov_info): Adjust types.
	(gcov_var): Adjust types.
	(gcov_write_unsigned, gcov_write_tag,
	gcov_write_length, gcov_write_tag_length, gcov_write_summary,
	gcov_read_unsigned, gcov_read_summary): Adjust gcov types.
	(gcov_position, gcov_sync, gcov_seek): Adjust gcov types.
	* gcov-io.c (gcov_write_unsigned, gcov_write_tag,
	gcov_write_length, gcov_write_tag_length, gcov_write_summary,
	gcov_read_unsigned, gcov_read_summary): Adjust gcov types.
	* libgcov.c (gcov_crc32, gcov_version_mismatch, gcov_exit,
	__gcov_init, __gcov_merge_add): Adjust gcov types.
	* coverage.c (ctr_merge_functions): Constify.
	(ctr_names): New.
	(read_counts_file): Adjust gcov types. Only summarize & merge
	summable counters.
	(coverage_counter_ref): Use GCOV_TYPE_NODE.
	(build_fn_info_type, build_fn_info_value, build_ctr_info_type,
	build_ctr_info_value, build_gcov_info): Adjust types.
	* profile.c (branch_prob): Adjust gcov types.
	* gcov_dump (dump_file): Adjust gcov types.

2003-05-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (DOM_CC_X_AND_Y, DOM_CC_NX_OR_Y, DOM_CC_X_OR_Y): New
	constants.
	(ior_scc_scc, and_scc_scc): New insn_and_split patterns.
	* arm.c (arm_select_dominance_cc_mode): Renamed from
	select_dominance_cc_mode, no-longer static.  Use DOM_CC... constants.
	Callers updated.
	* arm-protos.h (arm_select_dominance_cc_mode): Add prototype.

2003-05-09  Roger Sayle  <roger@eyesopen.com>

	* config/alpha/alpha.c (alpha_start_function): Declare frame_size
	as unsigned to avoid signed/unsigned comparison warnings.

2003-05-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_emit_loop_end): Only use "nop.n"
	instruction if the Xtensa density option is enabled.

2003-05-09  Matt Kraai <kraai@alumni.cmu.edu>

       * mklibgcc.in: Remove extra quotes.

2003-05-09  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/rs6000.c (spe_init_builtins): Fix typo in creation
	of int_ftype_void.

2003-05-09  Alexandre Oliva  <aoliva@redhat.com>

	* reload1.c (reload_cse_move2add): Don't turn an implicit
	truncation into a self-set in the narrow mode.

2003-05-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (clzsi2): The CLZ instruction is predicable.

2003-05-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c: Formatting.

2003-05-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-dump.c (dequeue_and_dump): Use CONSTRUCTOR_ELTS,
	instead of TREE_OPERAND to access the operand of a
	CONSTRUCTOR node.

2003-05-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-dump.c (dequeue_and_dump): CONSTRUCTOR nodes contain only
	one operand.

2003-05-09  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* toplev.h (warning_with_file_and_line): Don't declare.
	(error_with_file_and_line): Likewise.
	* diagnostic.c (error_with_file_and_line): Remove.
	(warning_with_file_and_line): Likewise.

2003-05-09  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* c-parse.in (if_stmt_locus): New object.
	(if_prefix rule): Use it.  Don't use warning_with_file_and_line.
	(select_or_iter_stmt rule): Likewise.
	(if_stmt_file): Remove.
	(if_stmt_line): Likewise.
	* jump.c: include "diagnostic.h"
	(never_reached_warning): Don't use warning_with_file_and_line.
	* Makefile.in (jump.o): Add dependce on diagnostic.h

2003-05-09  Alan Modra  <amodra@bigpond.net.au>

	* expr.c (move_block_from_reg): Remove "size" parm.  Localize vars.
	Move code handling pieces not larger than a word to..
	* function.c (assign_parms): ..here, but use change_address instead
	of adjust_address and operand_subword, and expand_binop instead of
	expand_shift.  Adjust calls to move_block_from_reg.
	* expr.h (move_block_from_reg): Update declaration.
	(copy_blkmode_from_reg): Formatting.
	* Makefile.in (function.o): Add $(OPTABS_H) to deps.
	* config/alpha/alpha.c (alpha_setup_incoming_varargs): Adjust
	move_block_from_reg calls.
	* config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
	* config/m88k/m88k.c (m88k_builtin_saveregsk): Likewise.
	* config/mips/mips.c (mips_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/romp/romp.h (SETUP_INCOMING_VARARGS): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	* config/sh/sh.c (sh_builtin_saveregs): Likewise.

2003-05-08  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_arg): Fix
	to handle arguments for which MUST_PASS_IN_STACK is true (e.g.,
	variable-sized types).
	(xstormy16_function_arg): New.  Pass them that way too.
	* config/stormy16/stormy16-protos.h (xstormy16_function_arg): New.
	* config/stormy16/stormy16.h (FUNCTION_ARG): Call it.

2003-05-08  Aldy Hernandez  <aldyh@redhat.com>

	* mklibgcc.in: Use mkinstalldirs when installing multilib
	directories.

2003-05-08  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (gen_block_redirect, split_branches): Use CODE_FOR_jump_compact
	instead of CODE_FOR_jump

2003-05-08  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* objc/objc-act.c (error_with_ivar): Don't use
	error_with_file_and_line.
	(warn_with_method): Don't use warning_with_file_and_line.

2003-05-08  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* stmt.c (emit_locus): New macro.
	(emit_filename): Remove.
	(emit_lineno): Likewise.
	(struct stmt_status): Replace members x_emit_filename and
	x_emit_lineno with x_emit_locus.
	(set_file_and_line_for_stmt): Adjust.
	(expand_expr_stmt_value): Don't use warning_with_file_and_line.
	(warn_if_unused_value): Likewise.
	(check_seenlabel): Likewise.

2003-05-08  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-decl.c (define_label): Tidy.  Don't use any of
	error_with_file_and_line or warning_with_file_and_file.
	(pending_xref_error): Likewise.
	(store_parm_decls): Likewise.
	(current_function_prototype_locus): New object.  Package from
	current_function_prototype_file and current_function_prototype_line.
	(start_function): Use it.
	(current_function_prototype_file): Remove.
	(current_function_prototype_line): Remove;

2003-05-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (readonly_data_expr): New function.
	(expand_builtin_memmove): Optimize any rodata source, not just
	strings.

2003-05-07  David Mosberger <davidm@hpl.hp.com>

	* unwind-libunwind.c (_Unwind_FindEnclosingFunction): New.

2003-05-07  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_split_long_move): Fix base register
	mode for XFmode splits for TARGET_64BIT.

2003-05-07  Richard Henderson  <rth@redhat.com>

	* sched-ebb.c (schedule_ebb): Supply the correct starting
	block number to save_line_notes.

2003-05-07  Richard Henderson  <rth@redhat.com>

	* toplev.c (enum dump_file_index): Swap DFI_ce3, DFI_bbro.
	(dump_file): Likewise.

2003-05-07  David Mosberger <davidm@hpl.hp.com>

	* config/ia64/crtbegin.asm (__do_jv_register_classes): Don't
	forget to preserve gp.
	* config/ia64/crtend.asm (__do_global_ctors_au): Ditto.

	* config/ia64/crtbegin.asm (__do_jv_register_classes): Add missing
	.prologue directive.
	Use .skip instead of data8 for .bss section to make Intel
	Assembler (ias) happy.  Minor whitespace fixups.  Make "nop 0"
	explicit in the .mib bundles and remove the unnecessary stop
	bits.  Replace local labels with normal labels, to make ias
	happy.  Don't register __do_global_ctors_aux here, do it in
	crtend.asm instead.

	* config/ia64/crtend.asm [HAVE_INIT_FINI_ARRAY]: Register
	__do_global_ctors_aux in .init_array section instead of
	declaring it as a hidden global.  Replace local labels with
	ordinary labels to make ias happy.

2003-05-07  Richard Henderson  <rth@redhat.com>

	PR c++/10570
	* except.c: Revert 04-01 and 04-02 forced-unwind changes.
	* flags.h, toplev.c, doc/invoke.texi: Likewise.

	* unwind-dw2.c (_Unwind_GetCFA): Fix ptr->int conversion warning.
	* unwind.inc (_Unwind_DeleteException): Check for null
	exception_cleanup.

	* unwind-sjlj.c (_Unwind_SjLj_Resume_or_Rethrow): New.
	* unwind.inc (_Unwind_Resume_or_Rethrow): New.
	* unwind.h: Declare them.
	* libgcc-std.ver (GCC_3.3): Export them.

2003-05-07  Richard Henderson  <rth@redhat.com>

	* unwind-dw2.c (_Unwind_GetCFA): Cast pointer to _Unwind_Ptr,
	not _Unwind_Word.

2003-05-07  Zack Weinberg  <zack@codesourcery.com>

	* stmt.c (force_label_rtx): New function, based on logic
	formerly found in expand_expr.
	* expr.h: Prototype it.
	* expr.c (expand_expr <LABEL_DECL>): Use force_label_rtx if
	appropriate.
	* varasm.c (decode_addr_const <LABEL_DECL>): Use force_label_rtx.

	* print-tree.c (debug_tree): Free the table after we're done
	with it.  Use putc.

2003-05-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Reverse arguments for __ev_subfw.
	Unreverse arguments for __ev_subw.

	* config/rs6000/spe.md (evsubfw): Reverse arguments of assembly.

2003-05-07  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy-abi: Update to include
	R_XSTORMY16_FPTR16, R_XSTORMY16_LO16, R_XSTORMY16_HI16 and
	R_XSTORMY16_12 relocs.

2003-05-07  Alan Modra  <amodra@bigpond.net.au>

	* function.c (assign_parms): Correct reversed reg_parm_stack_space
	test.  Add partial in-regs size to stack_args_size.

2003-05-07  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi (Warning Options): Mark -Wmissing-declarations
	as a C only option.

2003-05-07  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h (GCOV_LOCKED): New #define.
	(GCOV_LINKAGE): Make sure it is #defined.
	(gcov_write_string, gcov_write_tag, gcov_write_length,
	gcov_read_string, gcov_time): Poison in libgcov.
	(gcov_seek_end): Remove.
	(gcov_write_tag_length, gcov_sync, gcov_rewrite): New.
	(GCOV_TAG_FUNCTION_LENGTH, GCOV_TAG_BLOCKS_LENGTH,
	GCOV_TAG_ARCS_LENGTH, GCOV_TAG_COUNTER_LENGTH,
	GCOV_TAG_SUMMARY_LENGTH): New #defines.
	(gcov_write_tag, gcov_write_length): Not in libgcov.
	* gcov-io.c (gcov_open): Use GCOV_LOCKED.
	(gcov_write_tag, gcov_write_length): Not in libgcov.
	(gcov_write_tag_length): New.
	(gcov_write_summary): Use gcov_write_tag_length.
	* libgcov.c: Always #include gcov-io.h.
	(IN_LIBGCOV): -1 for inhibit_libc, +1 otherwise.
	(GCOV_LINKAGE): Define to nothing for L_gcov.
	(gcov_exit): Replace gcov_write_tag, gcov_write_length with
	gcov_write_tag_length. Use gcov_rewrite & gcov_seek.
	* gcov.c (read_graph_file): Replace gcov_seek by gcov_sync.
	(read_count_file): Likewise.
	* gcov-dump.c (dump_file): Likewise.
	* coverag.c (read_counts_file): Likewise.

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

	PR other/10658
	* gcc.c (process_command): Update copyright date.

2003-05-06  Phil Edwards  <pme@gcc.gnu.org>

	* doc/install.texi (mips-*-*):  Add note about libstdc++.

2003-05-06  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_function_profiler): New.
	* config/stormy16/stormy16.h (FUNCTION_PROFILER): Call it.
	* config/stormy16/stormy16-protos.h (xstormy16_function_profiler): New.

2003-05-06    <neil@cat.daikokuya.co.uk>

	* c-opts.c (COMMAND_LINE_OPTIONS): Reject -Wmissing-prototypes
	and -Wstrict-prototypes if C++.

2003-05-06  Aldy Hernandez  <aldyh@redhat.com>

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

	* config.gcc: Add powerpc-*-linux-gnuspe* target.

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

	* unwind-dw2.c (uw_update_context_1): Only set cfa as sp if
	previous frame didn't save sp.  Clear sp for next frame.
	(uw_install_context_1): Honor saved sp from frame.

2003-05-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_subword, mips_output_move): Declare.
	(mips_move_1word, mips_move_2words): Remove declaration.
	(mips_split_64bit_move_p, mips_split_64bit_move): Declare.
	(mips_restore_gp): Remove insn argument.
	* config/mips/mips.h (FP_REG_RTX_P): New macro.
	* config/mips/mips.c (volatile_buffer): Remove.
	(mips_subword, mips_split_64bit_move_p, mips_split_64bit_move): New.
	(mips_move_1word, mips_move_2words): Remove, replacing with...
	(mips_output_move): ...this new function.
	(mips_restore_gp): Remove insn argument.  Adjust for above changes.
	(print_operand): Make '%h' print %hi(op) for HIGH operands.  Remove
	handling of floating-point constants.  Handle zero CONST_DOUBLE
	arguments.
	(mips_annotate_frame_insn): Replace with...
	(mips_set_frame_expr): ...this, which just takes one argument.
	(mips_frame_set): Change the register argument to an rtx.
	(mips_emit_frame_related_store): Use mips_split_64bit_move_p to
	check whether moves should be split.  Use mips_split_64bit_move
	to split them.  Use mips_subword to generate the high and low
	parts of a paired FPR.  Adjust calls to frame_set and
	mips_set_frame_expr.
	(mips_expand_prologue): Simplify due to above changes.
	* config/mips/mips.md:	Add splitters for 64-bit moves on 32-bit
	targets, replacing xisting register-only versions.
	(UNSPEC_STORE_DF_HIGH): New unspec.
	(UNSPEC_LOAD_DF_LOW, UNSPEC_LOAD_DF_HIGH): New unspecs.
	(mulsi3_r4000, muldi3_internal2): Avoid use of mips_move_1word.
	(*paradoxical_extendhidi2): Remove.
	(movdi_internal, movdi_internal2): Use mips_output_move.
	(*movdi_internal2_mips16, movsi_internal, movcc): Likewise.
	(movsf_internal1, movsf_internal2): Likewise.
	(movdf_internal1a): Likewise.  Fix length and type of f <- G case.
	(movdf_internal1b): Use mips_output_move.  Fix type of f <- G case.
	(movdf_internal2): Use mips_output_move.  Fix lengths of FPR moves.
	Add m <- G alternative.
	(load_df_low, load_df_high, store_df_low): New patterns.
	(movhi_internal): Use @ template instead of calling a function.
	Remove unnecessary 'z' alternatives.
	(movqi_internal): Likewise.
	(exception_receiver): Update call to mips_restore_gp.

2003-05-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_simplify_dwarf_addr): Remove.
	(mips_delegitimize_address): Declare.
	* config/mips/mips.h (ASM_SIMPLIFY_DWARF_ADDR): Undefine.
	(FIND_BASE_TERM): Define.
	* config/mips/mips.c (TARGET_DELEGITIMIZE_ADDRESS): Defi~e.
	(mips_delegitimize_address): Renamed from mips_simplify_dwarf_addr.
	Handle small-data addresses.

2003-05-05  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_powi): New function to calculate the value of
	a real raised to an integer power, i.e. pow(x,n) for int n.
	(real_sqrt): Convert to using the faster do_add, do_multiply
	and do_divide API for consistency with the rest of real.c.
	* real.h (real_powi): Prototype here.
	* builtins.c (fold_builtin):  Avoid local variable mode when
	evaluating sqrt at compile time.  Attempt to evaluate pow at
	compile-time, by checking for an integral exponent.

2003-05-05  Richard Henderson  <rth@redhat.com>

	* doc/extend.texi (Variable Attributes): Re-sort table and tidy.

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

	* config/rs6000/sysv4.h (CPP_OS_FREEBSD_SPEC): Add __ELF__ to mirror
	other FreeBSD ports.
	(LINK_OS_FREEBSD_SPEC): Mirror conventions on other FreeBSD ports.
	(_LITTLE_ENDIAN): Use __LITTLE_ENDIAN__ instead.

2003-05-05  Janis Johnson  <janis187@us.ibm.com>

	* Makefile.in: (site.exp): Add ALT_CC_UNDER_TEST, add quotes around
	expanded variables.
	* doc/sourcebuild.texi (C tests): Describe gcc.dg/compat tests.

2003-05-05  Zack Weinberg  <zack@codesourcery.com>

	* rtl.h (STRING_POOL_ADDRESS_P): Rename to DEFERRED_CONSTANT_P.
	* varasm.c (struct varasm_status): Add deferred_constants field.
	(n_deferred_strings): Delete variable.
	(n_deferred_constants): New #define.
	(struct constant_descriptor_tree): Kill next and label fields.
	(const_hash_table, MAX_HASH_TABLE): Delete.
	(const_desc_htab): New static variable.
	(const_hash): Rename const_desc_hash, and make it fit the
	hashtab.h interface.
	(const_desc_eq): New.
	(const_hash_1, compare_constant): Const-ify arguments.
	(build_constant_desc): Set DEFERRED_CONSTANT_P on all new
	SYMBOL_REFs.  Clarify comments.  Don't set desc->label.
	(output_constant_def): Do the lookup/insert using the
	hashtab.h interface.  Don't muck with n_deferred_constants or
	DEFERRED_CONSTANT_P here.
	Always call maybe_output_constant_def_contents.
	(maybe_output_constant_def_contents): Take a pointer to the
	descriptor, not the EXP and RTL separately.  Return
	immediately if this constant is not deferred.  Defer output of
	everything, except writable string constants.  Update
	n_deferred_constants here.
	(output_constant_def_contents): Now takes just one argument,
	an rtx.  Clear DEFERRED_CONSTANT_P here.
	(mark_constant_pool): Update for rename of n_deferred_strings.
	(mark_constant): Don't clear DEFERRED_CONSTANT_P here.

	(init_varasm_status): Clear p->deferred_constants.
	(init_varasm_once): Call htab_create_ggc for const_desc_htab.

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

	* builtins.c (expand_builtin_stpcpy): Only expand when the length
	of the source string can be evaluated at compile-time.

2003-05-05  Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/gcc.c-torture/compile/simd-6.c: New.

	* c-typeck.c (digest_init): Handle arrays of vector constants.

2003-05-05  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin_mempcpy): New function.
	(expand_builtin_stpcpy): Optimize stpcpy whose return value is
	ignored into strcpy no matter what arguments it has.
	(expand_builtin) <case BUILT_IN_MEMPCPY>: Call
	expand_builtin_mempcpy.

2003-05-05  Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/gcc.dg/20030505.c: New.

	* c-typeck.c (convert_for_assignment): Opaque pointers can
	interconvert.

	* config/rs6000/rs6000.c: New global opaque_p_V2SI_type_node.
	(rs6000_init_builtins): Initialize opaque_p_V2SI_type_node.
	(spe_init_builtins): Rename all pv2si_type_node to
	opaque_p_V2SI_type_node.
	Remove declaration of pv2si_type_node.
	(is_ev64_opaque_type): Accept opaque pointers.

2003-05-05  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (validate_condition_mode): Use
	flag_finite_math_only.
	(rs6000_reverse_condition): Never return UNKNOWN; use
	flag_finite_math_only.
	(rs6000_generate_compare): Use flag_finite_math_only.
	(rs6000_emit_cmove): Handle UNLE.  Support UNEQ under -ffast-math.
	Use HONOR_* rather than flag_unsafe_math_optimizations.  Correct
	UNGE and GT cases.  Handle UNEQ and LTGT when ! HONOR_NANS.

	* toplev.c (check_global_declarations): Suppress not-used warning
	for volatile variables.

2003-05-05  Olivier Hainque  <hainque@act-europe.fr>

	* expr.c (expand_expr, case BIT_FIELD_REF): Refine the test forcing
	usage of bitfield instructions for mode1 != BLKmode, only ignoring
	SLOW_UNALIGNED_ACCESS if the field is not byte aligned.
	(store_field): Likewise.

2003-05-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
	evsubifw to builtins accepting 5-bit unsigned constants.
	(easy_vector_constant): Return if V1DImode.  Fix typo.

2003-05-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Revert licensing change from last patch.

2003-05-05  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.md (negsi2): Allocate the pseudos
	before reload, but defer the split until after.
	* config/stormy16/stormy16.c (xstormy16_expand_arith): Modify
	to match.

2003-05-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 440 support.
	* config/rs6000/vxworks.h (CC1_SPEC): Use -mcpu=440 for t440.

2003-05-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* libgcov.c (__gcov_merge_add): Do not use gcov_type when inhibit_libc
	is defined.

2003-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def (ATTR_NOTHROW_NONNULL_1,
	ATTR_NOTHROW_NONNULL_2, ATTR_NOTHROW_NONNULL_3): Renamed from
	ATTR_NONNULL_1, ATTR_NONNULL_2 and ATTR_NONNULL_3.

	(ATTR_NOTHROW_NONNULL_1_2, ATTR_NOTHROW_NONNULL_1_4,
	ATTR_CONST_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1,
	ATTR_PURE_NOTHROW_NONNULL_1_2, ATTR_MALLOC_NOTHROW_NONNULL_1):
	New.

	* builtins.def (DEF_EXT_FALLBACK_BUILTIN): Accept ATTRS argument.
	(BUILT_IN_BZERO, BUILT_IN_BCOPY, BUILT_IN_BCMP): Update comment

	(BUILT_IN_INDEX, BUILT_IN_RINDEX, BUILT_IN_MEMCPY,
	BUILT_IN_MEMMOVE, BUILT_IN_MEMCMP, BUILT_IN_MEMSET,
	BUILT_IN_MEMPCPY, BUILT_IN_STRCAT, BUILT_IN_STRNCAT,
	BUILT_IN_STPCPY, BUILT_IN_STRCPY, BUILT_IN_STRNCPY,
	BUILT_IN_STRCMP, BUILT_IN_STRNCMP, BUILT_IN_STRLEN,
	BUILT_IN_STRSTR, BUILT_IN_STRPBRK, BUILT_IN_STRSPN,
	BUILT_IN_STRCSPN, BUILT_IN_STRCHR, BUILT_IN_STRRCHR, BUILT_IN_NAN,
	BUILT_IN_NANF, BUILT_IN_NANL, BUILT_IN_NANS, BUILT_IN_NANSF,
	BUILT_IN_NANSL, BUILT_IN_PUTS, BUILT_IN_FPUTC, BUILT_IN_FPUTS,
	BUILT_IN_FWRITE, BUILT_IN_PUTS_UNLOCKED, BUILT_IN_FPUTC_UNLOCKED,
	BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FWRITE_UNLOCKED,
	BUILT_IN_STRDUP): Add "nonnull" attribute.

2003-05-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_field): Don't clobber TEMP in shift: it might be
	a variable.
	(get_inner_reference): Don't go through a VIEW_CONVERT_EXPR
	whose purpose is to step up the alignment.
	(expand_expr, case ADDR_EXPR): Force LO_SUM into memory, just like REG.

	* stor-layout.c (compute_record_mode): Relax restriction
	on fields crossing word boundaries forcing BLKmode.

2003-05-04  Neil Booth  <neil@daikokuya.co.uk>

	* cppinit.c (cpp_create_reader, post_options): Warn about
	trigraphs unless explicity set or -trigraphs.
	* cpplex.c (warn_in_comment): New.
	(_cpp_process_line_notes): Better handling of -Wtrigraphs.
	(_cpp_skip_block_comment): Add call to _cpp_process_line_notes.
	* doc/cppopts.texi, doc/cpp.texi: Update.

2003-05-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (LIBGCOV): Add _gcov_merge_add.
	* gcov-io.h: Make GCOV_LINKAGE extern in libgcov and prevent resulting
	namespace clash.
	(GCOV_MERGE_FUNCTIONS): New.
	(gcov_merge_fn): Declare.
	(struct gcov_ctr_info): New field "merge".
	(__gcov_merge_add): Declare.
	* coverage.c (ctr_merge_functions): New.
	(build_ctr_info_type, build_ctr_info_value): Initialize merge field
	of gcov_ctr_info type.
	* libgcov.c (__gcov_merge_add): New.
	(gcov_exit): Call a hook to merge values of counters.

2003-05-04  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* toplev.h (pedwarn_with_file_and_line): Don't declare.
	* diagnostic.c (pedwarn_with_file_and_line): Remove.

2003-05-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* varasm.c (assemble_variable): Don't use error_with_file_and_line.

2003-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_constant_p, expand_builtin_strlen,
	expand_builtin_frame_address): Update prototypes.
	(expand_builtin_constant_p, expand_builtin_strlen,
	expand_builtin_strcpy, expand_builtin_memset,
	expand_builtin_bzero, expand_builtin_args_info,
	expand_builtin_frame_address): Pass in just the argument(s)
	needed, not the entire expression `exp'.
	(expand_builtin): Update all calls to these functions.

2003-05-03  Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin) <BUILT_IN_DWARF_FP_REGNUM>: Remove.
	<BUILT_IN_DWARF_SP_COLUMN>: New.
	* builtins.def (BUILT_IN_DWARF_FP_REGNUM): Remove.
	(BUILT_IN_DWARF_SP_COLUMN): New.
	* dwarf2out.c (expand_builtin_dwarf_fp_regnum): Remove.
	(expand_builtin_dwarf_sp_column): New.
	* except.h: Update to match.
	* unwind-dw2.c (execute_stack_op): Correct stack push typo.
	(execute_cfa_program): Record location expression address
	before extracting length.
	(uw_update_context_1): Install old CFA into stack pointer column.
	(uw_init_context_1): Set cfa_reg to stack pointer column.

2003-05-03  Richard Henderson  <rth@redhat.com>

	* config/rs6000/rs6000.c (constant_pool_expr_p): Make static and
	return bool.
	(toc_relative_expr_p): Likewise.
	(SPE_CONST_OFFSET_OK): Move from rs6000.h.
	(legitimate_constant_pool_address_p): Move from rs6000.h, change
	into a function, downcase all users.
	(legitimate_small_data_p): Likewise.
	(legitimate_offset_address_p): Likewise.
	(legitimate_indexed_address_p): Likewise.
	(legitimate_indirect_address_p): Likewise.
	(legitimate_lo_sum_address_p): Likewise.
	(rs6000_mode_dependent_address): Likewise.
	* rs6000.h (CONSTANT_POOL_EXPR_P, TOC_RELATIVE_EXPR_P): Remove.
	(SPE_CONST_OFFSET_OK, LEGITIMATE_CONSTANT_POOL_ADDRESS_P,
	LEGITIMATE_SMALL_DATA_P, LEGITIMATE_OFFSET_ADDRESS_P,
	LEGITIMATE_INDEXED_ADDRESS_P, LEGITIMATE_INDIRECT_ADDRESS_P,
	LEGITIMATE_LO_SUM_ADDRESS_P): Move into rs6000.c.
	(LEGITIMATE_ADDRESS_INTEGER_P): Remove.
	(GO_IF_MODE_DEPENDENT_ADDRESS): Use rs6000_mode_dependent_address.
	* config/rs6000/rs6000-protos.h: Update.

2003-05-03  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.h (REVERSIBLE_CC_MODE): Define.
	(REVERSE_CONDITION): Define.

	* config/rs6000/rs6000.c (scc_comparison_operator): Make equivalent
	to branch_positive_comparison_operator.
	(ccr_bit): Check that sCOND conditions are actually a positive bit.
	(print_operand): Remove %D substitution.
	(rs6000_emit_sCOND): Generate complement operation to ensure that
	sCOND input is a positive bit.
	* config/rs6000/rs6000.md: Rearrange sCOND templates to be in the
	same order as bCOND, and add the missing ones.  Remove the %D
	substitutions from the scc patterns.

	* simplify-rtx.c (simplify_relational_operation): Add case for
	! (fabs(x) < 0.0).

2003-05-03  Bruce Korb  <bkorb@gnu.org>

	* gcc/fixinc/fixincl.tpl(dne): restore this to force merge conflicts
	in fixincl.x
	* gcc/fixinc/inclhack.def(bsd_stdio_attrs_conflict): fix placement

2003-05-03  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Remove unecessary casts.  Misc cleanups.

2003-05-03  Zack Weinberg  <zack@codesourcery.com>

	PR c/10604
	* c-common.c (warn_sign_compare): Initialize to -1.
	* c-opts.c (c_common_init_options): Don't set warn_sign_compare here.
	(c_common_decode_option <OPT_Wall>): Set warn_sign_compare
	for C++ only.
	(c_common_post_options): Set warn_sign_compare from extra_warnings
	if it's still -1 at this point.

	* toplev.c (maybe_warn_unused_parameter): New static variable.
	(set_Wextra): New static function.
	(W_options): Remove "extra".
	(decode_W_option): Call set_Wextra.
	(independent_decode_option): Likewise.
	(set_Wunused): Cooperate with set_Wextra in setting
	warn_unused_parameter.
	(rest_of_compilation): No need to check extra_warnings as
	well as warn_uninitialized.

	* c-typeck.c (build_binary_op, build_conditional_expr):
	No need to check extra_warnings as well as warn_sign_compare.
	(internal_build_compound_expr): No need to check extra_warnings
	as well as warn_unused_value.
	* function.c (expand_function_end): No need to check extra_warnings
	as well as warn_unused_parameter.
	* stmt.c (expand_expr_stmt_value): No need to check extra_warnings
	as well as warn_unused_value.

	* doc/invoke.texi: Clarify documentation of -Wsign-compare.

	* Makefile.in: Disable -Werror for gengtype-lex.o.

2003-05-03  Olivier Hainque  <hainque@act-europe.fr>

	* emit-rtl.c (last_call_insn, add_function_usage_to): New functions.
	* rtl.h (last_call_insn, add_function_usage_to): New prototypes.
	* builtins.c (expand_builtin_apply): Use the new emit-rtl functions.
	* calls.c (emit_call_1): Likewise.
	(expand_call): For calls initializing constant memory, replace
	emission of standalone mem /u clobber with function usage entry.
	* expr.c (emit_block_move_via_libcall): Likewise.
	* cse.c (count_reg_usage, case EXPR_LIST): New case.
	* flow.c (propagate_one_insn): Pass entire operand of
	CALL_INSN_FUNCTION_USAGE to mark_used_regs.
	* integrate.c (try_constants): For CALL_INSNs, substitute constants
	within the FUNCTION_USAGE also.
	* loop.c (prescan_loop): Note clobbers of const mem mentioned in
	FUNCTION_USAGE lists.
	* reload1.c (replace_pseudos_in): Renamed.
	(reload): Use it for clobbers surviving until the end of the reload.

2003-05-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case VIEW_CONVERT_EXPR): Don't use
	gen_lowpart on non-integer modes.

	* stor-layout.c (place_field): When adjusting offset_align, use
	desired_align, not DECL_ALIGN.

2003-05-03  Nathan Sidwell  <nathan@codesourcery.com>

	* c-decl.c (pending_invalid_xref_file): Remove.
	(pending_invalid_xref_line): Remove.
	(pending_invalid_xref_location): New.
	(lookup_label): Use location_t and input_location directly.
	(lookup_tag): Likewise.
	(pending_xref_error): Likewise.
	(c_expand_body_1): Likewise.
	* c-common.c (x_expand_start_cond): Likewise.
	* c-semantics.c (genrtl_for_stmt): Likewise.
	(find_reachable_label): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (output_inline_function): Likewise.
	* tree-inline.c (find_alloca_call): Likewise.
	(find_builtin_longjmp_call): Likewise.
	* gcc.c (input_filename): Make static.

2003-05-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Fix comment typo.

	* config/mips/mips.c (mips_integer_op): New structure.
	(MIPS_MAX_INTEGER_OPS): Define.
	(mips_const_insns): Use mips_build_integer to determine the number
	of instructions needed to load a CONST_INT.
	(move_operand): Reject compound CONST_INTs.
	(mips_build_shift, mips_build_lower, mips_build_integer): New fns.
	(mips_move_integer): New fn.
	(mips_legitimize_const_move): Pass CONST_INTs to mips_move_integer.
	(mips_legitimize_move): Only legitimize constants when moving
	word or subword values.

2003-05-02  Matt Kraai  <kraai@alumni.cmu.edu>

	* Makefile.in (gcov-iov.h): Use move-if-change and a stamp.

2003-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_stpcpy): Copy `arglist' before
	modifying it.

2003-05-03  Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add Zdenek Dvorak, Aldy
	Hernandez, and Kazu Hirata.  Update Richard Henderson.

2003-05-02  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_attribute_table): Add 'extern'
	to tentative declaration.

	* config/rs6000/sysv4.h (SYMBOL_FLAG_SMALL_V4): Delete.
	(SYMBOL_FLAG_SMALL_V4): Delete.
	* config/rs6000/rs6000.c (small_data_operand): Use SYMBOL_REF_SMALL_P.
	(rs6000_elf_encode_section_info): Don't set SYMBOL_FLAG_SMALL_V4.
	(rs6000_elf_in_small_data_p): Add extra section names.  Add
	comment about TREE_PUBLIC test.

	* c-semantics.c (genrtl_switch_stmt, genrtl_if_stmt): Call
	expand_stmt on result of expand_unreachable_stmt.

2003-05-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add Daniel Berlin.

2003-05-02  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/{603.md,6xx.md,7450.md,7xx.md,rs64.md}: Decrease
	number of automata.

	* config/rs6000/rs6000.c (symbol_ref_operand): Check
	SYMBOL_REF_FUNCTION_P on AIX.
	(current_file_function_operand): Same.
	* config/rs6000/rs6000.md (call,call_value): Force non-function
	symbol_ref into register on AIX.

2003-05-02  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (struct arg_data): Move offset, slot_offset, size and
	alignment_pad to struct locate_and_pad_arg_data.  Update all refs.
	(initialize_argument_information): Adjust call to locate_and_pad_parm.
	Delete alignment_pad var.  Don't calculate slot_offset here.
	(emit_library_call_value_1): Delete alignment_pad, offset and size
	vars.  Use struct locate_and_pad_arg_data instead.  Adjust refs.
	Adjust call to locate_and_pad_parm.  Don't tweak arg size for
	partial in-regs here.  Formatting fixes.
	* expr.h (struct locate_and_pad_arg_data): New struct.
	(locate_and_pad_parm): Adjust declaration.
	* function.c (assign_parms): Localize vars.  Use "locate" instead of
	other arg location vars.  Don't invoke FUNCTION_ARG or
	FUNCTION_INCOMING_ARG unless pretend_named is different from
	named_arg.  Heed MUST_PASS_IN_STACK and set up "partial" before
	calling locate_and_pad_parm.  Adjust locate_and_pad_parm call.
	Use slot_offset for stack home of reg parms.  Correct test for
	parm passed in memory.  Formatting fixes.
	(locate_and_pad_parm): Add "partial" to params.  Replace offset_ptr
	arg_size_ptr and alignment pad with "locate".  Set slot_offset here.
	Correct initial_offset_ptr handling.  Localize vars.  Always pad
	locate->offset even when in_regs.

2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (TREE_H): Replace location.h with input.h.
	(GTFILES) Remove location.h
	(gt-lists.h): Replace gt-location.h with gt-input.h
	* input.h (input_filename, input_line): Remove variables.
	(location_s, location_t): Move from location.h.
	(input_location): New.
	(input_filename, input_line): New #defines.
	* location.h: Remove.
	* tree.h: Replace location.h with input.h.
	(input_filename, input_line): Remove.
	* diagnostic.h: Replace location.h with input.h.
	* gcc.h (input_filename, input_filename_length): Remove declarations.
	* toplev.c (input_filename, input_line): Remove.
	(input_location): Define.
	(push_srcloc, pop_srcloc): Adjust.
	* diagnostic.c (diagnostic_report_current_module): Adjust.

2003-05-02  Nick Clifton  <nickc@redhat.com>

	* configure.in: Add xstormy16 to list of targets that has a nop
	instruction and hence which can be tested to see if the
	assembler supports the --gdwarf2 switch.
	* configure: Regenerate.

2003-05-01  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR target/8257
	* config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
	alpha_start_function, alpha_expand_epilogue, unicosmk_gen_dsib):
	Avoid undefined shifts by making the shift operand unsigned.

2003-05-01  DJ Delorie  <dj@redhat.com>

	* reload.c (find_reloads): Also check that all of a multi-reg
	value is in the class.

2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>

	* scan.h (lineno): Revert the rename here.

2003-05-01  Stan Shebs  <shebs@apple.com>

	* config/darwin.c (darwin_encode_section_info): Call
	default_encode_section_info.

2003-05-01  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (define_attr "type"): Add mfjmpr.
	(movsi_internal1): Use new mfjmpr attribute.
	(movhi_internal): Same.
	(movqi_internal): Same.
	(movcc_internal1): Same.
	(movdi_internal64): Same.
	* config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
	power4.md,rios1.md,rios2.md,rs64.md}: Add mfjmpr.
	* config/rs6000/40x.md: Add fpu_405.
	* config/rs6000/power4.md: Merge power4lsu and power4disp automata
	into power4misc automata.  Remove extraneous parentheses.
	* config/rs6000/440.md: New file.
	* config/rs6000/rs6000.c (processor_target_table): Add 440,
	440fp.  Rename 405f to 405fp.
	(function_arg_padding): Correct formatting.
	(rs6000_rtx_costs): Add PROCESSOR_PPC440 cases.

2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>

	* input.h (lineno): Rename to ...
	(input_line): ... here.
	* tree.h (lineno): Rename to ...
	(input_line): ... here.
	* scan.h (lineno): Rename to ...
	(input_line): ... here.
	* toplev.c (lineno): Rename to ...
	(input_line): ... here.
	(push_srcloc, pop_srcloc):  Rename lineno to input_line.
	* c-common.c (c_expand_start_cond, fname_decl): Likewise.
	* c-decl.c (poplevel, pop_label_level, lookup_label, lookup_tag,
	store_parm_decls, c_expand_body_1): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-lex.c (fe_file_change, cb_def_pragma, c_lex): Likewise.
	* c-opts.c (c_common_post_options, c_common_parse_file): Likewise.
	* c-parse.in (save_filename, maybe_type_qual, ifc): Likwise.
	* c-semantics.c (finish_stmt_tree, build_stmt, emit_local_var,
	gentrtl_goto_stmt, genrtl_expr_stmt_value, genrtl_decl_stmt,
	genrtl_if_stmt, genrtl_while_stmt, genrtl_do_stmt,
	genrtl_return_stmt, genrtl_for_stmt, build_break_stmt,
	build_continue_stmt, genrtl_switch_stmt, genrtl_asm_stmt,
	prep_stmt, find_reachable_label, expand_unreachable_stmt): Likewise.
	* coverage.c (create_coverage): Likewise.
	* diagnostic.c (pedwarn, sorry, error, fatal_error,
	internal_error, warning, diagnostic_report_current_module,
	inform): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function,
	output_inline_function): Likewise.
	* rtl-error.c (file_and_line_for_asm): Likewise.
	* tree-inline.c (find_alloca_call, find_builtin_longjmp_call,
	walk_tree): Likewise.
	* tree.c (make_node): Likewise.
	* ada, cp, f, java, objc, treelang: Likewise.
	* objc/objc-act.c (objc_init): Rename lineno to input_line.
	(build_module_descriptor, build_selector_translation_table,
	build_protocol_template, build_method_prototype_list_template,
	build_category_template, build_selector_table,
	build_class_template, build_super_template, build_ivar_template,
	build_ivar_list_template, build_method_list_template,
	build_method_template, add_instance_variable): Likewise.

	* dwarf2out.c (dwarf2out_init, dwarf2out_finish): Change parameter
	name from input_filename.

2003-04-30  Eric Christopher  <echristo@redhat.com>
	    Richard Sandiford <rsandifo@redhat.com>

	* configure: Regenerate from patches below.
	* combine.c (gen_lowpart_for_combine): Fix comment and add tests
	for all symbolic operands.
	* config/mips/mips.c: Migrate RTX_COSTS and CONST_COSTS
	to function.
	* config/mips/linux.h: Fix typo.
	* Merge from mips-3_4-rewrite branch:

	2003-04-07  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (mips_classify_symbol): Add catch-all case for
		handling local labels when TARGET_ABICALLS.

	2003-04-04  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips_expand_epilogue): Add an
		integer argument.
		(mips_expand_call): Likewise.
		* config/mips/mips.h (TARGET_SIBCALLS): New macro.
		(FIXED_REGISTERS): Clear $31 entry.
		(CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTER): Likewise.
		(EPILOGUE_USES): Define.
		* config/mips/mips.c (mips_function_ok_for_sibcall): New function.
		(TARGET_FUNCTION_OK_FOR_SIBCALL): Use it.
		(override_options): Add a 'j' register class.
		(mips_expand_call): Handle sibcalls
		(mips_expand_epilogue): Handle epilogues for sibcalls.
		* config/mips/mips.md (epilogue): Adjust call to mips_expand_epilogue.
		(sibcall_epilogue): New pattern.
		(call, call_value): Adjust calls to mips_expand_call.
		(sibcall, sibcall_value): New expanders.
		(sibcall_internal, sibcall_value_internal): New patterns.
		(sibcall_value_multiple_internal): New pattern.

	2003-03-25  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.md (extended_mips16): New attribute.
		(define_attr length): Default to 8 if extended_mips16 == yes.
		(truncdisi2): Set extended_mips16 to yes for the sll alternative.
		(truncdihi2, truncdiqi2, *extendsidi2): Likewise.
		(call_internal): Set extended_mips16 to yes for direct jumps.
		Remove redundant mode attribute.
		(call_value_internal, call_value_multiple_internal): Likewise.
		(call_split): Remove redundant mode attribute.
		(call_value_split, call_value_multiple_split): Likewise.

		* config/mips/mips.c (mips_symbol_insns): Rework.  Fix handling
		of unaligned offsets.

		* config/mips/mips.c (mips_splittable_symbol_p): Fix handling
		of SYMBOL_GENERAL.

	2003-03-22  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (TARGET_EXPLICIT_RELOCS): Add commentary.
		* config/mips/mips.c (override_options): Disable -mexplicit-relocs
		for mips16 code.

	2003-03-22  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (ADDRESS_COST): Define.

	2003-03-20  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (EXTRA_CONSTRAINT): Give existing meaning of
		'R' to 'U'.  Make 'R' mean a single-instruction memory reference.
		* config/mips/mips.md: Replace 'R' constraints with 'U'.

	2003-03-18  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.md (truncdisi2): Add commentary.  Use sll instead
		of a two-instruction sequence.  Add register->memory alternative.
		(truncdihi2, truncdiqi2): Likewise.
		Rework shift/truncate instructions so that they only handle right
		shifts of 32 (or more, in the case of arithmetic shifts).
		Add patterns for truncate/sign-extend.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* configure.in (mips*-*-*): Check for explicit relocation support.
		* configure: Regenerate.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (TARGET_SWITCHES): Add -mexplicit-relocs
		and -mno-explicit-relocs.
		(MASK_EXPLICIT_RELOCS): Define.
		(TARGET_EXPLICIT_RELOCS): Use it.
		(mips_split_addresses): Remove declaration.
		* config/mips/mips.c (override_options): Update comment for
		mips_split_addresses.  Clear MASK_EXPLICIT_RELOCS for non-PIC n64.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* combine.c (gen_lowpart_for_combine): Treat the lowpart Pmode of
		a CONST as identity.  Check the return value of gen_lowpart_common.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (mips_legitimize_symbol): Handle small data
		references for TARGET_EXPLICIT_RELOCS.
		(mips_reloc_string): Return "%gp_rel(" for RELOC_GPREL16 if
		!TARGET_MIPS16.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.md: Replace 'IQ' mips16 constraints with just 'Q'.
		(addsi3): Remove redundant constraints.
		(addsi3_internal): Use separate register & constant alternatives.
		Use a 'Q' constraint and "addiu" insn for the latter.
		(adddi3_internal_3, addsi3_internal_2): Likewise.

	2003-03-13  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips_expand_unaligned_load): Declare.
		(mips_expand_unaligned_store): Declare.
		* config/mips/mips.c (mips_get_unaligned_mem): New fn.
		(mips_expand_unaligned_load, mips_expand_unaligned_store): New fns.
		* config/mips/mips.md (UNSPEC_ULW, UNSPEC_USW): Remove.
		(UNSPEC_ULD, UNSPEC_USD): Remove.
		(UNSPEC_LWL, UNSPEC_LWR, UNSPEC_SWL, UNSPEC_SWR): New.
		(UNSPEC_LDL, UNSPEC_LDR, UNSPEC_SDL, UNSPEC_SDR): New.
		(extv, extzv): Use mips_expand_unaligned_load.
		(insv): Use mips_expand_unaligned_store.  Use a reg_or_0_operand
		predicate for operand 3.
		(movsi_ulw, movsi_usw): Replace with...
		(mov_lwl, mov_lwr, mov_swl, move_swr): ...these new insns.
		(movdi_uld, movdi_usd): Likewise replace with...
		(mov_ldl, mov_ldr, mov_sdl, move_sdr): ...these insns.

	2003-02-26  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips_global_pic_constant_p): Declare.
		* config/mips/mips.h (LEA_REGS): New register class.
		(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
		(GR_REG_CLASS_P): Include LEA_REGS.
		(DANGEROUS_FOR_LA25_P): New macro.
		(EXTRA_CONSTRAINT): Add !DANGEROUS_FOR_LA25_P to R's condition.
		Add a T constraint for the DANGEROUS_FOR_LA25_P case.
		* config/mips/mips.c (mips_regno_to_class): Change GR_REGS
		entries to LEA_REGS.
		(mips_global_pic_constant_p): New function.
		(override_options): Add 'e' register constraint.
		(mips_secondary_reload_class): Return LEA_REGS when reloading
		a dangerous constant into a class containing $25.
		* config/mips/mips.md (movdi_internal2): Add an e <- T alternative.
		(movsi_internal): Likewise.

	2003-02-23  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (TARGET_SPLIT_CALLS): New macro.
		* config/mips/mips.md (call_split): New insn.
		(call_value_split, call_value_multiple_split): New insns.
		(call_internal): Turn into a define_insn_and_split.  Split the
		instruction into a call and $gp load if TARGET_SPLIT_CALLS.
		(call_value_internal, call_value_multiple_internal): Likewise.

	2003-02-23  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (mips_reloc_string): Return "%got(" for
		RELOC_GOT_PAGE and RELOC_GOT_DISP if !TARGET_NEWABI.
		(mips_encode_section_info): Don't take symbol visibility into
		account if TARGET_ABICALLS.  Add more commentary.
		* config/mips/mips.md: Add commentary above reloc constants.

	2003-02-12  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (mips_legitimize_const_move): New, extracted
		from mips_legitimize_move.  Legitimize constant pool references.
		(mips_legitimize_move): Call mips_legitimize_const_move.  Attach
		a REG_EQUAL note to the last instruction.

	2003-02-11  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips_simplify_dwarf_addr): Declare.
		* config/mips/mips.h (TARGET_EXPLICIT_RELOCS, TARGET_NEWABI): New.
		(ASM_SIMPLIFY_DWARF_ADDR): Define to mips_simplify_dwarf_addr.
		(EXTRA_CONSTRAINT): Allow symbolic call addresses for TARGET_ABICALLS.
		* config/mips/mips.md (UNSPEC_HIGH): New constant.
		(UNSPEC_RELOC_GPREL16): Rename to...
		(RELOC_GPREL16): ...this.
		(RELOC_GOT_HI, RELOC_GOT_LO, RELOC_GOT_PAGE, RELOC_GOT_DISP): New.
		(RELOC_CALL16, RELOC_CALL_HI, RELOC_CALL_LO): New.
		(macro_calls): New attribute.
		(length): Use it to set the default length of calls.  Don't allow
		calls to have delay slots if macro_calls is "yes".
		(luisi, luidi): New patterns.
		(lowsi, lowdi): Use '%R' to print the relocation.
		(lowdi_extend): Remove.
		(loadgp): Remove mode from operand 0.  Use '%0' instead of '%a0'.
		(call_internal): Merge alternatives.  Always use "jal".
		(call_value_internal, call_value_multiple_internal): Likewise.
		(reloc_gprel16): Remove.
		* config/mips/mips.c (mips_got_alias_set): New variable.
		(mips_classify_constant): Handle the new relocation constants.
		(mips_classify_symbol): Reverse the sense of SYMBOL_REF_FLAG for PIC.
		(mips_symbolic_address_p): Return false if generating explicit relocs.
		Otherwise allow local PIC symbols to have an offset.
		(mips_splittable_symbol_p): New function.
		(mips_classify_address): Use it to check whether a LO_SUM is valid.
		(mips_const_insns): Always accept HIGH.
		(call_insn_operand): Don't accept global symbols if using explicit
		relocs.
		(move_operand): Don't accept HIGH when generating PIC.
		(mips_reloc, mips_lui_reloc): New functions.
		(mips_force_temporary): Remove MODE argument.  Expect VALUE to
		be a valid right-hand-side for a SET pattern.
		(mips_load_got, mips_load_got16, mips_load_got32): New functions.
		(mips_emit_high): New function.
		(mips_legitimize_symbol): Use mips_reloc for the mips16 gp-relative
		case.  Use mips_splittable_symbol_p to check whether a LO_SUM
		address should be used.  Use mips_emit_high to generate the
		high part of such an address.  Adjust the global symbol + offset
		case to match the change to mips_force_temprorary.
		(mips_legitimize_move): Shuffle call to mips_legitimize_symbol.
		If generating explicit-reloc PIC, load the address of global
		symbols from the GOT.  Use mips_emit_high to emit the high part
		of an address.
		(mips_simplify_dwarf_addr): New function.
		(mips_move_1word): Use lwc1 instead of l.s and swc1 instead of s.s.
		(mips_move_2words): Likewise ldc1/l.d and sdc1/s.d if TARGET_64BIT.
		(mips_expand_call): Load the addresses of global functions using
		%call* relocs if generating explicit-reloc PIC.  Don't generate
		an exception_receiver pattern.
		(override_options): Initialize mips_got_alias_set.
		(print_relocation): Remove in favor of...
		(mips_reloc_string): ...this new function.
		(print_operand): Handle '%R'.  Use mips_reloc_string.
		(print_operand_address): Use print_operand to print the symbolic
		part of a LO_SUM address.
		(mips_output_function_prologue): Use .cprestore, reverting last patch.
		(mips_encode_section_info): Factor out DECL_RTL accesses.  Reverse
		sense of SYMBOL_REF_FLAG for PIC, using binds_local_p to check
		for local symbols.

	2003-02-02  Eric Christopher  <echristo@redhat.com>

		* config/mips/mips.c (mips_sign_extend): Remove.
		* config/mips/mips-protos.h: Ditto.
		* config/mips/mips.md (movdi_internal2_extend): Remove.
		(extendsidi2): Fix mode of convert_memory_address.

	2003-01-24  Eric Christopher  <echristo@redhat.com>

		* config/mips/mips.md: Rewrite zero_extend* and extend*
		patterns. Use explicit instructions and split after reload
		for register extensions.
		(ashlsi3_internal1_extend): New combiner pattern for
		shift and extend combinations.
		* config/mips/mips.h: Change Pmode back to ptr_mode
		for performance enhancement.
		* combine.c (expand_compound_operation): Make sure
		that zero_extend operation is profitable.

	2003-01-14  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (TRAMPOLINE_TEMPLATE): Make size of stored
		addresses depend on ptr_mode rather than Pmode.
		(TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Update acoordingly.
		(INITIALIZE_TRAMPOLINE): Rework to handle Pmode != ptr_mode.
		(CASE_VECTOR_MODE): Use ptr_mode for !TARGET_MIPS16.
		(ASM_OUTPUT_ADDR_VEC_ELT): Update accordingly.
		* config/mips/mips.md (tablejump): Likewise.  Remove Pmode
		condition for selecting cpaddsi or cpadddi: use cpadd instead.
		(tablejump_internal1): Remove condition.
		(tablejump_internal2): Change condition to TARGET_64BIT.
		(cpaddsi): Rename to...
		(cpadd): ...this.
		(cpadddi): Remove.

	2003-01-09  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips16_constant_after_function_p,
		mips_address_cost, mips_check_split, double_memory_operand,
		mips16_gp_offset, mips16_gp_offset_p, mips16_constant,
		pic_address_needs_scratch, symbolic_operand): Remove declarations.
		(mips_legitimate_address_p): Return bool.
		(mips_address_insns, mips_fetch_insns, mips_const_insns,
		mips_legitimize_address, mips_legitimize_move,
		mips_expand_call): Declare.
		(mips_return_addr): Move outside #ifdef RTX_CODE.

		* config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): New macro.
		(PIC_FN_ADDR_REG): New reg_class.
		(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add corresponding entries.
		(GR_REG_CLASS_P): True for PIC_FN_ADDR_REG.
		(SMALL_OPERAND, SMALL_OPERAND_UNSIGNED, LUI_OPERAND,
		CONST_HIGH_PART, CONST_LOW_PART, LUI_INT): New macros.
		(SMALL_INT, SMALL_INT_UNSIGNED, CONST_OK_FOR_LETTER_P): Use new macros.
		(EXTRA_CONSTRAINTS): Give new meanings to Q, R and S.
		(CONSTANT_ADDRESS_P): Use mips_legitimate_address_p.
		(LEGITIMATE_PIC_OPERAND): Undefine.
		(LEGITIMATE_CONSTANT_P): Use mips_const_insns.
		(LEGITIMIZE_ADDRESS): Use mips_legitimize_address.
		(CONSTANT_AFTER_FUNCTION_P): Remove definition in #if 0 block.
		(FUNCTION_MODE): Change to SImode.
		(CONST_COSTS): Use mips_const_insns to calculate the cost of
		most constants.  Treat const_artih_operands specially if they
		occur in a PLUS or MINUS.
		(CONSTANT_POOL_COST): New macro.
		(RTX_COSTS): Use mips_address_insns for MEMs, with a base cost of 2.
		Add LO_SUM handling.
		(ADDRESS_COST): Undefine.
		(PREDICATE_CODES): Add symbolic_operand and const_arith_operand.
		Add CONST to the list of codes for arith_operand.  Add LABEL_REF
		to call_insn_operand and remove CONST_INT.

		* config/mips/mips.c: Include integrate.h.
		(SINGLE_WORD_MODE_P): New macro.
		(mips_constant_type, mips_symbol_type, mips_address_type): New enums.
		(mips_constant_info, mips_address_info): New structs.
		(mips_regno_to_class): Map $25 to PIC_FN_ADDR_REG.
		(mips_classify_constant, mips_classify_symbol,
		mips_valid_base_register_p, mips_symbolic_address_p,
		mips_classify_address, mips_symbol_insns,
		mips16_unextended_reference_p, mips_address_insns, mips_const_insns,
		mips_fetch_insns, mips_force_temporary, mips_add_offset,
		mips_legitimize_symbol, mips_legitimize_address, mips_legitimize_move,
		mips_print_relocation): New functions.
		(const_arith_operand): New operand predicate.
		(arith_operand): Use it.
		(mips_const_double_ok, mips16_simple_memory_operand,
		simple_memory_operand, double_memory_operand, mips_check_split,
		mips_address_cost, pic_address_needs_scratch, mips16_gp_offset,
		mips16_gp_offset_p, mips16_output_gp_offset,
		mips16_constant_after_function_p, mips16_constant): Remove.
		(call_insn_operand): Be more fussy about symbolic constants.
		Use register_operand.
		(move_operand): Use mips_symbolic_address_p to check symbolic
		operands and general_operand to check the rest.
		(symbolic_operand): Use mips_classify_constant.
		(mips_legitimate_address_p): Use mips_classify_address.
		(mips_move_1word): Combine handling of symbolic addresses.
		Remove special treatment of gp-relative loads for TARGET_MIPS16.
		(move_move_2words): Likewise.  Assume addresses are offsettable
		if they need to refer to more than one word.  Add HIGH handling.
		(mips_restore_gp): Use ptr_mode for the GP save slot.
		(mips_expand_call): New function, combining the old mips.md
		call and call_internal define_expands.  If the address isn't
		a call_insn_operand, force it into a register.  For SVR4 PIC,
		emit an exception_receiver instruction after the call.
		(override_options): Only override flag_pic for TARGET_ABICALLS
		if it is currently zero.  Allow mips_split_addresses when
		Pmode == DImode too, except when ABI_HAS_64BIT_SYMBOLS.
		Add new register class letter, 'c'.
		(print_operand): Use mips_classify_constant for constant operands.
		(print_operand_address): Use mips_classify_address.
		(mips_output_function_prologue): Don't use .cprestore.
		(mips_expand_epilogue): For TARGET_MIPS16, only adjust the stack
		via the frame pointer if current_function_calls_eh_return.
		(mips_encode_section_info): For TARGET_ABICALLS, use SYMBOL_REF_FLAG
		to mark whether a symbol is local or global.
		(build_mips16_call_stub): Expect the address of the function rather
		than a MEM reference to it.  Update call generation sequences.
		(mips16_optimize_gp): Remove Pmode checks.  Temporarily disable
		small-data adjustments.

		* config/mips/mips.md: Remove 'R'/'m' memory distinction.  Use default
		length for loads and stores.
		(UNSPEC_CPADD, UNSPEC_RELOC_GPREL16): New constants.
		(define_attr type): Add const and prefetch.
		(define_attr length): Use mips_const_insns for const instructions.
		Use mips_fetch_insns for load and store instructions.
		(define_attr single_insn): New.
		(define_attr can_delay): Use it.
		(define_attr abicalls): Remove.
		(define_delay): Use can_delay.  Always allow calls to have delay slots.
		(addsi3_internal_2): Add 'Q' constraint.
		(movsi_ulw, movsi_usw, movdi_uld, movdi_usd): Set length to 8.
		(high): Remove.
		(lowsi): Renamed from low.
		(lowdi): New pattern.
		(movdi, movsi): Use mips_legitimize_move.  Remove define_split.
		(lwxc1, ldxc1, swxc1, sdxc1): Set length to 4.
		(loadgp): Change operand 0 to an immediate_operand.
		(tablejump): Use the same patterns for SVR4 PIC but emit a cpadd
		beforehand.
		(cpaddsi, cpadddi): New patterns.
		(tablejump_internal3, tablejump_internal4): Remove define_expands
		and associated define_splits.
		(call, call_value): Use mips_expand_call.
		(call_internal): New, replacing all existing call_internal* insns.
		(call_value_internal): Likewise call_value_internal*.
		(call_value_multiple_internal): Likewise call_value_multiple_internal*.
		(untyped_call): Remove if (operands[0]) magic.
		(prefetch_si_address, prefetch_si): Change type to "prefetch".
		(prefetch_di_address, prefetch_di): Likewise.
		(leasi, leadi): Remove.
		(reloc_gprel16): New.

		* config/mips/5400.md (ir_vr54_hilo): Include const type.
		* config/mips/5500.md (ir_vr55_hilo): Likewise.
		* config/mips/sr71k.md (ir_sr70_hilo): Likewise.

	2003-01-08  Eric Christopher  <echristo@redhat.com>

		* config.gcc (mipsisa32*): Change ABI_MEABI to ABI_EABI.
		* config/mips/elf.h (STARTFILE_SPEC): Remove ABI_MEABI references and
		configure check for libgloss.
		* config/mips/elf64.h: Ditto.
		* config/mips/mips.c: Remove ABI_MEABI.
		* config/mips/mips.h: Ditto.

	2002-11-05  Richard Sandiford  <rsandifo@redhat.com>

		Fix merge fallout.
		* config/mips/mips.md (mul_acc_si): Reapply 2002-10-16 change.
		(muldi3_internal): Remove outdated comment.
		(*muls_di, *umuls_di): Fix comment and 64-bitness.
		(*smsac_di, *umsac_di): Likewise.  Reformat.
		(umulsi3_highpart): Minor formatting tweaks.
		(umulsi3_highpart_internal): Use only if !ISA_HAS_MULHI.  Remove
		redundant scratch operand.  Minor formatting tweak.
		(umulsi3_highpart_mulhi_internal): Use for !TARGET_64BIT as well.
		(umulsi3_highpart_neg_mulhi_internal): Likewise.  Fix asm template.
		(smulsi3_highpart): As for the unsigned version.
		(smulsi3_highpart_internal): Likewise.
		(smulsi3_highpart_mulhi_internal): Likewise.
		(smulsi3_highpart_neg_mulhi_internal): Likewise.
		(smuldi3_highpart, umuldi3_highpart): Minor formatting tweaks.
		(*smul_acc_di): Remove duplicated pattern.
		(*umul_acc_di, *smul_acc_di): Reapply 2002-10-16 change.
		(anddi3) [unnamed mips16 pattern]: Remove reintroduced length.
		(zero_extendsidi2_internal2): Remove new, but commented-out pattern.

	2002-10-22  Eric Christopher  <echristo@redhat.com>

		* config/mips/mips-protos.h (mips_return_addr): New.
		* config/mips/mips.c (mips_return_addr): New.
		(movdi_operand): Remove.
		(se_register_operand): Ditto.
		(se_reg_or_0_operand): Ditto.
		(se_uns_arith_operand): Ditto.
		(se_arith_operand): Ditto.
		(se_nonmemory_operand): Ditto.
		(extend_operator): Ditto.
		(highpart_shift_operator): Ditto.
		(mips_initial_elimination_offset): Remove return address pointer
		elimination.
		(mips_reg_names): Remove $ra.
		(mips_regno_to_class): Ditto.
		* config/mips/mips.h (POINTER_SIZE): Define based on TARGET_LONG64
		and TARGET_64BIT.
		(POINTER_BOUNDARY): Remove.
		(POINTERS_EXTEND_UNSIGNED): Define to 0.
		(PROMOTE_MODE): Promote to Pmode.
		(SHORT_IMMEDIATES_SIGN_EXTEND): Define.
		(Pmode): Define to TARGET_64BIT.
		(FUNCTION_MODE): Define as Pmode.
		(mips_args): Remove deleted functions.
		(SIZE_TYPE): Depend on POINTER_SIZE.
		(PTRDIFF_TYPE): Ditto.
		(FIXED_REGISTERS): Fix extra registers.
		(CALL_USED_REGISTERS): Ditto.
		(CALL_REALLY_USED_REGISTERS): Ditto.
		(RAP_REG_NUM): Remove.
		(RETURN_ADDRESS_POINTER_REGNUM): Ditto.
		(RETURN_ADDR_RTX): Define to mips_return_addr.
		(ELIMINABLE_REGS): Remove RETURN_ADDRESS_POINTER_REGNUM.
		(CAN_ELIMINATE): Ditto.
		* config/mips/mips.md: For DImode patterns, take into account
		deletions above. Split mulsidi patterns into sign_extend and
		zero_extend.

	2002-10-16  Richard Sandiford  <rsandifo@redhat.com>
		    Michael Meissner  <meissner@redhat.com>

		* config/mips/mips.h (ISA_HAS_MACC): True for normal-mode vr4120 code.
		* config/mips/mips.md (mulsi3_mult3): Add a define_peephole2 to
		mop up unnecessarly moves through LO.
		(*mul_acc_si): Remove vr5400 and vr5500 handling from here.
		(*macc): New pattern for ISA_HAS_MACC.  Add define_peephole2s to
		change mtlo/macc sequences into mul/add sequences when a three-
		address mul is available.
		(*macc2): New pattern.  Add a define_peephole2 to generate it.
		(*mul_sub_si): Fix contraint for operand 5.
		(*muls): Use in 32-bit code as well.
		(*msac): Likewise.  Use msub instead of msac in vr5500 code
		if the destination is LO.  Remove duplicate define_split.
		(*muls_di): Use only in 32-bit code.  Adjust rtl accordingly.
		(*msac_di): Likewise.  Fix formatting.
		(smulsi3_highpart, umulsi3_highpart): Use mulhi in 32-bit code too.
		(*xmulsi3_highpart_internal): Use only if !ISA_HAS_MULHI.
		(*xmulsi3_highpart_mulhi): Use even if !TARGET_64BIT.
		(*xmulsi3_neg_highpart_mulhi): Likewise.
		(*mul_acc_64bit_di): Remove.
		(*mul_acc_di): Use only in 32-bit code.  Handle ISA_HAS_MACC as well.

	2002-10-14  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/vr.h (DRIVER_SELF_SPECS): Define.
		* config/mips/t-vr (MULTILIB_OPTIONS): Remove mlong32.
		(MULTILIB_DIRNAMES): Remove long32.
		(MULTILIB_EXCEPTIONS): Don't build -mabi=32 -mgp32 multilibs.
		(MULTILIB_REDUNDANT_DIRS): Remove.

	2002-10-14  Richard Sandiford  <rsandifo@redhat.com>

		* doc/tm.texi (DRIVER_SELF_SPECS): Document.
		* gcc.c (driver_self_specs): New variable.
		(do_self_spec): New function.
		(main): Use it to process driver_self_specs.

	2002-10-09  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.md (one_cmpldi2): Use only if TARGET_64BIT.
		Remove DImode define_split for !TARGET_64BIT.
		(anddi3): Remove !TARGET_64BIT support from here as well.
		Change operand 2's predicate to se_uns_arith_operand.
		Add constant alternatives to define_insn.
		(iordi3, xordi3, *nordi3): Likewise.
		(anddi3_internal1, xordi3_immed): Remove.

	2002-10-01  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.h (PROCESSOR_R4121): Rename to PROCESSOR_R4120.
		(TARGET_MIPS4121): Rename to TARGET_MIPS4120.
		* config/mips/mips.c (mips_cpu_info): Rename vr4121 to vr4120.
		* config/mips/mips.md: Apply same renaming here.

	2002-10-01  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (PROCESSOR_R4320, TARGET_MIPS4320): Remove.
		(GENERATE_MULT3_SI): Remove use of TARGET_MIPS4320.
		* config/mips/mips.c (mips_cpu_info): Remove vr4320 entry.
		* config/mips/mips.md (define_attr cpu): Remove r4320.
		Remove vr4320 scheduler and uses of TARGET_MIPS4320.

	2002-10-01  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.c (mips16_strings): New variable.
		(mips_output_function_epilogue): Clear the SYMBOL_REF_FLAG of every
		symbol in mips16_strings.  Free the list.
		(mips_encode_section_info): Keep track of local strings.

	2002-10-01  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips.md (bunge, bltgt, bungt): New define_expands.
		(sordered_df, sordered_sf): Remove.
		* config/mips/mips.c (get_float_compare_codes): New fn.
		(gen_int_relational, gen_conditional_move): Use it.

	2002-10-01  Richard Sandiford  <rsandifo@redhat.com>

		* config/mips/mips-protos.h (mips_emit_fcc_reload): Declare.
		* config/mips/mips.h (PREDICATE_CODES): Add fcc_register_operand.
		* config/mips/mips.c (fcc_register_operand): New function.
		(mips_emit_fcc_reload): New function, extracted from reload_incc.
		(override_options): Allow TFmode values in float registers
		if ISA_HAS_8CC.
		* cnfig/mips/mips.md (reload_incc): Change destination prediate
		to fcc_register_operand.  Remove misleading source constraint.
		Use mips_emit_fcc_reload.
		(reload_outcc): Duplicate reload_incc.


2003-04-30  Diego Novillo  <dnovillo@redhat.com>

	* builtins.def (BUILTIN_CONSTANT_P): Mark as constant.

2003-04-30  Geoffrey Keating  <geoffk@apple.com>

	* tree-inline.c (inlinable_function_p): Back out last change, it's
	unnecessary.

2003-04-30  Steven Bosscher  <steven@gcc.gnu.org>

	* ggc-page.c (TREE_EXP_SIZE): Define.
	(extra_order_size_table): New entry for expr trees with
	two operands.

2003-04-30  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* c-common.c (if_elt): Use location_t in lieu of "file, line" pair.
	(c_expand_start_cond): Adjust.
	(c_expand_end_cond): Don't use warning_with_file_and_file.
	(shadow_warning): Likewise.

2003-04-30  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (DECL_POINTER_DEPTH): Remove.
	(struct tree_decl): Remove pointer_depth.

2003-04-30  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/linux64.h (ASM_OUTPUT_LABELREF): Remove.
	* config/rs6000/rs6000.c (rs6000_elf_strip_name_encoding): Remove.
	(rs6000_xcoff_encode_section_info): Remove.
	(current_file_function_operand): Use SYMBOL_REF_FLAGS; fix latent bug.
	(rs6000_output_mi_thunk): Remove dead code; use SYMBOL_REF_FLAGS.
	(small_data_operand, rs6000_emit_move, rs6000_elf_in_small_data_p,):
	Use SYMBOL_REF_FLAGS.
	(rs6000_elf_encode_section_info): Call default_encode_section_info for
	generic flags, use SYMBOL_REF_FLAGS; code cleanups.
	* sysv4.h (TARGET_STRIP_NAME_ENCODING, ASM_OUTPUT_LABELREF): Remove.
	(SYMBOL_FLAG_SMALL_V4, SYMBOL_REF_SMALL_V4_P): New.
	* xcoff.h (TARGET_ENCODE_SECTION_INFO): Remove.
	(ASM_DECLARE_FUNCTION_NAME): Remove setting of SYMBOL_REF_FLAG.

2003-04-30  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* diagnostic.c (output_pointer): Use HOST_PTR_PRINTF.

2003-04-30  Andreas Schwab  <schwab@suse.de>

	* doc/extend.texi (Other Builtins): Enclose multiple word data
	type in braces for @deftypefn.

2003-04-30  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (mode_for_size_tree): Use BLKmode if SIZE overflows.

	* doc/install.texi (--enable-threads): Document "gnat" option.

2003-04-30  Gabriel Dos Reis <gdr@integrable-solutions.net>

	* diagnostic.h (output_formatted_scalar): Tweak.
	* diagnostic.c (output_long_decimal): Likewise.
	(output_unsigned_decimal): Likewise.
	(output_long_unsigned_decimal): Likewise.
	(output_octal): Likewise.
	(output_long_octal): Likewise.
	(output_hexadecimal): Likewise.
	(output_long_hexadecimal): Likewise.
	(output_pointer): New function.
	(output_format): Use it.  Recognize "%p" format specifier.

2003-04-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* function.c (purge_addressof_1): Postpone insn in fewer cases.

2003-04-29  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/host-darwin.c (segv_handler): When -dH is used,
	call abort() after running out of stack space.

	* c-typeck.c (function_types_compatible_p): Ignore incompatible
	'volatile' qualifiers on a function's return type in GNU mode.

2003-04-29  Aldy Hernandez  <aldyh@redhat.com>

	* expr.c (emit_group_load): Dump parallels of simd types to
	memory.

2003-04-29  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (add_vect): Check undefined value for range type
	too.

2003-04-29  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in:  More general test for cmp --ignore-initial.
	* configure:  Regenerate.

2003-04-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (mode_for_size_tree): Use tree_low_cst.
	(layout_decl, place_field): Likewise.
	Also make minor type and whitespace changes.

	* tree.c (save_expr): Don't fold a COMPONENT_REF.

2003-04-29  Olivier Hainque <hainque@act-europe.fr>

	* calls.c (expand_call): When modes of target and valreg match,	force
	sibcall failure when target is a MEM.

2003-04-29  Geoffrey Keating  <geoffk@apple.com>

	* tree-inline.c (inlinable_function_p): Don't support inlining
	functions using varargs.

	* doc/invoke.texi (Overall Options): Mention -x objective-c-header.

	* dwarf2out.c (output_call_frame_info): No need to output EH
	unwind information if all_throwers_are_sibcalls.

	* c-semantics.c (expand_unreachable_stmt): Return a tree.
	(expand_stmt): Update for change to expand_unreachable_stmt.
	(expand_unreachable_if_stmt): Likewise.

	* Makefile.in (quickstrap): Pass BOOT_CFLAGS to submake.

2003-04-29  Jason Merrill  <jason@redhat.com>

	PR middle-end/10336
	* jump.c (never_reached_warning): Really stop looking if we reach
	the beginning of the function.

2003-04-29  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/elf.h (SIZE_TYPE, PTRDIFF_TYPE, USER_LABEL_PREFIX):
	Remove redundant macros.
	(WCHAR_TYPE, WCHAR_TYPE_SIZE): Change to "short unsigned int".
	(LOCAL_LABEL_PREFIX): Define unconditionally.
	(NO_DOT_IN_LABEL): Clarify comment.
	* config/xtensa/linux.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Add explicit
	definition to "long int".

2003-04-29  Alexander Kabaev  <kan@FreeBSD.ORG>

	bootstrap/10452
	* gengtype-yacc.y: Improve portability.

2003-04-29  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Install obsolete target list for GCC 3.3.
	* doc/install.texi: Mention in specific-target instructions
	that certain configurations are deprecated.

2003-04-29  Zack Weinberg  <zack@codesourcery.com>

	* tree.h: Delete no-checking definition of CST_OR_CONSTRUCTOR_CHECK.

2003-04-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	* c-pragma.c (maybe_apply_renaming_pragma): Fix typo.
	* gcc.c (display_help): Likewise.
	* toplev.c (f_options): Likewise.
	* params.def (PARAM_MAX_INLINE_SCOPE): Likewise.
	* config/c4x/c4x.h (TARGET_SWITCHES): Likewise.
	* config/mcore/mcore.h (TARGET_SWITCHES): Likewise.
	* config/s390/s390.h (TARGET_SWITCHES): Likewise.
	* config/v850/v850.h (TARGET_SWITCHES): Likewise.

2003-04-29  J"orn Rennecke <joern.rennecke@superh.com>

	* varasm.c (default_assemble_visibility): Use assemble_name.

2003-04-29  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/freebsd64.h (LINK_SPEC): Mirror FreeBSD linker.
	* config/rs6000/freebsd.h (LINK_SHLIB_SPEC): New macro.
	(SIZE_TYPE): New macro.
	* config/i386/freebsd-aout.h (NO_PROFILE_COUNTERS): New macro.
	(SET_ASM_OP): New macro.
	(HANDLE_SYSV_PRAGMA): New macro.
	(ASM_WEAKEN_LABEL): New macro.

2003-04-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/10180
	* tree-inline.c (expand_call_inline): Call push_srcloc when
	encountering EXPR_WITH_FILE_LOCATION.  Honor warn_inline.

2003-04-28  Mike Stump  <mrs@apple.com>

	* gdbinit.in: Update to reflect new identifier structure.

2003-04-28  Zack Weinberg  <zack@codesourcery.com>

	* tree.h (TREE_CST_RTL, CST_OR_CONSTRUCTOR_CHECK): Delete.
	(struct tree_int_cst, struct tree_real_cst, struct tree_string,
	struct tree_complex, struct tree_vector): Remove RTL field.
	(CONSTRUCTOR_ELTS): Use elt 0.
	* tree.def (CONSTRUCTOR): Delete first of its two operands.
	* varasm.c (output_constant_def): Remove early exit if
	TREE_CST_RTL is set.  Don't set TREE_CST_RTL.
	(decode_addr_const): Don't mention TREE_CST_RTL in comment.
	* target.h (select_section): Don't mention TREE_CST_RTL in comment.
	* doc/tm.texi (encode_section_info): Don't talk about TREE_CST_RTL.

2003-04-28  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (finish_decl): When prototype with asmspec is found
	for built-in, adjust built_in_decls as well as expr.c decls.
	* expr.c (init_block_move_fn, init_block_clear_fn): New functions.
	(emit_block_move_libcall_fn, clear_storage_libcall_fn): Use it.
	* expr.c (init_block_move_fn, init_block_clear_fn): New prototypes.

2003-04-28  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (print_operand): Add 's' to sign-extend.
	* config/sparc/sparc.md (const_mulsidi3_v8plus): Fix mode of
	integral constant mult operand.
	(const_mulsidi3_sp32, const_mulsidi3_sp64): Likewise.
	(const_smulsi3_highpart_v8plus): Likewise.
	(const_smulsi3_highpart): Likewise.
	(const_umulsidi3_sp32): Likewise; sign-extend it in the output.
	(const_umulsidi3_sp64, const_umulsidi3_v8plus): Likewise.
	(const_umulsi3_highpart_v8plus): Likewise.
	(const_umulsi3_highpart): Likewise.

2003-04-28  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/x86-64.h (NO_PROFILE_COUNTERS, HAVE_AS_DWARF2_DEBUG_LINE):
	Define as 1.

2003-04-28  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/i386.h (builtin_define): Add __amd64 and __amd64__.

2003-04-28  Jakub Jelinek  <jakub@redhat.com>

	* builtins.def (BUILT_IN_BCOPY, BUILT_IN_MEMMOVE): New.
	* builtin-types.def (BT_FN_VOID_CONST_PTR_PTR_SIZE): New.
	* builtins.c (expand_builtin_memmove, expand_builtin_bcopy): New
	functions.
	(expand_builtin): Handle BUILT_IN_BCOPY and BUILT_IN_MEMMOVE.

2003-04-28  Nick Clifton  <nickc@redhat.com>

	* config/arm/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Remove definition.

2003-04-27  Zack Weinberg  <zack@codesourcery.com>

	* expr.c (expand_expr <COMPLEX_CST, STRING_CST>): Always call
	output_constant_def, use its result instead of TREE_CST_RTL (exp).
	Can assume it has the form (mem (symbol_ref ".LCxxx")).
	(expand_expr <COMPONENT_REF>): Can always just extract the
	relevant field of a CONSTRUCTOR.
	(expand_expr <ARRAY_REF, COMPONENT_REF, BIT_FIELD_REF,
	ARRAY_RANGE_REF>): Make control flow explicit.
	* varasm.c (output_constant_def): Can look at TREE_CST_RTL of
	an INTEGER_CST.

2003-04-27  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (reg_set_luid): Fix a comment typo.

2003-04-27  Zack Weinberg  <zack@codesourcery.com>

	* varasm.c (const_str_htab_hash, const_str_htab_eq, STRHASH,
	struct deferred_string, const_str_htab): Kill.
	(n_deferred_strings): New static variable.
	(build_constant_desc): Set SYMBOL_REF_DECL of the new
	symbol_ref to point to the constant.
	(output_constant_def): When a deferred string is forced out,
	just clear STRING_POOL_ADDRESS_P and decrement n_deferred_strings.
	(mark_constant): Likewise.
	(maybe_output_constant_def_contents): When deferring a string
	constant, just set STRING_POOL_ADDRESS_P and increment
	n_deferred_strings.
	(mark_constant_pool): Check n_deferred_strings, not the size
	of const_str_htab.
	(init_varasm_once): No need to create const_str_htab.

	* rtl.def, rtl.h, doc/rtl.texi: Document possibility that
	SYMBOL_REF_DECL points to a constant.

2003-04-26  Zack Weinberg  <zack@codesourcery.com>

	* varasm.c (output_constant_def): Split out two new static
	functions, build_constant_desc and maybe_output_constant_def_contents.
	Restructure for comprehensibility.  Don't call
	output_addressed_constants.  Treat defstr being non-NULL for
	STRING_POOL_ADDRESS_P constants as an invariant.
	(struct deferred_string): Remove labelno field.
	(output_constant_def_contents): Kill labelno argument. Call
	output_addressed_constants here.  Use ASM_OUTPUT_LABEL,	not
	asm_out.internal_label.
	(mark_constant): Update call to	output_constant_def_contents.
	Treat defstr being non-NULL for STRING_POOL_ADDRESS_P
	constants as an invariant.

2003-04-26  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (output_pic_addr_const): Use SYMBOL_REF_LOCAL_P.
	(ix86_expand_call, ix86_rtx_consts): Likewise.

2003-04-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/md.texi (cmpstr): Document additional restrictions.

2003-04-26  Neil Booth  <neil@daikokuya.co.uk>

	* flags.h (time_report): Remove.
	* timevar.c (timevar_enable): New.
	(TIMEVAR_ENABLE): Remove, use timevar_enable.
	(timevar_init): Rename from init_timevar.
	* timevar.h (timevar_init): Rename from init_timevar.
	* toplev.c (time_report): Make static.
	(do_compile): Conditionally call init_timevar first.
	(preprocess_options): Move some code to do_compile.

2003-04-26  Stephane Carrez  <stcarrez@nerim.fr>

	* doc/install.texi (Binaries): Mention binaries for HC11/HC12.

2003-04-26  Neil Booth  <neil@daikokuya.co.uk>

	* _cpp_lex_direct: Remove pointless code.

2003-04-26 Stephane Carrez <stcarrez@nerim.fr>

	* doc/extend.texi (Function Attributes): Document "near" and "far"
	for 68HC11 and 68HC12.

2003-04-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_field): When making temporary for store, don't
	make it TYPE_QUAL_CONST.

2003-04-25  Phil Edwards  <pme@gcc.gnu.org>

	* toplev.c (read_integral_parameter):  Use "argument" in error
	message to distinguish it from actual invalid options.

2003-04-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/linux.h (TARGET_OS_CPP_BUILTINS): Back out previous
	addition of __PIC__ and __pic__ macros.
	* config/xtensa/xtensa.h: Clean up indentation.

2003-04-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/linux.h (TARGET_OS_CPP_BUILTINS): Remove definition of
	_GNU_SOURCE.  Add definitions of __PIC__ and __pic__.
	(SUBTARGET_CPP_SPEC): Define.
	(LIB_SPEC): Delete.
	* config/xtensa/xtensa-protos.h (xtensa_declare_object): Delete.
	* config/xtensa/xtensa.c (xtensa_declare_object): Delete.
	* config/xtensa/xtensa.h (CPP_SPEC, SUBTARGET_CPP_SPEC, EXTRA_SPECS):
	Define.
	(ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Delete.
	(ASM_OUTPUT_ALIGNED_BSS, BSS_SECTION_ASM_OP): Define.

2003-04-25  H.J. Lu <hjl@gnu.org>

	* config/ia64/ia64.c (ia64_expand_compare_and_swap): Add rmode
	for return mode.
	(ia64_expand_builtin): Set rmode to SImode for
	IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_SI,
	IA64_BUILTIN_VAL_COMPARE_AND_SWAP_SI and
	IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_DI. Set remode to DImode
	for IA64_BUILTIN_VAL_COMPARE_AND_SWAP_DI.

2003-04-25  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in (make_compare_target):  Test for GNU cmp and set this
	variable appropriately.
	* Makefile.in (compare, compare3, compare4, compare-lean, compare3-lean,
	compare4-lean): Rename actual targets to slowcompare*.  New compare*
	targets depend on names based on make_compare_target.
	* configure:  Regenerated.

2003-04-25  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_compute_frame_size): Allow inline asm
	to clobber ar.pfs and ar.unat.
	(ia64_expand_prologue): Force alloc instruction if ar.pfs saved;
	fix test for spilling ar.pfs to the stack.

2003-04-25  Richard Henderson  <rth@redhat.com>

	PR opt/10315
	* config/rs6000/rs6000.c (rs6000_emit_move): Only elide proper
	checks during reload; use validize_mem instead of adjust_address.

2003-04-26  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/arm.c (arm_adjust_cost): Correct logic that tests the
	return values from recog_memoized().

2003-04-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR opt/8705
	* gcse.c (try_replace_reg): On a successful substitution of a constant
	into a single set, try to simplify the source of the set.
	* loop.c (scan_loop): Don't try to optimize a MODE_CC set with a
	constant source.

2003-04-24  Neil Booth  <neil@daikokuya.co.uk>

	* cpplex.c (cpp_token_len): Tighten up.
	(cpp_token_as_text): Need extra byte now.
	* cpplib.c (glue_header_name): Need extra 2 bytes.
	* cppmacro.c (cpp_macro_definition): Need extra byte.

2003-04-24  Alexander Kabaev <kan@FreeBSD.ORG>

	* config/sparc/sparc.md (umulsidi3, mulsidi3): Avoid using
	const_umulsidi3_sp32 and const_mulsidi3_sp32 on 64bit targets
	where they might be not present. Use their _sp64 equivalent
	instead.

Thu Apr 24 20:42:12 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.md (cvtsi2sdq): Fix typo in previous patch.

2003-04-24  Krister Walfridsson  <cato@df.lth.se>

	* configure.in: Check whether mbstowcs works.
	* configure, config.in: Regenerate.
	* intl.c: Use HAVE_WORKING_MBSTOWCS.

2003-04-24  H.J. Lu <hjl@gnu.org>

	* config/ia64/ia64.c (ia64_init_builtins): Add si_ftype_pdi_di_di
	for __sync_bool_compare_and_swap_di for int return type.

	* config/ia64/ia64intrin.h (__sync_bool_compare_and_swap_di):
	Change return type to int.
	(__sync_bool_compare_and_swap): Likewise.

Thu Apr 24 16:55:26 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cfgbuild.c (make_edges):  Do not use next_nonnote_insn when
	looking for fallthru edge.

	* athlon.md (athlon-agu, athlon-store, athlon-fany, athlon-faddmul):
	Fix.
	(athlon-load2, athlon-store2, athlon-fpsched, athlon-fpload,
	athlon-fvector): New.
	(athlon_*): Revisit to match new optimization guide.
	* i386.c (ix86_adjust_cost):  Fix memory operand costs on Athlon/k8
	* i386.md (cvt??2?? patterns): Fix modes.
	(fistp patterns): Set modes.

	Accidentaly commited with my earlier reload patch:
	PR c/10308
	* reload.c (find_reloads_address_1): Reload plus at the place of
	index register.

2003-04-24  Nathan Sidwell  <nathan@codesourcery.com>

	New GCOV_TAG_FUNCTION layout
	* coverage.c (struct function_list): Replace name with ident.
	(struct counts_entry): Likewise.
	(fn_ident): New.
	(htab_counts_entry_hash, htab_counts_entry_eq,
	htab_counts_entry_del): Adjust.
	(reads_count_file, get_coverage_counts,
	coverage_begin_output, coverage_end_function): Adjust.
	(build_fn_info_type, build_fn_info_value): Likewise.
	* gcov-dump.c (tag_function): Adjust.
	* gcov-io.c (gcov_write_string, gcov_read_string): Not in LIBGCOV.
	* gcov-io.h (gcov_write_string, gcov_read_string): Not in LIBGCOV.
	* gcov.c (struct function_info): Add ident.
	(read_graph_file, read_count_file): Adjust.
	* libgcov.c (gcov_exit): Adjust.

2003-04-23  Richard Henderson  <rth@redhat.com>

	PR opt/8300
	* toplev.c (rest_of_compilation): Delay no_new_pseudos until
	after initialize_uninitialized_subregs; update reg info assuming
	new pseudos were created.

2003-04-23  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (c-lex.o, LIBCPP_OBJS, cpplex.o): Update.
	* c-lex.c (MULTIBYTE_CHARS): Remove conditionals.
	(lex_string): Take cpp_string with full spelling.
	(cb_ident): Update.
	(c_lex): Update diagnostics.
	* cpplex.c (SPELL_NUMBER, SPELL_STRING): Combine into SPELL_LITERAL.
	(create_literal): New.
	(lex_string): Unterminated literals have type CPP_OTHER.
	(_cpp_lex_direct): Update calls to lex_string.  Use create_literal
	for CPP_OTHER.
	(cpp_token_len, cpp_spell_token, cpp_output_token): Simplify.
	(_cpp_equiv_tokens, cpp_interpret_charconst): Update.
	* cpplib.c (parse_include, do_line, do_linemarker,
	destringize_and_run): Update for token storing full spelling.
	* cpplib.h: Update token spelling types.
	* cppmacro.c (stringify_arg, check_trad_stringification):
	Update for token storing full spelling.

2003-04-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_expand_cmpstr): Disable CLC loop.

2003-04-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (TARGET_OPTIONS): Add value field.

2003-04-23  Mark Mitchell  <mark@codesourcery.com>

	* doc/extend.texi: Remove duplicate 2003 copyright date.

2003-04-23  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (LIBGCC_DEPS): Add gcov headers.
	(libgcov.a): Depends on LIBGCC_DEPS.
	* basic-block.h (profile_info): Moved here from coverage.h. Made
	a pointer.
	* coverage.c (struct function_list): Fixed array of counter types.
	(struct counts_entry): Keyed by counter type, contains summary.
	(profile_info): Moved to profile.c.
	(prg_ctr_mask, prg_n_ctrs, fn_ctr_mask, fn_n_ctrs): New global
	vars.
	(profiler_label): Remove.
	(ctr_labels): New.
	(set_purpose, label_for_tag, build_counter_section_fields,
	build_counter_section_value, build_counter_section_data_fields,
	build_counter_section_data_values, build_function_info_fields,
	build_function_info_value, gcov_info_fields, gcov_info_value): Remove.
	(build_fn_info_type, build_fn_info_value, build_ctr_info_type,
	build_ctr_info_value, build_gcov_info): New.
	(htab_counts_entry_hash, htab_counts_entry_eq): Adjust.
	(reads_counts_file): Adjust.
	(get_coverage_counts): Takes counter number. Add summary
	parameter. Adjust.
	(coverage_counter_ref): Tkaes counter number. Adjust. Lazily
	create counter array labels.
	(coverage_end_function): Adjust.
	(create_coverage): Adjust.
	(find_counters_section): Remove.
	* coverage.h (MAX_COUNTER_SECTIONS): Remove.
	(struct section_info, struct profile_info): Remove.
	(profile_info): Moved to basic-block.h.
	(coverage_counter_ref): Takes a counter number.
	(get_coverage_counts): Takes a counter number. Added summary
	parameter.
	(find_counters_section): Remove.
	* gcov-dump.c (tag_arc_counts): Rename to ...
	(tag_counters): ... here. Adjust.
	(tag_table): Move tag_counters to 3rd entry. Remove
	PROGRAM_PLACEHOLDER and PROGRAM_INCORRECT entries.
	(dump_file): Check for counter tag values here.
	(tag_summary): Adjust.
	* gcov-io.c (gcov_write_summary, gcov_read_summary): Adjust.
	* gcov-io.h (GCOV_LOCKED): New.
	(GCOV_TAG_ARC_COUNTS): Rename to ...
	(GCOV_TAG_COUNTS_BASE): ... here.
	(GCOV_TAG_PLACEHOLDER_SUMMARY, GCOV_TAG_INCORRECT_SUMMARY):
	Remove.
	(GCOV_COUNTER_ARCS, GCOV_COUNTERS, GCOV_NAMES): New.
	(GCOV_TAG_FOR_COUNTER, GCOV_COUNTER_FOR_TAG,
	GCOV_TAG_IS_COUNTER): New.
	(struct gcov_ctr_summary): New.
	(struct gcov_summary): Adjust.
	(struct gcov_counter_section): Remove.
	struct gcov_counter_section_data): Remove.
	(struct gcov_function_info): Rename to ...
	(struct gcov_fn_info): ... here. Adjust.
	(struct gcov_ctr_info): New.
	(struct gcov_info): Adjust.
	* gcov.c (read_count_file): Adjust.
	(output_lines): Adjust.
	* libgcov.c (gcov_exit): Adjust.
	(__gcov_flush): Adjust.
	* mklibgcc.in (libgcc2_c_dep): Add gcov headers.
	* predict.c (maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p, compute_frequency_function): Adjust
	profile_info use.
	* profile.c (struct counts_entry): Remove.
	(profile_info): Define here.
	(get_exec_counts): Adjust get_coverage_counts call.
	(compute_branch_probablilities): Remove find_counters_section
	call.
	(gen_edge_profiler): Adjust coverage_counter_ref call.
	* tracer.c (tail_duplicate): Adjust profile_info use.

2003-04-23  Roger Sayle  <roger@eyesopen.com>

	PR optimization/10339
	* builtins.c (expand_builtin_strcmp): Try to emit cmpstrsi insn
	directly instead of unsafely transforming call into a memcmp.
	(expand_builtin_strncmp): Likewise.

2003-04-22  Roger Sayle  <roger@eyesopen.com>

	* alias.c (mark_constant_function):  Check for constancy and
	purity even of void functions.  Update both the function decl
	and the cgraph RTL info with the results.

2003-04-22  Roger Sayle  <roger@eyesopen.com>

	* real.c (do_add): Change to return a bool indicating that the
	result of the operation may be inexact due to loss of precision.
	(do_multiply): Likewise.
	(do_divide): Likewise.

2003-04-22  Geoffrey Keating  <geoffk@apple.com>
	    Loren James Rittle  <ljrittle@acm.org>

	* dwarf2out.c (fde_table_allocated): Mark with GTY.
	(decl_die_table_allocated): Likewise.
	(abbrev_die_table_allocated): Likewise.
	(line_info_table_allocated): Likewise.
	(separate_line_info_table_allocated): Likewise.
	(pubname_table_allocated): Likewise.
	(arange_table_allocated): Likewise.
	(ranges_table_allocated): Likewise.
	(decl_die_table_in_use): Unconditionalize; mark with GTY.
	(abbrev_die_table_in_use): Likewise.
	(line_info_table_in_use): Likewise.
	(separate_line_info_table_in_use): Likewise.
	(pubname_table_in_use): Likewise.
	(arange_table_in_use): Likewise.
	(ranges_table_in_use): Likewise.
	(have_location_lists): Likewise.
	(emitcount): New GTY-marked static, moved...
	(maybe_emit_file): ...from here.
	(label_num): New GTY-marked static, moved...
	(gen_internal_sym): ...from here.

2003-04-22  Richard Henderson  <rth@redhat.com>

	PR 8866
	* rtl.h (MEM_NOTRAP_P): New.
	(MEM_COPY_ATTRIBUTES): Copy it.
	* rtlanal.c (may_trap_p): Check it.
	* expr.c (do_tablejump): Set it.
	* doc/rtl.texi (Flags): Document it.

	* cfgrtl.c (try_redirect_by_replacing_jump): Revert last three changes.

2003-04-22  Olivier Hainque  <hainque@act-europe.fr>

	* config/alpha/alpha.c (alpha_expand_prologue [OPEN_VMS_ABI]): Don't
	set FRP on stack adjustment for outgoing args if frame_pointer_needed.

2003-04-22  Vincent Celier <celier@gnat.com>

	* gthr-gnat.h, gthr-gnat.c: new sources for implementation of
	--enable-threads=gnat.
	* Makefile.in: Add gthr-gnat.c to LIB2ADDEH.
	* configure.in: Add gnat to the list of thread packages
	* configure: Rebuild.
	* config/t-linux: Add gthr-gnat.c to LIB2ADDEH and LIB2ADDEHDEP

2003-04-22  Neil Booth  <neil@daikokuya.co.uk>

	* cpplex.c (_cpp_get_fresh_line): Pop the buffer if return_at_eof.

2003-04-22  Devang Patel  <dpatel@apple.com>

	* cpptrad.c (_cpp_replacement_text_len): Add check for macro
	parameter count.
	(_cpp_copy_replacement_text): Same.

2003-04-22  Neil Booth  <neil@daikokuya.co.uk>

	* c-lex.c (c_lex): Handle CPP_OTHER differently.
	* cppexp.c (_cpp_parse_expr): Similarly.
	* cpplex.c (SPELL_CHAR): Remove.
	(_cpp_lex_direct): Stray chars are saved as byte strings.
	(cpp_spell_token, cpp_output_token, _cpp_equiv_token): Don't
	handle SPELL_CHAR.
	(cpp_avoid_paste): Update handling of CPP_OTHER.
	* cpplib.h: Spell CPP_OTHER like a number.
	(struct cpp_token): Remove member c.
	* cppmacro.c (stringify_arg): Update handling of CPP_OTHER.

2003-04-22  David Turner <novalis@gnu.org>

	* gbl-ctors.h: Add special license exception.
	* libgcc2.h: Likewise.
	* tsystem.h: Likewise.
	* gcov-io.h: Likewise.

2003-04-22  David Edelsohn  <edelsohn@gnu.org>

	* fold-const.c (fold_range_test): Use RANGE_TEST_NON_SHORT_CIRCUIT
	macro defaulting to original BRANCH_COST heuristic.
	* doc/tm.texi (RANGE_TEST_NON_SHORT_CIRCUIT): Document.

	* config/rs6000/rs6000.h (RANGE_TEST_NON_SHORT_CIRCUIT): Define.

2003-04-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/t-spe: Merge in t-fprules into file.

	* config.gcc: Add t-spe to powerpc-eabispe.

2003-04-22  Kean Johnston  <jkj@sco.com>

	* tlink.c (recompile_files): Add missing '=' to putenv calls

2003-04-22  Nathan Sidwell  <nathan@codesourcery.com>

	* ginclude/stddef.h: Provide C++ safe offsetof.

2003-04-22  J"orn Rennecke <joern.rennecke@superh.com>

	* function.c (purge_addressof_1): In (mem (addressof (reg))) case
	for reg notes, if there are no substitutions, just use a SUBREG.

2003-04-21  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (calls.o): Depend on except.h.
	* calls.c: Include except.h.
	(emit_call_1): Call note_eh_region_may_contain_throw if
	appropriate.
	* except.c (eh_region): Add may_contain_throw.
	(expand_eh_region_end_cleanup): Do not include handler code when
	it cannot be reached.
	(note_eh_region_may_contain_throw): New function.
	* except.h (note_eh_region_may_contain_throw): New function.

2003-04-21  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/winnt.c (i386_pe_mark_dllimport): Revert previous
	changes.

2003-04-21  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): No SPE means
	64-bit long doubles.

2003-04-21  Olivier Hainque  <hainque@act-europe.fr>

	* fold-const.c (fold, case PLUS_EXPR and case MULT_EXPR): Restore
	a number of conversions required for type consistency and previously
	stripped off by STRIP_NOPS.

	* calls.c (expand_call): Prevent sibcall optimization for calls to
	nested subprograms.

	* expmed.c (extract_bit_field): Reverse operands of && condition to
	prevent a potential division by zero in the previously first branch.
	* config/pa/pa.md (extv, extzv): FAIL if the bitfield length is zero.

2003-04-21  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (is_ada, is_ada_subrange_type): New functions.
	(subrange_type_die): Likewise.
	(modified_type_die): Emit a subrange_type DIE for Ada subrange types.
	(is_c_family, is_cxx, is_java, is_fortran): Return bool and clean up.

2003-04-21  Nathan Sidwell  <nathan@codesourcery.com>

	Break out coverage routines to new file.
	* Makefile.in (COVERAGE_H): New variable
	(C_OBJS): Add coverage.o
	(coverage.o): New target.
	(profile.o, loop-init.o, sched-ebb.o, predict.o, tracer.o): Adjust
	dependencies.
	(GTFILES): Adjust.
	(gt-coverage.h): New target.
	(gt-profile.h): Remove.
	* profile.h: Remove. Move to ...
	* coverage.h: ... here. New. #include gcov-io.h.
	* gcov-io.h: Move function definitions to ...
	* gcov-io.c: ... here. New.
	* profile.c: Move coverage routines to coverage.c.
	(instrument_edges, get_exec_counts, branch_prob, init_branch_prob,
	end_branch_prob): Adjust.
	* coverage.c: New. Coverage routines from profile.c
	(coverage_counter_ref, coverage_init, coverage_finish,
	coverage_end_function, coverage_begin_output,
	coverage_counter_ref, get_coverage_counts): Define.
	* gcov-dump.c, gcov.c: #include gcov-io.c.
	* libgcov.c: Likewise. Adjust.
	* loop-init.c: Don't #include profile.h
	* tracer.c, predict.c, sched-ebb.c: Adjust #includes.
	* rtl.h: Add coverage prototypes.
	* toplev.c (compile_file): Init coverage, not branch_prob.
	Always call coverage_finish.
	(rest_of_compilation): Call coverage_end_function.

2003-04-21  Matt Kraai  <kraai@alumni.cmu.edu>

	* config/rs6000/rs6000.md (*movsf_softfloat): Add "h" <- "0" case.

2003-04-21  Neil Booth  <neil@daikokuya.co.uk>

	* c-ppoutput.c (cb_include): Don't take a cpp_token.
	* cppfiles.c: Don't undef strcmp.
	(find_include_file): Don't take a cpp_token.  Check for empty
	file names.
	(_cpp_execute_include, _cpp_compare_file_date): Don't take a cpp_token.
	(cpp_push_include): Simplify.
	* cpphash.h (_cpp_execute_include, _cpp_compare_file_date): Update.
	* cpplib.c (glue_header_name): Return the file name, not a cpp_token.
	(parse_include): Similary.  Don't check for zero-length filenames.
	(do_include_common, do_pragma_dependency): Update accordingly.
	* cpplib.h (struct cpp_callbacks): Change prototype of include.

2003-04-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* doc/rtl.texi (RTX_UNCHANGING_P): Point to true_dependence for
	details of conflict handling.

	* fold-const.c (extract_muldiv, case CONVERT_EXPR): Detect case
	when conversion overflows.

	* stor-layout.c (layout_decl): Don't set DECL_SIZE_UNIT if already set.

	* expr.c (store_constructor): Set RTX_UNCHANGING_P if readonly_field_p
	before clearing.

2003-04-21  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/winnt.c (i386_pe_mark_dllimport): Make the new RTL
	have the same form as the old RTL.

2003-04-21  Andreas Jaeger  <aj@suse.de>

	* cppcharset.c (_cpp_valid_ucn): Cast field precision to int.

2003-04-20  Chris Lattner  <sabre@nondot.org>
	    Zack Weinberg  <zack@codesourcery.com>

	* c-common.h, c-semantics.c: Rename genrtl_decl_cleanup to
	genrtl_cleanup_stmt.  Correct comment at head of
	genrtl_cleanup_stmt (no such thing as a DECL_CLEANUP).

	* stmt.c (struct nesting): Kill n_function_calls.
	(expand_start_bindings): Don't set
	thisblock->data.block.n_function_calls.
	(expand_end_bindings): Compare function_call_count against 0.
	(expand_cleanups): Kill DONT_DO argument; all callers passed
	NULL_TREE. All callers updated to match.

2003-04-20  Zack Weinberg  <zack@codesourcery.com>

	* varasm.c (struct deferred_constant, defer_addressed_constants_flag)
	(defer_addressed_constants, output_deferred_addressed_constants): Kill.
	(output_constant_def): Remove code predicated on
	defer_addressed_constants_flag.

	* output.h: Remove prototypes of deleted functions.
	* c-typeck.c (constructor_subconstants_deferred): Kill.
	(struct initializer_stack): Remove 'deferred' field.
	(start_init): Remove all references to the above.
	(finish_init): Likewise. Also remove never-executed call to
	output_deferred_addressed_constants.  Pull assignment to
	defstr out of if expression.

2003-04-20  Neil Booth  <neil@daikokuya.co.uk>

	* cpphash.h (NOTE_ESC_NL, NOTE_ESC_SPACE_NL, NOTE_TRIGRAPH,
	NOTE_NEWLINE): Remove.
	* cpplex.c (_cpp_clean_line, _cpp_process_line_notes): Update
	to handle new form of line note type.

2003-04-20  Zack Weinberg  <zack@codesourcery.com>

	* target.h (encode_section_info): Add new argument carrying
	the RTL to be modified by the hook.

	* varasm.c (make_decl_rtl, output_constant_def): Update calls
	to encode_section_info.
	(default_encode_section_info): Take and use RTL argument,
	don't use TREE_CST_RTL or DECL_RTL.
	* output.h: Update prototype of default_encode_section_info.
	* config/darwin.h (ASM_DECLARE_OBJECT_NAME)
	(ASM_DECLARE_FUNCTION_NAME, ASM_OUTPUT_ALIGNED_DECL_LOCAL):
	Update calls to encode_section_info.

	* config/darwin.c, config/arm/arm.c, config/arm/pe.c
	* config/h8300/h8300.c, config/i386/winnt.c, config/m32r/m32r.c
	* config/m68hc11/m68hc11.c, config/m88k/m88k.c, config/mcore/mcore.c
	* config/mips/mips.c, config/mmix/mmix.c, config/pa/pa.c
	* config/romp/romp.c, config/rs6000/rs6000.c, config/s390/s390.c
	* config/v850/v850.c (TARGET_ENCODE_SECTION_INFO definitions):
	Take and use RTL argument, don't use TREE_CST_RTL or DECL_RTL,
	except for PE dllimport/dllexport.  Update calls to
	default_encode_section_info.

	* config/darwin-protos.h, config/arm/arm-protos.h, config/i386-protos.h:
	Update prototypes.

	* doc/tm.texi (TARGET_ENCODE_SECTION_INFO): Update.

2003-04-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR/8705
	* pa.md (movccfp): New expander.
	(setccfp0, setccfp1): Rename to movccfp0 and movccfp1, respectively.
	Reverse fcmp conditions.

2003-04-20  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.md (*cmpqi_sign_extend): Handle negative values
	of operand 1 correctly.

2003-04-20  Nathan Sidwell  <nathan@codesourcery.com>

	* cpplex.c (_cpp_lex_direct): Set BOL for CPP_EOF tokens.
	* gcov.c (output_lines): Don't be so fussy about going past EOF.

2003-04-20  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (LIBCPP_OBJS): Add cppcharset.o.
	(cppcharset.o): New target.
	* c-lex.c (is_extended_char): Move to cppcharset.c.
	(utf8_extend_token): Delete.
	* cppcharset.c: New file.
	* cpphash.h (_cpp_valid_ucn): New.
	* cpplex.c (lex_identifier): Update prototype.
	(continues_identifier_p): Rename forms_identifier_p.  Handle UCN
	escapes.
	(maybe_read_ucs): Rename maybe_read_ucn.  Update to use code
	in cppcharset.c.
	(lex_number, lex_identifier, cpp_parse_escape): Update.
	(_cpp_lex_direct): Update to handle UCNs.
	(cpp_avoid_paste): Don't paste to form a UCN.

2003-04-19  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin):  Don't expand a pure or const
	built-in function if the result will be ignored and none of
	its arguments are volatile.

2003-04-19  Kean Johnston  <jkj@sco.com>

	* unwind-dw2.c (_Unwind_GetCFA): cast return to avoid warning
	* config.gcc: make SCO use dbxelf.h and elfos.h; only use one
	target fragment now: t-sco5; dont compile crti.o.
	* config/i386/sco5.h: major overhaul to remove all COFF remnants
	and to use elfos.h for most definitions.
	(BSS_SECTION_ASM_OP): set correct segment attributes.
	(PREFERED_DEBUGGING_TYPE): set to DWARF-2.
	(DWARF2_UNWIND_INFO): Always set to 1.
	(MD_STARTFILE_PREFIX): Make /usr/gnu/lib the default.
	(MD_STARTFILE_PREFIX_1): Define.
	(MD_EXEC_PREFIX): Adjust to /usr/gnu/bin if using GAS.
	(DEFAULT_LINKER): Define if not specified to configure.
	(CTORS_SECTION_ASM_OP): Remove COFF crud.
	(DTORS_SECTION_ASM_OP): Remove COFF crud.
	(WINT_TYPE): Define.
	(SDB_DEBUGGING_INFO): Remove.
	(EXTRA_SECTIONS): Likewise.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(CTOR_LIST_BEGIN): Likewise.
	(CTOR_LIST_END): Likewise.
	(INIT_SECTION_FUNCTION): Likewise.
	(FINI_SECTION_FUNCTION): Likewise.
	(SUBTARGET_FRAME_POINTER_REQUIRED): Likewise.
	(LOCAL_LABEL_PREFIX): Likewise.
	(NON_SAVING_SETJMP): Likewise.
	(RETURN_POPS_ARGS): Likewise.
	(ASM_OUTPUT_SKIP): Likewise.
	(TARGET_ASM_NAMED_SECTION): Likewise.
	(ASM_OUTPUT_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.
	(ASM_OUTPUT_IDENT): Likewise.
	(ASM_OUTPUT_CASE_LABEL): Likewise.
	(ASM_OUTPUT_ASCII): Likewise.
	(ASM_OUTPUT_LIMITED_STRING): Likewise.
	(ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	(ASM_OUTPUT_ALIGNED_COMMON): Likewise.
	(ASM_GENERATE_INTERNAL_LABEL): Likewise.
	(ASM_FINISH_DECLARE_OBJECT): Likewise.
	(ASM_DECLARE_OBJECT_NAME): Likewise.
	(ASM_DECLARE_FUNCTION_SIZE): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(ASM_DECLARE_RESULT): Likewise.
	(ASM_WEAKEN_LABEL): Likewise.
	(SUPPORTS_WEAK): Likewise.
	(APPLY_RESULT_SIZE): Likewise.
	(LPREFIX): Likewise.
	(ALIGN_ASM_OP): Likewise.
	(ASCII_DATA_ASM_OP): Likewise.
	(IDENT_ASM_OP): Likewise.
	(ASM_SHORT): Likewise.
	(ASM_LONG): Likewise.
	(TYPE_ASM_OP): Likewise.
	(SIZE_ASM_OP): Likewise.
	(STRING_ASM_OP): Likewise.
	(SKIP_ASM_OP): Likewise.
	(EH_FRAME_SECTION_ASM_OP): Likewise.
	(READONLY_DATA_SECTION_ASM_OP): Likewise.
	(INIT_SECTION_ASM_OP): Likewise.
	(FINI_SECTION_ASM_OP): Likewise.
	(TEXT_SECTION_ASM_OP): Likewise.
	(DATA_SECTION_ASM_OP): Likewise.
	(TYPE_OPERANT_FORMAT): Likewise.
	(ASM_SPEC): Remove COFF code.
	(STARTFILE_SPEC): Likewise. Always use crti.o; add -p and -pp support;
	cause -pg to emit an error; use pcrt1elf.o with -pp
	(ENDFILE_SPEC): Likewise.
	(TARGET_OS_CPP_BUILTINS): Add _SCO_DS_LL.
	(CPP_SPEC): Remove COFF crud; always look in /usr/gnu/include first.
	(LINK_SPEC): Remove COFF crud; use -E for environment switch not -R;
	add -z alt_resolve to support weak symbols the way GCC wants them.
	(LIB_SPEC): Use the profiler libraries in -p or -pp mode.
	(LIBGCC_SPEC): Dont use -lgcc in -G mode.
	(ASM_PREFERED_EH_DATA_FORMAT): Remove.
	* config/i386/t-sco5 (TARGET_LIBGCC2_CFLAGS): Remove.
	(CRTSTUFF_T_CFLAGS_S): Define.
	(MULTILIB_OPTIONS): Likewise.
	(MULTILIB_DIRNAMES): Likewise.
	(MULTILIB_MATCHES): Likewise.
	(MULTILIB_EXTRA_OPTS): Likewise.
	(LIBGCC): Likewise.
	(INSTALL_LIBGCC): Likewise.
	(crti.o): Remove.
	* config/i386/t-sco5gas: Remove.
	* doc/install.texi: Updated for new OpenServer instructions.
	* testsuite/gcc.dg/nest.c: Allow failure on SCO (-pg not supported)

2003-04-19  Kean Johnston  <jkj@sco.com>

	* fixinc/check.tpl: Allow user to over-ride diff program.
	* fixinc/inclhack.def: Removed extraneous #ifndef SVR5.
	(sco_math): Added test for SCO math header files.
	(sco_regset): Added check for conflicts with ieeefp.h.
	(svr4_disable_opt): Removed extraneous #ifdef SVR4.
	* fixinc/fixincl.x: Regenerated
	* fixinc/tests/base/math.h: Added sco_math tests.
	* fixinc/tests/base/string.h: New file.
	* fixinc/tests/base/sys/regset.h: New file.

2003-04-19  Neil Booth  <neil@daikokuya.co.uk>

	* cpphash.h (struct cpp_buffer): Remove backup_to.
	* cpplex.c (BACKUP, get_effective_char): Die.
	(_cpp_skip_block_comment): Assume '*' is location on entry.
	(continues_identifier_p): Respect -fno-dollars-in-identifiers.
	(IF_NEXT_IS): Update.
	(_cpp_lex_direct): Don't use backup_to; look ahead directly.

2003-04-19  Matt Kraai  <kraai@alumni.cmu.edu>

	* README.Portability: Move to a new section and obsolete K+R
	portability issues.

Sat Apr 19 14:56:17 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (subreg_offset_representable_p):  Fix call of
	subreg_lowpart.

2003-04-19  Neil Booth  <neil@daikokuya.co.uk>

	* cpphash.h (struct cpp_reader): New member warned_dollar.
	* cpplex.c (continues_identifier_p): New function.
	(parse_identifier, parse_number, parse_string): Rename lex_identifer,
	lex_number and lex_string, and simplify.
	(parse_slow, unescaped_terminator_p): Die.
	(_cpp_lex_direct): Update.

2003-04-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* calls.c (expand_call): Provide init for old_stack_pointer_delta.

2003-04-19  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/invoke.texi (-fprofile-arcs): Mention -lgcov, locking and
	fork behavior.

2003-04-19  Neil Booth  <neil@daikokuya.co.uk>

	* cppexp.c (eval_token): Permit true and false even if pedantic.

2003-04-19  Neil Booth  <neil@daikokuya.co.uk>

	* cpplex.c (skip_whitespace): Rearrange to avoid stage1 ICE.

2003-04-19  Neil Booth  <neil@daikokuya.co.uk>

	* cppfiles.c (ENABLE_VALGRIND_CHECKING, VALGRIND_DISCARD,
	MMAP_THRESHOLD, TEST_THRESHOLD, SHOULD_MMAP): Remove.
	(struct include_file): Remove fefcnt, mapped members.
	(open_file, stack_include_file, _cpp_pop_file_buffer): Disable caching.
	(read_include_file): Don't use mmap, terminate buffers in '\r'.
	(purge_cache): Don't use munmap.
	* cpphash.h (CPP_BUF_COLUMN): Update.
	(lexer_state): Remove lexing_comment.
	(struct _cpp_line_note): New.
	(struct cpp_buffer): New members cur_note, notes_used, notes_cap,
	next_line and need_line.  Remove col_adjust and saved_flags.
	(_cpp_process_line_notes, _cpp_clean_line, _cpp_get_fresh_line,
	_cpp_skip_block_comment, scan_out_logical_line): New.
	(_cpp_init_mbchar): Remove.
	* cppinit.c (init_library): Remove call to _cpp_init_mbchar.
	(cpp_read_main_file): Set line to 1 earlier.
	(post_options): -traditional-cpp doesn't want trigraphs.
	* cpplex.c (MULTIBYTE_CHARS): Remove code predicated on this.
	(add_line_note, _cpp_clean_line, _cpp_process_line_notes,
	_cpp_get_fresh_line): New.
	(handle_newline, skip_escaped_newlines, trigraph_p,
	continue_after_nul, _cpp_init_mbchar): Remove.
	(get_effective_char): Update.
	(_cpp_skip_block_comment): Rename from skip_block_comment, simplify.
	(skip_line_comment): Simplify.
	(skip_whitespace, parse_identifier, parse_slow, parse_number,
	parse_string): Update.
	(cpp_lex_direct): Use clean lines and process line notes.  Update.
	(cpp_interpret_charconst): No MULTIBYTE_CHARS.
	* cpplib.c (prepare_directive_trad): Call scan_out_logical_line
	directly.
	(_cpp_handle_directive): Don't set saved_flags.
	(run_directive, destringize_and_run, cpp_define, cpp_define_builtin,
	cpp_undef, handle_assertion, cpp_push_buffer): Update.
	(_cpp_pop_buffer): Free notes.
	* cppmacro.c (builtin_macro, paste_tokens): \n terminate buffer.
	* cpppch.c (cpp_read_state): \n terminate buffer.
	* cpptrad.c (skip_escaped_newlines, handle_newline): Remove.
	(copy_comment): Use _cpp_skip_block_comment.
	(skip_whitespace, lex_identifier, _cpp_read_logical_line_trad):
	Simplify.
	(_cpp_overlay_buffer, _cpp_remove_overlay, push_replacement_text,
	save_replacement_text): Update.
	(scan_out_logical_line): Update to use clean lines and process
	line notes.
	* fix-header.c (read_scan_file): Update.

2003-04-18  Douglas B Rupp  <rupp@gnat.com>

	* unwind-dw2-fde.c (__register_frame_info_bases): Check for
	null begin parameter (as well as pointer to null).
	(__deregister_frame_info_bases): Likewise.

2003-04-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (purge_addressof_1): For ADDRESSOF, see if SUB is a
	hard or virtual register and copy into pseudo if replacement fails.

	* cfgcleanup.c (flow_find_cross_jump): Use INSN_P, not active_insn_p.

	* expmed.c (mask_rtx): Avoid undefined shifts for BITSIZE of 0.

2003-04-18  Olivier Hainque <hainque@act-europe.fr>

	* calls.c (expand_call): Move special case for constructor calls
	to right place. Ensures constructor calls used to initialize
	arguments get a clean outgoing argument block for themselves.
	Move check for stack deallocation completeness until after last
	deallocation.  Add stack_pointer_delta to set of state
	variables saved and restored along with current stack_level.

	* integrate.c (expand_inline_function): Ensure non-const actuals
	don't end up const in the caller's flow after conversion to possibly
	const formal type.

2003-04-18  Vincent Celier  <celier@gnat.com>

	* dwarf2out.c (loc_descriptor_from_tree): Treat all *_MOD_EXPR
	and *_DIV_EXPR as TRUNC_*_EXPR.

2003-04-18  Mark Mitchell  <mark@codesourcery.com>

	* cfgrtl.c (try_redirect_by_replacing_jump): Create a basic block
	for orphaned jump tables.

2003-04-18  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c: Revert my previous patch on 2002-04-17.

2003-04-18  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Prefer "bug fix" over "bugfix".
	Add Segher Boessenkool.

2003-04-18  Alexander Sotirov  <sluncho@mirizma.org>

	PR c/9177
	* c-decl.c (c_expand_body): Don't garbage collect the function
	body if we are going to dump it later.

2003-04-18  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (SYMBOL_FLAG_NEAR, SYMBOL_FLAG_SAMEGP): Remove.
	(alpha_end_function): Don't set them.
	(decl_in_text_section): Remove.
	(alpha_encode_section_info): Remove.
	(samegp_function_operand): Use SYMBOL_REF LOCAL_P and EXTERNAL_P.
	(direct_call_operand): Use SYMBOL_REF_DECL and compare actual
	sections, rather than decl_in_text_section results.

2003-04-18  Roger Sayle  <roger@eyesopen.com>

	* rtlanal.c (reg_overlap_mentioned_p): Handle ZERO_EXTRACT
	and SIGN_EXTRACT.

2003-04-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/7675
	* c-typeck.c (build_external_ref): Set the DECL_NONLOCAL flag
	on VAR_DECL, PARM_DECL and FUNCTION_DECL from within
	nested functions if they refer to declarations from parent functions.
	* stmt.c (expand_decl): Don't put automatic variables in registers
	if the DECL_NONLOCAL flag is set.

2003-04-18  Hans-Peter Nilsson  <hp@bitrange.com>

	* gcse.c (compute_ld_motion_mems): For MEM destinations, only
	consider those to be movable where the source matches
	want_to_gcse_p.
	(update_ld_motion_stores): In comment, refer to
	compute_ld_motion_mems for validity of replacement.

Fri Apr 18 01:28:51 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* gcov-dump.c (tag_summary): Remove max_sum
	* gcov-io.h (gcov_summary, gcov_write_summary,
	gcov_read_summary): Kill max_sum.
	* libgcov.c (gcov_exit): Do one pass over the data.  Make error
	message more verbose.

	* emit-rtl.c (subreg_hard_regno):  Check that register is
	representable.

	* reload.c (reload_inner_reg_of_subreg):  When register is not
	representable, reload the whole thing.
	(find_reloads): Likewsie.
	* rtlanal.c (subreg_representable_p):  New function.

	* profile.c (compute_branch_probabilities):  Cleanup sanity checking;
	allow negative probabilities for edges from the call to exit.
	(branch_prob): Do not add fake edges for functions that may return
	twice.

2003-04-17  DJ Delorie  <dj@redhat.com>

	* toplev.c (target_options): Add value field.
	(set_target_switch): Handle target options with	values.
	* doc/tm.texi: Document how fixed vs variable target
	options work.
	* config/alpha/alpha.h, config/arc/arc.h, config/avr/avr.h,
	config/c4x/c4x.h, config/cris/aout.h, config/cris/cris.h,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/frv/frv.h, config/i386/i386.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/m88k/m88k.h, config/mcore/mcore.h,
	config/mips/mips.h, config/mmix/mmix.h, config/pa/pa.h,
	config/rs6000/rs6000.h, config/rs6000/sysv4.h,
	config/s390/s390.h, config/sparc/sparc.h, config/v850/v850.h:
	Add value initializer to target options.

2003-04-07  Loren James Rittle  <ljrittle@acm.org>

	* cpppch.c (cpp_valid_state): Unconditionally initialize nl.

2003-04-17  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (move2add_last_cc0): New.
	(reload_cse_move2add): Detect implicit sets.
	(move2add_note_store): Notice a store into cc0.

2003-04-17  Roger Sayle  <roger@eyesopen.com>

	PR c/10375
	* c-decl.c (duplicate_decls): Preserve "const" and "noreturn"
	function attributes.

2003-04-17  Janis Johnson  <janis187@us.ibm.com>

	* doc/sourcebuild.texi (Test Suites): Document support for testing
	binary compatibility (moved from testsuite/README.compat).

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_in_small_data_p): Disallow strings.

2003-04-17  Simon Law  <sfllaw@engmail.uwaterloo.ca>

	* doc/include/gpl.texi: Fix double-spacing after "MA" to match
	the one provided by the FSF.

2003-04-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Binaries): Update URL and list of platforms
	provided by ftp.thewrittenword.com.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/xtensa/xtensa.c (xtensa_encode_section_info): Remove.
	(call_insn_operand): Use SYMBOL_REF_LOCAL_P.
	* config/xtensa/xtensa.md (call, call_value): Likewise.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/v850/v850.c (print_operand): Use SYMBOL_REF_[ZST]DA.
	(print_operand_address): Likewise.
	(ep_memory_operand): Likewise.
	(special_symbolref_operand): Likewise.
	(v850_encode_data_area): Use SYMBOL_REF_FLAGS.
	(v850_encode_section_info): Call default_encode_section_info.
	(v850_strip_name_encoding): Remove.
	* config/v850/v850.h (EXTRA_CONSTRAINT): Use SYMBOL_REF_[ZST]DA.
	(ASM_OUTPUT_LABELREF): Remove.
	(ZDA_NAME_FLAG_CHAR, ZDA_NAME_P): Remove.
	(SDA_NAME_FLAG_CHAR, SDA_NAME_P): Remove.
	(TDA_NAME_FLAG_CHAR, TDA_NAME_P): Remove.
	(ENCODED_NAME_P): Remove.
	(SYMBOL_FLAG_ZDA, SYMBOL_REF_ZDA_P): New.
	(SYMBOL_FLAG_SDA, SYMBOL_REF_SDA_P): New.
	(SYMBOL_FLAG_TDA, SYMBOL_REF_TDA_P): New.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_encode_section_info): Kill.
	* config/stormy16/stormy16.h (ASM_OUTPUT_SYMBOL_REF): Use
	SYMBOL_REF_FUNCTION_P.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (sparc_encode_section_info): Remove.
	(data_segment_operand): Use SYMBOL_REF_FUNCTION_P.
	(text_segment_operand): Likewise.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/sh/sh.c (gen_datalabel_ref): Don't add SH_DATALABEL_ENCODING.
	(tls_symbolic_operand): Use SYMBOL_REF_TLS_MODEL.
	(legitimize_pic_address): Use SYMBOL_REF_LOCAL_P.
	(sh_encode_section_info): Remove.
	(sh_strip_name_encoding): Remove.
	* config/sh/sh.h (SH_DATALABEL_ENCODING): Remove.
	(DATALABEL_SYMNAME_P, STRIP_DATALABEL_ENCODING): Remove.
	(SH_TLS_ENCODING, TLS_SYMNAME_P, STRIP_TLS_ENCODING): Remove.
	(ASM_OUTPUT_LABELREF): Remove.
	(ASM_OUTPUT_SYMBOL_REF): Use SYMBOL_REF_FUNCTION_P.
	* config/sh/sh.md (*): Use SYMBOL_REF_LOCAL_P.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/s390/s390.c (SYMBOL_FLAG_ALIGN1): New.
	(tls_model_chars): Remove.
	(larl_operand): Use SYMBOL_REF_FLAGS.
	(tls_symbolic_operand): Use SYMBOL_REF_TLS_MODEL.
	(legitimize_pic_address): Use SYMBOL_REF_LOCAL_P.
	(s390_output_mi_thunk): Likewise.
	(s390_emit_prologue): Set SYMBOL_FLAG_LOCAL as needed.
	(s390_function_profiler): Likewise.
	(s390_encode_section_info): Use default_encode_section_info
	and SYMBOL_FLAG_ALIGN1.
	(s390_strip_name_encoding): Remove.
	* config/s390/s390.h (ASM_OUTPUT_LABELREF): Remove.
	* config/s390/s390.md (call, call_value): Use SYMBOL_REF_LOCAL_P.
	(builtin_setjmp_receiver): Set SYMBOL_FLAG_LOCAL as needed.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/ns32k/ns32k.c (ns32k_encode_section_info): Remove.
	(global_symbolic_reference_mentioned_p): Use SYMBOL_REF_LOCAL_P.
	(print_operand_address): Likewise.

	* config/ns32k/ns32k.h (CANNOT_CHANGE_MODE_CLASS): Add CLASS argument.
	* config/ns32k/ns32k.c (expand_block_move): Don't check
	flag_unroll_loops.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/mcore/mcore.c (mcore_encode_section_info): Don't set
	SYMBOL_REF_FLAG.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* rtl.h (SYMBOL_FLAG_MACH_DEP_SHIFT): New.

	* config/m32r/m32r.c (SYMBOL_FLAG_MODEL_SHIFT): New.
	(SYMBOL_REF_MODEL): New.
	(LIT_NAME_P): Move from m32r.h.
	(m32r_select_section): Remove.
	(m32r_encode_section_info): Use SYMBOL_REF_FLAGS.
	(m32r_strip_name_encoding): Remove.
	(m32r_in_small_data_p): New.
	(small_data_operand): Use SYMBOL_REF_SMALL_P.
	(addr24_operand): Use SYMBOL_REF_MODEL.
	(call26_operand): Likewise.
	(addr32_operand): Tidy.
	(m32r_print_operand): Use HOST_WIDE_INT_PRINT_HEX.
	* config/m32r/m32r.h (RODATA_SECTION_ASM_OP): Remove.
	(SDATA_SECTION_ASM_OP, SBSS_SECTION_ASM_OP): Remove.
	(READONLY_DATA_SECTION_ASM_OP): Remove.
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove.
	(SDATA_SECTION_FUNCTION, SBSS_SECTION_FUNCTION): Remove.
	(TARGET_ASM_SELECT_SECTION): Remove.
	(SDATA_FLAG_CHAR, MEDIUM_FLAG_CHAR, LARGE_FLAG_CHAR): Remove.
	(SDATA_NAME_P, SMALL_NAME_P, MEDIUM_NAME_P): Remove.
	(LARGE_NAME_P, ENCODED_NAME_P): Remove.
	(ASM_OUTPUT_LABELREF): Remove.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/ip2k/ip2k.c (is_regfile_address): Use SYMBOL_REF_FUNCTION_P.
	(encode_section_info): Remove.
	* config/ip2k/ip2k-protos.h: Update.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* varasm.c (default_encode_section_info): Don't set
	SYMBOL_FLAG_EXTERNAL if not TREE_PUBLIC.
	* config/i370/i370.c (i370_encode_section_info): Remove.
	* config/i370/i370.h (CONSTANT_ADDRESS_P): Use SYMBOL_REF_EXTERNAL_P.
	(PRINT_OPERAND, PRINT_OPERAND_ADDRESS): Likewise.
	* config/i370/i370.md (movsi): Likewise.

	* config/i370/t-i370: Add missing backslash.

2003-04-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (inline-limit): Fix pasto.

2003-04-17  Richard Henderson  <rth@redhat.com>

	* config/h8300/h8300.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): New.
	(small_call_insn_operand): Use it.
	(SYMBOL_FLAG_EIGHTBIT_DATA): New.
	(h8300_eightbit_constant_address_p): Use it.
	(SYMBOL_FLAG_TINY_DATA): New.
	(h8300_tiny_constant_address_p): Use it.
	(h8300_encode_label, h8300_strip_name_encoding): Remove.
	(h8300_encode_section_info): Set SYMBOL_REF_FLAGS.
	* config/h8300/h8300.h (TINY_DATA_NAME_P): Remove.
	(ASM_OUTPUT_LABELREF): Remove.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/frv/frv.c (symbol_ref_small_data_p): Remove.  Replace
	all users with SYMBOL_REF_SMALL_P.
	(const_small_data_p): Use SYMBOL_REF_SMALL_P.
	(frv_encode_section_info): Remove.
	(frv_strip_name_encoding): Remove.
	(frv_in_small_data_p): Merge tests from encode_section_info.
	(frv_print_operand): Use '@' not SDATA_FLAG_CHAR.
	* config/frv/frv.h (SDATA_FLAG_CHAR): Remove.
	(SDATA_NAME_P): Remove.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use SIZE not SDATA_NAME_P.
	(ASM_OUTPUT_LABELREF): Remove.
	(PRINT_OPERAND_PUNCT_VALID_P): Use '@' not SDATA_FLAG_CHAR.

	* config/frv/frv.c (frv_asm_out_constructor): New.
	(frv_asm_out_destructor): New.
	* config/frv/frv.h (CTORS_SECTION_ASM_OP): New.
	(DTORS_SECTION_ASM_OP): New.
	(ASM_OUTPUT_CONSTRUCTOR): Remove.
	(ASM_OUTPUT_DESTRUCTOR): Remove.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/cris/cris.c (cris_gotless_symbol, cris_got_symbol): Use
	SYMBOL_REF_LOCAL_P; abort if not pic.
	(cris_encode_section_info): Remove.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/c4x/c4x.c (c4x_encode_section_info): Remove.
	(c4x_T_constraint): Use SYMBOL_REF_FUNCTION_P.

	* config/c4x/c4x.h (TARGET_CPU_CPP_BUILTINS): Declare
	flag_inline_trees.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/avr/avr.c (avr_encode_section_info): Remove.
	(avr_insert_attributes): New.
	(print_operand_address): Use SYMBOL_REF_FUNCTION_P.
	(avr_assemble_integer): Likewise.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* arc.c (arc_encode_section_info): Remove.
	(arc_assemble_integer): Use SYMBOL_REF_FUNCTION_P.
	(arc_print_operand, arc_print_operand_address): Likewise.
	* arc.h (EXTRA_CONSTRAINT): Likewise.

2003-04-16  Roger Sayle  <roger@eyesopen.com>

	* c-semantics.c (find_reachable_label): New function to find a
	potentially reachable label in an expression.
	(expand_unreachable_if_stmt): Similar to expand_if_stmt but
	assumes the start of the IF_STMT is unreachable (dead) code.
	(expand_unreachable_stmt): Similar to expand_stmt but assumes
	the start of the statement list is unreachable (dead) code.
	(genrtl_if_stmt):  If the controlling expression of the IF
	is constant, use expand_unreachable_stmt for the THEN or ELSE
	clause as appropriate.
	(genrtl_switch_stmt):  Use expand_unreachable_stmt to expand
	the body of a SWITCH statement.
	(expand_stmt): The code immediately following a "return",
	"break", "continue" or "goto" is unreachable.
	* Makefile.in (c-semantics.o): Depend upon tree-inline.h.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* rtl.h (MEM_ALIAS_SET): Update documentation.
	* doc/rtl.texi (Special Accessors): New node.
	(SYMBOL_REF_FLAG): Note relationship with SYMBOL_REF_FLAGS.

2003-04-16  Alexandre Oliva  <aoliva@redhat.com>

	* reload1.c (reload_cse_noop_set_p): Return false if mode of
	SET_DEST is not the same as that returned by...
	* cselib.h (cselib_reg_set_mode): ... new function.
	* cselib.c (cselib_reg_set_mode): Define it.
	(REG_VALUES): Document semantics of first element as set mode.
	(cselib_subst_to_values): Skip first element if ELT is NULL.
	(cselib_lookup): Likewise.  Insert past the first element.
	(cselib_invalidate_regno): NULLify first element.
	(cselib_record_set): Set first element.

2003-04-16  Olivier Hainque <hainque@act-europe.fr>

	* tree.c (skip_simple_arithmetics_at, saved_expr_p): New functions.
	(save_expr): Replace loop by call to skip_simple_arithmetics_at.
	* tree.h: Add prototypes for the two new functions.
	* fold-const.c (fold_binary_op_with_conditional_arg): Replace test
	updates introduced in the previous revision by call to saved_expr_p.
	* stor-layout.c (put_pending_size): Use skip_simple_arithmetics_at.

	* expr.c (store_field): Force usage of bitfield instructions when
	the field position requires it, whatever SLOW_UNALIGNED_ACCESS.
	(expand_expr, case BIT_FIELD_REF): likewise.

2003-04-16  Mark Mitchell  <mark@codesourcery.com>

	PR middle-end/8866
	* cfgtrl.c (try_redirect_by_replacing_jump): Do not delete
	jumptables.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (sdata_symbolic_operand): Use
	SYMBOL_REF_SMALL_P and SYMBOL_REF_LOCAL_P.
	(tls_symbolic_operand): Use SYMBOL_REF_TLS_MODEL.
	(function_operand): Use SYMBOL_REF_FUNCTION_P.
	(ia64_expand_load_address): Likewise.
	(ia64_assemble_integer): Likewise.
	(ia64_encode_section_info): Remove.
	(ia64_strip_name_encoding): Remove.
	* config/ia64/ia64.h (ENCODE_SECTION_INFO_CHAR): Remove.
	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Don't strip it.

2003-04-16  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (SYMBOL_FLAG_NEAR, SYMBOL_FLAG_SAMEGP): New.
	(samegp_function_operand): Use SYMBOL_FLAG_SAMEGP.
	(direct_call_operand): Use SYMBOL_FLAG_NEAR.
	(local_symbolic_operand): Use SYMBOL_REF_LOCAL_P.
	(small_symbolic_operand): Use SYMBOL_REF_SMALL_P.
	(global_symbolic_operand): Similarly.
	(tls_symbolic_operand_1): Use SYMBOL_REF_TLS_MODEL.
	(tls_symbolic_operand_type): Likewise.
	(alpha_encode_section_info): Use default_encode_section_info.
	(alpha_strip_name_encoding): Remove.
	(get_tls_get_addr): Split out from ...
	(alpha_legitimize_address): ... here.
	(alpha_emit_xfloating_libcall): Use init_one_libfunc.
	(get_some_local_dynamic_name_1): Use SYMBOL_REF_TLS_MODEL.
	(alpha_initialize_trampoline): Use init_one_libfunc.
	(alpha_setup_incoming_varargs): Mark unused parameters.
	(alpha_initial_elimination_offset): Likewise.
	(alpha_end_function): Use SYMBOL_FLAG_NEAR, SYMBOL_FLAG_SAMEGP.
	(unicosmk_unique_section): Use default_strip_name_encoding.
	(unicosmk_ssib_name, unicosmk_output_externs): Likewise.

2003-04-16  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Add t-spe for eabispe.

	* config/rs6000/t-spe: New.

2003-04-16  J"orn Rennecke <joern.rennecke@superh.com>

	Re-apply this patch:

	2002-05-16  Dale Johannesen  <dalej@apple.com>
	  * combine.c (cant_combine_insn_p):  Reenable combinations
	  involving hard regs unless CLASS_LIKELY_SPILLED_P.

2003-04-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR/10271
	* pa-protos.h (function_arg): Remove last argument.
	* pa.c (function_arg): Likewise.  Use CUMULATIVE_ARGS struct instead.
	* pa.h (struct hppa_args): Add member incoming.
	(INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Initialize
	member incoming.
	(FUNCTION_ARG): Revise call to function_arg.
	(FUNCTION_INCOMING_ARG): Delete.

2003-04-15  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Unify the code which creates symlinks to a
	just-built as, ld, objdump, and nm with the code that detects
	their presence for purposes of feature tests.
	* configure: Regenerate.

2003-04-15  Zack Weinberg  <zack@codesourcery.com>

	* varasm.c (output_constant_def): Do not consult
	CONSTANT_AFTER_FUNCTION_P.  Remove all code predicated on it.
	(after_function_constants, output_after_function_constants): Delete.
	* doc/tm.texi: Delete documentation of CONSTANT_AFTER_FUNCTION_P.
	* config/mips/mips-protos.h, config/mips/mips.c
	(mips16_constant_after_function_p): Delete.
	* config/mips/mips.h: Delete #if-0-ed definition of
	CONSTANT_AFTER_FUNCTION_P.
	* config/d30v/d30v.h, config/stormy16/stormy16.h: Remove
	mention of CONSTANT_AFTER_FUNCTION_P in comment.

2003-04-15  Geoffrey Keating  <geoffk@apple.com>

	* tree.c (next_decl_uid): Mark with GTY.
	(next_type_uid): Likewise.

2003-04-15  J"orn Rennecke <joern.rennecke@superh.com>

	PR target/9594:
	* sh.c (barrier_align): Also recognize stuff_delay_slot as
	an indicator that a barrier was created by branch splitting.

2003-04-15  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (implicitly_declare): Copy declarations that are going
	to be placed in a local scope.

2003-04-15  James A. Morrison  <ja2morri@uwaterloo.ca>

	* invoke.texi (Spec Files): Wrap if-exists-else example.
	(MCore): Remove duplicate @itemx entries and @opindex entries.

2003-04-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* unwind.inc (_Unwind_Backtrace): New function.
	* unwind.h (_Unwind_Backtrace): Declare it.
	* libgcc-std.ver (_Unwind_Backtrace): Export it.

2003-04-14  Jason Merrill  <jason@redhat.com>

	PR middle-end/10336, c++/10401
	* jump.c (never_reached_warning): Also stop looking if we reach the
	beginning of the function.

2003-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR target/10338
	PR bootstrap/10198
	PR bootstrap/10140
	* fixinc/gnu-regex.c (regerror): Use mempcpy not __mempcpy.

2003-04-15  J"orn Rennecke <joern.rennecke@superh.com>

	* i386.md (abssf2_if+1): Make condition agree with abssf2_1 .

2003-04-15  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* optabs.c (expand_binop): In multi-word add cases, ensure
	XTARGET is copied to TARGET if they are different.

2003-04-15  Olivier Hainque <hainque@act-europe.fr>

	* except.c (resolve_fixup_regions): Avoid dereferencing null pointer
	to region, possible after integration of function with unreachable
	regions that were optimized away.

2003-04-15  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.h (EPILOGUE_USES): Use register 2,
	instead of TOC_REGISTER in epilogue in
	current_function_calls_eh_return functions.

2003-04-14  Mark Mitchell  <mark@codesourcery.com>

	* doc/extend.texi (Empty Structures): Correct description of G++'s
	handling of these structures.

	* c-decl.c (grokdeclarator): Reject extern redeclarations of
	static variables.

2003-04-14  Janis Johnson  <janis287@us.ibm.com>

	* config/rs6000/rs6000.md (define_constants): Define constants for
	all UNSPEC usage, including new values for TLS support.
	(aux_truncdfsf2, fctiwz, movsi_got, movsi_got_internal,
	load_toc_aix_si, load_toc_aix_di, load_toc_v4_pic_si,
	load_toc_v4_PIC_1, load_toc_v4_PIC_1b, load_macho_picbase,
	macho_correct_pic, blockage, move_from_CR_ov_bit, movesi_from_cr,
	stack_tie, movsi_to_cr_one, movsi_to_cr, mtcrfsi, eh_set_lr_si,
	eh_set_lr_di): Use them.
	* rs6000.c: (mtcrf_operation, uses_TOC, rs6000_emit_prologue,
	rs6000_emit_epilogue) Use them.

	* rtl.h (SYMBOL_REF_TLS_MODEL): Fix mask value.

2003-04-14  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (c-opts.o): Use custom action.

2003-04-14  Douglas B Rupp  <rupp@gnat.com>

	* ifcvt.c (noce_process_if_block): Fail on BLKmode move.

2003-04-14  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_type, case ARRAY_TYPE): Add missing code to
	handle "superflat arrays" in Ada.

	* integrate.c (expand_inline_function): Don't inline if would
	lose /u on a BLKmode TARGET.

2003-04-14  Joel Brobecker  <brobecker@gnat.com>

	* dbxout.c (print_int_cst_bounds_in_octal_p): New function,
	extracted from dbxout_type.
	(dbxout_range_type): print large bounds in octal format.
	(dbxout_type): Replace extracted code by call to
	print_int_cst_bounds_in_octal_p.

	* dwarf2out.c (gen_compile_unit_die): Emit DW_LANG_Ada95 instead
	of DW_LANG_Ada83 for Ada units.

2003-04-14  Olivier Hainque <hainque@act-europe.fr>

	* explow.c (round_push): Use HOST_WIDE_INT instead of int for the
	temporary used to round CONST_INT sizes.

	* tree.c (int_fits_type_p): Extract generic checks from the case
	of constant type bounds. Refine the checks against constant type
	bounds to allow for possible decisions against each of these bounds
	without requiring both bounds to be constant.
	(tree_int_cst_msb): Put back.
	* tree.h (tree_int_cst_msb): Likewise.

	* global.c (global_conflicts): Prevent allocation of call clobbered
	hard regs to pseudos live across abnormal edges, as later passes are
	not ready to handle them.

	* fold-const.c (fold): Reorder tests for conditional expressions.

	* expr.c (highest_pow2_factor): Return unsigned.
	* expr.h (offset_address): Likewise.
	* emit-rtl.c (offset_address): POW2 argument now unsigned.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_strlen):  Evaluate the lengths of
	string literals at compile-time.

2003-04-14  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold):  Transform (c1 - x) cmp c2, where cmp is a
	comparison operation and c1/c2 are floating point constants into
	x swap(cmp) (c1 - c2).

2003-04-14  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (output_translate_vect): Fix a typo in loop
	condition.

2003-04-14  Hans-Peter Nilsson  <hp@axis.com>

	PR target/10377
	* config/cris/cris.md ("*mov_sideqi", "*mov_sidehi")
	("*mov_sidesi", "*mov_sideqi_mem", "*mov_sidehi_mem")
	("*mov_sidesi_mem", "*clear_sidesi", "*clear_sidehi")
	("*clear_sideqi", "*ext_sideqihi", "*ext_sideqisi")
	("*ext_sidehisi", "*op_sideqi", "*op_sidehi", "*op_sidesi")
	("*op_swap_sideqi", "*op_swap_sidehi", "*op_swap_sidesi")
	("*extopqihi_side", "*extopqisi_side", "*extophisi_side")
	("*extopqihi_swap_side", "*extopqisi_swap_side")
	("*extophisi_swap_side", 8th, 9th, 10th, 11th, 14th peepholes):
	When next to constraint R, replace constraint i with n.

Mon Apr 14 16:18:37 CEST 2003  Jan Hubicka  <jh@suse.cz>

	PR opt/10024
	* cfgrtl.c (force_nonfallthru_and_redirect): Use unchecked_make_edge.

2003-04-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	* doc/contrib.texi (Contributors): Correct my entry.

2003-04-13  Roger Sayle  <roger@eyesopen.com>

	* tree.h (DECL_BUILT_IN_NONANSI): Remove.
	* c-common.c (builtin_function_2): Don't set DECL_BUILT_IN_NONANSI.
	* c-decl.c (duplicate_decls): Use invariant DECL_BUILT_IN_NONANSI
	implies DECL_BUILT_IN to simplify logic.
	* print-tree.c (print_node): Don't dump DECL_BUILT_IN_NONANSI.

2003-04-13  Roger Sayle  <roger@eyesopen.com>

	* builtin-types.def (BT_FN_STRING_CONST_STRING): New builtin type.
	(BT_FN_PTR_SIZE_SIZE): Likewise.
	* builtins.def (BUILT_IN_MALLOC, BUILT_IN_CALLOC, BUILT_IN_STRDUP):
	New built-in functions for malloc, calloc and strdup respectively.
	* calls.c (special_function_p): No need to handle malloc-like
	functions any longer.  ECF_MALLOC is set via built-in attributes.

	* c-decl.c (duplicate_decls): Preserve pure and malloc attributes.

	* doc/extend.texi: Document these new built-in functions.

2003-04-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_memcpy): Add `endp' argument, use it.
	(expand_builtin_stpcpy): New.
	(expand_builtin): Add BUILT_IN_MEMPCPY & BUILT_IN_STPCPY.
	* builtins.def: Add mempcpy & stpcpy support.
	* doc/extend.texi (mempcpy, stpcpy): Document new builtins.

2003-04-13  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/rs6000.c: Replace occurrences of "GNU CC" with
	"GCC".
	* config/rs6000/40x.md, config/rs6000/603.md,
	config/rs6000/6xx.md, config/rs6000/7450.md, config/rs6000/7xx.md,
	config/rs6000/8540.md, config/rs6000/aix.h, config/rs6000/aix31.h,
	config/rs6000/aix3newas.h, config/rs6000/aix41.h,
	config/rs6000/aix43.h, config/rs6000/aix51.h,
	config/rs6000/aix52.h, config/rs6000/altivec-defs.h,
	config/rs6000/altivec.h, config/rs6000/altivec.md,
	config/rs6000/beos.h, config/rs6000/darwin.h,
	config/rs6000/eabi.h, config/rs6000/eabialtivec.h,
	config/rs6000/eabisim.h, config/rs6000/eabispe.h,
	config/rs6000/freebsd.h, config/rs6000/gnu.h,
	config/rs6000/host-darwin.c, config/rs6000/linux.h,
	config/rs6000/linux64.h, config/rs6000/linuxaltivec.h,
	config/rs6000/lynx.h, config/rs6000/mach.h, config/rs6000/mpc.md,
	config/rs6000/netbsd.h, config/rs6000/power4.md,
	config/rs6000/rios1.md, config/rs6000/rios2.md,
	config/rs6000/rs6000-c.c, config/rs6000/rs6000-modes.def,
	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/rs6000/rs6000.md,
	config/rs6000/rs64.md, config/rs6000/rtems.h, config/rs6000/spe.h,
	config/rs6000/spe.md, config/rs6000/sysv4.h,
	config/rs6000/sysv4le.h, config/rs6000/vxworks.h,
	config/rs6000/windiss.h, config/rs6000/xcoff.h: Likewise.

2003-04-13  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Delete
	support for -mcall-aix switch.
	* config/rs6000/eabiaix.h: Delete.
	* config/rs6000/rs6000.h (rs6000_abi): Remove ABI_AIX_NODESC.
	(RS6000_REG_SAVE, RS6000_SAVE_AREA, FP_ARGS_MAX_REG,
	RETURN_ADDRESS_OFFSET): Remove use of ABI_AIX_NODESC.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Likewise.
	* config/rs6000/rs6000.c (print_operand, rs6000_stack_info,
	debug_stack_info, output_function_profiler,
	rs6000_trampoline_size, rs6000_initialise_trampoline): Likewise.
	* config/rs6000/rs6000.md (call, call_value, call_nonlocal_sysv,
	call_indirect_nonlocal_sysv, call_value_indirect_nonlocal_sysv,
	call_value_nonlocal_sysv, sibcall_value_nonlocal_sysv,
	sibcall_nonlocal_sysv, sibcall_value_local64): Likewise.
	* config/rs6000/t-ppcgas (MULTILIB_OPTIONS): Remove mcall-aix
	multilibs.
	(MULTILIB_DIRNAMES): Remove mcall-aix directories.
	(MULTILIB_EXCEPTIONS): Delete.
	(MULTILIB_MATCHES): Remove mcall-aix matches.

	* doc/fragments.texi: Replace -mcall-aix example with an ARM
	one.
	* doc/install.texi: Delete powerpc-*-eabiaix target.
	* doc/invoke.texi: Remove documentation of mcall-aix switch.
	* doc/tm.texi: Remove mcall-aix from example CPP_SPEC.
	* config.gcc: Delete powerpc-*-eabiaix target.

2003-04-13  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Fix typos.
	* doc/tm.texi: Likewise.

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

	* c-typeck.c (digest_init, push_init_level): Use CONSTRUCTOR_ELTS.

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

	* tree.c (build_constructor): New function.
	* tree.h: Prototype it.

	* c-typeck.c (build_c_cast, pop_init_level)
	* profile.c (build_function_info_value, build_gcov_info_value)
	(create_profiler):
	Use build_constructor.

	* builtins.c (expand_builtin_args_info): Remove #if 0 blocks.

	* objc/objc-act.c (build_constructor):
	Rename objc_build_constructor. Use build_constructor.
	(build_objc_string_object, objc_add_static_instance)
	(init_def_list, init_objc_symtab, init_module_descriptor)
	(generate_static_references, build_selector_translation_table)
	(build_descriptor_table_initializer, generate_descriptor_table)
	(build_protocol_initializer, build_ivar_list_initializer)
	(generate_ivars_list, build_dispatch_table_initializer)
	(generate_dispatch_table, generate_protocol_list)
	(build_category_initializer, build_shared_structure_initializer):
	Update to match.

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

	* intl.h: #define gcc_gettext_width to strlen when !ENABLE_NLS.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11-protos.h
	(m68hc11_eq_compare_operator): Declare
	* config/m68hc11/m68hc11.h (PREDICATE_CODES): Register new predicate.
	* config/m68hc11/m68hc11.c (m68hc11_eq_compare_operator): New predicate
	(d_register_operand): Check the operand mode.
	(hard_addr_reg_operand): Likewise.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("decrement_and_branch_until_zero"): New
	pattern for dbcc/ibcc generation for 68HC12.
	("doloop_end"): New pattern.
	("m68hc12_dbcc_dec_hi"): New pattern for dbeq/dbne.
	("m68hc12_dbcc_inc_hi"): New pattern for ibeq/ibne.
	("m68hc12_dbcc_dec_qi"): New pattern.
	("m68hc12_dbcc_inc_qi"): New pattern.
	(split): Add split for the above when we can't use dbcc/ibcc due to
	reloading.
	(peephole2): Add peephole2 to generate the above when possible.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("bitcmpqi" split): No need to test the
	mode of operand 0.
	(peephole2 optimize const load): Likewise for operand 2.
	("*rotlhi3_with_carry"): Change pattern to a const 1 rotate which
	clobbers CC_REGNUM.
	("*rotrhi3_with_carry"): Likewise.
	(ashift:DI 1 split): Update pattern to create the above rotate.
	(lshiftrt:DI 1 split): Likewise.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md (SOFT_Z_REGNUM): New constant.
	("tstqi_z_used" split): Use it.
	("cmphi_z_used"): Likewise.
	("bitcmpqi_z_used"): Likewise; also use SP_REGNUM constant.
	("cmpqi_z_used"): Likewise.

2003-04-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/7910
	* config/i386/winnt.c (i386_pe_mark_dllimport): Fix thinko.

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

	* configure.in: Check for wchar.h, mbstowcs, and wcswidth.
	* configure, config.in: Regenerate.
	* intl.c (gcc_gettext_width): New function.
	* intl.h: Prototype it.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (TARGET_SWITCHES): Fix -mnominmax option;
	recognize -mnorelax.
	(reg_class): Add Z_OR_S_REGS to represent soft registers with Z
	(REG_CLASS_NAMES): Add its name.
	(REG_CLASS_CONTENTS): Define its content.

2003-04-12  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/larith.asm (memcpy): Use ARG macro to access stack
	parameters so that offsets are valid for far definition.
	(__mulsi3): Likewise and use ret to return.
	(___adddi3, ___subdi3, ___notdi2, ): Don't use it to save the result.

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

	* config/rs6000/rs6000.c (rs6000_hash_constant): Skip '0' fields.

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

	* mklibgcc.in (libgcc-stage-start): For every multilib  directory
	containing a libgcc.a, move lib* to the corresponding stage dir.

	* Makefile.in (stage1-start, stage2-start, stage3-start,
	stage4-start): Move $(SPECS) to specs in stage dir.
	(unstage1 unstage2 unstage3 unstage4): Move specs in stage dir
	back as $(SPECS).

	* mklibgcc.in (libgcc-stage-start): Move into the stage directory
	object files from the non-libgcc/ multilib directories as well.

2003-04-11  Geoffrey Keating  <geoffk@apple.com>

	* profile.c (read_counts_file): Initialise 'checksum'.

	* emit-rtl.c (gen_rtx): Really correct typo.

	PR c++/9393
	* doc/invoke.texi (Debugging Options): Document -frandom-seed.
	* configure.in: Check for gettimeofday.
	* tree.c (flag_random_seed): Define.
	(default_flag_random_seed): New.
	(append_random_chars): Use flag_random_seed rather than trying
	to acquire randomness here.
	* tree.h (default_flag_random_seed): Declare.
	* toplev.c (display_help): Add -frandom-seed and -fstack-limit-*
	descriptions.
	(decode_f_option): Handle -frandom-seed.
	(print_switch_values): Call default_flag_random_seed.
	* flags.h (flag_random_seed): Declare.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/alpha/t-crtfm: Use -frandom-seed.

	* doc/extend.texi (Empty Structures): New.

	* c-pch.c: Include flags.h.  Add comments to routines.
	(struct c_pch_validity): New.
	(get_ident): Update PCH file version number.
	(pch_init): Output current debugging type.
	(c_common_valid_pch): Check debugging type.
	* Makefile.in (c-pch.o): Update dependencies.
	* flags.h (debug_type_names): Declare.
	* toplev.c (debug_type_names): Move out of decode_g_option.

2003-04-11  Eric Christopher  <echristo@redhat.com>

	* emit-rtl.c (gen_rtx): Fix typos.

2003-04-11  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (gen_rtx): Zero '0' fields.

2003-04-11  Richard Henderson  <rth@redhat.com>

	PR c++/10202
	* expr.c (expand_expr): Use COMPLETE_OR_UNBOUND_ARRAY_TYPE_P
	not COMPLETE_TYPE_P for re-invoking layout_decl.

2003-04-11  Simon Law  <sfllaw@engmail.uwaterloo.ca>

	* doc/bugreport.texi: Fix paragraph breaking between sections
	in preparation for TeXinfo's paragraph indentation fixes.
	* doc/extend.texi: Ditto.
	* doc/invoke.texi: Ditto.
	* doc/objc.texi: Ditto.
	* doc/gcov.texi: Wrap 'gcov' in @command{}.
	* doc/invoke.texi (Darwin Options): Add a preamble.

2003-04-11  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (tls_model_chars): Remove.
	(ix86_encode_section_info, ix86_strip_name_encoding): Remove.
	(local_symbolic_operand): Use SYMBOL_REF_LOCAL_P.
	(tls_symbolic_operand): Use SYMBOL_REF_TLS_MODEL.
	(tls_symbolic_operand_1): Likewise.
	(legitimate_pic_address_disp_p): Use SYMBOL_REF_LOCAL_P.
	* config/i386/i386.h (TARGET_ENCODE_SECTION_INFO): Remove.
	(TARGET_STRIP_NAME_ENCODING, ASM_OUTPUT_LABELREF): Remove.
	* config/i386/winnt.c (i386_pe_encode_section_info): Replace
	bits "copied from i386.h" with default_encode_section_info.

2003-04-11  Richard Henderson  <rth@redhat.com>

	* rtl.def (SYMBOL_REF): Add two 0 fields.
	* gengtype.c (adjust_field_rtx_def): Handle them.
	* print-rtl.c (print_rtx): Print them.
	* rtl.h (SYMBOL_REF_DECL, SYMBOL_REF_FLAGS): New.
	(SYMBOL_FLAG_FUNCTION, SYMBOL_REF_FUNCTION_P): New.
	(SYMBOL_FLAG_LOCAL, SYMBOL_REF_LOCAL_P): New.
	(SYMBOL_FLAG_SMALL, SYMBOL_REF_SMALL_P): New.
	(SYMBOL_FLAG_TLS_SHIFT, SYMBOL_REF_TLS_MODEL): New.
	(SYMBOL_FLAG_EXTERNAL, SYMBOL_REF_EXTERNAL_P): New.
	(SYMBOL_FLAG_MACH_DEP): New.
	* optabs.c (init_one_libfunc): Zap fake SYMBOL_REF_DECL.
	* varasm.c (make_decl_rtl): Set SYMBOL_REF_DECL.
	(assemble_static_space): Set SYMBOL_REF_FLAGS.
	(assemble_trampoline_template): Likewise.
	(output_constant_def, force_const_mem): Likewise.
	(default_encode_section_info): New.
	* output.h: Declare it.
	* target-def.h (TARGET_ENCODE_SECTION_INFO): Use it.

2003-04-11  Richard Henderson  <rth@redhat.com>

	* libfuncs.h (LTI_setbits, LTI_gcov_flush, LTI_gcov_init): New.
	(setbits_libfunc, gcov_flush_libfunc, gcov_init_libfunc): New.
	* optabs.c (init_optabs): Initialize them.
	(init_libfuncs): Use init_one_libfunc.
	* calls.c (expand_call): Use gcov_flush_libfunc.
	* expr.c (store_constructor): Use setbits_libfunc.
	* function.c (expand_main_function): Use init_one_libfunc.
	* profile.c (create_profiler): Use gcov_init_libfunc and DECL_RTL.

2003-04-11  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi (Functions): Remove DECL_REAL_CONTEXT
	documentation; add DECL_FRIEND_CONTEXT.

2003-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi (hppa): Update links for HP-UX patches.  Revise
	notes on linker selection and configuration for 64-bit HP-UX port.
	* doc/invoke.texi (hppa): Remove hppa text from description for
	-ffunction-sections and -fdata-sections.  Document -static, -nolibdld
	and -threads options.

	* pa-hpux10.h (LIB_SPEC): Add link options to resolve dependency of
	libc.a on libdld.sl when -static is specified and -nolibdld is not
	specified.
	* pa64-hpux.h (LIB_SPEC): Likewise.
	* pa-hpux11.h (LIB_SPEC): Likewise.
	(LINK_SPEC): Add __gcc_plt_call as an undefined symbol when -shared
	is not specified.

2003-04-11  Zack Weinberg  <zack@codesourcery.com>

	* config/darwin-c.c (darwin_pragma_unused): Use lookup_name,
	not IDENTIFIER_LOCAL_VALUE.

2003-04-11  Richard Henderson  <rth@redhat.com>

	PR c/10201
	* expr.c (expand_expr): Move DECL_RTL frobbing ...
	* stor-layout.c (layout_decl): ... here.

2003-04-11  James A. Morrison <ja2morri@uwaterloo.ca>

	* doc/invoke.texi: Eliminate extra white-space caused by
	@gccoptlist{ on its own line.
	* doc/invoke.texi: Ensured there are two spaces between each option.
	* doc/invoke.texi: Re-wrapped option lines that were too wide.
	Added @gol to options that didn't have them.

2003-04-11  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (loop-init.o): Do not depend on gcov-io.h,
	gcov-iov.h.

	Simplify interface to gcov reading and writing.
	* gcov-io.h (gcov_file, gcov_position, gcov_length, gcov_buffer,
	gcov_alloc, gcov_modified, gcov_errored): Move into ...
	(struct gcov_var gcov_var): ... this static structure.
	(gcov_write_unsigned, gcov_write_counter, gcov_write_string):
	Return void.
	(gcov_read_unsigned, gcov_read_couter, gcov_read_string): Return
	read object.
	(gcov_read_bytes, gcov_write_bytes): Set error flag on error.
	(gcov_reserve_length): Remove.
	(gcov_write_tag): New.
	(gcov_write_length): Adjust.
	(gcov_read_summary, gcov_write_summary): Adjust.
	(gcov_eof, gcov_ok): Rename to ...
	(gcov_is_eof, gcov_is_error): ... here. Return error code.
	(gcov_save_position, gcov_resync): Rename to ...
	(gcov_position, gcov_seek): ... here.
	(gcov_skip, gcov_skip_string): Remove.
	(gcov_error): Remove.
	(gcov_open, gcov_close): Adjust.
	* gcov.c (find_source): Take const char *, copy it on allocation.
	(read_graph_file): Adjust.
	(read_count_file): Adjust.
	* libgcov.c (gcov_exit): Adjust.
	* gcov-dump.c (tag_function, tag_blocks, tag_arcs, tag_lines,
	tag_arc_counts, tag_summary): Return void. Adjust.
	(struct tag_format): Adjust proc member.
	(dump_file): Adjust gcov calls.

2003-04-11  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (fixinc.sh): Pass BUILD_LIBERTY as LIBERTY to
	mkfixinc.sh.
	* fixinc/mkfixinc.sh (defs): Add LIBERTY.
	* configure.in (STMP_FIXINC, STMP_FIXPROTO): Don't disable on
	build != host sysrooted builds.
	* configure.in (SYSTEM_HEADER_DIR): Make sure it contains
	TARGET_SYSTEM_ROOT even on sysrooted natives.
	* configure: Rebuilt.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct binding_level): Add shadowed_tags and
	function_body; remove this_block, tag_transparent, and
	subblocks_tag_transparent; update comments.
	(clear_binding_level, lookup_tag_reverse): Kill.
	(make_binding_level): Use ggc_alloc_cleared or memset.
	(lookup_tag): Remove struct binding_level* parameter.  All
	callers changed. Just look at IDENTIFIER_TAG_VALUE, and
	current_binding_level->tags if asked for thislevel_only or if
	we might have to diagnose "struct foo; union foo;"
	(pushlevel): Ignore argument.  Do not push another binding
	level on the transition from the parameters to the top level
	of the function body; just tweak the flags and proceed.
	(poplevel): Overhaul.  Clear IDENTIFIER_TAG_VALUEs; on exiting
	a function body, separate the parameter list from the
	top-level local variables.
	(set_block): Do nothing.
	(pushtag): Set IDENTIFIER_TAG_VALUE and add an entry to
	shadowed_tags if necessary.
	(warn_if_shadowing): Nuke the special case for local shadowing
	parameter.
	(pushdecl): Do not create a shadow entry if we are replacing
	an older decl in the same binding level.
	(pushdecl_function_level): Tweak for new way of indicating
	function scope.
	(shadow_tag_warned): Use TYPE_NAME, not	lookup_tag_reverse.
	(start_function): Don't set subblocks_tag_transparent.
	(finish_function): Fix up the binding_level stack for totally
	empty functions.  Otherwise, don't call poplevel.

	* c-common.c (shadow_warning): MANDATORY argument is no longer
	necessary.  Always use plain warning.
	* c-common.h: Update to match.

	* cfglayout.c (scope_to_insns_initialize): Clear block when we
	hit the FUNCTION_DECL.
	* function.c: Do not create cyclic tree structure.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h (struct lang_identifier): Replace global_value,
	local_value members with symbol_value, tag_value.  Kill
	implicit_decl and limbo_value.
	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_LOCAL_VALUE,
	IDENTIFIER_LIMBO_VALUE, IDENTIFIER_IMPLICIT_DECL,
	C_MISSING_PROTOTYPE_WARNED): Kill.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE,
	C_DECL_IMPLICIT, C_DECL_ISNT_PROTOTYPE): New.
	(C_DECL_ANTICIPATED): Rename to C_DECL_INVISIBLE.
	(implicit_decl_warning, lookup_name_current_level,
	record_function_scope_shadow): Don't prototype.
	(pushdecl_function_level): Prototype.

	* c-decl.c (truly_local_externals): New variable.
	(struct binding_level): Adjust commentary.
	(get_function_binding_level, clear_limbo_values,
	record_function_scope_shadow): Kill.
	(lookup_name_current_level, implicit_decl_warning): Are	now static.
	(any_external_decl, record_external_decl): New static functions.
	(clone_underlying type): Split out of pushdecl.
	(c_print_identifier): Update to match changes to struct
	lang_identifier.
	(poplevel): Delete #if 0 block.  Make externals invisible
	instead of clearing their IDENTIFIER_SYMBOL_VALUEs.  Don't
	call clear_limbo_values.  Refer to IDENTIFIER_SYMBOL_VALUE not
	IDENTIFIER_GLOBAL_VALUE or IDENTIFIER_LOCAL_VALUE.
	(duplicate-decls): For real parm decl after a forward decl,
	set TREE_ASM_WRITTEN here.  Allow void foo(...) followed by
	foo(...) { } with only a warning.  Say whether a previous
	declaration was implicit.
	(warn_if_shadowing): Now handles all shadowing, not just
	local-over-local.  Clarify comments.
	(pushdecl): Rewritten.  There is no longer a distinction
	between global and local symbol values; they're all
	IDENTIFIER_SYMBOL_VALUE.  Call record_external_decl on all
	DECL_EXTERNAL decls, and use any_external_decl to check
	against previous externals.  Kill #if 0 blocks.  Don't
	tolerate error_mark_node being NULL.
	(pushdecl_top_level): Handle only those cases which
	Objective C (the only user) needs.
	(pushdecl_function_level): New function.
	(implicitly_declare): Create ordinary decls with
	C_DECL_IMPLICIT set.  Recycle old decls, however they got
	created.
	(lookup_name): It's always IDENTIFIER_SYMBOL_VALUE. Return 0
	for C_DECL_INVISIBLE symbols.
	(lookup_name_current_level): Likewise.  Use chain_member.
	(c_make_fname_decl): Don't muck with DECL_CONTEXT.
	Use pushdecl_function_level.
	(builtin_function): Use C_DECL_INVISIBLE.
	(start_function): Don't muck with IDENTIFIER_IMPLICIT_DECL.
	Use C_DECL_ISNT_PROTOTYPE and C_DECL_IMPLICIT.
	(store_parm_decls): It's IDENTIFIER_SYMBOL_VALUE now.
	(identifier_global_value): Same.  Must scan
	global_binding_level in extremis.

	* c-typeck.c (undeclared_variable): New static function, split
	from build_external_ref.
	(build_external_ref): Use DECL_CONTEXT, not
	IDENTIFIER_LOCAL_VALUE, to decide whether a local hides
	an instance variable.  Restructure for clarity.
	* objc/objc-act.c: Use identifier_global_value, not
	IDENTIFIER_GLOBAL_VALUE.

2003-04-08  Jonathan Wakely  <redi@gcc.gnu.org>

	* doc/extend.texi (Template Instantiation): Refer to ISO standard,
	not Working Paper.
	* doc/invoke.texi (C++ Dialect Options): Same.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* tree.c (tree_operand_check_failed): New function.
	* tree.h (TREE_OPERAND_CHECK, TREE_OPERAND_CHECK_CODE,
	TREE_RTL_OPERAND_CHECK): New checking macros.
	(TREE_OPERAND, SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL,
	RTL_EXPR_SEQUENCE, RTL_EXPR_RTL, WITH_CLEANUP_EXPR_RTL,
	CONSTRUCTOR_ELTS, LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
	EXIT_BLOCK_RETURN, LOOP_EXPR_BODY, EXPR_WFL_NODE,
	EXPR_WFL_FILENAME_NODE, EXPR_WFL_FILENAME, TARGET_EXPR_SLOT,
	TARGET_EXPR_INITIAL, TARGET_EXPR_CLEANUP): Use the new
	checking macros.

Thu Apr 10 23:52:30 CEST 2003  Jan Hubicka  <jh@suse.cz>

	PR inline-asm/8803
	* function.c (instantate_virtual_regs):  Verify that all ASM statements
	match after the virutal regs instantiation.

2003-04-10  Steve Ellcey  <sje@cup.hp.com>

	* ia64-protos.h (addp4_optimize_ok): New.
	* ia64.c (addp4_optimize_ok): New.
	* ia64.md (*ptr_extend_plus_1): Use addp4_optimize_ok.
	(*ptr_extend_plus_2): Ditto.

2003-04-10  Steve Ellcey  <sje@cup.hp.com>

	* expr.c (expand_assignment): Extend offset_rtx with convert_to_mode
	not with convert_memory_address.
	(store_constructor): Ditto, and same for copy_size_rtx.
	(expand_expr): Ditto.

2003-04-10  Douglas B Rupp  <rupp@gnat.com>

	* config/i386/i386.c (ix86_ms_bitfield_layout_p): Fix formatting.

2003-04-10  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib2funcs.S (__xtensa_sync_caches): Flush data cache
	even if it is configured to be write-through.

2003-04-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (larl_operand): Do not allow symbols
	marked with '@'.
	(s390_encode_section_info): Mark symbols with forced 1-byte
	alignment with '@'.
	(s390_strip_name_encoding): Strip '@'.
	(legitimize_pic_address): Handle symbols that are not valid
	LARL operands in 64-bit mode.

2003-04-10  Andrew Haley  <aph@redhat.com>

	* tree-inline.c (inlinable_function_p): Disable inlining for
	synchronized methods.

2003-04-09  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.h (lang_statement_code_p): Remove declaration.
	(statement_code_p): Ditto.
	(c_common_stmt_codes): Define; list of c-common statement codes.
	(statement_code_p): New extern declaration.
	(STATEMENT_CODE_P): Define.
	(INIT_STATEMENT_CODES): Define.
	* c-common.c (statement_code_p): Kill the function, declare
	as an array of bools instead.
	(lang_statement_code_p): Remove.
	(walk_stmt_tree): Use STATEMENT_CODE_P not statement_code_p.
	(c_safe_from_p): Ditto.
	* c-objc-common.c (c_objc_common_init): Use INIT_STATEMENT_CODES
	to initialize the statement_code_p array.
	* tree-inline.c (walk_tree): Use STATEMENT_CODE_P instead of
	statement_code_p.
	(copy_tree_r): Ditto.
	* cp/cp-tree.h (cp_stmt_codes): Define; list of C++ specific
	statement tree codes.
	* cp/lex.c (cxx_init): Add missing print line break.  Use
	INIT_STATEMENT_CODES to initialize the statement_code_p array.
	* cp/parser.c (cp_parser_statement): Use STATEMENT_CODE_P
	instead of statement_code_p.
	* cp/pt.c (tsubst_expr): Ditto.
	* cp/tree.c (verify_stmt_tree_r): Ditto.
	(cp_statement_code_p): Remove.
	(init_tree): Don't set lang_statement_code_p, it's gone.

2003-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
	    Zack Weinberg  <zack@codesourcery.com>

	* regrename.c (struct du_chain): Use a bitfield for reg_class.
	* cse.c (struct qty_table_elem, struct table_elt, struct set):
	Use bitfields for fields holding enum rtx_code or
	enum machine_mode values.  Add comments explaining size choices.

2003-04-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.c (unpack_d): Handle pair of doubles with
	different signs correctly.

2003-04-09  Vladimir Makarov  <vmakarov@redhat.com>

	* sched-deps.c (reg_pending_barrier_mode): New enumeration.
	(reg_pending_barrier): Make it of the enumeration type.
	(sched_analyze_2): Define the barrier as MOVE_BARRIER or
	TRUE_BARRIER.
	(sched_analyze): Ditto.
	(sched_analyze_insn): Ditto.  Use anti-dependencies for
	MOVE_BARRIER and true-dependencies as TRUE_BARRIER.
	(init_deps_global): Initialize the barrier as NO_BARRIER.

2003-04-09  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (issue_nops_and_insn): Add new parameter.
	Check that asm insn starts on a new cycle.  Add nops after asm
	insn to end bundle.
	(bundling): Move insn type evaluation from the loop.  Call
	issue_nops_and_insn with the new parameter.  Ignore changing
	position for nops after asm insn.

2003-04-09  Alexandre Oliva  <aoliva@redhat.com>

	* optabs.c: Comment that gen_add2_insn and others may actually
	return emitted insns, if the gen functions turn out to return
	emitted insns.
	* reload1.c (reload_cse_move2add): Cope with emitted insns from
	gen_add2_insn.

2003-04-09  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (move_operand): Allow symbolic_operand,
	but not tls_symbolic_operand.
	(ia64_expand_load_address): Remove scratch operand.
	(ia64_expand_tls_address): Split out from ia64_expand_move.
	(ia64_expand_move): Split symbolics only after reload.
	(ia64_emit_cond_move): New.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.md (movsi_symbolic, movdi_symbolic): Remove.
	(symbolic splitter): Accept SImode operands too.
	(cmove splitter): Use ia64_emit_cond_move.

2003-04-09  Nick Clifton  <nickc@redhat.com>

	* doc/install.texi: Note that ARM toolchains need binutils 2.13 or
	newer.
	* config/arm/elf.h (SUBTARGET_ASM_FLOAT_SPEC): Pass -mfpu=softfpa
	instead of -mno-fpu.
	* config/arm/semi.h (ASM_SPEC): Likewise.
	* config/arm/xscale-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise,
	but only if -msoft-float is specified pass.  Otherwise pass
	-mfpu=softvfp.

2003-04-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* function.c (purge_addressof): Use free_INSN_LIST_node instead of
	free_EXPR_LIST_node.

2003-04-08  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold):  Use "fold" following build in more places.
	Optimize sqrt(x)*sqrt(x) as x, pow(x,y)*pow(z,y) as pow(x*z,y),
	pow(x,y)*pow(x,z) as pow(x,y+z) and x/pow(y,z) as x*pow(y,-z).

2003-04-08  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin):  Constant fold expressions as x*0.5
	instead of x/2.0.  Optimize sqrt(pow(x,y)) as pow(x,y*0.5),
	log(pow(x,y)) as y*log(x), pow(exp(x),y) as exp(x*y),
	pow(sqrt(x),y) as pow(x,y*0.5) and pow(pow(x,y),z) as pow(x,y*z).
	Delete function scope "fcode" variable to avoid shadowing.

2003-04-08  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2out.c (DWARF_ARANGES_HEADER_SIZE, DWARF_ARANGES_PAD_SIZE):
	Take into account DWARF_INITIAL_LENGTH_SIZE.

2003-04-08  Hans-Peter Nilsson  <hp@axis.com>

	* reorg.c (fill_slots_from_thread): When considering changing the
	insn following a reg-to-reg copy insn to use the source reg of the
	copy, bail out if there's overlap between the registers.

2003-04-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* function.c (postponed_insns): New.
	(purge_addressof_1): Postpone processing of insns if addressofs
	are not put into stack.
	(purge_addressof): Process postponed insns.

2003-04-08  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (NORMAL_MODE): If interrupt handler and TARGET_FMOVD,
	this is FP_MODE_DOUBLE .
	* sh.c (ra.h): #include.
	(push_regs): Add second parameter.  Changed all callers.
	If necessary, set fpscr before saving floating point registers.
	(calc_live_regs): If interrupt handler and TARGET_FMOVD, always
	do saves / restores with SZ == 1.
	(sh_expand_prologue): If interrupt handler, don't use gen_toggle_sz.
	(sh_expand_epilogue): Likewise.  For TARGET_FMOVD, if floating point
	registers are being restored, restore FPSCR only after restoring them.

2003-04-08  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_init_builtins): Set opaque types
	regardless of architecture.
	(spe_init_builtins): Change V2SI and V2SF types to opaque types.

2003-04-08  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (push_regs, calc_live_regs): Return int.  Take single
	HARD_REG_SET * parameter.  Changed all callers.

Tue Apr  8 11:12:07 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (legitimate_pic_address_disp_p): Do not accept PLUS in the
	GOTOFF operand.
	(legitimize_pic_address): Move plus outside the unspec.
	* i386.c (legitimate_constant_p):  Check (CONST (PLUS (UNSPEC ...
	for validity.

2003-04-08  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h (gcov_save_position): Remove __inline__ from
	declaration.

2003-04-07  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi: Use @command and @samp for single- and
	multi-word commands respectively.
	* doc/makefile.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.

2003-04-07  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>
	    Richard Henderson  <rth@redhat.com>

	PR c/9516
	* expr.c (safe_from_p): Rearrange to avoid deep recursion in
	favor of looping and tail recursion for TREE_LIST and binops.

2003-04-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop.h (REGNO_FIRST_LUID, REGNO_LAST_LUID): Provide defaults
	for insns without luid.

2003-04-07  Glen Nakamura  <glen@imodulo.com>

	PR opt/8634
	* explow.c (maybe_set_unchanging): Don't flag non-static const
	aggregate type initializers with RTX_UNCHANGING_P.

2003-04-07  Richard Henderson  <rth@redhat.com>

	PR opt/8634
	* function.c (purge_addressof_1): Don't try arithmetics for
	unchanging memories.

2003-04-07  Janis Johnson  <janis187@us.ibm.com>

	* doc/sourcebuild.texi (Test Suites): Document testing support for
	gcov and profile-directed optimizations; describe gcc.misc-tests.

Mon Apr  7 22:19:59 CEST 2003  Jan Hubicka  <jh@suse.cz>

	PR target/10077
	* i386.md (movsi_1, movsi_nointerunit_1):  Fix SSEMOV alternative.

2003-04-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/rtl.texi (Comparison operations): Update to
	record the allowed comparison modes.

2003-04-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_common_init_builtins): Rename all
	V2SI_type_node to opaque_V2SI_type_node.  Rename all
	V2SF_type_node to opaque_V2SF_type_node.
	(rs6000_init_builtins): Define opaque_V2SI_type_node and
	opaque_V2SF_type_node.
	(is_ev64_opaque_type): The types opaque_V2SI_type_node and
	opaque_V2SF_type_node are opaque types.

2003-04-07  J"orn Rennecke <joern.rennecke@superh.com>

	* gcse.c (replace_store_insn): Use single_set.

2003-04-07  Nathan Sidwell  <nathan@codesourcery.com>

	Change gcov file interface to single file at a time.
	* gcov-io.h: Replace IN_LIBGCC1 with IN_LIBGCOV. Use IN_GCOV.
	Convert to C89 prototypes.
	(gcov_file, gcov_length, gcov_position, gcov_buffer, gcov_alloc,
	gcov_error, gcov_modified): New static variables.
	(gcov_open, gcov_close, gcov_read_bytes, gcov_write_bytes): New
	functions.
	(gcov_write_unsigned, gcov_write_counter, gcov_write_string,
	gcov_read_unsigned, gcov_read_counter, gcov_read_string): Adjust.
	(gcov_read_summary, gcov_write_summary): Adjust.
	(gcov_save_position, gcov_reserve_length, gcov_write_length):
	Adjust.
	(gcov_resync, gcov_skip, gcov_skip_string): Adjust.
	(da_file_open, da_file_close, da_file_eof, da_file_error): Remove.
	(da_file_position, da_file_seek, da_file_write, da_file_read):
	Remove.
	(gcov_error, gcov_eof, gcov_ok, gcov_time): New functions.
	* gcov.c (gcov_type): Don't typedef here.
	(IN_GCOV): #define
	(read_graph_file, read_count_file): Adjust.
	* gcov-dump.c (gcov_type): Don't typedef here.
	(IN_GCOV): #define.
	(tag_function, tag_blocks, tag_arcs, tag_lines, tag_arc_counts):
	Remove FILE parameter, adjust.
	(struct tag_format): Adjust proc member.
	(dump_file): Adjust.
	* libgcov.c (IN_LIBGCOV): #define.
	(gcov_exit): Adjust.
	* loop-init.c: Don't #include gcov-io.h
	* profile.c (struct counts_entry): New structure to hold counter
	values.
	(struct section_reference, struct da_index_entry): Remove.
	(bbg_file, da_file): Remove.
	(htab_counts_index_hash, htab_counts_index_eq,
	htab_counts_index_del): Replace with ...
	(htab_counts_entry_hash, htab_counts_entry_eq,
	htab_counts_entry_del): ... these.
	(cleanup_counts_index, index_counts_file): Remove.
	(read_counts_file): New function.
	(get_exec_counts): Adjust.
	(compute_branch_probabilities): Don't free the exec counts here.
	(branch_prob): Adjust.
	(init_branch_prob): Adjust.
	(end_branch_prob): Adjust.

2003-04-07  Aldy Hernandez  <aldyh@redhat.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
	-mfloat-gprs.

	* config/rs6000/rs6000.c: Delete rs6000_fprs.
	Declare rs6000_float_gprs.
	Declare rs6000_float_gprs_string.
	(rs6000_parse_float_gprs_option): New.
	(rs6000_override_options): Genericize rs6000_parse_* calls to use
	rs6000_parse_yes_no_option.
	Change check for cpu=8540, to use TARGET_E500.
	(rs6000_parse_isel_option): Delete.
	(rs6000_parse_spe_option): Delete.
	(rs6000_parse_vrsave_option): Delete.

	* config/rs6000/rs6000.h: Rename rs6000_fprs to rs6000_float_gprs.
	Define rs6000_float_gprs_string.
	(TARGET_OPTIONS): Add rs6000_float_gprs option.

	* config/rs6000/eabi.h (TARGET_FPRS): Change to use rs6000_float_gprs.

	* config/rs6000/eabispe.h: Set rs6000_float_gprs.

Mon Apr  7 14:36:24 CEST 2003  Jan Hubicka  <jh@suse.cz>

	PR opt/10024
	* cfglayout.c (cfg_layout_redirect_edge):
	Redirect any branch edges unified with the fallthru one.
	* cfgrtl.c (force_nonfallthru_and_redirect):  Do not special
	case fallthru edges when called via cfglayout.c

2003-04-07  J"orn Rennecke <joern.rennecke@superh.com>

	* c-typeck.c (output_init_element): Check for type == error_mark_node.

2003-04-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*zero_extendqisi2_h8300hs): Always
	split.
	(a splitter): Do zero-extension via HImode.

2003-04-07  James A. Morrison <ja2morri@uwaterloo.ca>

	* doc/invoke.texi: Eliminate extra white-space caused by
	@gccoptlist{ on its own line.
	* doc/invoke.texi: Ensured there are two spaces between each option.
	* doc/invoke.texi: Re-wrapped option lines that were too wide.
	Added @gol to options that didn't have them.

2003-04-07  James A Morrison <ja2morri@student.math.uwaterloo.ca>

	* doc/extend.texi (Darwin Pragmas): Fix spelling of Mac OS.

2003-04-06  Zack Weinberg  <zack@codesourcery.com>

	* tree.c (tree_size): For all 'c' and 'x' nodes, look directly
	at the sizes of the relevant structures, rather than relying
	on TREE_CODE_LENGTH.  Call lang_hooks.tree_size to get the
	sizes of any such we don't know about.  Use
	lang_hooks.identifier_size for IDENTIFIER_NODE.

	(initializer_zerop): Use CONSTRUCTOR_ELTS.
	* tree.def: Update commentary.  Make fourth element of
	the definition for all 'c' and 'x' nodes zero.

	* langhooks.h: New hook, tree_size / LANG_HOOKS_TREE_SIZE.
	* langhooks-def.h: Update to match.
	* langhooks.c: New default, lhd_tree_size.

	* c-common.def (SRCLOC): Kill.
	* c-pretty-print.c (pp_c_postfix_expression [case SRCLOC]):
	Remove entirely - was already #if-ed out.


2003-04-06  Zack Weinberg  <zack@codesourcery.com>

	* mklibgcc.in: Use a here document to avoid running afoul of
	shells that generate control-A from "echo \1".

2003-04-06  Aldy Hernandez  <aldyh@redhat.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Document -mspe
	option.

	* config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
	rs6000_spe.

	* config/rs6000/eabi.h (TARGET_E500): Define.

	* config/rs6000/rs6000.h (TARGET_E500): Define.
	(TARGET_OPTIONS): Add spe= option.
	Declare rs6000_spe and rs6000_spe_string extern.

	* config/rs6000/rs6000.c (branch_positive_comparison_operator):
	Change TARGET_SPE to TARGET_E500.
	(ccr_bit): Change TARGET_SPE to TARGET_E500.  Check for
	!TARGET_FPRS.
	(print_operand): Same.
	(rs6000_generate_compare): Same.
	(output_cbranch): Same.
	(rs6000_spe): Declare.
	(rs6000_spe_string): Declare.
	(rs6000_override_options): Call rs6000_parse_spe_option.
	(rs6000_parse_spe_option): New.

2003-04-06  Steven Bosscher  <steven@gcc.gnu.org>

	* hashtable.c (gcc_obstack_init): Delete this function
	and everything related to it.
	* hashtable.h: Remove prototype.
	* bitmap.c (bitmap_element_allocate): Cleanup redundant
	defines.  Cleanup some unnecessary whitespace.
	* defaults.h (obstack_chunk_alloc): Redefine with
	appropriate casts for libiberty obstacks.
	(obstack_chunk_free): Ditto.
	(OBSTACK_CHUNK_SIZE): Define, default to 0.
	(gcc_obstack_init): Define as a call to _obstack_begin.
	* tree.c (print_obstack_statistics): Delete this unused
	function.
	* tree.h (obstack): Don't forward-declare.
	(print_obstack_statistics): Delete prototype.
	(print_obstack_name): Ditto.
	(gcc_obstack_init): Ditto.
	* rtl.h (gcc_obstack_init): Ditto.
	* java/jv-scan.c (gcc_obstack_init): Delete this
	function, its prototype and related defines.
	* java/jvgenmain.c (gcc_obstack_init): Delete this
	function, and related defines.
	* java/parse-scan.y (obstack_chunk_alloc): Don't define.
	(obstack_chunk_free): Ditto

2003-04-06  Geoffrey Keating  <geoffk@apple.com>

	* dbxout.c (dbxout_handle_pch): Move prototype out from
	#if defined DBX_DEBUGGING_INFO.

2003-04-05  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov.c (struct arc_info): Replace local_span with cycle.
	(struct block_info): Replace u.span with u.cycle. Add is_call_return.
	(solve_flow_graph): Set is_call_return.
	(add_line_counts): Adjust. In block mode, blocks attach to last line.
	(accumulate_line_counts): Find graph cycles, not spanning tree.
	(output_branch_count): Adjust.
	(output_lines): Adjust.
	* doc/gcov.texi: Update.

2003-04-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*zero_extendqisi2_h8300hs): Change
	the second alternative to "#".

2003-04-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (single_one_operand): Use GET_MODE_MASK.
	(single_zero_operand): Likewise.

2003-04-05  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (df.o):  Depend on alloc-pool.h, not obstack.h.
	* df.c: Include alloc-pool.h, not obstack.h.
	(df_ref_obstack): Remove.
	(df_ref_pool, df_link_pool): Add pools.
	(df_alloc): Init the new pools.
	(df_free): And free them.
	(df_link_create): Use the pools.
	(df_ref_create): Ditto.

2003-04-05  Kazu Hirata  <kazu@cs.umass.edu>

	* simplify-rtx.c: Fix formatting.

2003-04-05  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/rs6000.c (addrs_ok_for_quad_peep): Allow addr2
	reg with reg1 == reg2 and offset1 = -8.

2003-04-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Halve Power4
	multiply costs.  Correct Power4 divide costs.
	* config/rs6000/power4.md: Restore multiply and FP latency.

2003-04-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* alias.c (find_base_term): Export.
	* rtl.h (find_base_term): Declare.
	* gcse.c (find_moveable_store): Test for flag_non_call_exceptions
	instead of flag_exceptions.  Move test for parameter passing ...
	(store_killed_in_insn): ... here.

2003-04-05  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	PR bootstrap/10267
	* doc/install.texi (*-*-solaris2): /bin/ksh is not just recommended
	for configuring.

2003-04-04  Geoffrey Keating  <geoffk@apple.com>

	* dbxout.c (scope_labelno): Add GTY.
	(have_used_extensions): Add GTY.
	(source_label_number): Add GTY.
	(lastfile): Add GTY.
	(lastfile_is_base): New.
	(base_input_file): New.
	(dbxout_handle_pch): New.
	(dbx_debug_hooks): Add handle_pch.
	(xcoff_debug_hooks): Likewise.
	(dbxout_function_end): Remove scope_labelno.
	(dbxout_init): Set base_input_file.
	(dbxout_handle_pch): New.
	(dbxout_source_file): Honour lastfile_is_base.
	* dwarfout.c (dwarf_debug_hooks): Add dummy handle_pch.
	* sdbout.c (sdb_debug_hooks): Add dummy handle_pch.
	* vmsdbgout.c (vmsdbg_debug_hooks): Add dummy handle_pch.
	* dwarf2out.c (dwarf2_debug_hooks): Add dummy handle_pch.
	* debug.c (do_nothing_debug_hooks): Add dummy handle_pch.
	* debug.h (struct gcc_debug_hooks): Add handle_pch.
	* c-pch.c (pch_init): Don't call start_source_file, but do call
	handle_pch.
	(c_common_write_pch): Call handle_pch.
	(c_common_read_pch): Don't call start_source_file,
	or end_source_file.

Fri Apr  4 17:43:52 2003  Olivier Hainque <hainque@act-europe.fr>

	* emit-rtl.c (get_mem_attrs): Adjust alignment tests determining
	use of default attributes to agree MEM_ALIGN macro.

Fri Apr  4 17:33:24 2003  Joel Brobecker  <brobecker@gnat.com>

	* dbxout.c (dbxout_type): When printing type index of range type
	whose bounds are printed in octal format, print type of parent type if
	it exists so enumerated type descriptions are not transformed
	into unsigned types.

2003-04-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	compute_a_shift_cc.
	* config/h8300/h8300.c (shift_one): Update the CC status.
	(shift_two): Likewise.
	(output_a_shift_cc): Set cc_inline and cc_special.
	(compute_a_shift_cc): New.
	* config/h8300/h8300.md (shift insns): Use compute_a_shift_cc.

2003-04-04  Richard Henderson  <rth@redhat.com>

	* cse.c (fold_rtx): Fix 03-30 change; do check insn non-null.

2003-04-04  Loren James Rittle  <ljrittle@acm.org>

	* fixinc/inclhack.def (bsd_stdio_attrs_conflict): New.
	* fixinc/fixincl.x: Rebuilt.
	* fixinc/tests/base/stdio.h: Regenerated.

2003-04-04  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov.c (accumulate_line_counts): Fix span tree merge bug.

Fri Apr  4 15:58:52 2003  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (ACTUAL_NORMAL_MODE): New macro, broken out of
	(NORMAL_MODE).
	* sh.c (fpscr_set_from_mem): Use ACTUAL_NORMAL_MODE.

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

	* doc/contrib.texi (Contributors): Add entries for Wolfgang
	Bangerth, DJ Delorie, Christian Ehrhardt, Christopher Faylor,
	Nathanael Nerode, Diego Novillo, Hartmut Penner, Volker Reichelt,
	Danny Smith, and Ulrich Weigand.
	Update Kriang Lerdsuwanakij and fix a typo in Janis Johnson's
	entry.

2003-04-04  Nick Clifton  <nickc@redhat.com>

	* config/sparc/sol2-bi.h: Revert previous delta.
	* config/sparc/sol2-gas-bi.h (AS_SPARC64_FLAG): Prepend -TSO

2003-04-04  Nick Clifton  <nickc@redhat.com>

	* config/v850/v850.c (expand_prologue): Only use register save
	helper functions if long calls are not being used.
	Add a clobber of r11 id using long calls.
	(pattern_is_ok_for_prologue): Account for the extra clobber.
	(construct_save_jarl): Likewise.
	* config/v850/v850.md (prolog pattern): Do not use this pattern
	for v850e's.

2003-04-04  Andreas Schwab  <schwab@suse.de>

	* stor-layout.c (layout_decl): Avoid syntax error in last change
	when PCC_BITFIELD_TYPE_MATTERS is defined but not
	EMPTY_FIELD_BOUNDARY.

2003-04-03  Jason Merrill  <jason@redhat.com>

	PR c/10175
	* jump.c (never_reached_warning): Revert patch of 2002-11-02.
	Look backwards for a line note.

2003-04-03  Neil Booth  <neil@daikokuya.co.uk>

	* fix-header.c (read_scan_file): Defer switch processing.

2003-04-03  Matt Austern  <austern@apple.com>

	* cpppch.c (reset_ht): Remove.
	(cpp_read_state): Remove loop to reset hashtable identifiers.
	* ggc-common.c (gt_pch_save): Add call to gt_pch_fixup_stringpool
	after pch file is written.
	* ggc.h (gt_pch_fixup_stringpool): Declare.
	* stringpool.c (ht_copy_and_clear): Define.  Callback.  Copy
	hashnode's value to another hashtable, then clear the original.
	(saved_ident_hash): Define.
	(gt_pch_save_stringpool): Create saved_ident_hash, use it to
	store definitions in ident_hash, and clear ident_hash.
	(gt_pch_fixup_stringpool): Define.  Restore definitions from
	saved_ident_hash to ident_hash, then destroy saved_ident_hash.

Thu Apr  3 22:27:40 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (update_bb_for_insn): Do not set block for barriers.

2003-04-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/10157
	* gcse.c (can_copy_p): Rename it to can_copy.
	(can_copy_init_p): Remove.
	(compute_can_copy): Use can_copy instead of can_copy_p.
	(can_copy_p): New exported function. Call compute_can_copy.
	(hash_scan_set): Use it.
	(gcse_main): Don't call compute_can_copy.
	(bypass_jumps): Don't call compute_can_copy.
	* rtl.h (can_copy_p): Declare.
	* loop.c (scan_loop): Don't move the source and add a reg-to-reg
	copy if the mode doesn't support copy operations.

2003-04-03  Jason Merrill  <jason@redhat.com>

	* Makefile.in (unstrap): Also remove stage_last.

	* dwarf2out.c (lookup_filename): Don't check for "<internal>".
	(dwarf2out_source_line): Don't do anything if line==0.

	* stor-layout.c (do_type_align): New fn, split out from...
	(layout_decl): ...here.  Do all alignment calculations for
	FIELD_DECLs here.
	(update_alignment_for_field): Not here.
	(start_record_layout, debug_rli): Remove unpadded_align.
	* tree.h (struct record_layout_info_s): Remove unpadded_align.
	* c-decl.c (finish_enum): Don't set DECL_SIZE, DECL_ALIGN
	or DECL_MODE on the CONST_DECLs.
	(finish_struct): Don't mess with DECL_ALIGN.

Thu Apr  3 18:57:19 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (print_operand): Do not bypass output_addr_const at flag_pic.

Thu Apr  3 17:08:09 2003  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_function_ok_for_sibcall): Return 0 if the current
	function is an interrupt handler.

	* sh.c (sh_expand_epilogue): Avoid clash of temp register for
	restoring target registers with EH_RETURN_STACKADJ_RTX; use
	multiple registers in round-robin fashion.

2003-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gengtype-lex.l (IWORD): Add CHAR_BITFIELD.
	* system.h (CHAR_BITFIELD): New.

2003-04-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Generalize to accept GT
	and LE.
	(another peephole2): Likewise.

2003-04-03  Nick Clifton  <nickc@redhat.com>

	* config/sparc/sol2-bi.h (ASM_CPU64_DEFAULT_SPEC): Add -TSO.
	(DEF_ARCH64_SPEC): Likewise.

Thu Apr  3 09:53:40 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (constant_address_p): Use legitimate_constant_p.
	(legitimate_address_p): Do not use CONSTANT_ADDRESS_P.

2003-04-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	gtle_operator.
	* config/h8300/h8300.c (gtle_operator): New.
	* config/h8300/h8300.h (PREDICATE_CODES): Add an entry for
	gtle_operator.
	* config/h8300/h8300.md (a peephole2): Generalize to accept GT
	and LE.

2003-04-02  Richard Henderson  <rth@redhat.com>

	* libgcc-std.ver (_Unwind_GetCFA): New.
	* unwind-dw2.c (_Unwind_GetCFA): New.
	* unwind-libunwind.c (_Unwind_GetCFA): New.
	* unwind-sjlj.c (_Unwind_GetCFA): New.
	* unwind.h: Declare it.

Thu Apr  3 00:31:21 CEST 2003  Jan Hubicka  <jh@suse.cz>

	PR inline-asm/8088
	* i386.c (ix86_hard_regno_mode_ok):  Return 0 for MMX/SSE registers
	when MMX/SSE is not available.

2003-04-02  Mike Stump  <mrs@apple.com>

	* doc/install.texi (Specific): Update pointers to apple.com.

Thu Apr  3 00:18:49 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (override_options):  Disable red zone by default on i386.
	(compute_frame_layout, ix86_force_to_memory, ix86_free_from_memory):
	Do not test TARGET_64BIT together with TARGET_RED_ZONE

2003-04-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Tighten the condition.

2003-04-02  Richard Henderson  <rth@redhat.com>

	* longlong.h (umul_ppmm) [alpha]: Use __builtin_alpha_umulh.

2003-04-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-04-02  Richard Henderson  <rth@redhat.com>

	* except.c (sjlj_find_directly_reachable_regions): Recognize when
	must-not-throw region has been deleted.

2003-04-02  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (output_call_frame_info): Ignore fde->nothrow as an
	optimization when flag_exceptions not enabled.

2003-04-02  Vladimir Makarov  <vmakarov@redhat.com>

	* config/rs6000/rs6000.c
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Redefine the
	macros.
	(rs6000_issue_rate): Add case for 8540.
	(rs6000_use_sched_lookahead): New function.

	* config/rs6000/8540.md: Rename SIU units into SU ones and MIU
	units into MU ones.
	(ppc8540_branch, ppc8540_cr_logical): Add one cycle in the
	reservation before retirement.
	(ppc8540_multiply, ppc8540_load, ppc8540_store,
	ppc8540_simple_float, ppc8540_vector_load, ppc8540_vector_store):
	Remove additional cycle in the reservation before retirement.
	(ppc8540_mfcr, ppc8540_mtcrf, ppc8540_mtjmpr): Add missed
	reservation of ppc8540_issue.

2003-04-02  Andreas Schwab  <schwab@suse.de>

	* real.c (decode_ieee_single): Fix decoding of SNaN bit.

2003-04-01  Richard Henderson  <rth@redhat.com>

	* except.c (convert_from_eh_region_ranges_1): Smash REG_EH_REGION
	notes for nothrow calls if flag_forced_unwind_exceptions.
	(build_post_landing_pads): Mind flag_forced_unwind_exceptions.
	(sjlj_find_directly_reachable_regions): Likewise.
	(reachable_handlers): Likewise.
	(can_throw_external): Likewise.
	(collect_one_action_chain): Record cleanups after catch-all and
	must-not-throw if flag_forced_unwind_exceptions.
	* flags.h (flag_forced_unwind_exceptions): Declare.
	* toplev.c (flag_forced_unwind_exceptions): New.
	(lang_independent_options): Add it.
	* doc/invoke.text: Add it.

2003-04-01  David Mosberger <davidm@hpl.hp.com>

	* config/ia64/crti.asm: Clean up trailing whitespace.
	Remove trailing hashes (#) from identifiers.

	* config/ia64/crtn.asm: Ditto.

	* config/ia64/crtend.asm: Remove trailing hashes (#) from
	identifiers.
	(__do_global_ctors_aux): Align to 32-byte boundary.  Add unwind
	directives.  Drop explicit bundling---it just makes the code
	harder to read.  Don't save/restore gp needlessly.

	* config/ia64/crtbegin.asm: Remove trailing hashes (#) from
	identifiers (they're only needed if the identifier would clash
	with a register name otherwise).
	(__do_global_dtors_aux): Align to 32-byte boundary. Add unwind
	directives.  Drop explicit bundling---it just makes the code
	harder to read.
	(__do_jv_register_classes): Ditto.
	(.fini_array): Remove "progbits" (newer
	assemblers don't like wrong section-types).
	(.init_array): Ditto.

2003-04-01  Roger Sayle  <roger@eyesopen.com>

	PR fortran/9974
	* gcse.c (reg_killed_on_edge): New function to test whether the
	given reg is overwritten by any instruction queued on an edge.
	(bypass_block): Ignore substitutions killed on incoming edges.
	Don't bypass outgoing edges that have queued instructions.

2003-04-01  Alexandre Oliva  <aoliva@redhat.com>

	* real.h (EXP_BITS): Make room for...
	(struct real_value): ... added canonical bit.
	(struct real_format): Added pnan.
	(mips_single_format, mips_double_format, mips_extended_format,
	mips_quad_format): New.
	* real.c: Copy p to pnan in all formats.
	(get_canonical_qnan, get_canonical_snan): Set canonical bit.
	(real_nan): Use pnan to compute significand's shift.
	(real_identical): Disregard significand in canonical
	NaNs.
	(real_hash): Likewise.  Take signalling into account.
	(encode_ieee_single, encode_ieee_double, encode_ieee_quad):
	Disregard significand bits in canonical NaNs.  Set all bits of
	canonical NaN if !qnan_msb_set.
	(encode_ibm_extended, decode_ibm_extended): Likewise.  Use
	qnan_msb_set to tell the base double format.
	(ibm_extended_format): Use 53 as pnan.
	(mips_single_format, mips_double_format, mips_extended_format,
	mips_quad_format): Copied from the corresponding ieee/ibm
	formats, with qnan_msb_set false.
	* config/mips/iris6.h (MIPS_TFMODE_FORMAT): Use mips_extended_format.
	* config/mips/linux64.h (MIPS_TFMODE_FORMAT): Use mips_quad_format.
	* config/mips/mips.c (override_options): Use mips_single_format
	and mips_double_format.  Default TFmode to mips_quad_format.
	* config/mips/t-linux64 (tp-bit.c): Define QUIET_NAN_NEGATED.
	* config/mips/t-irix6: Likewise.
	* config/mips/t-mips (fp-bit.c, dp-bit.c): Likewise.
	* config/fp-bit.c (pack_d, unpack_d): Obey it.

2003-04-01  Geoffrey Keating  <geoffk@apple.com>

	* unwind-dw2-fde-darwin.c (DESTRUCTOR_MAY_BE_CALLED_LIVE): New.
	(live_image_destructor): Reset image to initial state.
	(examine_objects): Set DESTRUCTOR_MAY_BE_CALLED_LIVE.

2003-04-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (input_operand): Accept bare
	CONSTANT_P_RTX operands.

2003-04-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcse.c (struct ls_expr): Added pattern_regs field.
	(ldst_entry): Initialize it.
	(extract_mentioned_regs, extract_mentioned_regs_helper): New.
	(store_ops_ok): Use regs precomputed by them.
	(find_loads, store_killed_in_insn, load_kills_store): Change return
	type to bool.
	(store_killed_before, store_killed_after): Take position of register
	set in account.
	(reg_set_info): Store position of the setter.
	(gcse_main): Enable store motion.
	(mems_conflict_for_gcse_p): Enable load motion of non-symbol mems.
	(pre_insert_copy_insn, update_ld_motion_stores, insert_store): Prevent rtl
	sharing.
	(simple_mem): Enable store motion of non-symbol mems.
	(regvec): Type changed.
	(LAST_AVAIL_CHECK_FAILURE): New.
	(compute_store_table_current_insn): New.
	(build_store_vectors): Computation of availability and anticipatability
	moved ...
	(compute_store_table, find_moveable_store): ... here.
	(delete_store): Remove senseless comment.
	(store_motion): Reorganize.

2003-04-01  Kevin Buettner  <kevinb@redhat.com>

	* config/mips/mips.c (override_options): Provide mappings for
	HI_REGNUM and LO_REGNUM.
	* config/mips/mips.h (MD_DBX_FIRST): Define.

2003-04-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* combine.c (merge_outer_ops): Fix typo.

	* varasm.c (make_decl_one_only): Revert 2003-03-09 patch.

2003-04-01  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
	power4.md,rios1.md,rios2.md,rs64.md}: Change mult_compare to
	imul_compare.  Add lmul_compare.
	* config/rs6000/power4.md: Bump some latencies.  Model extra cycle
	in second pair of dispatch slots.  Model stores more accurately.
	Tweak multiply model.  Add bypasses for CR instructions dependent
	on complicated compares.
	* config/rs6000/rs6000.md (mulsi3): Name imul_compare patterns.
	(muldi3): Add lmul_compare patterns.
	* config/rs6000/rs6000.c (rs6000_variable_issue): Move FPLOAD_UX
	and FPSTORE_UX to split instructions and add COMPARE,
	DELAYED_COMPARE, IMUL_COMPARE, LMUL_COMPARE, IDIV, LDIV.
	(rs6000_adjust_cost): Add IMUL_COMPARE and LMUL_COMPARE.
	(rs6000_rtx_costs): Separate POWER4 multiply case.

2003-04-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_fixup_clobbered_return_reg):
	Do nothing if __builtin_return_address was not used.

Tue Apr  1 18:18:23 CEST 2003  Jan Hubicka  <jh@suse.cz>

	* i386.md (test patterns):  Allow memory operand in operand1.

2003-04-01  Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/gcc.c-torture/execute/simd-3.c: New.

	* expr.c (expand_expr): Handle VECTOR_CST.
	(const_vector_from_tree): New.

	* varasm.c (output_constant): Handle VECTOR_CST.

	* c-typeck.c (digest_init): Build a vector constant from a
	VECTOR_TYPE.

	* config/rs6000/rs6000.c: Remove prototype for
	easy_vector_constant.
	(easy_vector_constant): Add mode parameter.  Rewrite to handle
	more easy constants.
	(rs6000_emit_move): Pass mode to easy_vector_constant.
	Call emit_easy_vector_insn for SPE V2SI vector constant moves.
	(emit_easy_vector_insn): New.
	(easy_vector_same): New.
	(EASY_VECTOR_15): New macro.
	(EASY_VECTOR_15_ADD_SELF): New macro.
	(bdesc_2arg): Rename to xorv2si3.
	(easy_vector_constant_add_self): New.
	(input_operand): Allow vector constants.

	* config/rs6000/rs6000.h (PREDICATE_CODES): Add
	easy_vector_constant, easy_vector_constant_add_self.
	(EXTRA_CONSTRAINT): Add 'W'.

	* config/rs6000/rs6000-protos.h: Add prototype for
	easy_vector_constant, emit_easy_vector_insn.

	* config/rs6000/altivec.md (xorv8hi3): New.
	(xorv16qi3): New.
	Remove all _const0 patterns.
	(movv4si_internal): Rewrite to use code.  Add vector constant to
	vector alternative.  Add splitter.
	(movv8hi_internal): Same.
	(movv16qi_internal): Same.
	(movv4sf_internal): Same.
	Change the unspecs for vspltis* to use constants.

	* config/rs6000/spe.md ("xorv4hi3"): New.
	("spe_evxor"): Rename to xorv2si3.
	("xorv1di3"): New.
	Remove all _const0 patterns.
	(movv2si_internal): Rewrite to use code.  Add vector constant to
	alternatives.  Add splitter.
	(movv4hi_internal): Add vector constant to alternatives.
	(movv1di_internal): Same.
	(movv2sf_internal): Same.

2003-03-31  Mark Mitchell  <mark@codesourcery.com>

	PR c/9936
	* c-decl.c (grokdeclarator): Clear SAVE_EXPR_CONTEXT for
	variably-sized arrays in parameters.
	(set_save_expr_context): New function.
	(c_expand_body): Use it, via walk_tree.

2003-03-31  Eric Christopher  <echristo@redhat.com>

	* combine.c (can_combine_p): Allow ZERO_EXTRACT and STRICT_LOW_PART.
	(combinable_i3pat): Remove call to expand_field_assignment and
	#if 0'd code.

2003-03-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/10278
	* c-common.c (finish_label_address_expr): Handle the
	error_mark_node.

2003-03-31  Richard Henderson  <rth@redhat.com>

	* real.c (real_identical): Reorg so as to not compare
	signalling for normals.

2003-03-31  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (hard_reg_operand): Check the mode.

2003-03-31  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Don't rely on REG_WAS_0
	notes as they are boggus.
	(m68hc11_gen_movqi): Likewise.

2003-03-31  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (expand_prologue): For an interrupt handler
	save the soft registers after the frame pointer so that gdb can unwind
	the frame more easily.
	(expand_epilogue): Likewise in opposite order; allow to use X register
	as scratch if the return value is by reference.

2003-03-31  Jason Merrill  <jason@redhat.com>

	PR java/10145
	* stor-layout.c (update_alignment_for_field): Respect
	DECL_USER_ALIGN for zero-length bitfields, too.
	* c-decl.c (finish_struct): Don't set DECL_ALIGN for normal
	fields.

2003-03-31  Matt Austern  <austern@apple.com>

	* cpppch.c (struct cpp_savedstate): Add defs and n_defs members.
	(count_defs): Keep track of number of defs as well as total size.
	(write_defs): Put every definition in cpp_savedstate's defs array.
	(comp_hashnode): Define.  Comparison function for qsort.
	(cpp_write_pch_deps): Sort definitions before writing them.
	(struct ht_node_list): Define. Like cpp_savedstate but simpler.
	(collect_ht_nodes): Define.
	(cpp_valid_state): When verifying that undefined identifiers in
	the pch file are still undefined, read a sorted list of undefined
	identifiers, collect all defined identifiers into a sorted list,
	and walk through both lists to make sure there's no match.

2003-03-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-03-31  Michael Matz  <matz@suse.de>

	* config/i386/i386.h (TARGET_FLT_EVAL_METHOD): Change 1 into 0.

2003-03-31  Segher Boessenkool  <segher@koffie.nl>

	PR target/10177
	* config/rs6000/rs6000.h (HARD_REGNO_RENAME_OK): New.
	* config/rs6000/rs6000.c (compute_vrsave_mask): Don't mark
	all call-clobbered registers as used.

2003-03-31  Michael Matz  <matz@suse.de>

	* cppexp.c (cpp_classify_number): Accept '.' after "0x".
	* testsuite/gcc.dg/cpp/c99-hexfloat-3.c: New file.

2003-03-31  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov.c: Add -a & -u options.
	(struct arc_info): Add local_span, is_call_non_return,
	is_nonlocal_return, is_unconditional flags, remove is_call flag.
	(struct block_info): Add flags, is_call_site, is_nonlocal_return
	members. Make encodings a union with span member.
	(struct function_info): Add blocks_executed, line, src, line_next
	members.
	(struct coverage_info): Make branches a union with blocks member.
	(struct source_info): Add functions member.
	(object_summary, program_count): New global variables.
	(flag_all_blocks, flag_unconditional): New flags.
	(find_source, output_branch_count): New functions.
	(print_usage): Adjust.
	(options): Adjust.
	(process_args): Adjust.
	(read_graph_file) <GCOV_TAG_FUNCTION>: Adjust.
	<GCOV_TAG_BLOCKS>: Read flags.
	<GCOV_TAG_LINES>: Adjust.
	(read_count_file): Process SUMMARY tags.
	(solve_flow_graph): Set is_unconditional and clear is_call_site
	appropriately.
	(add_branch_counts): Adjust. Don't count unconditional branches.
	(add_line_counts): Deal with all-blocks mode, accumulate block
	coverage.
	(accumulate_line_counts): Adjust, generate local spanning tree for
	all-blocks mode.
	(output_lines): Adjust.
	* profile.c (branch_prob): Alter GCOV_FUNCTION_TAG record.
	* doc/gcov.texi: Document.

2003-03-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Organize peephole2's that transform
	(compare (reg:HI) (const_int)).

2003-03-31  Roger Sayle  <roger@eyesopen.com>

	* emit-rtl.c (dconstm2, dconsthalf): New real constants.
	(init_emit_once): Initialize dconstm2 and dconsthalf here.
	* real.h (dconstm2, dconsthalf): Add prototypes here.
	* real.c (real_sqrt): Use dconsthalf rather than local copy.
	* builtins.c (fold_builtin): When optimizing sqrt(exp(x)) as
	exp(x/2.0) remember to fold the division if possible.
	Fold sin(0.0) as 0.0, cos(0.0) as 1.0, pow(x,1.0) as x,
	pow(x,-1.0) as 1.0/x, pow(x,2.0) as x*x, pow(x,-2.0) as
	1.0/(x*x) and pow(x,0.5) as sqrt(x).

2003-03-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a new peephole2): New.

2003-03-31  Richard Sandiford  <rsandifo@redhat.com>

	* gcse.c (simple_mem): Return false for floating-point accesses
	if flag_float_store is true.

2003-03-30  Roger Sayle  <roger@eyesopen.com>

	* gcse.c (gcse_constant_p): New function to identify constants
	suitable for constant propagation, including COMPARE with two
	integer constant arguments.
	(hash_scan_set): Use gcse_constant_p.
	(find_avail_set): Likewise.
	(cprop_insn): Likewise.
	(do_local_cprop): Likewise.
	(find_implicit_sets): Likewise.
	(find_bypass_set): Likewise.

2003-03-30  Matt Kraai  <kraai@alumni.cmu.edu>

	* except.h: Remove definition of varray_type.

2003-03-30  Richard Henderson  <rth@redhat.com>

	PR opt/10011, opt/10252:
	* toplev.c (rest_of_compilation): Run purge_builtin_constant_p
	before post-gcse cse pass.

2003-03-30  Roger Sayle  <roger@eyesopen.com>

	* dojump.c (do_jump): Copy SUBREGs into a pseudo for comparison.

2003-03-30  DJ Delorie  <dj@redhat.com>

	* profile.c (instrument_edges): Make sure any newly created
	jump insns have correct jump label info.

2003-03-30  Richard Henderson  <rth@redhat.com>

	* cfgbuild.c (make_edges): Use tablejump_p.
	* cfgcleanup.c (label_is_jump_target_p): Likewise.
	* cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
	* cfgrtl.c (flow_delete_block_noexpunge): Likewise.
	(try_redirect_by_replacing_jump): Likewise.
	(redirect_edge_and_branch): Likewise.
	* cse.c (fold_rtx): Likewise.
	* jump.c (delete_related_insns): Likewise.
	* rtlanal.c (get_jump_table_offset): Likewise.
	* ssa-ccp.c (ssa_ccp_df_delete_unreachable_insns): Likewise.

2003-03-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* Makefile.in (STRICT_WARN): Don't warn for ISO C constructs.
	(STRICT2_WARN): Likewise.

2003-03-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR other/6955
	* collect2.c (collect_wait): Use WCOREDUMP and fix output message.
	* system.h (WCOREDUMP, WCOREFLG): Define if necessary.

2003-03-30  Richard Henderson  <rth@redhat.com>

	PR c/10083
	* config/alpha/alpha.md (umuldi3_highpart): Change to expander;
	don't zero_extend const inputs.

2003-03-30  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (reload_cse_move2add): Fix a comment typo.

2003-03-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Remove useless code.

2003-03-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi3_and_ashift): New.
	(*iorsi3_and_lshiftrt): Likewise.
	(*iorsi3_zero_extract): Likewise.

2003-03-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*insv_si_8_8): New.
	(*insv_si_8_8_lshiftrt_8): Likewise.
	(a peephole2): Likewise.

2003-03-29  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi: Add Eric Botcazou and Roger Sayle.
	Uniformly use bugfix instead of bug fix.

2003-03-29  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	PR doc/895
	* ONEWS: Remove those items that already appear in the EGCS
	release notes on our web pages.

2003-03-29  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Respect
	TARGET_HARD_FLOAT.  Reformat.
	(FUNCTION_ARG_REGNO_P): Likewise, and remove unneeded casts.

2003-03-28  Albert Chin-A-Young  <china@thewrittenword.com>

	* gcc/fixinc/inclhack.def: Update solaris_mutex_init_1 to
	work on Solaris 2.5.1.

2003-03-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*addsi3_and_r_1): Put under plus:SI
	section of h8300.md
	(*addsi3_and_nor_r_1): Likewise.

2003-03-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologoue): Make sure backchain is
	set up before any trapping memory access if flag_non_call_exceptions.

2003-03-29  Alan Modra  <amodra@bigpond.net.au>

	* reload1.c (reload_as_needed): Allow a USE in asm reloads.

	* loop.c: (find_mem_in_note_1, find_mem_in_note): Comment.

2003-03-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Clarify comments.
	* configure: Regenerate.

2003-03-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("literal_pool_31"): Output pool anchor
	label even if pool empty when generating PIC.
	("literal_pool_31", "literal_pool_64"): Coding style cleanup.

2003-03-28  Kazu Hirata  <kazu@cs.umass.edu>,
	    Dhananjay Deshpande  <dhananjayd@kpit.com>

	PR target/10205
	* config/h8300/h8300.c (h8300_initial_elimination_offset):
	Correct the offset computation when TARGET_NORMAL.

2003-03-28  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/10067
	* config/sparc/sparc.md (jump pattern): Correct order
	when issuing the annuling marker.

2003-03-28  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/8281
	* config/sparc/sparc.md (movdi_insn_sp32_v9): Remove 'f-f' alternative.
	(movdi reg/reg split): Match only on sparc32, and v9 when int regs.

2003-03-28  Alan Modra  <amodra@bigpond.net.au>

	* config/alpha/elf.h (ASM_OUTPUT_ALIGNED_BSS): Remove unnecessary
	globalize_label.
	* config/arm/unknown-elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/i960/i960.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/m32r/m32r.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/mips/elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/mips/linux.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/sparc/sparc.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/v850/v850.c (v850_output_aligned_bss): Likewise.

2003-03-28  Alan Modra  <amodra@bigpond.net.au>

	* loop.c: (find_mem_in_note_1, find_mem_in_note): New functions.
	(replace_loop_mems): Add "written" param.  Remove invalid REG_EQUAL
	notes after hoisting.
	(load_mems): Adjust replace_loop_mems call.

2003-03-28  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Richard Henderson  <rth@redhat.com>

	PR target/10114 and PR target/10084
	* dwarf2out.c (mem_loc_descriptor): Handle LO_SUM.

2003-03-27  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (adddi_er_high_l): Valid only after reload.

2003-03-27  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_inf_compare):  New function to simplify FP
	comparisons against +Infinity or -Infinity.
	(fold):  Optimize floating point comparisons against Infs and NaNs.

2003-03-27  Janis Johnson  <janis187@us.ibm.com>

	* libgcov.c: Provide only dummy functions if libc is not available.

2003-03-27  Richard Henderson  <rth@redhat.com>

	* real.h (struct real_value): Add signalling.
	(EXP_BITS): Decrement.
	* real.c (get_canonical_qnan): Don't set MSB-1.
	(get_canonical_snan): Likewise.  Set signalling.
	(real_identical): Compare signalling.
	(round_for_format): Remove force-one-bit on code.
	(real_nan): Likewise.  Set signalling.
	(encode_ieee_single): Add force-one-bit code; honor signalling.
	(encode_ieee_double, encode_ieee_extended, encode_ieee_quad): Likewise.
	(decode_ieee_single): Set signalling.
	(decode_ieee_double, decode_ieee_extended, decode_ieee_quad): Likewise.

2003-03-27  Olivier Hainque  <hainque@act-europe.fr>

	PR ada/9953
	* ada/Makefile.in (gnatlib configuration for HPUX): Split
	the general section for HPUX into specific sections for
	HPUX 10 and HPUX 11. Fix the setting of TGT_LIB in the HPUX
	11 case.

2003-03-27  Glen Nakamura  <glen@imodulo.com>

	PR opt/10087
	* loop.c (loop_givs_reduce): Skip bivs with duplicate locations
	while incrementing giv.
	(record_biv): Check for duplicate biv locations and
	set (struct induction *) v->same if found.

2003-03-27  David Mosberger  <davidm@hpl.hp.com>

	* unwind-libunwind.c (uw_frame_state_for): Adjust for libunwind
	v0.9 API change: replace read of UNW_REG_HANDLER with
	unw_get_proc_info().
	(_Unwind_GetLanguageSpecificData): Replace read of UNW_REG_LSDA
	with unw_get_proc_info().
	(_Unwind_GetRegionStart): Replace UNW_REG_PROC_START with
	unw_get_proc_info().

2003-03-27  Vladimir Makarov  <vmakarov@redhat.com>

	* config/rs6000/8540.md: Use presence_set instead of absence_set.

2003-03-26  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_function): Always defer if DECL_DECLARED_INLINE_P.

2003-03-26  Roger Sayle  <roger@eyesopen.com>

	PR bootstrap/10051, PR bootstrap/10169.
	* mips-tfile.c (init_file): Don't provide a static initializer.
	(initialize_init_file): Initialize the contents of init_file.
	(add_file): Call initialize_init_file if not already initialized.

2003-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_optimize_prolog): Do not save/restore
	registers used for global asm variables.
	(s390_frame_info, s390_arg_frame_offset): Likewise.
	(s390_emit_prologue, s390_emit_epilogue): Likewise.

2003-03-26  Vladimir Makarov  <vmakarov@redhat.com>

	* config/rs6000/8540.md: New file.

	* config/rs6000/{40x.md, 603.md, 6xx.md, 7450.md, 7xx.md, mpc.md,
	power4.md, rios1.md, rios2.md, rs64.md}: Add mult_compare to
	reservations for imul.

	* config/rs6000/rs6000.md: Include 8540.md.  Change
	delayed_compare onto mult_compare for insns generating
	multiplication.
	(mult_compare, fpsimple, brinc, vecdiv, veccmpsimple, vecfdiv):
	New type attribute values.

	* config/rs6000/spe.md (*negsf2_gp, *abssf2_gpr): Use type
	fpsimple instead of fp.
	(*divsf3_gpr): Use type vecfdiv instead of fp.
	(spe_evfsabs, spe_evfsnabs, spe_evfsneg): Use type vecsimple
	instead of vecfloat.
	(spe_evfsdive): Use type vecfdiv instead of vecfloat.
	(spe_brinc): Use type brinc instead of veccomplex.
	(spe_evaddw, spe_evaddiw): Use type vecsimple instead of
	veccomplex.
	(spe_evdivws, spe_evdivwu): Use type vecdiv instead of veccomplex.
	(*movv2si_internal, *movv1di_internal, *movv4hi_internal,
	*movv2sf_internal): Define type attribute values for all
	alternatives.
	(cmpsfeq_gpr, cmpsfgt_gpr, cmpsflt_gpr): Use type veccmp instead
	of fpcompare.
	(tstsfeq_gpr, tstsfgt_gpr, tstsflt_gpr): Use type veccmpsimple
	instead of fpcompare.

2003-03-26  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md: Allow delay between dispatch and
	function units for simple instructions.  Correct store units.
	Allow branch to occupy as many dispatch slots as necessary.

2003-03-26  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (ia64_expand_op_and_fetch): Fix comment.
	(ia64_expand_compare_and_swap): Use always DImode ar.ccv,
	zero extend old to it.
	* config/ia64/ia64.md (cmpxchg_acq_si): Remove mode from ccv
	operand.

2003-03-26  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/7784
	* reload.c (find_reloads_address): Handle
	(PLUS (PLUS (REG) (REG)) (CONST_INT)) form for
	all base registers.

2003-03-25  Marcelo Abreu  <mmabreu@inf.ufrgs.br>

	PR other/10203
	* version.c: Reference the GCC web site in the URL.

2003-03-26  Alan Modra  <amodra@bigpond.net.au>

	* c-incpath.c (add_standard_paths): Add both "translated" and
	non-translated header paths.

2003-03-25  Loren James Rittle  <ljrittle@acm.org>

	* doc/install.texi (*-*-freebsd*): Update with known status.

2003-03-21  Jason Merrill  <jason@redhat.com>

	PR optimization/10171
	* unroll.c (unroll_loop): Don't delete the jump at the end unless
	we also delete a jump at the beginning.

2003-03-25  Stephane Carrez  <stcarrez@nerim.fr>

	* doc/contrib.texi (Contributors): Mention self as 68HC11/68HC12
	contributor.

Tue Mar 25 20:35:51 CET 2003  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_rtx_costs): For -fpic and x86-64 local symbolic
	constants are not expensive.

Mon Mar 24 20:03:03 CET 2003  Jan Hubicka  <jh@suse.cz>

	PR opt/10056
	* cfglayout.c (fixup_reorder_chain):  Fix dealing with the conditional
	jump jumping to the next instruction.
	* cfgrtl.c (force_nonfallthru_and_redirect):  Likewise.

2003-03-25  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/passes.texi (Passes): Properly document that we do not
	perform jump2 any longer; remove command-line option -dJ.

2003-03-25  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/8746
	* config/i386/i386.md (and promoting splitters): Disable HImode to
	SImode promoting when the sign bit matters and is not preserved, or
	when TARGET_FAST_PREFIX is true. Disable promoting when optimizing
	for size.

2003-03-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Extend to support loads
	in QImode and HImode.

2003-03-24  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/t-m68hc11-gas (LIB1ASMFUNCS): Add _call_far and
	_return_far
	(MULTILIB_OPTIONS): Don't multilib on -mlong-calls.
	(MULTILIB_EXCEPTIONS): Likewise.
	* config/m68hc11/m68hc11.md ("call"): Support far calls for 68HC11
	by calling some board support routine.
	("call_value"): Likewise.
	("*return_void"): Likewise for return.
	("*return_16bit"): Likewise.
	("*return_32bit"): Likewise.
	* config/m68hc11/m68hc11.h (ASM_DECLARE_FUNCTION_NAME): Generate .far
	for 68HC11 too.
	(DWARF2_ADDR_SIZE): Use 4 so that addresses can
	* config/m68hc11/m68hc11.c (m68hc11_override_options): Accept
	-mlong-calls for 68HC11.
	* config/m68hc11/larith.asm (declare_near): New macro.
	(__premain, ___negsi2, ___one_cmplsi2, ___ashlsi3): Use it.
	(___ashrsi3, ___lshrsi3, ___lshrhi3, ___lshlhi3): Likewise.
	(___rotrhi3, ___rotlhi3, ___ashrhi3, ___ashrqi3): Likewise.
	(___lshlqi3, __divmodhi4, ___mulqi3, ___mulhi3): Likewise.
	(__mulhi32): Likewise.
	(ret): Update macro for 68HC11.
	(__far_trampoline): Implement for 68HC11.
	(__call_a16, __call_a32, __return_void, __return_16): New support
	routines for 68HC11 memory bank switching calling support.
	(__return_32): Likewise.

2003-03-24  Neil Booth  <neil@daikokuya.co.uk>

	* toplev.c (independent_decode_option): Don't skip a 'Y' prefix.

2003-03-24  Janis Johnson  <janis187@us.ibm.com>

	* doc/install.texi (Testing): Mention test result links from build
	status pages.

2003-03-24  Mark Mitchell  <mark@codesourcery.com>

	* function.c (put_var_into_stack): Change bool parameter to int.
	(gen_mem_addressof): Likewise.
	* rtl.h (gen_mem_addressof): Likewise.
	* tree.h (put_var_into_stack): Likewise.
	* config/alpha/alpha.c (alpha_gp_save_rtx): Adjust call to
	gen_mem_addressof or put_var_into_stack.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
	* config/ia64/ia64.c (spill_tfmode_operand): Likewise.

2003-03-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-03-24  Jakub Jelinek  <jakub@redhat.com>

	* dojump.c (do_jump): Handle UNSAVE_EXPR specially.

2003-03-24  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Update Janis Johnson.

2003-03-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/10072
	* combine.c (simplify_if_then_else): Check that the mode
	has MODE_INT class before applying the (OP Z (mult COND C2))
	transformation.

2003-03-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/9414
	* config/sparc/sparc.md (widening peepholes): Use
	widen_memory_access instead of change_address.

2003-03-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/7086
	* c-typeck.c (c_mark_addressable): Adjust calls to
	put_var_into_stack.
	* expr.c (expand_expr): Likewise.
	* function.c (put_var_into_stack): Add rescan parameter.  Do not
	call fixup_var_refs when rescan is false.
	(gen_mem_addressof): Likewise.
	(assign_parms): Adjust calls to put_var_into_stack.
	(setjmp_protect): Likewise.
	(setjmp_protect_args): Likewise.
	* rtl.h (gen_mem_addressof): Change prototype.
	* stmt.c (expand_decl): Adjust calls to put_var_into_stack.
	* tree.h (put_var_into_stack): Change prototype.

2003-03-23  Arpad Beszedes <beszedes@cc.u-szeged.hu>

	PR middle-end/9967
	* builtins.c (expand_builtin_fputs): When optimizing for size,
	don't transform fputs into fwrite.

2003-03-23  Glen Nakamura <glen@imodulo.com>

	PR c/8224
	* fold-const.c (extract_muldiv_1): Don't pass through type conversions
	when signedness changes for division or modulus.

2003-03-24  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Remove unnecessary
	globalize_label.

2003-03-23  Roger Sayle  <roger@eyesopen.com>

	PR c/10178
	* stmt.c (expand_end_case_type): Check for overflow in range when
	determining whether to use a bit-test implementation.

2003-03-23  Richard Henderson  <rth@redhat.com>

	* cfgcleanup.c (try_optimize_cfg): Allow merging of tablejumps
	before flow2.
	* cfgrtl.c (try_redirect_by_replacing_jump): Similarly.

2003-03-23  Richard Henderson  <rth@redhat.com>

	PR opt/10116
	* ifcvt.c (find_if_block): Disallow tablejump insns outgoing
	from then_bb or else_bb after flow2.

2003-03-23  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Check whether it is necessary to link against
	libm to use ldexp.
	* configure: Regenerate.
	* Makefile.in: Add LDEXP_LIB substitution variable.

2003-03-23  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Fix comment typos.

2003-03-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (output_cbranch): Fix typo in comment.

2003-03-22  Richard Henderson <rth@redhat.com>

	* cfgcleanup.c (insns_match_p): Do not do EQUIV substitution
	after reload.

2003-03-22  DJ Delorie  <dj at redhat dot com>,
	Bruce Korb  <bkorb at gnu dot org>

	* fixinc/inclhack.def (solaris_mutex_init_1): New; Fix
	buggy Solaris 2.6 mutex/cond initializers.
	(solaris_mutex_init): Rename to solaris_mutex_init_2.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/pthread.h: Update.
	* fixinc/fixincl.c(initialize): be explicit about the default case
	and indicate verbose level when being very, very verbose.
	* fixinc/check.tpl(VERBOSE): provide a means for passing the value in

2003-03-22  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (ix86_init_machine_status): Return value.

2003-03-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (output_cbranch, output_bb, output_bvb): Output nop for
	conditional branch to the following instruction.  Use next_real_insn
	instead of next_active_insn.
	(output_dbra, output_movb, jump_in_call_delay): Use next_real_insn
	instead of next_active_insn.

2003-03-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("movti", "*movdi_31", "*movdf_31"): Use 'o'
	instead of 'm' constraint in forced-split alternatives.
	("*adddi3_31", "*subdi3_31"): Likewise.  Also, pass 0 instead of 1 as
	VALIDATE_ADDRESS parameter to operand_subword.

2003-03-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (notice_update_cc): Correctly handle
	the case where the set destination is STRICT_LOW_PART.

2003-03-22  Svein E. Seldal  <Svein.Seldal@solidas.com>

	* config/c4x/t-c4x (INSTALL_LIBGCC): Make gcc recognize a c33 as a
	c30 instead of a c40 processor.

2003-03-22  Alan Modra  <amodra@bigpond.net.au>

	* combine.c (simplify_comparison <AND>): Use gen_int_mode.  Tidy.

2003-03-21  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c: Include intl.h.
	(shadow_warning): Rewrite to allow better diagnostic translations.
	* c-common.h: Update prototype of shadow_warning.  Declare sw_kind enum.
	* c-decl.c (warn_if_shadowing): Update calls to shadow_warning;
	use it throughout.
	* Makefile.in (c-common.o): Add intl.h.

2003-03-21  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Remove 'float_format'.

	* fixproto: Define NULL and size_t in generated stdlib.h and
	unistd.h.  Kill unused required_stdlib_h, required_unistd_h.
	Rearrange file generation loop for readability.  Generate time.h,
	string.h if missing.
	* tsystem.h: Include <string.h>, <time.h> unconditionally.
	* config.gcc: Blow away POSIX defines.

2003-03-22  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("call_value"): Fix trap check.

2003-03-22  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (ASM_DECLARE_FUNCTION_NAME): Fix typo in
	writing .interrupt command.
	* config/m68hc11/m68hc11.md ("call"): Look at the symbol to see
	if it's a far or near function.
	("call_value"): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_attribute_table): Add far and
	near attributes.
	(m68hc11_handle_fntype_attribute): Accept attributes on methods.
	(m68hc11_override_options): Ignore -mlong-calls for 68HC11.
	(m68hc11_initial_elimination_offset): Set current_function_far
	according to attributes.
	(expand_prologue): Likewise.
	(trap_handler_symbol): New global to keep track of trap handlers.
	(m68hc11_encode_section_info): Mark symbol as far if needed; set
	trap symbol.
	(m68hc11_is_far_symbol): New function.
	(m68hc11_is_trap_symbol): New function.
	* config/m68hc11/m68hc11-protos.h (m68hc11_is_far_symbol): Declare.
	(m68hc11_is_trap_symbol): Declare.

2003-03-21  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_compute_frame_layout): Recompute fast prologues
	only when amount of saved regs changed.
	(ix86_init_machine_status): Initialize use_fast_prologue_epilgoue_nregs.
	* i386.h (machine_function): New fields use_fast_prologue_epilgoue_nregs.

2003-03-21  Jan Hubicka  <jh@suse.cz>

	PR inline-asm/7916
	* function.c (instantiate_virtual_regs_lossage): New function.
	(instantiate_virtual_regs_1): Use it.
	(instantiate_virtual_regs): Do not continue in substition when insn has
	been deleted.

2003-03-21  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (make_field_assignment): Fix a warning.

2003-03-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*insv_si_1_n_lshiftrt_16): New.

2003-03-21  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.h (REG_ALLOC_ORDER):  Increase
	priority for R2 on Darwin.
	(HARD_REGNO_MODE_OK):  Don't accept R31 for DFmode.

2003-03-21  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (make_field_assignment): Remove unnecessary AND
	when storing into zero_extract.

2003-03-21  Zack Weinberg  <zack@codesourcery.com>

	* aclocal.m4 (gcc_AC_EXAMINE_OBJECT, gcc_AC_C_FLOAT_FORMAT): Delete.
	* configure.in: Don't call gcc_AC_C_FLOAT_FORMAT.
	* defaults.h: Remove reference to HOST_FLOAT_WORDS_BIG_ENDIAN
	in comment.

2003-03-21  DJ Delorie  <dj@redhat.com>

	* optabs.c (init_integral_libfuncs): Make sure we init at least up
	to "long long" size words.

2003-03-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h: Do not include fixdfdi.h on s390x.
	(TARGET_64BIT): Define as compile-time constant when IN_LIBGCC2.
	(MIN_UNITS_PER_WORD): Do not define when IN_LIBGCC2.

2003-03-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR doc-bug/9813
	* doc/extend.texi: Move misplaced paragraph about underscores in
	variables in macros.

2003-03-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Richard Henderson  <rth@redhat.com>

	PR optimization/8366
	* config/sparc/sparc.h: (SYMBOLIC_CONST): New macro.
	(GO_IF_LEGITIMATE_ADDRESS): Use it. Reject the form
	PIC+SYMBOLIC_CONST in other modes than Pmode.
	(GO_IF_MODE_DEPENDENT_ADDRESS): Use it. Mark
	the form PIC+SYMBOLIC_CONST as mode dependent.

2003-03-21  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_expand_arith): Make
	sure we always emit at least one insn.

2003-03-21  Christopher Faylor  <cgf@redhat.com>

	* config.gcc (i[34567]86-*-cygwin*): Use new common makefile
	stub t-cygming. Use common target header cygming.h. Add extra
	c_target_obj and cxx_target_obj file. Default cygwin to posix
	threading. Enforce i386 as float format.
	(i[34567]86-*-mingw*): Use new common makefile stub t-cygming.
	Remove cygwin.h as target header. Use common target header
	cygming.h  Enforce i386 as float format. Correct typo.
	* config/i386/cygming.h: New file, containing definitions
	common to mingw32 and cygwin.
	* config/i386/cygwin.h: Remove definitions common to cygwin and
	mingw.	Simplify special spec logic.  Define "wrappers" around
	certain include path defines to accommodate -mno-cygwin.
	Remove some #if 0'ed code.
	(STANDARD_INCLUDE_DIR) Always define when not cross-compiling.
	(LINK_SPEC): Don't use cyg search prefix when -mno-cygwin.
	(GCC_DRIVER_HOST_INITIALIZATION): Define as call to mingw_scan.
	* config/i386/mingw32.h: Remove definitions common to cygwin and
	mingw.
	(EXTRA_OS_CPP_BUILTINS): Adjust.
	(TARGET_VERSION): Define.
	* config/i386/crtdll.h (EXTRA_OS_CPP_BUILTINS): Override
	mingw32.h definitions.
	(LIBGCC_SPEC): Add libmingwex.a as in mingw32.h.
	* config/i386/t-cygwin (EXTRA_GCC_OBJS): Define as cygwin1.o.
	Add compilation rules for cygwin1.o cygwin2.o.
	* config/i386/cygwin1.c: New file.
	* config/i386/cygwin2.c: New file.
	* config/i386/t-cygming: New makefile stub.

2003-03-20  Richard Henderson  <rth@redhat.com>

	* fold-const.c (extract_muldiv_1): Revert changing order of
	operands in case MULT_EXPR of 2003-02-16 patch.

2003-03-20  Daniel Berlin  <dberlin@dberlin.org>
	Merge changes from new-regalloc-branch

	From Michael Matz  <matz@suse.de>
	* df.c (df_ref_record_1): Move init of loc to safe point.
	Only recurse on interesting things in parallels.
	Handle CLASS_CANNOT_CHANGE_MODE smarter.
	(df_uses_record): Ditto.

	* df.h (DF_REF_MEM_OK): New enum member, used to mark ref's which
	it's already okay to use memory operands in (IE doesn't require
	adding another insn or anything).

2003-03-20  Richard Henderson  <rth@redhat.com>

	PR middle-end/6348
	* explow.c (allocate_dynamic_stack_space): Handle STACK_SIZE_MODE
	different from word_mode.

2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*insv_si_1_n_lshiftrt): Restrict the
	source operand to those that can be extracted with bld.

2003-03-20  Richard Earnshaw  <rearnsha@arm.com>

	PR 10066
	* arm.md (UNSPEC_PIC_BASE): New constant.
	(pic_add_dot_plus_four): Wrap with unspec.
	(pic_add_dot_plus_eight): Likewise.

2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*insv_si_1_n): New.
	(*insv_si_1_n_lshiftrt): Likewise.

2003-03-20  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_mathfn_compare): New function to simplify
	comparisons against built-in math functions.  Fold comparisons
	of sqrt against constants.
	(fold): Call fold_mathfn_compare when appropriate.

2003-03-20 Richard Earnshaw  <rearnsha@arm.com>

	* ifcvt.c (find_if_case_1): If we add a new bb, update the dominance
	information.

2003-03-20  Per Bothner  <pbothner@apple.com>

	Various cleanups to help compile server.

	* cppinit.c (cpp_create_reader):  Take extra hash_table* argument,
	and pass that to _cpp_init_hashtable.
	(cpp_read_main_file):  Drop hash_table* argument; don't call
	_cpp_init_hashtable.
	* cpplib.h:  Update declarations to match.
	* c-opts.c (c_common_init_options):  Pass ident_hash to
	cpp_create_reader.
	(c_common_post_options):  Don't pass ident_hash to cpp_read_main_file.
	* fix-header.c (read_scan_file):  Likewise pass NULL table to
	cpp_create_reader rather than cpp_read_main_file.

	* cppfiles.c (cpp_rename_file):  Generalized and renamed
	to cpp_change_file.
	* cpplib.h:  Update declaration to match.
	* c-opts.c (push_command_line_line, finish_options):  Change
	cpp_rename_file calls to cpp_change_file.

	* line-map.c (add_line_map):  Allow leaving the outermost file.
	Allowing entering an outermost-file after the initial time.

	* toplev.c (pop_srcloc):  Allow popping from initial file.

2003-03-20  Kazu Hirata  <kazu at cs dot umass dot edu>

	* fold-const.c (fold): Fold A - (A & B) into ~B & A.

2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*addsi3_and_r_1): New.
	(*addsi3_and_not_r_1): Likewise.

2003-03-19  Loren James Rittle  <ljrittle@acm.org>

	* Makefile.in (STRICT2_WARN): Add @WERROR@.
	(GCC_WARN_CFLAGS): Remove $(WERROR).
	(fixinc.sh-warn): New.
	* ada/Make-lang.in (ada-warn): Add $(WERROR).
	* cp/Make-lang.in (cp-warn): Add $(WERROR).
	* f/Make-lang.in (f-warn): Add $(WERROR).
	* java/Make-lang.in (java-warn): Add $(WERROR).
	* treelang/Make-lang.in (treelang-warn): Add $(WERROR).

2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* c-common.h (c_dump_tree), c-dump.c (c_dump_tree),
	langhooks-def.h (lhd_tree_dump_dump_tree),
	langhooks.c (lhd_tree_dump_dump_tree), langhooks.h (*dump_tree):
	Change return type from 'int' to 'bool'.  Replace 0 and 1 with
	true and false in return statements.

2003-03-19  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE): Define.
	(DWARF_COMPILE_UNIT_HEADER_SIZE): Take into account
	DWARF_INITIAL_LENGTH_SIZE.
	(output_compilation_unit_header, output_pubnames, output_aranges)
	(output_line_info): Output 0xffffffff escape value for 64-bit
	DWARF extension.
	* config/mips/iris6.h (DWARF_INITIAL_LENGTH_SIZE): Define.

2003-03-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_preferred_reload_class): Do not
	force constants to the pool unless necessary.
	(s390_decompose_address): Prefer to use pointer as base,
	not index register.
	* config/s390/s390.md ("*tsthiCCT_only"): Remove '?' from
	Q alternative.
	("*movdi_64", "*movsi", "movhi", "movqi_64", "movqi",
	"*movdf_64", "*movsf"): Add '?' to Q->Q alternatives.
	("*extractqi", "*extracthi", "*zero_extendhisi2_31",
	"*zero_extendqisi2_31", "*zero_extendqihi2_31",
	"*adddi3_31", "*subdi3_31"): Do not set "type" attribute.

2003-03-19  Jan Hubicka  <jh@suse.cz>

	* i386.h (machine_function): New fields use_fast_prologue_epilogue.
	* i386.c (use_fast_prologue_epilogue): Remove.
	(ix86_frame): New field save_regs-using_mov;
	(ix86_compute_frame_layout):  Decide on fast prologues;
	allocate saved registers in red zone.
	(ix86_expand_epilogue, ix86_expand_prolgoues): Obey new parameters.

2003-03-19  Nick Clifton  <nickc@redhat.com>

	* config/mcore/mcore.h (CPP_SPEC): Remove trailing semi-colon.

2003-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR 10062
	* config/pa/pa-hpux.h (TARGET_HPUX_UNWIND_LIBRARY): Redefine.
	* pa-protos.h (output_lbranch): New prototype.
	* pa.c (compute_frame_size): Change size of the frame marker on the
	64-bit ports to 48 bytes.
	(pa_output_function_prologue): Document why SAVE_SP is set.
	(hppa_expand_prologue): Save previous stack pointer into frame marker
	on targets which use the hpux unwind library.
	(output_cbranch): Use output_lbranch.
	(output_lbranch): New function to output long unconditional branches.
	* pa.h (TARGET_HPUX_UNWIND_LIBRARY): Define.
	(STACK_POINTER_OFFSET): Update offset for 48-byte frame marker on
	64-bit ports.
	* pa.md (jump): Use output_lbranch.
	(allocate_stack): New expander for dynamic stack allocation.

2003-03-19  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_stack_info): Only require a frame
	when debugging on XCOFF targets.  Delete "abi" temp.

	PR target/10073
	* combine.c (force_to_mode <NOT>): Use gen_int_mode.

2003-03-18  Jakub Jelinek  <jakub@redhat.com>

	* config/s390/s390.c (s390_output_dwarf_dtprel): New.
	* config/s390/s390-protos.h (s390_output_dwarf_dtprel): New proto.
	* config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Define.

	* config/ia64/ia64.c (ia64_output_dwarf_dtprel): New.
	* config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): New proto.
	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Define.

2003-03-18  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Don't clone
	the result of machopic_function_base_name.
	* config/darwin.c (machopic_function_base_name): Use a gc-allocated
	string rather than a static array.

	* Makefile.in (emit-rtl.o): Add gt-emit-rtl.h to dependencies.

	* gengtype.c: Include rtl.h.
	(enum rtx_code): Don't define.
	(rtx_format): Make declaration match rtl.h.
	(rtx_next_new): Rename from rtx_next to avoid conflict.  Change all
	users.
	(adjust_field_rtx_def): Describe strings in NOTE_LINE_NUMBER notes.
	* Makefile.in (gengtype.o): Update dependencies.

2003-03-18  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.md (iordi3): Fix setting low half to -1.  From
	martin@blom.org.

2003-03-18  Geoffrey Keating  <geoffk@apple.com>

	* function.c (next_block_index): Mark with GTY.

	* config/rs6000/rs6000.md (macho_correct_pic): Correct pattern.

2003-03-18  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.md (UNSPECV_SETJMP_RECEIVER): New.
	(builtin_setjmp_receiver): Delay call to ia64_reload_gp
	until after reload.

2003-03-18  Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin_unop): New target_mode operand;
	use it to convert the result to the correct mode.
	(expand_builtin): Update all callers.

2003-03-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("movti", "movhi", "movqi"): Add "type" attribute.

2003-03-18  Jan Hubicka  <jh@suse.cz>

	* i386.md:  Fix previous commit that mistakely applied the patch
	twice.

	* alias.c (rtx_equal_for_memref_p): Assume that X and Y has been
	canonicalized.
	(memrefs_conflict_p): Likewise.
	(addr_side_effect_eval): Canonicalize the constructed address.

2003-03-18  Jan Hubicka  <jh@suse.cz>

	* i386.md (cvtts?2si peep2): New.

2003-03-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi3_two_qi_zext): New.

2003-03-18  Andreas Schwab  <schwab@suse.de>

	* dwarf2out.c (output_file_names): Cast size_t to unsigned long
	for format.

2003-03-17  Jason Merrill  <jason@redhat.com>

	PR c++/10091
	* expr.c (expand_expr) [ADDR_EXPR]: Disallow taking the address of
	an unaligned member of TREE_ADDRESSABLE type.

2003-03-18  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (MASK_PROFILE_KERNEL): Define.
	(TARGET_PROFILE_KERNEL): Define.
	(SUBTARGET_SWITCHES): Handle -mprofile-kernel.
	(PROFILE_BEFORE_PROLOGUE): Don't define.
	(PROFILE_KERNEL): Remove hacks.
	* config/rs6000/rs6000.c (TARGET_PROFILE_KERNEL): Define default.
	(rs6000_stack_info): No need to save lr if just for profiling when
	TARGET_PROFILE_KERNEL.
	(output_profile_hook): Output nothing when TARGET_PROFILE_KERNEL.
	(output_function_profiler): Localize label generation.  Emit code
	for kernel profiling.

2003-03-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	byte_accesses_mergeable_p.
	* config/h8300/h8300.c (byte_accesses_mergeable_p): New.
	* config/h8300/h8300.md (*iorhi3_two_qi_mem): Likewise.
	(a splitter): Likewise.
	(*iorsi3_ashift_16_ashift_24): Likewise.
	(*iorsi3_ashift_16_ashift_24_mem): Likewise.

2003-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dwarf2asm.h: Delete obsolete comment.
	(dw2_asm_output_data, dw2_asm_output_delta, dw2_asm_output_offset,
	dw2_asm_output_pcrel, dw2_asm_output_addr,
	dw2_asm_output_addr_rtx, dw2_asm_output_encoded_addr_rtx,
	dw2_asm_output_nstring, dw2_asm_output_data_uleb128,
	dw2_asm_output_data_sleb128, dw2_asm_output_delta_uleb128,
	dw2_asm_output_delta_sleb128): Add ATTRIBUTE_NULL_PRINTF.

2003-03-17  Zack Weinberg <zack@codesourcery.com>

	* c-tree.h (struct lang_identifier): Remove error_locus field.
	(IDENTIFIER_ERROR_LOCUS): Kill.
	(record_function_scope_shadow): New prototype.
	* c-typeck.c (build_external_ref): Don't complain if
	decl is error_mark_node.  When not at file scope, bind the
	decl's local value to error_mark_node to suppress further
	warnings, instead of setting IDENTIFIER_ERROR_LOCUS.

	* c-decl.c (get_function_binding_level): New static function.
	(record_function_scope_shadow): New exported function.
	(c_make_fname_decl): Use get_function_binding_level.

2003-03-17  Steve Ellcey  <sje@cup.hp.com>

	* stmt.c (tail_recursion_args): Call promote_mode to set
	unsignedp flag correctly before calling convert_move.

2003-03-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-unroll.c (decide_peel_completely,
	decide_unroll_constant_iterations, decide_unroll_stupid,
	decide_unroll_runtime_iterations, decide_peel_simple): Set
	loop->has_desc.

2003-03-17  Jan Hubicka  <jh@suse.cz>

	* ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.

2003-03-17  Olivier Hainque  <hainque@act-europe.fr>

	* function.c (assign_parms): For a struct value address passed as
	first argument, delay the function's result RTL setup code until
	after the emission of parameter conversions.

2003-03-17  Dave Love  <fx@gnu.org>
	    Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Define __digital__,
	__arch64__ to match Compaq cc.

2003-03-17  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c: Default TARGET_EBCDIC to 0 if not defined.
	(c_common_init): Set EBCDIC in cpp options.
	* cpplex.c (maybe_read_ucs, cpp_parse_escape): Use EBCDIC option,
	not conditional compilation.
	* cpplib.h (struct cpp_options): New entry EBCDIC.

2003-03-17  Neil Booth  <neil@daikokuya.co.uk>

	* fix-header.c (read_scan_file): Need to malloc arguments to add_path.

2003-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* function.c (thread_prologue_and_epilogue_insns): Set delete_unused
	argument to 0 for redirect_jump.

2003-03-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/8805
	* except.c (eh_region_u_cleanup): Add prev_try.
	(expand_eh_region_end_cleanup): Set it.
	(reachable_handlers): Use it to skip over cleanup blocks.

2003-03-17  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (TAGS): Remove obsolete handling of =*.[chy].

2003-03-17  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (TARGET_64BIT): Redefine.
	(TARGET_RELOCATABLE, TARGET_EABI, TARGET_PROTOTYPE): Likewise.
	(SUBTARGET_SWITCHES, SUBTARGET_OPTIONS): Likewise.
	(SUBTARGET_OVERRIDE_OPTIONS, CPP_SYSV_SPEC): Likewise.

2003-03-16  Richard Henderson  <rth@redhat.com>

	* simplify-rtx (simplify_binary_operation): Don't abort for
	SS_PLUS, US_PLUS, SS_MINUS, US_MINUS.

2003-03-16  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (movstrictqi, movstrictqi_1): Check
	optimize_size as well.

2003-03-16  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (print_operand): Handle 'b' modifier
	for D register to specify the low part of it, aka B.
	(m68hc11_gen_movhi): Use REG_WAS_0 note and increment or decrement
	the register if we are loading 1 or -1 to it; avoid using temp
	register when moving X/Y to Y/X.
	(m68hc11_gen_movqi): Likewise.
	(m68hc11_check_z_replacement): Fix last insn setting for compare case.

2003-03-14  Mark Mitchell  <mark@codesourcery.com>

	PR optimization/9016
	* config/i386/i386.c (ix86_expand_move): Force more CONST_DOUBLEs
	into the constant pool.

2003-03-16  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR target/9164
	* tree.c (get_narrower): For extensions with unchanged bit number,
	return the unsignedness of the outer mode.

2003-03-16  Roger Sayle  <roger@eyesopen.com>

	* c-typeck.c (build_component_ref):  Turn "for" into "do .. while"
	to avoid "may be used uninitialized" warning on ia64-hpux.
	* config/ia64/ia64-c.c: Include "tm_p.h" for function prototypes.

2003-03-16  Andreas Jaeger  <aj@suse.de>

	* configure.in: Improve check for memcheck.h.
	* configure: Regenerated.

2003-03-16  Neil Booth  <neil@daikokuya.co.uk>

	* doc/cppopts.texi: Remove documentation of -A-.

2003-03-15  Zack Weinberg  <zack@codesourcery.com>

	* doc/libgcc.texi: Remove @tie.

2003-03-15  Josef Zlomek  <zlomekj@suse.cz>

	* rtl.h (subrtx_p): Renamed to rtx_referenced_p.
	(rtx_pair): Added new element update_label_nuses, renamed to
	replace_label_data.
	* cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge): Use
	replace_label_data instead of rtx_pair.
	* loop.c (load_mems): Likewise.
	* rtlanal.c (replace_label): Replace label in pool constants and in
	INSN_LIST (in REG_LABEL note).
	(subrtx_p): Renamed to rtx_referenced_p.
	(subrtx_p_1): Renamed to rtx_referenced_p_1, compare the interior of
	LABEL_REF with CODE_LABEL, traverse constants from pool.

2003-03-15  Aldy Hernandez <aldyh@redhat.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (TEXI_GCCINT_FILES): Add libgcc.texi.
	* doc/libgcc.texi: New file.
	* doc/interface.texi: Delete paragraph about libgcc interface.
	* doc/gccint.texi: Add libgcc menu entry and @include libgcc.texi.

2003-03-15  Jason Merrill  <jason@redhat.com>

	PR debug/9039
	* dwarf2out.c (gen_decl_die): Ignore frontend tree codes.

	PR debug/6387
	* dwarf2out.c (dwarf2out_decl): If we're at -g1, just stick nested
	function DIEs at toplevel.
	(decls_for_scope): At -g1, don't descend into subblocks.

2003-03-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* varasm.c (struct rtx_const): Change type of un.addr member
	to struct holding an additional 'symbol' member.
	(decode_rtx_const): Re-enable optimization to count SYMBOL_REFs
	with equal string addresses as equal.
	(simplify_subtraction): Adapt to struct rtx_const change.

2003-03-15  Neil Booth  <neil@daikokuya.co.uk>

	* fix-header.c (read_scan_file): Read main file before handling -D.

2003-03-15  Roger Sayle  <roger@eyesopen.com>

	* c-cppbuiltin.c (builtin_define_with_value_n): Fix whitespace.
	* c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
	* cfgbuild.c (find_many_sub_basic_blocks): Likewise.
	(find_sub_basic_blocks): Likewise.
	* cgraphunit.c (cgraph_expand_functions): Likewise.
	* dwarf2out.c (prune_unused_types): Likewise.
	* expr.c (store_field): Likewise.
	* genextract.c (print_path): Likewise.
	* haifa-sched.c (schedule_insn): Likewise.
	* lcm.c (compute_antinout_edge): Likewise.
	* loop-unroll.c (decide_peel_once_rolling): Likewise.
	* ra-colorize.c (ra_colorize_free_all): Likewise.
	* ra-debug.c (dump_igraph): Likewise.
	(debug_hard_reg_set): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	* rtlanal.c (refers_to_regno_p): Likewise.
	* tracer.c (layout_superblocks): Likewise.

2003-03-15  Neil Booth  <neil@daikokuya.co.uk>

	* fix-header.c (read_scan_file): Fix thinko.

2003-03-15  Glen Nakamura  <glen@imodulo.com>

	* reload1.c (choose_reload_regs): Use && instead of ||
	with REG_CANNOT_CHANGE_MODE_P condition.

2003-03-15  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-common.h (cb_register_builtins): Rename c_cpp_builtins.
	* c-lex.c (init_c_lex): Register builtins hook is dead.
	* c-opts.c (COMMAND_LINE_OPTIONS, missing_arg): Handle -A, -D and -U.
	(c_common_decode_option): Don't call cpp_handle_option.
	Handle -A, -D and -U.
	(handle_deferred_opts): Simplify.
	(finish_options): Define builtins and command line macros.
	* c-ppoutput.c (init_pp_output): Register builtins hook is dead.
	* cppinit.c: Don't include intl.h.
	(init_builtins): Rename cpp_init_builtins.  No hook to call.
	(init_library): Don't need to sort options.
	(cpp_create_reader): Don't set pending.
	(cpp_destroy): Don't free pending.
	(struct pending_option, cl_directive_handler, struct cpp_pending,
	APPEND, free_chain, new_pending_directive, parse_option, opt_comp,
	cpp_finish_options, COMMAND_LINE_OPTIONS, DEF_OPT, struct cl_option,
	cl_options, cpp_handle_option): Remove.
	* cpplib.h (struct cpp_pending, register_builtins, cpp_handle_option,
	cpp_finish_options): Remove.
	(cpp_init_builtins): New.
	* fix-header.c (read_scan_file): Update to handle -D.  Fix
	handling of -I.  Replace call to cpp_finish_options.

2003-03-15  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	PR optimization/9387
	* function.c (thread_prologue_and_epilogue_insns): Use redirect_jump
	for conditional returns.

2003-03-14  Jason Merrill  <jason@redhat.com>

	PR optimization/6871
	* varasm.c (assemble_variable): Leave constant zeroes in .rodata.

2003-03-14  Neil Booth  <neil@daikokuya.co.uk>

	* c-opts.c (finish_options): New.
	(COMMAND_LINE_OPTIONS, c_common_decode_option): Add -imacros.
	(missing_arg): Handle OPT_include and OPT_imacros.
	(c_common_init, c_common_parse_file): Use finish_options.
	(handle_deferred_opts): Update.
	* cppinit.c (struct cpp_pending): Remove imacros_head and imacros_tail.
	(cpp_finish_options): Don't handle -imacros here.
	(no_fil): Remove.
	(COMMAND_LINE_OPTIONS, cpp_handle_option): Don't handle -imacros.

2003-03-14  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_load_toc_table): Don't call
	rs6000_maybe_dead if !fromprolog.

2003-03-14  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-common.h (fe_file_change, pp_file_change): New.
	* c-lex.c (init_c_lex): Don't set cb_file_change.
	(c_common_parse_file): Move to c-opts.c.
	(cb_file_change): Rename fe_file_change.
	* c-opts.c: Include debug.h.
	(warn_unused_macros, include_cursor): New.
	(push_command_line_include, cb_file_change): New.
	(COMMAND_LINE_OPTIONS): Handle -include.
	(c_common_decode_option): Use local warn_unused_macros.
	Handle OPT_include.
	(c_common_post_options): Set file change callback.
	(handle_deferred_opts): Skip -include.  Don't free the array.
	(c_common_init): Call cpp_finish_options here, and push an
	initial -include file.
	* c-ppoutput.c (cb_file_change): Rename pp_file_change.
	(preprocess_file): Don't call cpp_finish_options.
	(init_pp_output): Don't set the file change callback.
	(pp_file_change): Return if no line commands or no output.
	* cpphash.h (next_include_file, first_unused_line): Remove.
	* cppinit.c (include_head, include_tail): Remove.
	(cpp_destroy): Don't free -include chain.
	(cpp_finish_options): Don't handle -include, or worry about
	-Wunused-macros.
	(_cpp_maybe_push_include_file): Remove.
	(COMMAND_LINE_OPTIONS, cpp_handle_option): Don't handle -include.
	* cpplib.c (_cpp_pop_buffer): Don't handle -include.
	* cppmacro.c (_cpp_warn_if_unused_macro, _cpp_create_definition):
	Used flag is set based upon the state of the warn_unused_macros
	flag, and so use of first_unused_line is unnecessary.

2003-03-13  Jan Hubicka  <jh@suse.cz>

	* cselib.c (clear_table): Do not take argument; always clear just
	used slots.
	(cselib_process_insn):  Update call of clear_table
	(cselib_init): Do not call clear_table.
	(cselib_finish): Clear table.

	* cse.c (count_reg_usage): Do not check side_effects_p.
	* rtlanal.c (set_noop_p): Check side_effects_p only when set looks
	like noop.
	(find_reg_equal_equiv_note): Do not use find_reg_note.

2003-03-14  Richard Henderson  <rth@redhat.com>

	PR target/9700
	* config/alpha/alpha.c (alpha_va_start): Account for
	current_function_pretend_args_size in the AP offset.

	* config/alpha/alpha.h (SETUP_INCOMING_VARARGS): Move out of line.
	(INITIAL_ELIMINATION_OFFSET): Move out of line.
	* config/alpha/alpha.c (alpha_setup_incoming_varargs): New.
	(alpha_initial_elimination_offset) New.
	* config/alpha/alpha-protos.h: Update.

2003-03-14  Jakub Jelinek  <jakub@redhat.com>

	* stmt.c (expand_start_case): Call emit_queue ().

2003-03-14  Chris Demetriou  <cgd@broadcom.com>
	    Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (FUNCTION_PROFILER): _mcount() doesn't pop 2
	words in new abis.

2003-03-14  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/8396
	* tree-inline.c (initialize_inlined_parameters): Make sure the value
	of read-only constant arguments is passed with the right type.

2003-03-14  Steven Bosscher  <steven@gcc.gnu.org>

	* doc/extend.texi (Function Names): Make the example compilable.

2003-03-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (processor_target_table): Really allow
	GP optional instructions on Power4.

2003-03-13  Roger Sayle  <roger@eyesopen.com>

	* calls.c (flags_from_decl_or_type): Factor and remove redundant
	conditional tests.

2003-03-13  Mike Stump  <mrs@apple.com>

	* ggc-page.c (struct page_entry): Remove varray.h header.
	Add index_by_depth field.
	Remove save_in_use_p field.
	(struct globals): Add depth_in_use, depth_max, by_depth_in_use,
	by_depth_max, by_depth, and save_in_use fields.
	(INITIAL_PTE_COUNT): Add.
	(save_in_use_p_i): Add.
	(save_in_use_p): Add.
	(adjust_depth): Add.
	(move_ptes_to_front): Add.
	(push_depth): Add.
	(push_by_depth): Add.
	(prefetch): Add.
	(free_page): Add support for and use faster data structures.
	(ggc_alloc): Likewise.
	(init_ggc): Likewise.
	(ggc_recalculate_in_use_p): Likewise.
	(ggc_pop_context): Likewise.
	(clear_marks): Likewise.
	(ggc_pch_read): Likewise.
	* Makefile.in (ggc-page.o): Remove varray.h.

2003-03-13  Nathanael Nerode  <neroden@gcc.gnu.org>

	* ChangeLog: Rotated last year's entries to...
	* ChangeLog.8: New.

	* config/ia64/fde-glibc.c, config/ia64/freebsd.h,
	config/ia64/hpux.h, config/ia64/hpux_longdouble.h,
	config/ia64/ia64-c.c, config/ia64/ia64-modes.def,
	config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/ia64/ia64.md,
	config/ia64/itanium1.md, config/ia64/itanium2.md,
	config/ia64/quadlib.c, config/ia64/unwind-ia64.c,
	config/ia64/unwind-ia64.h: It's GCC, not GNU CC.

2003-03-13  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_dwarf_register_span):
	Differentiate endianness.
	(s6000_override_options): Use cpu type instead of TARGET_SPE.

2003-03-13  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (print_multi_reg): Do not generate a type 2
	LDM instructions with writeback enabled.
	(output_return_instruction): Likewise.

	* config/arm/pe.h (FIXED_REGISTERS): Remove definition.
	(CALL_USED_REGISTERS): Remove definition.
	(SUBTARGET_CONDITIONAL_REGISTER_USAGE): Define.

2003-03-13  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_flag_pic): Delete.
	(rs6000_xcoff_encode_section_info): #ifdef TARGET_XCOFF.
	(rs6000_binds_local_p, TARGET_BINDS_LOCAL_P): #if TARGET_MACHO.
	(rs6000_override_options): Don't clear flag_pic for ABI_AIX.
	(rs6000_legitimize_address): Formatting.
	(rs6000_emit_move): Likewise.
	(rs6000_return_addr): Test ABI_AIX as well as flag_pic.
	(rs6000_emit_prologue <save_LR_around_toc_setup>): Likewise.
	(rs6000_elf_select_section): Comment reason for shlib being
	set for ABI_AIX.
	(rs6000_elf_unique_section): Likewise.
	(rs6000_elf_encode_section_info): Test !TARGET_AIX as well as ABI_AIX.
	* config/rs6000/rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Test ABI_AIX
	as well as flag_pic.
	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
	(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
	* config/rs6000/linux64.h (TARGET_ENCODE_SECTION_INFO): Don't define.

2003-03-13  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (try_split): Handle 1-1 splits of call insns properly.

	* config/ia64/ia64.c (TARGET_FUNCTION_OK_FOR_SIBCALL): New.
	(ia64_gp_save_reg): Remove.
	(struct ia64_frame_info): Move to the beginning of the file;
	add reg_save_gp.
	(ia64_expand_call): Rearrange for new call patterns.
	(ia64_reload_gp): New.
	(ia64_split_call): New.
	(ia64_compute_frame_size): Allocate reg_save_gp.
	(ia64_expand_prologue): Save reg_save_gp.
	(ia64_expand_epilogue): Don't restore gp.
	(ia64_hard_regno_rename_ok): Remove R4 hack.
	(ia64_function_ok_for_sibcall): New.
	(ia64_output_mi_thunk): Set reload_completed, no_new_pseudos;
	call try_split on sibcall pattern.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.md (call_nogp, call_value_nogp, sibcall_nogp):
	Rename from nopic versions.  Confiscate 2nd argument to call as
	a marker.
	(call_pic, call_value_pic, sibcall_pic): Remove.
	(call_gp, call_value_gp, sibcall_gp): New.
	(builtin_setjmp_setup): Remove.
	(builtin_setjmp_receiver): Call ia64_reload_gp.

2003-03-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/dsp16xx/dsp16xx.md: Replace
	"GNU CC" with "GCC".

	* config/c4x/c4x-c.c, config/c4x/c4x-modes.def,
	config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h,
	config/c4x/c4x.md, config/c4x/libgcc.S, config/c4x/rtems.h:
	GCC, not GNU CC.

	* genattrtab.h, hosthooks-def.h, hosthooks.h, langhooks-def.h,
	langhooks.h, tree-inline.h: Replace "GNU CC" with "GCC".

	* c-pch.c, dummy-conditions.c, genautomata.c, genconditions.c,
	langhooks.c, tree-inline.c, unwind-dw2-fde-darwin.c,
	unwind-dw2-fde-glibc.c, unwind-libunwind.c, vmsdbgout.c: Replace
	"GNU CC" with "GCC".

	* config/v850/lib1funcs.asm, config/v850/rtems.h,
	config/v850/v850-c.c, config/v850/v850-protos.h,
	config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
	GCC, not GNU CC.

	* config/vax/bsd.h, config/vax/elf.h, config/vax/netbsd-elf.h,
	config/vax/netbsd.h, config/vax/openbsd.h, config/vax/openbsd1.h,
	config/vax/ultrix.h, config/vax/vax-protos.h, config/vax/vax.c,
	config/vax/vax.h, config/vax/vax.md, config/vax/vaxv.h: GCC, not
	GNU CC.

2003-03-12  Benjamin Kosnik  <bkoz@redhat.com>

	* cpppch.c (cpp_valid_state): Use DL_WARNING_SYSHDR, not DL_WARNING.

2003-03-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* fixinc/fixinc.interix: Remove dead code (most of it).
	* fixinc/fixinc.dgux: Remove.

	* ginclude/float.h, ginclude/iso646.h, ginclude/stdarg.h,
	ginclude/stdbool.h, ginclude/stddef.h: GCC, not GNU CC.

2003-03-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_init_builtins): Fix warning.

2003-03-12  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.h (ASM_OUTPUT_XDATA_CHAR): Remove.
	(ASM_OUTPUT_XDATA_SHORT): Remove.
	(ASM_OUTPUT_XDATA_INT): Remove.
	(ASM_OUTPUT_XDATA_DOUBLE_INT): Remove.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Handled 32 bit address diffs.
	(ASM_PREFERRED_EH_DATA_FORMAT): Handle 32 bit EH pointers.
	(CASE_VECTOR_MODE): Handle 32 bit pointers in case statement.

2003-03-12  Andrew Lewycky  <andrew@mxc.ca>

	PR c++/7050
	* expr.c (store_expr): Don't attempt to store void-typed trees,
	just evaluate them for side effects.

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

	* cppfiles.c (cpp_rename_file, cpp_push_include): New.
	* cppinit.c (push_include): Move with changes to cppfiles.c.
	(cpp_read_main_file): Mark named operators here...
	(cpp_finish_options): ...not here.  Update.
	(_cpp_maybe_push_include_file): Update.
	* cpplib.h (cpp_push_include, cpp_rename_file): New.

2003-03-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* aclocal.m4: Introduce gcc_GAS_VERSION_GTE_IFELSE,
	_gcc_COMPUTE_GAS_VERSION.
	* configure.in: Use them.
	* configure: Regenerate.

2003-03-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md (adddi3): Don't clobber source operand used
	to detect carry.
	(subdi3): Reorder emitted instructions.

2003-03-12  Andreas Jaeger  <aj@suse.de>

	* config/i386/netbsd64.h (TARGET_OS_CPP_BUILTINS): Remove call to
	NETBSD_OS_CPP_BUILTINS_LP64.

2003-03-12  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Eliminate all.indirect.  Update and clean up comments.
	Rearrange.  Reorganize.
	* configure.in: Rearrange.
	* configure: Regenerate.

2003-03-12  Andreas Jaeger  <aj@suse.de>

	* c-cppbuiltin.c (cb_register_builtins): Define LP64 builtins for
	LP64 targets.

	* doc/cpp.texi (Common Predefined Macros): Document __LP64__ and
	_LP64.

	* config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Do not define
	_LP64 macros here.
	* config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Likewise.

	* config/alpha/netbsd.h (TARGET_OS_CPP_BUILTINS): Remove call to
	NETBSD_OS_CPP_BUILTINS_LP64.
	* config/sh/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Likewise.
	* config/sparc/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Likewise.

	* config/netbsd.h (NETBSD_OS_CPP_BUILTINS_LP64): Remove.

2003-03-12  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_setup_incoming_varargs): Set stack_alignment_needed to 128.

2003-03-12  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR target/9797 and PR c/9853.
	* stmt.c (expand_decl_init): Call push_temp_slots () and
	pop_temp_slots ().

2003-03-12  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c: Include basic-block.h.
	(sh_output_mi_thunk, emit_load_ptr): New functions.
	(TARGET_ASM_OUTPUT_MI_THUNK, TARGET_ASM_CAN_OUTPUT_MI_THUNK): Redefine.

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

	* config/arm/pe.h (FIXED_REGISTERS): Add Maverick registers.
	(CALL_USED_REGISTERS): Likewise.
	* config/arm/arm.h (FIRST_PSEUDO_REGISTER): Update comment
	describing how this value is calculated.

2003-03-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in (rlim_t): Define to long if no valid definition
	found in sys/resource.h.
	* config.in, configure: Regenerate.

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

	* config/mcore/mcore-elf.h (CPP_PREDEFINES): Replace with
	TARGET_OS_CPP_BUILTINS.
	* config/mcore/mcore-pe.h: Similarly.
	* config/mcore/mcore.h: Replace CPP_PREDEFINES and part of
	CPP_SPEC with TARGET_CPU_CPP_BUILTINS.

2003-03-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/9928
	* c-decl.c (duplicate_decls): Discard the initializer of the new decl
	only if it is a VAR_DECL.

2003-03-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/9888
	* config/i386/i386.md (jcc_1): Fix range.
	(jcc_2): Likewise.
	(jump): LIkewise.
	(doloop_end_internal): Likewise.

2003-03-12  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c (DLL_IMPORT_PREFIX): New define.
	Use throughout instead of DLL_IMPORT_EXPORT_PREFIX and "e."
	(DLL_EXPORT_PREFIX): New define. Use throughout instead of
	DLL_IMPORT_EXPORT_PREFIX and "i."
	(i386_pe_dllexport_name_p): Here.
	(i386_pe_dllimport_name_p): Here.
	(i386_pe_mark_dllexport): Here. Remove DLL_IMPORT_PREFIX,
	not 9 chars when getting identifier name.
	(i386_pe_mark_dllimport): Here.
	(i386_pe_encode_section_info): Here. Remove DLL_IMPORT_PREFIX,
	not 9 chars when getting identifier name. Correct comment.
	(i386_pe_strip_name_encoding): Here. Add comments for different
	cases.
	(gen_fastcall_suffix): Break down xmalloc() argument to
	components.
	(gen_stdcall_suffix): Likewise.
	Update copyright year.

2003-03-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/9888
	* config/i386/i386.md (movsi_1): Remove special alternatives
	for %eax register.
	(movsi_1_nointernunit): Likewise.
	(movhi_1): Likewise.
	* config/i386/i386.c (memory_address_length): Do not use
	short displacement when there is no base.
	(ix86_attr_length_address_default): Handle LEA instructions.

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

	* c-cppbuiltin.c (builtin_define_std): Make non-static.

2003-03-11  Loren James Rittle  <ljrittle@acm.org>

	* config/freebsd-spec.h (FBSD_CPP_PREDEFINES): Remove.
	(FBSD_TARGET_OS_CPP_BUILTINS): New port-specific macro.
	(FBSD_TARGET_CPU_CPP_BUILTINS): New port-specific macro.
	* config/freebsd.h (CPP_PREDEFINES): Remove.
	(TARGET_OS_CPP_BUILTINS): New.
	* config/alpha/freebsd.h: Use overridden FBSD_TARGET_CPU_CPP_BUILTINS
	instead of TARGET_OS_CPP_BUILTINS.
	* config/sparc/freebsd.h (CPP_PREDEFINES): Remove.

2003-03-11  Geoffrey Keating  <geoffk@apple.com>

	* c-cppbuiltin.c (builtin_define_std): Add ATTRIBUTE_UNUSED.

2003-03-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_stack_info): Remove
	insn_chain_scanned.  Use insn_chain_scanned_p in machine_function.

	* config/rs6000/rs6000.h (machine_function): Add insn_chain_scanned_p.

2003-03-11  Alexandre Oliva  <aoliva@redhat.com>

	* toplev.c (independent_decode_option): Return success for --help,
	--target-help and --version.

2003-03-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/linux64.h (DRIVER_SELF_SPECS): Add endian_spec.
	Default to -mips3 on -mabi=64.  Don't add -mips* flag if -march is
	specified.
	(SUBTARGET_ASM_SPEC): Remove -mips*-adding code obviated by
	DRIVER_SELF_SPECS.
	(LINK_SPEC): Let endian options affect the linker emulation name.

2003-03-11  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (reload_inqi): Fix mode for source in second set.

2003-03-11  Jan Hubicka  <jh@suse.cz>

	* cselib.c (cselib_invalidate_mem_1): Move too ...
	(cselib_invalidate_mem): ... here; use new list
	(dummy_val, first_containing_mem): New static variables.
	(clear_table): Initialize first_containing_mem.
	(discard_useless_values):  Compact the containing_mem list.
	(add_mem_for_addr): Add to the list.
	* cselib.h (cselib_val): Add next_containing_mem.

2003-03-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Disable string
	instructions for e500.

2003-03-11  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-cppbuiltin.c: Include tm_p.h.

2003-03-11  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tm.texi (Frame Registers): Document DWARF_REG_TO_UNWIND_COLUMN.

	* unwind-dw2.c (DWARF_REG_TO_UNWIND_COLUMN): Define.
	(_Unwind_GetGR): Use DWARF_REG_TO_UNWIND_COLUMN.
	(_Unwind_SetGR): Same.
	(_Unwind_GetGRPtr): New.
	(_Unwind_SetGRPtr): New.
	(uw_update_context_1): Use accesor functions instead of accessing
	context->reg[] directly.
	(uw_install_context_1): Same.
	(execute_cfa_program): Same.
	(__frame_state_for): Same.

	* config/rs6000/rs6000.c (spe_synthesize_frame_save): Use 1200 as
	the synthetic register offset.

	* config/rs6000/rs6000.h (DWARF_REG_TO_UNWIND_COLUMN): New.

2003-03-11  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.md: Remove lingering EGCS reference.
	("*extopqihi_side_biap"): For HI operation, match
	cris_additive_operand_extend_operator, not
	cris_operand_extend_operator.  Adjust condition.
	("*extopqihi_side", "*extopqihi"): Ditto.
	("*extopqisi_side_biap"): Correct operand numbers in condition.
	("*extophisi_side_biap", "*extopqisi_swap_side_biap"): Ditto.
	("*extophisi_swap_side_biap", "*extopqisi_swap"): Ditto.
	("*extophisi_swap"): Ditto.
	("*extopqihi_swap_side_biap"): For HI operation, match a simple
	PLUS, not cris_operand_extend_operator.  Adjust condition and
	output template.
	("*extopqihi_swap_side", "*extopqihi_swap"): Ditto.
	* config/cris/cris.h (PREDICATE_CODES): Add
	cris_additive_operand_extend_operator.
	* config/cris/cris.c (cris_additive_operand_extend_operator):
	New predicate.

2003-03-11  Hartmut Penner  <hpenner@de.ibm.com>

	* df.c (read_modify_subreg_p): Change from static to global.
	* df.h (read_modify_subreg_p): Add prototype.
	* sched-deps.c (sched_analyze_1): Generate true dependency for
	strict_low_part, certain subregs and zero/sign_extract.

2003-03-11  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-common.c: Don't include real.h or except.h.
	(REGISTER_PREFIX): Remove.
	(builtin_define_std, builtin_define_with_value,
	builtin_define_with_int_value, builtin_define_with_hex_fp_value,
	builtin_define_type_max, builtin_define_type_precision,
	builtin_define_float_constants): Move to c-cppbuiltin.c.
	(c_stddef_cpp_builtins): New.
	* c-common.h (builtin_define_with_value, c_stddef_cpp_builtins): New.
	* c-cppbuiltin.c: New, extracted from c-common.c.
	(define__GNUC__): New.
	* cppspec.c (lang_specific_driver): Remove support of -no-gcc.
	* gcc.c: Remove support of %v1, %v2 and %v3 specs.
	(cpp_unique_options): Don't support no-gcc.
	(do_spec_1): Remove support of version specs.
	* doc/invoke.texi: Remove documentation of %v1, %v2 and %v3.
	* doc/passes.texi: Update.
	* doc/tm.texi: Update.

2003-03-10  Aldy Hernandez  <aldyh@redhat.com>

	* dwarf2out.c (multiple_reg_loc_descriptor): Fix thinko.

2003-03-10  Andrew Pinski  <apinski@apple.com>

	* config/darwin.c (machopic_function_base_name): If dynamic-no-pic
	is on should not get here.
	(machopic_indirect_data_reference): If dynamic-no-pic is on just
	generate high/low parts of the address.
	(machopic_legitimize_pic_address): Change MACHOPIC_PURE to
	MACHOPIC_INDIRECT. Dynamic-no-pic uses 0 as the pic base. Generate
	symbol and labels with a new reg.  Dynamic-no-pic does not have a
	pic_offset_table_rtx.
	(machopic_select_section): Change references of flag_pic to
	MACHOPIC_INDIRECT.
	(machopic_asm_out_destructor): Likewise.
	* config/darwin.h (ASM_DECLARE_UNRESOLVED_REFERENCE): Change
	reference of flag_pic to MACHOPIC_INDIRECT.
	(MACHO_DYNAMIC_NO_PIC_P): Define as TARGET_DYNAMIC_NO_PIC.
	(MACHOPIC_INDIRECT): Is also true when dynamic-no-pic is on.
	(MACHOPIC_JUST_INDIRECT): Is also true when dynamic-no-pic is on.
	(MACHOPIC_PURE): Is not pure when dynamic-no-pic is on.
	* config/i386/darwin.h (MASK_MACHO_DYNAMIC_NO_PIC): Define as
	0 for right now as dynamic-no-pic is not implemented on Darwin/ia32.
	* config/rs6000/darwin.h (MASK_MACHO_DYNAMIC_NO_PIC): Define.
	(TARGET_DYNAMIC_NO_PIC): Define.
	(SUBTARGET_SWITCHES): Define, have sub-target switches for
	dynamic-no-pic.
	(SUBTARGET_OVERRIDE_OPTIONS): Move check for -fpic from
	rs6000_override_options to here. Dynamic-no-pic overrides
	pic.
	(CC1_SPEC): Change from not static then pic to not static and not
	dynamic-no-pic then pic.
	* config/rs6000/rs6000.c (rs6000_override_options): Move the
	check for -fpic and DARWIN_ABI to config/rs6000/darwin.h
	(rs6000_legitimize_reload_address): Add case for loading floating in
	dynamic-no-pic.
	(rs6000_emit_move): Add case for dynamic-no-pic.  Change reference
	of flag_pic to MACHOPIC_INDIRECT.
	(secondary_reload_class): Conditional change the reference of
	flag_pic to MACHOPIC_INDIRECT.
	(rs6000_output_mi_thunk): Change reference of flag_pic to
	MACHOPIC_INDIRECT.
	(output_profile_hook): Likewise.
	(machopic_output_stub):	Non-pure (dynamic-no-pic) is now supported.
	* config/rs6000/rs6000.md (movdf_low): Add the case for
	MACHO_DYNAMIC_NO_PIC_P.
	(call): Change references for flag_pic in TARGET_MACHO to
	MACHOPIC_INDIRECT.
	(SUBTARGET_OVERRIDE_OPTIONS): Add case where -fpic is on and
	-mdynamic-no-pic is on.	 Also move case for -fpic from rs6000.c.
	* doc/invoke.texi (-mdynamic-no-pic): Document.

2003-03-10  Devang Patel  <dpatel@apple.com>

	PR c++/9394
	* gcc.c (DEFAULT_SWITCH_TAKES_ARG): Remove.
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Remove.
	* gcc.h (DEFAULT_SWITCH_TAKES_ARG): Add.
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Add.
	* cppspec.c (DEFAULT_SWITCH_TAKES_ARG): Remove.
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Remove.

2003-03-10  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	PR optimization/7189
	* toplev.c (rest_of_compilation):  Move
	check_function_return_warnings up to just after
	delete_unreachable_blocks.

2003-03-10  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (HARD_REGNO_RENAME_OK): Define.
	* config/m68hc11/m68hc11-protos.h (m68hc11_hard_regno_rename_ok):
	Declare.
	* config/m68hc11/m68hc11.c (m68hc11_hard_regno_rename_ok): New function
	for reg rename optimization to avoid using Z and Y registers.

2003-03-10  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("*addhi3_68hc12"): Accept any constant
	when adding to X and Y since leax/leay are fast.
	("*addhi3"): Accept 'I' constraint when adding to address register.
	("rotlhi3"): Operand 1 must be a register_operand.
	(peephole2): New peephole to optimize some adds.
	* config/m68hc11/m68hc11.h (CONST_OK_FOR_LETTER_P): Use 'I' constraint
	to represent -2 .. 2 small integer range.

2003-03-10  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_rotate): Set carry before
	each 16-bit rotation.

2003-03-10  Zack Weinberg  <zack@codesourcery.com>

	* c-opts.c (add_prefixed_path): Don't use concat.  When
	prefixing with cpp_GCC_INCLUDE_DIR, copy only the first
	cpp_GCC_INCLUDE_DIR_len characters.

2003-03-10  Segher Boessenkool  <segher@koffie.nl>

	* testsuite/gcc.dg/altivec-9.c: New file.

	* config/rs6000/rs6000.c (altivec_frame_fixup): Remove.
	(rs6000_emit_prologue): Use rs6000_frame_related instead.

2003-03-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Define __ev64_*64__ to use single element
	vectors.
	(__ev_convert_u64): Remove macro.  Define as inline.
	(__ev_convert_s64): Same.

2003-03-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (DWARF_FRAME_REGISTERS): Define.
	(rs6000_stack_t): Add spe_64bit_regs_used.

	* config/rs6000/rs6000.c (rs6000_stack_info): Calculate
	spe_64bit_regs_used, and use it to determine the size of the
	frame.
	(spe_func_has_64bit_regs_p): New.
	(spe_synthesize_frame_save): New.
	(rs6000_frame_related): Handle SPE synthetic registers.
	(rs6000_emit_prologue): Only save in 64-bits if the function used
	any registers in 64-bit mode.
	(rs6000_emit_epilogue): Same, but for restore.

2003-03-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (enum floating_point_type): Delete.  Replace with...
	(enum fputype): ... new.
	(FPUTYPE_DEFAULT): Renamed from FP_DEFAULT.  Values reworked.
	* linux-elf.h (FPUTYPE_DEFAULT): Likewise.
	* arm.md (attr fpu): Reworked for new underlying enum values.
	* arm.c	(arm_fpu_arch): Now enum fputype.
	(arm_fpu_tune): Renamed from arm_fpu.  Now enum fputype.
	(arm_override_options, arm_output_epilogue, arm_expand_prologue):
	Update uses of arm_fpu_arch and arm_fpu_tune.

2003-03-10  Josef Zlomek  <zlomekj@suse.cz>

	* cfgcleanup.c (outgoing_edges_match): Compare the jump tables.
	(try_crossjump_to_edge): Replace refereces to one jump table by
	references to identical jump table.
	* loop.c (load_mems): Moved setting the JUMP_LABEL to replace_label.
	(replace_label): Moved to rtlanal.c.
	(struct rtx_pair): Moved to rtl.h.
	* rtl.h (struct rtx_pair): Moved from loop.c.
	(replace_label): New extern function.
	(subrtx_p): New extern function.
	(tablejump_p): New extern function.
	* rtlanal.c (replace_label): Moved from loop.c.
	(subrtx_p_1): New static function.
	(subrtx_p): New function.
	(tablejump_p): New function.

2003-03-10  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_optimize_cfg): Fix thinko in previous patch.

	* cfgcleanup.c (merge_blocks): Return where to iterate next.
	(try_optimize_cfg): Use return value of merge_blocks

2003-03-10  Michael Matz  <matz@suse.de>

	* cfg.c (unchecked_make_edge): New.
	(cached_make_edge): Use it.
	* basic-block.h (unchecked_make_edge): Declare.
	* cfglayout.c (cfg_layout_duplicate_bb): Use it.

2003-03-10  Richard Earnshaw  <rearnsha@arm.com>

	* fpa.md: New file.  Move all patterns relating to FPA co-processor
	to here...
	* arm.md: ... from here.
	(cirrus.md, fpa.md): Include at end of description.
	(divsf3, divdf3, modsf3, movdf3, sqrtsf2, sqrtdf2): New expands.
	(pic_load_addr_based): Remove register constraint from expander.
	(seq, sne, sgt, sle, slt, sge, sgeu, sleu, sgtu, sltu, sunordered)
	(sordered, sungt, sunle, sunge, sunlt): Likewise.
	(eh_epilogue, tablejump): Likewise.

2003-03-09  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (substitute_in_expr, case 'e'): Only make recursive call
	on operands if it has a PLACEHOLDER_EXPR.

2003-03-09  David Edelsohn  <edelsohn@gnu.org>
	    Mostafa Hagog

	* config/rs6000/rs6000.md (movsi_update1): Add TARGET_UPDATE final
	condition.

2003-03-09  Neil Booth  <neil@daikokuya.co.uk>

	* config/frv/frv.h: Use TARGET_CPU_CPP_BUILTINS, not CPP_PREDEFINES.
	* config/ip2k/ip2k.h: Similarly.
	* config/m32r/m32r.h: Similarly.
	* config/m68hc11/m68hc11.h: Similarly.
	* config/mn10200/mn10200.h: Similarly.
	* config/mn10300/mn10300.h: Similarly.
	* config/pdp11/pdp11.h: Similarly.
	* config/v850/v850.h: Similarly.
	* config/rs6000/vxworks.h: Similarly for TARGET_OS_CPP_BUILTINS.
	* config/v850/retms.h: Similarly for TARGET_OS_CPP_BUILTINS.
	* config/mips/iris3.h: Remove #if 0 block.

2003-03-09  Roger Sayle  <roger@eyesopen.com>
	    Joern Rennecke <joern.rennecke@superh.com>

	* gcc.c (do_spec_1) ['{']: Revert 2003-02-24 patch.  Don't handle
	pending argument upon return from handle_braces here.
	(do_spec_2): Instead handle it upon return from do_spec_1 here.

2003-03-09  Roger Sayle  <roger@eyesopen.com>
	    Joern Rennecke <joern.rennecke@superh.com>

	* gcc.c (do_spec_1) ['{']: Revert 2003-02-24 patch.  Don't handle
	pending argument upon return from handle_braces here.
	(do_spec_2): Instead handle it upon return from do_spec_1 here.

2003-03-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* varasm.c (make_decl_one_only): Use declare_weak().

2003-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/9986
	* c-common.c (c_common_nodes_and_builtins): Initialize target builtins
	after the common builtins.
	* pa-hpux.h (DONT_HAVE_FPUTC_UNLOCKED): Define.
	* pa.c (TARGET_INIT_BUILTINS): Define.
	(pa_init_builtins): New function.

	* pa.md (call, call_value, sibcall, sibcall_value): When sufficient
	space has been allocated for the outgoing arguments, set the arg
	pointer for a call emitted after virtuals have been instantiated
	using the stack pointer offset, otherwise abort.

2003-03-09  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.h (DWARF_LINE_MIN_INSTR_LENGTH): Revert.

2003-03-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (fix_truncsfsi2, fix_truncdfsi2, arm_fix_truncsfsi2)
	(arm_fix_truncdfsi2): Add missing fix in floating point mode before
	conversion to integer.
	* cirrus.md (cirrus_truncsfsi2, cirrus_truncdfsi2): Likewise.

2003-03-09  Roger Sayle  <roger@eyesopen.com>

	* builtins.def: Fix typo and improve grammar.
	* loop-unroll.c (decide_peel_completely): Tidy log message.

2003-03-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*tstsi_upper_bit): New.
	(*iorsi3_e2f): Likewise.

2003-03-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_and_costs): Return the number of
	assembly instructions needed.
	(h8300_shift_costs): Likewise.

2003-03-09  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/cris/aout.h (ENDFILE_SPEC): Undef.

	* optabs.c (gen_move_insn): Move logic for synthesizing MODE_CC
	moves from here ...
	* expr.c (emit_move_insn_1): ... to here.

	* config/cris/aout.h (CRIS_CPP_SUBTARGET_SPEC): Move -D__AOUT__ to...
	(TARGET_OS_CPP_BUILTINS): New macro.
	* config/cris/cris.h (CRIS_CPP_SUBTARGET_SPEC): Move -D__ELF__ to...
	(TARGET_OS_CPP_BUILTINS): New macro.
	(CPP_PREDEFINES): Don't define.  Move old definitions and...
	(CPP_SPEC): ...move -D__CRIS_ABI_version=2 to...
	(TARGET_CPU_CPP_BUILTINS): New macro.
	* config/cris/linux.h (CRIS_CPP_SUBTARGET_SPEC): Move constant
	definitions and the optional __PIC__, __pic__ and
	__NO_UNDERSCORES__ definitions to...
	(TARGET_OS_CPP_BUILTINS): New macro.

	* flags.h (flag_leading_underscore): Declare.

	* c-opts.c (c_common_post_options): On fopen failure, return
	false, not NULL.

2003-03-08  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/cris/cris_abi_symbol.c: #include tconfig.h and tm.h, not
	config.h.
	* config/cris/cris.h (HAVE_GAS_HIDDEN): Don't define here.
	* config/cris/aout.h (HAVE_GAS_HIDDEN): Undef.

2003-03-08  Neil Booth  <neil@daikokuya.co.uk>

	* config/sh/rtemself.h (TARGET_OS_CPP_BUILTINS): Use instead of
	CPP_PREDEFINES.
	* config/sh/rtems.h (TARGET_OS_CPP_BUILTINS): Use instead of
	CPP_PREDEFINES.

2003-03-08  Neil Booth  <neil@daikokuya.co.uk>

	* c-common.h (c_common_init, c_common_post_options): Update.
	* c-objc-common.c (c_objc_common_init): Update for new prototype.
	* c-opts.c (saved_lineno): New.
	(c_common_post_options, c_common_init): Update prototypes,
	move call to cpp_read_main_file from latter to former.
	* c-tree.h (c_ojbc_common_init): Update.
	* langhooks-def.h (lhd_post_options): New.
	(LANG_HOOKS_INIT, LANG_HOOKS_POST_OPTIONS): Update.
	* langhooks.c (lhd_post_options): New.
	* langhooks.h (struct lang_hooks): Update post_options and init hooks.
	* toplev.c (no_backend): New.
	(process_options): Call post_options hook and set main_input_filename
	and input_filename here.
	(lang_dependent_init, do_compile): post_options hook moved to
	process_options.
	* objc/objc-act.c (objc_init): Update prototype.
	* objc/objc-act.h (objc_init): Update prototype.

2003-03-08  Roger Sayle  <roger@eyesopen.com>

	* emit-rtl.c (gen_lowpart): Don't attempt to load a part of
	a complex or vector type, using a load in the original mode.

2003-03-08  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cgraph.o): Depend on gt-cgraph.h and varray.h.
	* gt-cgraph.h: New GC file.
	* cgraph.c (known_fns): New static variable.
	(cgraph_node): Add the decl into varray.

2003-03-08  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("*movcc_expanded"): Add missing alternatives.

2003-03-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (fpa_rhs_operand, fpa_add_operand, const_double_rtx_ok_for_fpa)
	(neg_const_double_ok_for_fpa, output_mov_long_double_fpa_from_arm)
	(output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm)
	(output_mov_double_arm_from_fpa): Renamed to use fpa instead of fpu.
	All callers changed.
	* arm.md, arm.h, arm-protos.h: Updated.

	* arm.h (enum reg_class FPA_REGS): Renamed from FPU_REGS.
	(CLASS_MAX_NREGS, REGISTER_MOVE_COST, REG_CLASS_FROM_LETTER): Updated.
	* arm.c (arm_regno_class, f_register_operand): Updated.

2003-03-08  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/cris/cris.h: Remove EGCS references.
	(CPP_SPEC): Remove "-$".
	(INIT_CUMULATIVE_ARGS): Adjust parameter name to FNDECL.

2003-03-08  Neil Booth  <neil@daikokuya.co.uk>

	* config/stormy16/stormy16.h (TARGET_CPU_CPP_BUILTINS): Use in
	preference to CPP_PREDEFINES.

2003-03-08  Neil Booth  <neil@daikokuya.co.uk>

	* cppinit.c (cpp_finish_options): Set first_unused_line to -1.

2003-03-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_16_8): New.

2003-03-08  Jan Hubicka  <jh@suse.cz>

	* c-decl.c: (finish_function): Update call of tree_inlinable_function_p.
	* cgraph.h: (cgraph_local_info): Add can_inline_once
	(cgraph_global_info): Add inline_once.
	(cgraph_node): Add previous.
	(cgraph_remove_node): New.
	* cgraphunit.c (cgraph_mark_functions_to_inline_once): New static
	function.
	(cgraph_optimize): Call it.
	(cgraph_finalize_function):  Set inlinable flags.
	(cgraph_finalize_compilation_unit):  Actually remove the reclaimed nodes.
	(cgraph_mark_functions_to_output):  Use new inlining heuristics flags.
	(cgraph_expand_function): Likewise.
	* cgraph.c
	(cgraph_node): Put nodes into doubly linked chain.
	(cgraph_remove_node): New function.
	* flags.h (flag_inline_functions_called_once): Declare.
	* tree-inline.c: Include cgraph.h
	(inlinable_functions_p): Add extra argument to bypass limits.
	(expand_call_inline):  Obey cgraph flag.
	* tree-inline.h (tree_inlinable_function_p): Update prototype.

2003-03-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcse.c (bypass_block, bypass_conditional_jumps): Do not create
	irreducible loops.

	* loop-unroll.c (unroll_loop_runtime_iterations): Update irreducible
	loops info correctly.

2003-03-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/7796
	* unroll.c (calculate_giv_inc): Handle constants being
	loaded with LSHIFTRT.

2003-03-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (processor_target_table): Do not disable
	GP optional instructions on Power3, Power4, 620, and 630.

2003-03-07  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c: Fix comment formatting.
	* cfgloopanal.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* combine.c: Likewise.
	* dwarf2out.c: Likewise.
	* ggc-common.c: Likewise.
	* langhooks.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop.c: Likewise.
	* ra-build.c: Likewise.
	* sbitmap.c: Likewise.
	* toplev.c: Likewise.

2003-03-07  James E Wilson  <wilson@tuliptree.org>

	* config/sh/sh.h (HARD_REGNO_NREGS): Round up the XD register count.

2003-03-07  Geoffrey Keating  <geoffk@apple.com>

	* objc/lang-specs.h (objective-c-header): Use .gch not .pch;
	support -no-integrated-cpp.

	* c-pch.c (get_ident): Use c_language_kind and flag_objc rather
	than langhooks.name.

2003-03-07  Michael Matz  <matz@suse.de>

	* df.h (enum df_ref_flags.DF_REF_STRIPPED): New.
	(DF_FOR_REGALLOC): New.
	* df.c (df_ref_record): Set DF_REF_STRIPPED.
	(read_modify_subreg_p): Simplify.
	(df_def_record_1, df_uses_record): Set DF_REF_MODE_CHANGE more often.
	Use DF_FOR_REGALLOC.
	* ra.h (struct web): New member subreg_stripped.
	(invalid_mode_change_regs): Declare.
	* ra.c (invalid_mode_change_regs): New.
	(init_ra): Initialize it.
	* ra-build.c (init_one_web_common, remember_web_was_spilled): Use it.
	Use CANNOT_CHANGE_MODE_CLASS as ifdef guard.
	(reinit_one_web, parts_to_web_1): Deal with subreg_stripped.
	* ra-colorize.c (colorize_one_web): Use invalid_mode_change_regs.
	Use CANNOT_CHANGE_MODE_CLASS as ifdef guard.

2003-03-07  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (addsf3, adddf3, subsf3, subdf3, mulsf3, muldf3, negsf2)
	(negdf2, abssi2, abssf2, absdf2, floatsisf2, floatsidf2)
	(fix_truncsfsi2, fix_truncdfsi2, truncdfsf2): Moved back into main
	machine description file from ...
	* cirrus.md: ... here.

2003-03-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Don't use
	reg_overlap_mentioned_p.

2003-03-06  Geoffrey Keating  <geoffk@apple.com>

	* c-pch.c: Include langhooks.h.
	(IDENT_LENGTH): New.
	(get_ident): New.
	(pch_ident): Delete.
	(pch_init): Use get_ident, IDENT_LENGTH.
	(c_common_valid_pch): Likewise.  Also, use actual language
	in warning message.
	* Makefile.in (c-pch.o): Add langhooks.h to dependencies.

	* objc/config-lang.in (gtfiles): Add objc-act.c.  Remove duplicate
	c-parse.in.
	* objc/Make-lang.in (objc/objc-act.o): Add dependency on
	gt-objc-objc-act.h.
	(gt-objc-objc-act.h): New rule.
	* objc/lang-specs.h: Support PCH.
	* objc/objc-act.c: Include gt-objc-objc-act.h.
	(objc_add_static_instance): Move num_static_inst out, mark for PCH.
	(build_selector_reference_decl): Move idx out, mark for PCH.
	(build_class_reference_decl): Likewise.
	(build_objc_string_decl): Move *_idx out, mark for PCH.
	(build_tmp_function_decl): Move xxx out, mark for PCH.

2003-03-06  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (rs6000_binds_local_p):  Consider
	global functions for inlining on Darwin.

2003-03-06  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (schedule_block): Don't call reorder when sorting
	is prohibited.

2003-03-06  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (c-ppoutput.o): Update.
	* c-common.h (init_pp_output): New.
	(preprocess_file): Update.
	* c-lex.c (init_c_lex): Move mbchar initialization to cpplib.
	Register builtins.
	* c-opts.c (c_common_init): Call init_pp_output if preprocessing.
	Make call to cpp_read_main_file common to whether preprocessing
	or not.  Don't register builtins.
	* c-ppoutput.c: Include c-pragma.h.
	(setup_callbacks): Rename init_pp_output.
	(preprocess_file): No longer setup callbacks or call
	cpp_read_main_file.
	* cpphash.h (_cpp_init_mbchar): New.
	* cppinit.c (init_library): Call _cpp_init_mbchar.
	* cpplex.c (_cpp_init_mbchar): New.

2003-03-06  Roger Sayle  <roger@eyesopen.com>

	* emit-rtl.c (gen_lowpart): When requesting the low-part of a
	MEM, try loading the MEM into a register and taking the low-part
	of that, to help CSE see the use of the MEM in its true mode.

2003-03-05  Tom Tromey  <tromey@redhat.com>

	* config/stormy16/stormy16.h (DWARF_LINE_MIN_INSTR_LENGTH):
	Define.

2003-03-05  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/stormy16/stormy16.md ("*eqbranchsi"): Remove '+' on
	operand 2.
	("*ineqbranchsi"): Likewise.

2003-03-05  Andrew Haley  <aph@cambridge.redhat.com>

	* config/stormy16/stormy16.c (xstormy16_expand_prologue): Delete
	mem_fake_push_rtx.  Instead construct a SEQUENCE to show the
	register store followed by a stack increment.

2003-03-05  Chris Moller  <cmoller@redhat.com>

	* config/stormy16/stormy16.c (REG_NEEDS_SAVE): added a term
	to inhibit saving CARRY_REGS.

	* config/stormy16/stormy16.c (xs_hi_general_operand):
	added predicate to detect and error-out on out-of-range
	const_ints for movhi.
	* config/stormy16/stormy16.md (movhi): use
	xs_hi_general_operand.

	* config/stormy16/stormy16.c (xstormy16_expand_prologue):
	added a check for local vbl size overflow.
	* config/stormy16/stormy16.c (xs_hi_nonmemory_operand):
	added predicate to detect and error-out on out-of-range
	const_ints for addhi and subhi.
	* config/stormy16/stormy16.md (addhi3, addchi4, addchi5,
	subhi3, subchi4, subchi5): used xs_hi_nonmemory_operand.

	* config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
	add a term to accept PRE_MODIFY addresses.
	* config/stormy16/stormy16.c (xstormy16_expand_move):
	add code to expand PRE_MODIFY addresses to an add followed
	by a move.

2003-03-06  Jason Merrill  <jason@redhat.com>

	* tree-inline.c (inlinable_function_p): Revert earlier change
	pending investigation.

2003-03-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a new peephole2): New.

2003-03-06  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_node): Do not confuse nested functions and methods.

2003-03-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* dwarf2out.c (size_of_die): Compute size of external reference to
	die correctly.

2003-03-06  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("*movcc_expanded"): New pattern.
	("movcc", "movcc_uns", "movcc_fp", "movcc_fpeq", "movcc_fun"): New
	expanders.

2003-03-05  Roger Sayle  <roger@eyesopen.com>

	* expr.h (lang_expand_expr): Delete obsolete prototype.

2003-03-05  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (gen_highpart_mode): Fix a comment typo.

2003-03-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Generalize to
	accept a memory operand.

2003-03-05  Olivier Hainque <hainque@act-europe.fr>

	* config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Add '+'.
	* config/alpha/alpha.c (print_operand, case '+'): New.
	* config/alpha/alpha.md (call_osf_1_noreturn): Document and use.
	(call_value_osf_1_noreturn): Likewise.

2003-03-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (fixup_gotos): Change meaning of DONT_JUMP_IN.
	(expand_end_bindings): Likewise.

2003-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (return_external_pic): Add !TARGET_PA_20 to constraint.
	(epilogue): Don't generate return_external_pic when emitting PA 2.0
	code.

2003-03-05  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tm.texi: Document TARGET_DWARF_REGISTER_SPAN.

	* config/rs6000/rs6000.c (rs6000_dwarf_register_span): New.

	* hooks.c (hook_rtx_rtx_null): New.

	* hooks.h (hook_rtx_rtx_null): Protoize.

	* target-def.h (TARGET_DWARF_REGISTER_SPAN): New macro.
	(TARGET_INITIALIZER): Add TARGET_DWARF_REGISTER_SPAN.

	* target.h (struct gcc_target): Add dwarf_register_span.

	* dwarf2out.c (multiple_reg_loc_descriptor): New.
	(one_reg_loc_descriptor): New.
	(reg_loc_descriptor): Add support for values that span more than
	one register.

2003-03-05  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (calls.o, toplev.o alias.o): Depend on cgraph.h
	* alias.c:  Include cgraph.h
	(mark_constant_function): Use cgraph_rtl_info.
	* calls.c:  Include cgraph.h
	(flags_from_decl_or_type): Use cgraph_rtl_info to find pure and const
	calls.
	(expand_call): Use cgraph_rtl_info to set preferred stack boundary.
	* cgraph.c (cgraph_rtl_info): New function.
	* cgraph.h (cgraph_rtl_info): Declare
	(cgraph_rtl_info): Likewise.
	* function.h (struct function): Add recursive_call_emit.
	* toplev.c: Include cgraph.h.
	(rest_of_compilation): Set preferred_incoming_stack_boundary.

2003-03-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_simode_bld): Clear the
	destination first if possible.
	* config/h8300/h8300.md (extzv_1_r_h8300hs): Add an
	alternative.
	(extzv_1_r_inv_h8300hs): Likewise.

2003-03-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (EDGE_IRREDUCIBLE_LOOP, EDGE_ALL_FLAGS): New.
	* cfg.c (dump_edge_info): Add EDGE_IRREDUCIBLE_LOOP flag dump.
	* cfgloop.c (flow_loop_free): Made global.
	(establish_preds): New static function.
	(flow_loop_tree_node_add): Handle subloops of added loop correctly.
	(get_loop_exit_edges): New.
	(verify_loop_structure): Verify EDGE_IRREDUCIBLE_LOOP flags.
	* cfgloop.h (flow_loop_free, get_loop_exit_edges, unloop): Declare.
	* cfgloopanal.c (mark_irreducible_loops): Mark edges in irreducible
	loops.
	* cfgloopmanip.c (loop_delete_branch_edge): Allow to test for
	removability of an edge.
	(fix_irreducible_loops): New static function.
	(find_path, remove_path): Add ability to remove enclosing loops.
	(unloop): New.
	(copy_bbs, duplicate_loop_to_header_edge): Use EDGE_IRREDUCIBLE_LOOP
	flags.
	* cfgrtl.c (verify_flow_info): Handle EDGE_IRREDUCIBLE_LOOP flag.
	* loop-unroll.c (peel_loops_completely): Do not duplicate loop if
	not neccessary.
	(decide_peel_completely, peel_loops_completely): Allow complete peeling
	of non-duplicable once rolling loops.
	* loop-unswitch.c (unswitch_loop): Update EDGE_IRREDUCIBLE_LOOP flags.

2003-03-05  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (OVERRIDE_OPTIONS): For TARGET_SHMEDIA, the minimum value
	for align_jumps is 4.

	(SECONDARY_INPUT_RELOAD_CLASS): If reloading a PLUS into FPUL,
	use GENERAL_REGS.

2003-03-05  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (PAD_VARARGS_DOWN): Define and return
	according to va_arg type.
	(EXPAND_BUILTIN_VA_ARG): Remove.
	* config/m68hc11/m68hc11.c (m68hc11_va_arg): Remove.
	* config/m68hc11/m68hc11-protos.h (m68hc11_va_arg): Remove.

2003-03-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_variable_issue): Remove unnecessary
	else clauses.

2003-03-05  Michael Matz  <matz@suse.de>

	* i386/i386.c (ix86_save_reg): Also test
	current_function_uses_const_pool.

2003-03-05  Michael Matz  <matz@suse.de>

	* unwind.h: Add the GPL exception.
	* Makefile.in (USER_H): Add unwind.h.

2003-03-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/9799
	* c-typeck.c (push_init_level): Add sanity check.

2003-03-05  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation):  Defer RTL compilation only when
	RTL inlining is done.

	* cgraphunit.c (cgraph_mark_local_functions): New local function.
	(cgraph_optimize): Mark local functions.
	* i386-protos.h (init_cumulative_args): Update prototype.
	* i386.c (init_cumulative_args): Use register passing convention for
	local functions.

	* cgraph.c (cgraph_global_info_ready): New global variable
	(cgraph_local_info, cgraph_global_info): New functions.
	* cgraph.h (struct cgraph_local_info, cgraph_global_info): New
	structures.
	(cgraph_local_info, cgraph_global_info, cgraph_global_info_ready):
	Declare.
	* cgraphunit.c (cgraph_finalize_function): Set inline_many.
	(cgraph_mark_functions_to_output): Use inline_many.
	(cgraph_expand_function): Free DECL_SAVED_TREE uncondtionally.
	(cgraph_expand_functions): Expand inline functions last.
	(cgraph_optimize): Do not emit uneeded functions.

2003-03-04  Steve Ellcey  <sje@cup.hp.com>

	* expr.c (convert_modes): Check for legal hard register.

2003-03-04  Tom Tromey  <tromey@redhat.com>

	* doc/sourcebuild.texi (Front End Directory): Document tags.
	* configure: Rebuilt.
	* configure.in (target_list): Added tags.
	* Makefile.in (TAGS): Depend on lang.clean.  Include subdirectory
	TAGS files by reference.
	* objc/Make-lang.in (objc.tags): New target.

2003-03-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcov-io.h (gcov_save_position, gcov_reserve_length, gcov_resync,
	gcov_skip, gcov_skip_string, gcov_write_unsigned, gcov_write_counter,
	gcov_write_string, gcov_read_unsigned, gcov_read_counter,
	gcov_read_string, gcov_write_length): Modified to enable reading/
	writing of whole .da file just once.
	(da_file_open, da_file_close, da_file_eof, da_file_error,
	da_file_position, da_file_seek, da_file_write, da_file_read): New
	functions.
	(actual_da_file, actual_da_file_position, actual_da_file_length,
	actual_da_file_buffer, actual_da_file_buffer_size): New static
	functions.
	* libgcov.c (gcov_exit): Modified to read/write the whole .da file at
	just once.


2003-03-04  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.c (m68k_output_function_prologue): Fix CFA
	offset without frame pointer.

2003-03-04  Steve Ellcey  <sje@cup.hp.com>

	* expr.c (expand_expr): Call promote_mode to set unsignedp.

2003-03-04  Daniel Jacobowitz  <drow@mvista.com>

	* configure.in: Don't always define TARGET_SYSTEM_ROOT.
	* configure: Regenerated.
	* gcc.c: Check whether TARGET_SYSTEM_ROOT is defined.

2003-03-04  Andreas Jaeger  <aj@suse.de>

	* configure.in: Check for <memcheck.h>.
	* configure: Regenerated.

	* config.in: Define HAVE_MEMCHECK_H.

	* ggc-common.c: Use <memcheck.h> if available instead of
	<valgrind.h>.
	* ggc-page.c: Likewise.
	* cppfiles.c: Likewise.

2003-03-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_8_8): Fix cc and lengths.

2003-03-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/9262
	* c-typeck.c (do_case): Attach the first case label to the SWITCH_BODY.
	(c_finish_case): Rechain the next statements to the SWITCH_STMT.

2003-03-04  Jan Hubicka  <jh@suse.cz>

	* doc/invoke.texi:  Document that unit-at-a-time is enabled for -O3
	* toplev.c (parse_options_and_default_flags): Enable flag_unit_at_a_time
	for -O3.

2003-03-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Delete three unused variables.  Move a variable
	definition closer to its use.  Simplify use_collect2 logic.  Start to
	organize.  Simplify tests for in-tree gas and ld.
	* configure: Regenerate.

2003-03-04  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in: Update.
	* c-common.c (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes): New.
	* c-common.h (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes, preprocess_file): New.
	(init_c_lex): Update prototype.
	* c-lex.c (init_c_lex): Update prototype; move some code to
	c_common_init.
	* c-opts.c (preprocess_file): Subsume into c_common_init.
	(c_common_decode_option): Update flags.
	(c_common_init): Move code from preprocess_file and init_c_lex.
	(sanitize_cpp_opts): Update.
	* c-ppoutput.c: New, cppmain.c almost verbatim.
	* cpphash.h (struct printer): Remove.
	(struct cpp_reader): Remove print.
	* cpplib.h (dump_none, dump_only, dump_names, dump_definitions,
	cpp_preprocess_file): Remove.
	(struct cpp_options): Remove no_output, no_line_commands, dump_macros
	and dump_includes.
	* cppmain.c: Remove.
	* doc/passes.texi: Update.

2003-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* function.c (STACK_ALIGNMENT_NEEDED): New macro.  Default to 1.
	(assign_stack_local_1): Perform overall stack alignment only when
	STACK_ALIGNMENT_NEEDED is nonzero.
	* doc/tm.texi (STACK_ALIGNMENT_NEEDED): Document.

	* pa.c (compute_frame_size): Rename fsize to size.  Account for
	alignment to a word boundary before general register save block.  Only
	account for double-word alignment before floating point register save
	block if one or more are saved.  Don't allocate space for %r3 when
	frame pointer is needed.
	(hppa_expand_prologue): Include alignment to word boundary in local
	frame size.
	* pa.h (STARTING_FRAME_OFFSET): Define to 8 on both 32 and 64-bit ports.
	(STACK_ALIGNMENT_NEEDED): Define.

2003-03-04  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2out.c (rtl_for_decl_location): Don't return NULL_RTX for
	global register variables.

2003-03-04  Alexandre Oliva  <aoliva@redhat.com>

	* reload.c (reload_adjust_reg_for_mode): New function.
	(subst_reloads): Call it.
	(operands_match_p): Adjust registers using HARD_REGNO_NREGS.
	* reload.h (reload_adjust_reg_for_mode): Declare.
	* reload1.c (emit_input_reload_insns, emit_output_reload_insns):
	Call it.

2003-03-03  James E Wilson  <wilson@tuliptree.org>

	* optabs.c (add_equal_note): Delete SUBREG_REG use.
	Fixes PR c/7872.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*ixorsi3_ashift_16): New.
	(*ixorsi3_lshiftrt_16): New.
	(*iorsi3_ashift_16): Remove.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_8_8): Use '?' to simplify the
	pattern.

2003-03-03  Geoffrey Keating  <geoffk@apple.com>

	* doc/install.texi (Specific): Update entry for powerpc-darwin.

2003-03-03  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (HAVE_AS_LTOFFX_LDXMOV_RELOCS): Default to 0.

2003-03-03  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_multipass_dfa_lookahead): Delete.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Delete.
	(rs6000_variable_issue): Do not return negative value.
	(rs6000_issue_rate): Uniformly set issue rate to 1 for first
	scheduling pass.

2003-03-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* dwarf2out.c (dwarf2out_finish): Swap order of break_out_includes and
	prune_unused_types calls.

2003-03-03  Jason Merrill  <jason@redhat.com>

	* tree-inline.c (find_builtin_longjmp_call): Save and restore
	lineno and input_filename.
	(find_alloca_call): Likewise.
	(inlinable_function_p): Run the langhook earlier.

	* calls.c (compute_argument_addresses): Give the new MEMs a
	minimum alignment of PARM_BOUNDARY.

2003-03-03  J"orn Rennecke <joern.rennecke@superh.com>

	* config/sh/sh.h (EXTRA_SPECS): Add subtarget_asm_relax_spec and
	subtarget_asm_isa_spec.
	(SUBTARGET_ASM_RELAX_SPEC, SUBTARGET_ASM_ISA_SPEC): Define.
	(ASM_SPEC): Define as SH_ASM_SPEC.
	(SH_ASM_SPEC): New; take the role of ASM_SPEC, but safe from svr4.h.
	Use subtarget_asm_relax_spec and subtarget_asm_isa_spec.
	* config/sh/elf.h (ASM_SPEC): Use SH_ASM_SPEC.
	(SUBTARGET_ASM_ISA_SPEC): Undef / define.

	* sh.h (OVERRIDE_OPTIONS): Set default values for align_loops
	and align_jumps if not set.
	Force align_jumps to be at least 2.
	When relaxing, force align_functions to be at least the maximum of
	align_loops, align_jumps and 4.
	* sh.c (find_barrier, barrier_align): Honour align_jumps_log.
	(sh_loop_align): Honour align_loops_log.

	* sh.md (length attribute): Use prev_nonnote_insn instead of PREV_INSN
	to check for indirect_jump_scratch.
	(indirect_jump_scratch): Add second set.
	* sh.c (output_far_jump): Use prev_nonnote_insn instead of PREV_INSN
	when looking for indirect_jump_scratch.
	Extract scratch register taking new structure of indirect_jump_scratch
	into account.
	(gen_block_redirect): Set INSN_SCOPE for indirect_jump_scratch.

2003-03-03  Jan Hubicka  <jh@suse.cz>

	* calls.c (rtx_for_function_call): Take the address as an argument
	(expand_call): Do not modify the expression.

	* toplev.c (rest_of_compilation):  Avoid cfg_cleanup calls when not
	optimizing.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*ixorsi3_zext_hi): Restrict to
	TARGET_H8300H and TARGET_H8300S.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_8_8): Use shorter code when
	operands[0] and operands[1] are different.

2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (reload_cse_move2add): Remove variable success.

2003-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ggc-common.c (ggc_rlimit_bound): Cast RLIM_INFINITY to avoid
	warnings.

2003-03-02  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_LTOFFX_LDXMOV_RELOCS): New ia64 test.
	* config.in, configure: Rebuild.
	* config/ia64/ia64.c (ia64_ld_address_bypass_p): Accept lo_sum.
	* config/ia64/ia64.md (load_symptr): Use high/lo_sum for the
	paired ldtoffx and ldxmov annotations.
	(load_symptr_internal1): Remove.
	(load_symptr_high, load_symptr_low): New.

2003-03-02  Neil Booth  <neil@daikokuya.co.uk>

	* c-incpath.c (add_path): Fix sysp assignment.

2003-03-02  Kurt Garloff  <garloff@suse.de>

	* params.def: Introduce parameter max-inline-insns-rtl for
	a separate limit for the RTL inliner.
	* params.h: Likewise.
	* integrate.c (function_cannot_inline_p): Use it.
	* toplev.c (decode_f_option): Set multiple parameters
	controlling inlining with -finline-limit.
	* params.def: Fix orthographic and typographic errors.
	* doc/invoke.texi: Document parameters controlling inlining
	and the way -finline-limit sets multiple of them.

	* tree.h (struct tree_decl): Introduce inlined_function_flag,
	recording whether the function became eligible for inlining
	by a compiler flag rather than the declaration.
	Provide DID_INLINE_FUNC macro to access it.
	* c-decl.c (grokdeclarator): Set DID_INLINE_FUNC.
	* cp/decl.c (grokfndecl): Likewise.
	* toplev.c (rest_of_compilation): Likewise.
	* cp/optimize (maybe_clone_body): Copy DID_INLINE_FUNC.
	* print-tree.c (print_node): Report it.
	* params.def: Introduce new max-inline-insns-auto limit.
	* params.h: Likewise.
	* tree-inline.c (inlinable_function_p): Apply it to functions
	with DID_INLINE_FUNC set.
	* toplev.c (decode_f_option): Initialize it from -finline-limit
	value.
	* doc/invoke.texi: Document new parameter.

2003-03-02  Geoffrey Keating  <geoffk@apple.com>

	* fix-header.c (read_scan_file): Don't reference simplify_path.

2003-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Don't enable
	min/max instructions by default as may result in reload errors.

2003-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("mulqi3"): Allow address register to
	avoid reload problems; define split for it.

2003-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_shift_operator): New function.
	* config/m68hc11/m68hc11-protos.h (m68hc11_shift_operator): Declare.
	* config/m68hc11/m68hc11.h (PREDICATE_CODES): Register.
	* config/m68hc11/m68hc11.md ("rotrhi3", "rotlhi3"): New patterns for
	rotatert and rotate.
	("rotrhi3_const", "rotlhi3_const"): Rename of old 'rotrhi3' insns.
	("*rotrhi3", "*rotlhi3"): New insn pattern for non-const rotatert.
	("*rotrhi3_addr"): New split for shift insns on address register.
	("*lshrhi3", "*ashrhi3", "*ashlhi3_2"): Use new split.
	* config/m68hc11/larith.asm (___rotlhi3): New asm function.
	(___rotrhi3): Likewise.
	* config/m68hc11/t-m68hc11-gas (LIB1ASMFUNCS): Build them.

2003-03-02  Neil Booth  <neil@daikokuya.co.uk>

	* toplev.c (aux_base_name): Moved from toplev.h.
	(filename): Constify.
	(lang_dependent_init): Don't duplicate name.
	(process_options): Set aux_base_name here, not...
	(do_compile): ...here.  Change protoype.
	(toplev_main): Move some code from do_compile.
	* toplev.h: Remove aux_base_name.

2003-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	iorxor_operator.
	* config/h8300/h8300.c (print_operand): Handle 'c'.
	(iorxor_operator): New.
	* config/h8300/h8300.h (PREDICATE_CODES): Add iorxor_operator.
	* config/h8300/h8300.md (*iorhi3_zext): Remove.
	(*iorsi3_zexthi): Likewise.
	(*iorsi3_zextsi): Likewise.
	(*xorhi3_zextqi): Likewise.
	(*xorsi3_zexthi): Likewise.
	(*xorsi3_zextsi): Likewise.
	(*ixorhi3_zext): New.
	(*ixorsi3_zext_qi): Likewise.
	(*ixorsi3_zext_hi): Likewise.

2003-03-02  Neil Booth  <neil@daikokuya.co.uk>

	* c-incpath.c (remove_component_p, simplify_path): Move back to
	cppfiles.c.
	(remove_duplicates): Use cpp_simplify_path.
	* c-incpath.h (simplify_path): Remove.
	* c-lex.c: Don't include c-incpath.h.
	(init_c_lex): Remove simplify_path.
	* cppfiles.c (remove_component_p, cpp_simplify_path): Restore.
	(find_or_create_entry, validate_pch): Revert.

2003-03-02  Ashif Harji  <asharji@uwaterloo.ca>

	* gcc.c (default_compilers): Add -no-integrated-cpp flag to invoke
	  an external cpp during compilation.
	(option_map): Likewise.
	* objc/lang-specs.h (default_compilers): Similarly.
	* doc/invoke.texi: Document -no-integrated-cpp flag.

2003-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (zero_extendqisi2): Change to an
	expander.
	(*zero_extendqisi2_h8300): New.
	(*zero_extendqisi2_h8300hs): New.
	(two splitters): New.

2003-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fp-bit.h (float_to_usi): Fix condition wrapping prototype.

2003-03-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Remove dead code.

2003-03-01  Roger Sayle  <roger@eyesopen.com>

	PR c++/9367
	* builtin-types.def (DEF_FUNCTION_TYPE_VAR_3): New macro.
	(BT_FN_INT_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
	BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_CONST_STRING_VAR,
	BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
	BT_FN_INT_STRING_SIZE_CONST_STRING_VAR): New built-in types.
	* builtin-attrs.def (ATTR_NONNULL_1, ATTR_NONNULL_2,
	ATTR_NONNULL_3): Also include the nothrow attribute.
	(sprintf, scanf, sscanf, vprintf, vsprintf, snprintf,
	vsnprintf, vscanf, vsscanf): Don't define attributes here.
	* builtins.def (putchar, puts): Make full C89 built-ins.
	(snprintf, sprintf, scanf, sscanf, vprintf, vscanf,
	vsscanf, vsnprintf, vsprintf): New built-ins.
	* c-common.c (c_common_nodes_and_builtins): Handle new macro
	DEF_FUNCTION_TYPE_VAR_3.

	* doc/extend.texi: Document these new built-in functions.

2003-03-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-03-01  Richard Earnshaw  <rearnsha@arm.com>

	* predict.c (estimate_bb_frequencies): Correctly set
	real_values_initialized after initialization.

2003-03-01  Neil Booth  <neil@daikokuya.co.uk>

	* Makefile.in (C_AND_OBJC_OBJS, c-incpath.o, c-lex.o, LIBCPP_OBJS,
	cppinit.o, cppdefault.o, fix-header): Update.
	* c-incpath.c: New file.
	* c-incpath.h: New file.
	* c-lex.c: Include c-incpath.h.
	(init_c_lex): Register path simplifier.
	* c-opts.c: Include cppdefault.h and c-incpath.h.
	(TARGET_SYSTEM_ROOT, verbose, iprefix, sysroot, std_inc,
	std_cxx_inc, quote_chain_split, add_prefixed_path): New.
	(COMMAND_LINE_OPTIONS): Add more options from cpplib.
	(missing_arg, c_common_decode_option): Handle them.
	(c_common_post_options): Register include chains.
	(print_help): Update.
	* cppdefault.h (struct default include): Update.
	Move some macros to ...
	* cppdefault.c: ... here.
	(cpp_include_defaults): Add extra field add_sysroot.
	* cppfiles.c (include_file, search_from, find_or_create_entry,
	cpp_included, find_include_file, remap_filename): Update for
	renaming of search_path to cpp_path, and of the chain headers.
	(remove_component_p, _cpp_simplify_pathname): Move to c-incpath.c.
	* cpphash.h (struct search_path): Move to cpplib.h.
	(struct cpp_buffer, struct cpp_reader): Update.
	(_cpp_simplify_pathname): Remove.
	* cppinit.c: Don't include prefix.h and cppdefault.h.
	(INO_T_EQ, INO_T_COPY, path_include, append_include_chain,
	remove_dup_dir, remove_dup_nonsys_dirs, remove_dup_dirs,
	init_standard_includes, BRACKET, SYSTEM, AFTER, no_dir,
	no_pth, cpp_handle_options): Remove.
	(struct pending_option): Remove chain members.
	(cpp_destroy, cpp_read_main_file, COMMAND_LINE_OPTIONS,
	cpp_handle_option): Update.
	* cpplib.h (struct cpp_path, cpp_set_include_chains): New.
	(struct cpp_options): Remove quote_include, bracket_include,
	include_prefix, include_prefix_len, verbose, ignore_srcdir,
	no_standard_includes, no_standard_cplusplus_includes.
	(struct cpp_callbacks): Add simplify_path.
	(cpp_handle_options): Remove.
	* fix-header.c: Include c-incpath.h.
	(read_scan_file): Update to use c-incpath functionality.
	* doc/passes.texi: Update.

2003-03-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (bit_operand): Accept MEM only if it
	satisfies EXTRA_CONSTRAINT 'U'.

2003-03-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*tst_extzv_bitqi_1_n): Take a scratch
	register.
	(*tst_extzv_memqi_1_n): Change to a splitter.
	(a peephole2): Update.

2003-03-01  Richard Earnshaw  <rearnsha@arm.com>

	* predict.c (estimate_bb_frequencies): Initialize the sreal
	constants once per compilation.

2003-02-28  Richard Henderson  <rth@redhat.com>

	* toplev.c (flag_eliminate_unused_debug_types): Enable by default.

2003-02-28  scott snyder  <snyder@fnal.gov>

	* flags.h: Add flag_eliminate_unused_debug_types.
	* toplev.c: Add flag_eliminate_unused_debug_types.
	(f_options): Add -feliminate-unused-debug-types.
	* dwarf2out.c (struct file_table): Add emitted member.
	(splice_child_die): Fix the parent pointer for the child being
	spliced.
	(lookup_filename): Maintain file_table.emitted array.  Don't
	output .file directive here.
	(maybe_emit_file): (new)
	(init_file_table): Set up file_table.emitted.
	(dwarf2out_source_line): Use maybe_emit_file.
	(dwarf2out_start_source_file): Use maybe_emit_file.
	(dwarf2out_init): Use maybe_emit_file.
	(prune_unused_types_walk_attribs): (new)
	(prune_unused_types_mark): (new)
	(prune_unused_types_walk): (new)
	(prune_unused_types_prune): (new)
	(prune_unused_types): (new)
	(dwarf2out_finish): Call prune_unused_types if
	flag_eliminate_unused_debug_types is set.
	* doc/invoke.texi (Option Summary): Add
	-feliminate-unused-debug-types.
	(Debugging Options): Likewise.

2003-02-28  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi: Change .pch to .gch.
	* cppfiles.c (open_file_pch): Likewise.
	* gcc.c (default_compilers): Likewise.

2003-02-28  Aldy Hernandez  <aldyh@redhat.com>

	* floatlib.c: Remove.

2003-02-28  Jason Merrill  <jason@redhat.com>

	* stor-layout.c (variable_size): Leave a "minus 1" outside the
	SAVE_EXPR.

2003-02-28  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md: Add compare bypass.

2003-02-28  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd.h: Update copyright years.
	(NETBSD_CPP_SPEC): Define _REENTRANT and _PTHREADS if
	-pthread is specified on the command line.

2003-02-28  Dale Johannesen <dalej@apple.com>

	* loop.c (struct movable): Add insert_temp, shrink savemode.
	(scan_loop): Accept invariants that require copying; mark as
	insert_temp.
	(combine_movables): Don't combine insert_temp movables.
	(move_movables): Insert copies for insert_temp movables.
	Don't record the info based on regno for insert_temp's.

2003-02-28  Joel Sherrill <joel@OARcorp.com>

	PR 9638/other
	* config/i386/i386.c (DEFAULT_PCC_STRUCT_RETURN): Ensure the
	this constant defaults to 1.

2003-02-28  Bob Wilson  <bob.wilson@acm.org>

	* config.gcc (xtensa-*-linux*): Add t-slibgcc-elf-ver to tmake_file.

2003-02-28  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (mulhisi3, mulhisi3addsi, mulhidi3adddi): Enable for any
	ARMv5e processor, not just for XScale.  Instructions are predicable.
	(mulhisi3tb, mulhisi3bt, mulhisi3tt): New patterns for ARMv5e.

2003-02-28  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (note_invalid_constants): Change parameter type
	from bool to int.

2003-02-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*tst_extzv_bitqi_1_n): Accept the
	test of bit 7.
	(*tst_extzv_memqi_1_n): Likewise.
	(a peephole2): New.

2003-02-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Wrap in
	#ifndef __mips16.

2003-02-28  Jan Hubicka  <jh@suse.cz>

	* combine.c (gen_lowpart_for_combine): Update handling of
	subregs_of_mode
	* flow.c (life_analysis, mark_used_regs): Likewise.
	* regclass.c (subregs_of_mode): Turn into single bitmap.
	(cannot_change-mode_set_regs, invalid_mode_change_p): Update
	dealing with subregs_of_mode
	* regs.h (subregs_of_mode): Update prototype.

2003-02-28  Josef Zlomek  <zlomekj@suse.cz>

	* emit-rtl.c (set_reg_attrs_for_parm): New function.
	* rtl.h (set_reg_attrs_for_parm): New exported function.
	* function.c (assign_parms): Use set_reg_attrs_for_parm instead of
	set_reg_attrs_from_mem.

2003-02-27  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg <zack@codesourcery.com>

	* gcc.c (do_spec_1):  Treat %U like %u for unique associations.

2003-02-27  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (sext_for_mode): Remove.
	(reload_cse_move2add): Use trunc_int_for_mode instead of
	sext_for_mode.
	(move2add_note_store): Likewise.
	Reset register information if we see a set in non-integer
	mode.

2003-02-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix43.h (ASM_SPEC): Only emit -mppc64 if no -mcpu
	option.
	(ASM_CPU_SPEC): Use -m620 for Power3, Power4, 620, 630.
	* config/rs6000/aix51.h: Same.
	* config/rs6000/aix52.h: Same.
	* config/rs6000/power4.md: Additional VMX bypasses.

2003-02-27   Geert Bosch <bosch@gnat.com>

	* toplev.c (print_version): Add indentation for GGC heuristics and
	output after printing version information.

2003-02-27  James E Wilson  <wilson@tuliptree.org>

	* combine.c (simplify_comparison): Require integral mode when
	permuting SUBREG with AND.

2003-02-27  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/hpux.h (STARTFILE_PREFIX_SPEC): Remove.

2003-02-27  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (extendsfdf2): Add pattern accidentally
	deleted when cirrus instructions were added.

2003-02-27  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (*-*-netbsd[2-9]*, *-*-netbsdelf[2-9]*): Enable
	POSIX thread support by default.

2003-02-27  Roger Sayle  <roger@eyesopen.com>

	* config/i386/cygwin.h: Don't include any other files directly.
	* config/i386/mingw32.h: Don't include cygwin.h directly.
	* config.gcc (cygwin, mingw32, uwin): Instead make these files
	explicit in the tm_files variable.

2003-02-27  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md: Add TI constant splitter.

2003-02-26  Alexandre Oliva  <aoliva@redhat.com>

	* builtins.c (purge_builtin_constant_p): Handle subreg of
	constant_p_rtx too.

	* function.c (assign_stack_local_1): Truncate constant added to
	frame_pointer_rtx or virtual_stack_vars_rtx for Pmode.

2003-02-26  David Edelsohn  <edelsohn@gnu.org>

	* config.gcc: Add power4 to PowerPC with_cpu list.

2003-02-26  Jan Hubicka  <jh@suse.cz>

	* objc-act.c: (mark_referenced_methods): Fix compilation problem.

2003-02-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcov-dump.c (print_prefix): Fix signedness warning.
	* gcov-io.h (struct counter_section, struct counter_section_data): New.
	(struct function_info): n_arc_counts field removed, n_counter_sections,
	counter_sections fields added.
	(struct gcov_info): arc_counts, n_arc_counts fields removed,
	n_counter_sections, counter_sections fields added.
	* libgcov.c (gcov_exit, __gcov_flush): Add support for multiple
	profile sections.
	* profile.h (MAX_COUNTER_SECTIONS): New.
	(struct section_info): New.
	(struct profile_info): count_instrumented_edges,
	count_edges_instrumented_now fields removed, n_sections, section_info
	fields added.
	(find_counters_section): Declare.
	* profile.c (struct function_list): count_edges field removed,
	n_counter_sections, counter_sections fields added.
	(set_purpose, label_for_tag, build_counter_section_fields,
	build_counter_section_value, build_counter_section_data_fields,
	build_counter_section_data_value, build_function_info_fields,
	build_function_info_value, build_gcov_info_fields,
	build_gcov_info_value): New static functions.
	(find_counters_section): New function.
	(instrument_edges, get_exec_counts, compute_branch_probabilities,
	branch_prob, create_profiler): Modified to support multiple profile
	sections.

2003-02-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (compute_frame_size): Don't assume PREFERRED_STACK_BOUNDARY
	is 8 * STACK_BOUNDARY.
	* pa.h (PREFERRED_STACK_BOUNDARY): Change to 128 on 64-bit port.

2003-02-26  Michael Matz  <matz@suse.de>

	* ra-colorize.c (merge_moves): Fix list handling.

2003-02-26  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (is_load_address): Rename to...
	(arm_memory_load_p) ... this and make it check for SUBREGs and
	constant loads that will be converted into loads from the
	minipool.
	(is_cirrus_insn): Rename to ...
	(arm_cirrus_insn_p): ... this, for consistency.  Replace test
	of CIRRUS_NO with CIRRUS_NOT.
	(cirrus_reorg): Use renamed functions.
	(note_invalid_constants): Change from a void function to bool.
	Add an extra parameter, saying whether the fixups should be
	pushed.  Return true if fixups are needed.
	(arm_reorg): Use renamed functions.  Use INSN_P.  Replace test
	of CIRRUS_NO with CIRRUS_NOT.
	* config/arm/arm.h (FLOAT_WORDS_BIG_ENDIAN): Mention that
	other floating point co-processors can also affect this.
	* config/arm/arm.md ("type" attribute): Add mav_farith and
	mav_dmult.  Replace references to "cirrus_type" attribute with
	"type".
	* config/arm/cirrus.md ("cirrus_fpu" attribute): Delete.
	("cirrus_type" attribute): Delete - use "type" instead.
	("cirrus" attribute): Replace 'no' with 'not' and 'yes' with
	'normal'.

2003-02-25  Jan Hubicka  <jh@suse.cz>

	* objc-act.c: Include cgraph.h
	(mark_referenced_methods): New function.
	(objc_init): Call it.
	* objc-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Set.

	* c-decl.c (finish_function): Honor can_defer_p even in unit-at-a-time
	mode.

	* optabs.c (expand_fix): Do not widen the input operand.

	* expr.c (emit_group_store):  Fix crash when converting single
	register into complex register.

	* Makefile.in (jump.o, regclass.o, alias.o): Add dependency on timevar.h
	* alias.c: Include timevar.h
	(init_alias_analysis):  Set timevar
	* jump.c: Include timevar.h
	(rebuild_jump_labels):  Set timevar
	* regcalss.c: Include timevar.h
	(reg_scan):  Set timevar
	* timevar.def (TV_ALIAS_ANALYSIS, TV_REG_SCAN, TV_REBUILD_JUMP): New

2003-02-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.

	* Makefile.in (loop-unroll.o): New.
	* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
	(unroll_and_peel_loops): Declare.
	* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
	flag_old_unroll_loops.
	* loop.c (loop_invariant_p): Ditto.
	* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
	flag_old_unroll_all_loops.
	* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
	(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
	* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
	(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
	PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
	PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
	PARAM_MAX_ONCE_PEELED_INSNS): New.
	* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
	(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
	instead of old one.
	(flag_peel_loops): New.
	(lang_independent_options): The new flags added.
	(rest_of_compilation): Call new unroller.
	(process_options): Setup flags for coexistence of old and new unroller.
	* doc/invoke.texi: Document new options.
	* doc/passes.texi: Document new unroller pass.

2003-02-26  David Billinghurst <David.Billinghurst@riotinto.com>

	* fixinc/fixincl.x: Regenerate

2003-02-26  Josef Zlomek  <zlomekj@suse.cz>

	* function.c (assign_parms): Set reg_attrs for parameters passed in
	registers.

2003-02-26  Alan Modra  <amodra@bigpond.net.au>

	PR target/9681
	* tlink.c (scan_linker_output): Drop leading '.' from symbol names.

2003-02-25  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (ASM_FILE_START): Do not emit machine
	pseudo-op.

2003-02-25  Roger Sayle  <roger@eyesopen.com>

	* combine.c (combine_simplify_rtx, simplfy_comparison):  Use CC0_P.
	* cse.c (invalidate_skipped_set):  Likewise.
	* integrate.c (subst_constants):  Likewise.
	* jump.c (reversed_comparison_code_parts):  Likewise.
	* loop.c (canonicalize_condition):  Likewise.
	* simplify-rtx.c (simplify_relational_operation):  Likewise.

2003-02-25  Roger Sayle  <roger@eyesopen.com>

	* builtins.def (DEF_LIB_ALWAYS_BUILTIN, DEF_UNUSED_BUILTIN): Delete.
	(abs, labs, fabs, fabsf, fabsl, abort, exit, _exit, _Exit):  Use
	the appropriate macro to define built-in function.
	(fmod,fmodf,fmodl): New built-in functions.

	* doc/extend.texi (fmod,fmodf,fmodl): Document new built-ins.

2003-02-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (function_arg): Pass variable sized
	structures correctly on the stack.

2003-02-25  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (reload_cse_move2add): Use STRICT_LOW_PART if PLUS
	does not reduce the cost of SET.

2003-02-25  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR target/9732
	* config/rs6000/rs6000.c (first_reg_to_save): Handle
	PIC_OFFSET_TABLE_REGNUM for -fPIC too.
	(rs6000_emit_prologue): Likewise.
	(rs6000_emit_epilogue): Likewise.
	* config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Make
	PIC_OFFSET_TABLE_REGNUM a fixed register for -fPIC.

2003-02-25  Richard Henderson  <rth@redhat.com>

	* real.c (real_to_integer2): Force overflow result only for
	unsigned overflow.

2003-02-25  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (cprop_jump): Revert the 2003-02-23 change.

2003-02-25  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>
	    Richard Henderson  <rth@redhat.com>

	* sched-ebb.c (add_deps_for_risky_insns): Add the dependence when
	there is no similar load.

2003-02-25  Vladimir Makarov  <vmakarov@redhat.com>
	    Richard Henderson  <rth@redhat.com>

	* sched-int.h (INSN_TRAP_CLASS, WORST_CLASS): Move them from
	sched-rgn.c.
	(add_forward_dependence): New function prototype.

	* sched-rgn.c (INSN_TRAP_CLASS, WORST_CLASS): Move them to
	sched-init.h.
	(CONST_BASED_ADDRESS_P, may_trap_exp, haifa_classify_insn): Move
	them to haifa-sched.c.

	* haifa-sched.c (CONST_BASED_ADDRESS_P, may_trap_exp,
	haifa_classify_insn): Move them from sched-rgn.c.

	* sched-deps.c (add_dependence): Return flag of creating a new
	entry.
	(add_forward_dependence): New function.
	(compute_forward_dependences): Use the function.

	* sched-ebb.c (earliest_block_with_similiar_load): New function.
	(add_deps_for_risky_insns): New function.
	(schedule_ebb): Call the function.

2003-02-20  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tm.texi: Document Rename TARGET_VECTOR_TYPES_COMPATIBLE to
	TARGET_VECTOR_OPAQUE_P.  Document accordingly.

	* testsuite/gcc.dg/20030218-1.c: Check that initialization of
	opaque types fail.

	* c-typeck.c (comptypes): Change call to vector_types_compatible
	to vector_opaque_p.
	(convert_for_assignment): Call vector_opaque_p instead of
	vector_types_compatible.
	(really_start_incremental_init): Disallow initialization of opaque
	types.

	* target-def.h: Remove TARGET_VECTOR_TYPES_COMPATIBLE.
	Define TARGET_VECTOR_OPAQUE_P.
	(TARGET_INITIALIZER): Same.

	* target.h (struct gcc_target): Remove vector_types_compatible.
	Add vector_opaque_p.

	* config/rs6000/rs6000.c (rs6000_spe_vector_types_compatible):
	Remove.
	(is_ev64_opaque_type): Check for TARGET_SPE and make sure type is
	a vector type.  Change return type to bool.
	(TARGET_VECTOR_TYPES_COMPATIBLE): Remove.
	(TARGET_VECTOR_OPAQUE_P): Define.

	* cp/parser.c (cp_parser_init_declarator): Call vector_opaque_p
	target hook.
	Include target.h.
	(cp_parser_init_declarator): Fix typo in function comments.

2003-02-25  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (lcm.o):  Add dependency on function.h
	* lcm.c (function.h): Include.
	* i386.c (machine_function, ix86_stack_locals,
	* ix86_save_varrargs_registers) : Move to
	...
	* i386.h (machine_function, ix86_stack_locals,
	ix86_save_varrargs_registers): ... here; add optimize_mode_switching
	(ix86_optimize_mode_switching): New.
	* i386.md (fix patterns): Set ix86_optimize_mode_switching

2003-02-25  Nick Clifton  <nickc@redhat.com>

	* config/d30v/d30v.c (d30v_init_cumulative_args): Fix typo.  Name
	of fourth arg is 'fndecl' not 'indirect'.  Update comment
	describing the function's parameters.

2003-02-24  Jan Hubicka  <jh@suse.cz>

	* combine.c (simplify_shift_const):  Fix previous patch.

2003-02-24  Jeff Law  <law@redhat.com>

	* i386.md (testdi_1_rex64): Discourage reload from using the %eax
	alternative.
	(testsi_1, testhi_1, testqi_1): Likewise.

2003-02-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/osf.h (TARGET_OS_CPP_BUILTINS): Rename
	__EXTERN_PREFIX to __PRAGMA_EXTERN_PREFIX.
	* doc/extend.texi (Tru64 Pragmas): Reflect this.

	* fixinc/inclhack.def (alpha___extern_prefix): Indicate #pragma
	extern_prefix support for Tru64 UNIX V5 <sys/stat.h>.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/sys/stat.h [ALPHA___EXTERN_PREFIX_CHECK]: New
	testcase.
	Fixes PR c/5059, c/6126, other/9671.

2003-02-24  Roger Sayle  <roger@eyesopen.com>

	* gcc.c (do_spec_1) ['{']:  Handle pending argument upon return
	from handle_braces in "%{...}".

2003-02-24  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (TARGET_HAVE_TLS): Conditionally define.
	(prepare_move_operands): Handle TLS operands.
	(tls_symbolic_operand): New.
	(nonpic_symbol_mentioned_p): Handle TLS UNSPECs.
	(legitimize_pic_address): Do nothing for the TLS symbol.
	(sh_encode_section_info): Handle TLS case.
	(sh_strip_name_encoding): Drop TLS encoding.
	* config/sh/sh-protos.h (tls_symbolic_operand): Add prototype.
	* config/sh/sh.h (SH_TLS_ENCODING): Define.
	(TLS_SYMNAME_P, STRIP_TLS_ENCODING): Likewise.
	(ASM_OUTPUT_LABELREF): Drop TLS encoding.
	(OUTPUT_ADDR_CONST_EXTRA): Handle TLS UNSPECs.
	* config/sh/sh.md: Define TLS UNSPEC constants.
	(type): Add tls_load.
	("tls_global_dynamic", "tls_local_dynamic"): New insns.
	("sym2DTPOFF", "symDTPOFF2reg", "sym2GOTTPOFF"): New expanders.
	("tls_initial_exec"): New insn.
	("sym2TPOFF", "symTPOFF2reg"): New expanders.
	("load_gbr"): New insn.

	* configure.in (HAVE_AS_TLS): Add sh-*-* and sh[34]*-*-* cases.
	* configure: Regenerate.

2003-02-24  Alan Modra  <amodra@bigpond.net.au>

	PR 9297, PR 9722
	* calls.c (store_one_arg): Revert 1999-02-16 change.  Revert
	2000-12-17 change.  Pass EXPAND_STACK_PARM to expand_expr.
	* expr.h (enum expand_modifier): Define EXPAND_STACK_PARM.
	(enum block_op_methods): Reorder for better store_expr optimization.
	* expr.c (store_expr): Test bit 1 of "want_value" for call param
	stores, test bit 0 for original want_value meaning.  Pass
	BLOCK_OP_CALL_PARM to emit_block_move when bit 1 set.  Adjust
	recursive calls, and calls to expand_param.
	(expand_expr): Handle EXPAND_STACK_PARM modifier.  When cse
	expected, set target to 0 rather than to subtarget.  Formatting.

2003-02-23  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (cprop_jump): Use the REG_EQUAL note if available.

2003-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/invoke.texi (ggc-min-expand, ggc-min-heapsize): Document
	new default behavior.
	* ggc-common.c: Include sys/resource.h.
	(ggc_rlimit_bound): New function.
	(ggc_min_expand_heuristic, ggc_min_heapsize_heuristic): Update
	defaults to account for rlimits.

2003-02-22  Richard Henderson  <rth@redhat.com>

	* i386.c, i386.h (TUNEMASK): Rename from CPUMASK.

2003-02-22  Kelley Cook <kelley@dwhoops.info>

	* i386.h, i386.c, i386.md (ix86_tune): Rename from ix86_cpu.
	(ix86_tune_string): Rename from ix86_cpu_string.

2003-02-22  Kelley Cook <kelleycook@comcast.net>

	* config/i386/i386.c: Replace "mcpu" with "mtune".
	* config/i386/i386.h (TARGET_OPTIONS): Likewise.
	(CC1_CPU_SPEC): Likewise. New warning for "-mcpu".
	* doc/invoke.texi (i386 and x86-64 Options): Replace "mcpu"
	with "mtune".  Note that "mcpu" is a deprecated synonym for "mtune".

2003-02-23  Andreas Schwab  <schwab@suse.de>

	* config.gcc: Delete references to m68k/t-linux and
	m68k/t-linux-aout.
	* config/m68k/t-linux, config/m68k/t-linux-aout: Removed.

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation):  Apply fotgotten hunk
	of track scheduling patch.

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* config/linux.h (TARGET_HAS_F_SETLKW): Define.
	* config/alpha/linux.h (TARGET_HAS_F_SETLKW): Likewise

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* c-decl.c (c_expand_body_1): Fix.

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* expmed.c (expand_divmod): Undo sign extensions for unsigned operands

	* cfgcleanup.c (try_forward_edges):  Don't check loop structures
	when not optimizing.
	(cleanup_cfg): Do not iterate trought delete_trivially_dead_insns
	when not expensive.
	* toplev.c (rest_of_compilation):  Duplicate loop headers only when
	optimizing;  Delete trivially dead insns early; fix optimize check.

	* Makefile.in (c-decl.o, c-objc-common.o, cgraph.o, tree-inline.o): Add
	dependency on cgraph.h
	* c-decl.c: Include cgraph.h
	(finish_function): Update call of tree_inlinable_function_p.
	* c-objc-common.c: Include cgraph.h
	* cgraph.h: New file.
	* cgraphunit.c: New file.
	* cgraph.c (cgraph_node, cgraph_edge): Move into cgraph.h
	(cgraph_nodes, cgraph_n_nodes): Globalize.
	(cgraph_finalize_function, cgraph_finalize_compilation_unit
	cgraph_create_edges, cgraph_optimize, cgraph_mark_needed_node):
	Move into cgraphunit.c
	* tree-inline.c: Include cgraph.h
	* tree-inline.c: Include cgraph.h

2003-02-22  Josef Zlomek  <zlomekj@suse.cz>

	* config/i386/i386.md: Use gen_lowpart instead of gen_rtx_REG
	for copying a register.

2003-02-22  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	PR other/3782
	* toplev.c (process_options): If flag_detailed_statistics is set,
	then set time_report as well.

	PR c/8828
	* jump.c (never_reached_warning): Don't fall through BARRRIER
	insns.  Update comments to reflect what the function really does.

2003-02-21  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (omit_one_operand): No longer static.
	* tree.h (omit_one_operand): Prototype here.
	(div_and_round_double): Keep fold-const.c prototypes together.
	* builtins.c (builtin_mathfn_code): Handle binary built-in
	funtions, such as "pow" and "atan2".
	(fold_builtin): Optimize both pow(x,0.0) and pow(1.0,y) to 1.0.
	Simplify optimizations using "type" the builtin's return type.

2003-02-22  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_rtx_costs): Blockify dangling else.
	Fix functionalization typo.

	* regmove.c (optimize_reg_copy_1): Do not replace a hard register
	in an asm.

2003-02-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (ggc-common.o): Depend on $(PARAMS_H)
	* doc/invoke.texi (ggc-min-expand, ggc-min-heapsize): Update
	documentation.
	* ggc-common.c: Include params.h
	(ggc_min_expand_heuristic, ggc_min_heapsize_heuristic,
	init_ggc_heuristics): New functions.
	* ggc.h (ggc_min_expand_heuristic, ggc_min_heapsize_heuristic,
	init_ggc_heuristics): Prototype.
	* toplev.c (print_version):  Output GGC heuristics.
	(parse_options_and_default_flags): Call init_ggc_heuristics.

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* i386.c (def_builtin):  Special case 64bit builtins.
	(MASK_SSE164, MASK_SSE264): New constants.
	(builtin_description): Add 64bit builtins.
	(ix86_init_mmx_sse_builtins): Likewise.
	* i386.h (enum ix86_builtins): Likewise.
	* i386.md (cvtss2siq, cvttss2siq, cvtsd2siq, cvttsd2siq, cvtsi2sdq,
	sse2_movq2dq_rex64, sse2_movsq2q_rex64): New.
	(sse2_movq2dq, sse2_movsq2q): Disable for 64bit.
	* mmintrin.h (_mm_cvtsi64x_si64, _mm_set_pi64x, _mm_cvtsi64_si64x): New.
	* xmmintrin.h (_mm_cvtss_si64x, _mm_cvttss_si64x, _mm_cvtsi64x_ss,
	_mm_set_epi64x, _mm_set1_epi64x, _mm_cvtsd_si64x, _mm_cvttsd_si64x,
	_mm_cvtsi64x_sd, _mm_cvtsi64x_si128, _mm_cvtsi128_si64x): New.

2003-02-22  Jan Hubicka  <jh@suse.cz>

	* i386.c (builtin_description): Add __builtin_ia32_paddq and
	__builtin_ia32_psubq. Fix __builtin_ia32_paddq128
	 and __builtin_ia32_psubq128.
	* i386.h (IX86_BUILTIN_PADDQ, IX86_BUILTIN_PSUBQ): New.
	* i386.md (addv*, mmx_ior*, mmx_xoe*, mmx_and*): Add missing '%'.
	(mmx_adddi3, mmx_subdi3): New.
	* mmintrin.h (_mm_add_si64, _mm_sub_si64): New.
	* xmmintrin.h (_mm_movepi64_pi64): New.
	(_mm_add_epi64, _mm_sub_epi64): fix.
	(_mm_mul_pu16): Rename to...
	(_mm_mul_su32): ... this one.

	* builtins.c (expand_builtin_expect):  Do not predict
	flag_guess_branch_prob is not set.
	* c-semantics.c (expand_stmt): Likewise.
	* predict.c (predict_insn): Likewise.
	* stmt.c (expand_continue_loop): Likewise.
	* toplev.c (rest_of_compilation): Do not call
	note_prediction_to_br_prob and note_prediction_to_br_prob
	when not optimizing.

2003-02-21  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (commit_edge_insertions):  Call
	find_many_sub_basic_block only when some code has been emitted.
	(commit_edge_insertions_watch_calls): Bring into sync with
	commit_edge_insertions

2003-02-21  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (OVERRIDE_OPTIONS): Fix code that clears 'e' register class.

	* sh.md (binary_sf_op): Use extra constant operand instead of
	negating constant operand 4.
	* sh.c (sh_expand_binop_v2sf): Supply it.

2003-02-21  Zack Weinberg  <zack@codesourcery.com>

	* cpphash.h (struct lexer_state): Add directive_wants_padding.
	* cpplib.c (_cpp_handle_directive): Set directive_wants_padding
	for directives of type INCL.
	(glue_header_name, parse_include): Use get_token_no_padding.
	* cppmacro.c (replace_args): If directive_wants_padding,
	provide padding tokens.

2003-02-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-02-21  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (commit_one_edge_insertion): Only mark BB for splitting.
	(commit_edge_insertions): Call find_many_sub_basic_blocks

	* reg-stack.c (convert_regs): Cleax aux for blocks.

2003-02-21  Jan Hubicka  <jh@suse.cz>

	* toplev.c (parse_options_and_default_flags): Undo accidental commit.

2003-02-21  Glen Nakamura  <glen@imodulo.com>

	PR optimization/8613
	* builtins.c (expand_builtin): Emit postincrements before expanding
	builtin functions.

2003-02-21  Ben Elliston  <bje@redhat.com>

	PR other/5634
	* doc/install.texi (Configuration): Explain using $HOME instead of
	the ~ metacharacter when referring to home directories.

2003-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (TARGET_SYSTEM_ROOT): Set default to
	${exec_prefix}/${target_alias}/sys-root.  Match explicit
	'${exec_prefix}' (in addition to the expansion thereof) as
	relocatable.
	* configure: Rebuilt.

2003-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (addhi3_incdec): Change the name to
	*addhi3_incdec.
	(addsi3_incdec): Change the name to *addsi3_incdec.

2003-02-20  Roger Sayle  <roger@eyesopen.com>

	* explow.c (force_reg): Avoid useless REG_EQUAL notes.

2003-02-20  Toon Moene  <toon@moene.indiv.nluug.nl>

	PR fortran/9038
	* c-opts.c (sanitize_cpp_opts): Add Fortran front end
	options to be ignored.
	(c_common_decode_option): Ignore them when preprocessing.

2003-02-20  Jan Hubicka  <jh@suse.cz>

	* toplev.c (flag_sched2_use_superblocks, flag_sched2_use_traces): New
	global variables.
	(lang_independent_options):  Add -fsched2-use-superblocks
	-fsced2-use-traces.
	(rest_of_compilation): Deal with it.
	* invoke.texi (-fsched2-use-traces, fsched2-use-superblocks):  Declare.
	* flags.h (flag_sched2_use_superblocks, flag_sched2_use_traces):
	Declare.
	* rtl.h (reg_to_stack):  Update prototype.
	* reg-stack.c (reg_to_stack): Return when something has changed;
	update liveness when executing after superblock scheduling.

	* combine.c (simplify_shift_const):  Simplify few special cases
	into constants.

2003-02-20  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md: (attr "type"): Add fast_compare.
	(add.,subf.,neg.): Change attribute to fast_compare.
	All DFA descriptions updated.

2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>

	Change base class access representation.
	* tree.h (TREE_VIA_PUBLIC, TREE_VIA_PROTECTED,
	TREE_VIA_PRIVATE): Remove.
	(BINFO_BASEACCESSES): New binfo elt.
	(BINFO_BASEACCESS): New accessor.
	(BINFO_ELTS): Increase.
	(TI_ACCESS_PUBLIC, TI_ACCESS_PROTECTED, TI_ACCESS_PRIVATE): New.
	(access_public_node, access_protected_node,
	access_private_node): New global nodes.
	* tree.c (build_common_tree_nodes_2): Initialize access nodes.
	* dbxout.c (dbxout_type): Adjust.
	* dwarf2out.c (gen_inheritance_die): Add access parameter.
	(gen_member_die): Adjust.
	* dwarfout.c (output_inheritance_die): ARG is array of two trees.
	(output_type): Adjust.
	* tree-dump.c (dequeue_and_dump): Adjust binfo dumping.

	Change base class access representation. Share virtual base
	binfos.
	* cp/call.c (build_special_member_call): Remove binfo_for_vbase
	call.
	* cp/class.c (build_base_path): Likewise.
	(build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
	(build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
	(make_new_vtable): Adjust.
	(force_canonical_binfo_r): Delete.
	(force_canonical_binfo): Delete.
	(mark_primary_virtual_base): Delete.
	(dfs_unshared_virtual_bases): Delete.
	(mark_primary_bases): Adjust.
	(maybe_warn_about_overly_private_class): Adjust.
	(dfs_base_derived_from): Delete.
	(base_derived_from): Follow the inheritance chain.
	(struct find_final_overrider_data): Add vpath member.
	(dfs_find_final_overrider): Adjust.
	(dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
	(find_final_overrider): Adjust.
	(update_vtable_entry_for_fn): Adjust.
	(modify_all_vtables): Adjust.
	(walk_subobject_offsets): Adjust.
	(layout_nonempty_base_or_field): Adjust.
	(layout_empty_base): Remove last parameter. Adjust.
	(build_base_field): Adjust.
	(build_base_fields): Adjust.
	(propagate_binfo_offsets): Remove last parameter. Adjust.
	(dfs_set_offset_for_unshared_vbases): Delete.
	(layout_virtual_bases): Adjust.
	(finish_struct_1): Adjust.
	(init_class_processing): Don't init access nodes.
	(dfs_get_primary_binfo): Delete.
	(get_primary_binfo): Adjust.
	(dump_class_hierarchy_r): Remove most derived arg, add IGO
	parameter. Adjust.
	(dump_class_hierarchy): Adjust.
	(finish_vtbls): Adjust.
	(get_original_base): Delete.
	(build_vtt_inits): Adjust.
	(dfs_build_secondary_vptr_vtt_inits): Adjust.
	(dfs_ctor_vtable_bases_queue_p): Adjust.
	(build_ctor_vtbl_group): Adjust.
	(dfs_accumulate_vtbl_inits): Adjust.
	(build_vtbl_initializer): Adjust.
	(build_vbase_offset_vtbl_entries): Adjust.
	(add_vcall_offset_vtbl_entries_1): Adjust.
	* cp/cp-tree.h (CPTI_ACCESS_*): Remove.
	(access_*_node): Remove.
	(CANONICAL_BINFO): Delete.
	(BINFO_UNSHARED_MARKED): Remove.
	(BINFO_MARKED): Set LANG_FLAG_0 directly.
	(SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
	(BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
	(SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
	Delete.
	(BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
	(SET_BINFO_NEW_VTABLE_MARKED): Adjust.
	(SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
	Delete.
	(BINFO_DEPENDENT_BASE_P): New.
	(dfs_walk, dfs_walk_real): Queue function takes derived binfo and
	index.
	(markedp, unmarkedp): Adjust.
	(dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
	dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
	find_vbase_instance, binfo_for_vbase): Delete.
	(copied_binfo, original_binfo): Declare.
	(finish_base_specifier): Add virtual_p arg.
	(unshare_base_binfos): Delete.
	(copy_base_binfos): Declare.
	(reverse_path): Delete.
	* cp/decl.c (xref_basetypes): Access and virtuality passed
	differently. Don't copy direct base binfos here. Call
	copy_base_binfos.
	* cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
	(initialize_vtbl_ptrs): Adjust.
	(expand_member_init): Adjust.
	* cp/parser.c (cp_parser_base_specifier): Adjust.
	* cp/pt.c (instantiate_class_template): Adjust.
	(get_template_base_recursive): Adjust.
	* cp/rtti.c (get_pseudo_ti_init): Adjust.
	(get_pseudo_ti_desc): Adjust.
	* cp/tree.c (unshare_base_binfos): Rename to ...
	(copy_base_binfos): ... here, reimplement.
	(make_binfo): Set BINFO_DEPENDENT_BASE_P.
	(reverse_path): Remove.
	* cp/typeck.c (get_delta_difference): Adjust error messages.
	* cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
	* cp/search.c (lookup_base_r): Adjust.
	(dynamic_cast_base_recurse): Adjust.
	(canonical_binfo): Remove.
	(dfs_canonical_queue): Remove.
	(dfs_assert_unmarked_p): Remove.
	(assert_canonical_unmarked): Remove.
	(shared_marked_p, shared_unmarked_p): Remove.
	(BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
	(dfs_access_in_type): Adjust.
	(access_in_type): Adjust.
	(dfs_accessible_queue_p): Adjust.
	(dfs_accessible_p): Adjust.
	(is_subobject_of_p_1, is_subobject_of_p): Remove.
	(struct lookup_field_info): Remove from_dep_base_p field.
	(lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
	(lookup_field_r): Remove dependent base code.
	(lookup_member): Likewise.
	(dfs_walk, dfs_walk_real): Add access arg to queue fn.
	(dfs_unmarked_real_bases_queue_p): Remove.
	(dfs_marked_real_bases_queue_p): Remove.
	(dfs_skip_vbases): Remove.
	(dfs_get_pure_virtuals): Adjust.
	(markedp, unmarkedp): Adjust.
	(marked_vtable_pathp, unmarked_vtable_pathp): Remove.
	(marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
	(dfs_unmark): Adjust.
	(dfs_get_vbase_types):Remove.
	(dfs_build_inheritance_graph_order): Remove.
	(get_vbase_types): Remove
	(dfs_find_vbase_instance): Remove.
	(find_vbase_instance): Remove.
	(dfs_debug_unmarkedp): Adjust.
	(dependent_base_p): Remove.
	(dfs_push_type_decls): Adjust.
	(dfs_push_decls): Adjust.
	(dfs_no_overlap_yet): Adjust.
	(copied_binfo): New function.
	(original_binfo): New function.
	(binfo_for_vbase): Remove.

	Change base class access representation.
	* java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
	(add_interface_do): Likewise.

2003-02-20  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/sysv4.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Define.
	* config/rs6000/power4.md (power4-store,power4-vecstore): New
	insn reservations.
	(power4-fpstore): Compact.

2003-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi3_w): New.

2003-02-20  Josef Zlomek  <zlomekj@suse.cz>

	* combine.c (distribute_notes): Kill REG_EXEC_COUNT.
	* rtl.c (reg_note_name): Likewise.
	* rtl.h (enum reg_note): Likewise.
	* doc/invoke.texi: Likewise.
	* doc/rtl.texi: Likewise.

2003-02-20  Josef Zlomek  <zlomekj@suse.cz>

	* bb-reorder.c (find_traces_1_round): Fix comment typo.

2003-02-19  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_real_zero_addition_p): Don't fold a zero
	addition in the presence of signaling NaNs.

2003-02-19  Krister Walfridsson  <cato@df.lth.se>

	* tm.texi (INIT_CUMULATIVE_ARGS): Fix typo.

2003-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_logical_op): Optimize or.l when
	ORing with 0xffff??00 with the highest bit of the ?? part set.
	(compute_logical_op_length): Update.
	(compute_logical_op_cc): Likewise.

2003-02-19  Josef Zlomek  <zlomekj@suse.cz>

	* bb-reorder.c (find_traces_1_round): Fixed condition for small
	destination block with multiple predecessors.
	(connect_traces): Check whether the block is a start of trace.

2003-02-19  Jan Hubicka  <jh@suse.cz>

	* calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
	* function.c (assign_params): Likewise.
	* arm-protos.h (arm_init_cumulative_args): Update prototype.
	* arm.c (arm_init_cumulative_args): Update function.
	* arm.h (INIT_CUMULATIVE_ARGS): Update.
	* avr-protos.h (init_cumulative_args): Update prototype.
	* avr.c (init_cumulative_args): Update function.
	* avr.h (INIT_CUMULATIVE_ARGS): Update.
	* d30v-protos.h (d30v_init_cumulative_args): Update prototype.
	* d30v.c (d30v_init_cumulative_args): Update function.
	* d30v.h (INIT_CUMULATIVE_ARGS): Update.
	* frv-protos.h (frv_init_cumulative_args): Update prototype.
	* frv.c (frv_init_cumulative_args): Update function.
	* frv.h (INIT_CUMULATIVE_ARGS): Update.
	* mips.c (mips_expand_prolgue): Update call of INIT_CUMULATIVE_ARGS.
	* pa.h (INIT_CUMULATIVE_ARGS): Update.
	* sparc-protos.h (init_cumulative_args): Update prototype.
	* sparc.c (init_cumulative_args): Update function.
	* sparc.h (INIT_CUMULATIVE_ARGS): Update.
	* tm.texi (INIT_CUMULATIVE_ARGS): Update documentation.

2003-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi3_two_qi_sext): New.
	(*ashiftsi_sextqi_7): Likewise.

2003-02-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris6.h (TARGET_OS_CPP_BUILTINS): Define __c99 for
	ISO C99 and C++.

	* fixinc/inclhack.def (irix___restrict): Don't change __restrict
	for C++ on IRIX 6.5.1[89].
	* fixinc/tests/base/internal/sgimacros.h: New file.

	* fixinc/inclhack.def (irix_wcsftime): Use XPG5 variant for C99.
	* fixinc/tests/base/internal/wchar_core.h: New file.

	* fixinc/inclhack.def (irix_socklen_t): Fix broken IRIX 6.5.1[78]
	socklen_t definition.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/sys/socket.h: New file.
	Fixes PR libgcj/9652.

2003-02-19  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsfcc_1, movdfcc_1): Fix constrains.

2003-02-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_override_options): Initialize
	align_jumps_max_skip and align_loops_max_skip.

2003-02-19  Thierry Moreau  <thierry.moreau@connotech.com>

	* config/rs6000/rs6000.c (rs6000_encode_section_info): Do not
	test size if named section.

2003-02-19  Daniel Jacobowitz  <drow@mvista.com>

	* expr.c (expand_expr): Use gen_int_mode for the argument
	to gen_rtx_MULT.

2003-02-19  Jan Hubicka  <jh@suse.cz>

	* i386.md (cosxf2):  Fix conditional.

2003-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (extendqisi2): Change to an expander.
	(*extendqisi2_h8300): New.
	(*extendqisi2_h8300hs): Likewise.

2003-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update the prototype for
	split_adds_subs.  Remove the prototypes for
	const_int_le_2_operand and const_int_le_6_operand.
	* config/h8300/h8300.c (split_adds_sub): Don't output inc/dec.
	(const_int_le_2_operand): Remove.
	(const_int_le_6_operand): Likewise.
	* config/h8300/h8300.h (PREDICATE_CODES): Remove the entries
	for const_int_le_2_operand and const_int_le_6_operand.
	* config/h8300/h8300.md: Update all uses of split_adds_subs.
	(a peephole2): New.

2003-02-18  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (NPREDECESORC, SET_NPREDECESORS): Kill.
	(cgraph_expand_function): Rewrite.

2003-02-18  Matt Austern <austern@apple.com>

	* toplev.c, langhooks.c, langhooks-def.h: Move
	write_global_declarations from toplev.c to langhooks.c.

2003-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (general_operand_src): Always check
	MODE.
	(general_operand_dst): Likewise.

2003-02-18  Roger Sayle  <roger@eyesopen.com>

	* convert.c (convert_to_real): Also optimize (float)log(x) into
	logf(x) where x is a float, i.e. also handle BUILT_IN_LOG{,L}.

2003-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (unspec_caller_rtx_p): New.
	(sh_cannot_copy_insn_p): New.
	(TARGET_CANNOT_COPY_INSN_P): New.

2003-02-18  Richard Henderson  <rth@redhat.com>

	* c-common.c (handle_used_attribute): Accept static data too.

2003-02-18  Nick Clifton  <nickc@redhat.com>
	    Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/gcc.dg/20030218-1.c: New.

	* doc/tm.texi: Document TARGET_VECTOR_TYPES_COMPATIBLE.

	* target-def.h (TARGET_INITIALIZER): Add
	TARGET_VECTOR_TYPES_COMPATIBLE.
	(TARGET_VECTOR_TYPES_COMPATIBLE): New macro.

	* target.h (struct gcc_target): Add field vector_types_compatible.

	* c-typeck.c (comptypes): Take into account
	TARGET_VECTOR_TYPES_COMPATIBLE.
	(convert_for_assignment): Same.

	* config/rs6000/rs6000.c (is_ev64_opaque_type): New.
	(rs6000_spe_vector_types_compatible): New.
	(TARGET_VECTOR_TYPES_COMPATIBLE): Define.

2003-02-19  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (toplev.o): Depend on $(LANGHOOKS_DEF_H).
	* toplev.c: Include langhooks-def.h.

2003-02-18  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (enum processor_type): Sort entries
	alphabetically.
	* config/mips/mips.md (define_attr cpu): Sync with processor_type
	enum values, including adding entries that were missing.

2003-02-18  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (calc_live_regs): Also check GET_CODE when checking if
	initial value for PR_REG is still the PR_REG register.

2003-02-18  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.md (floatdidf2, floatdisf2): Add %, before second
	instruction in output template.
	(bsp_value): Change output template from string to C code, add %,
	before actual instruction.
	(flushrs): Mark as not predicable.

2003-02-18  Krister Walfridsson  <cato@df.lth.se>

	* inclhack.def (netbsd_bogus_semicolon): New fix.
	* fixincl.x: Rebuilt.
	* tests/base/ctype.h: Update.

2003-02-18  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_expr_p): New function to determine whether
	an expression can be negated cheaply.
	(fold) [MINUS_EXPR]: Use it to determine whether to transform
	-A - B into -B - A for floating point types.

2003-02-18  Roger Sayle  <roger@eyesopen.com>

	* sbitmap.c (sbitmap_resize): New function.
	* sbitmap.h (sbitmap_resize): Prototype here.
	* recog.c (split_all_insns): Use sbitmap_resize.

2003-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*zero_extendhisi2_h8300): Fix the
	insn length.
	(extendqisi2): Likewise.
	(*extendhisi2_h8300): Likewise.

2003-02-18  Matt Austern <austern@apple.com>

	* langhooks.h, langhooks-def.h: introduce new langhook,
	final_write_globals, with write_global_declarations as default.
	* toplev.c: Move invocation of wrapup_global_declarations from
	compile_file to new function, write_global_declarations.  Change
	compile_file to use final_write_globals hook.  Change
	wrapup_global_declarations so writing to DECL_DEFER_OUTPUT is
	conditional.

2003-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Correct and enhance comment.

2003-02-18  Geoffrey Keating  <geoffk@apple.com>

	* gcc.c (validate_switches): Don't scan past closing '}'.

2003-02-18  Ben Elliston  <bje@redhat.com>

	PR c++/1607
	* doc/extend.texi (Function Attributes): Document the effect of
	the C++ "this" parameter on the counting of arguments for the
	"format" and "format_arg" attributes.

2003-02-17  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h (__ev_stdd): Cast 2nd arg.
	(__ev_stdw): Same.
	(__ev_stdh): Same.

2003-02-17  Jan Hubicka  <jh@suse.cz>

	* recog.c (split_all_insns):  Fix memory overflow.

2003-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (cmpqi): Remove mode from compare.
	(cmphi): Likewise.
	(*cmphi_h8300): Likewise.
	(*cmphi_h8300hs): Likewise.
	(cmpsi): Likewise.
	(7 peephole2): Likewise.

2003-02-16  Jan Hubicka  <jh@suse.cz>

	* c-typeck.c (build_c_cast):  Fold constant variables into
	initial values.

2003-02-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Fix link for m68k-att-sysv.
	(Binaries): Ditto for Sinix/Reliant Unix.

2003-02-16 Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_reload_in_hi): Ensure that the scratch register does
	not overlap the final result register.

2003-02-16 Arend Bayer <arend.bayer@web.de>
	   Richard Henderson  <rth@redhat.com>

	PR c/8068
	* fold-const.c (extract_muldiv_1): Rename from extract_muldiv;
	rearrange mult arguments for less recursion.
	(extract_muldiv): New.  Prevent runaway recursion.

2003-02-16  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygwin.h (TARGET_SUBTARGET_DEFAULT): Set
	MASK_ALIGN_DOUBLE.

2003-02-15  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (x86_ext_80387_constants): Use 80387 insns
	to load mathematical constants on K6, Athlon, Pentium 4 and PPro.
	(ext_80387_constants_table): Global table of 80387 special constants
	guarded by ext_80387_constants_init flag when not initialized.
	(init_ext_80387_constants): New function to initialize this table.
	(standard_80387_constant_p): Extend to recognize extra 80387
	constants, in XFmode, on processors where this is a win.
	(standard_80387_constant_opcode): New function to return the
	opcode associated with standard_80387_constant_p.
	(standard_80387_constant_rtx): New function to return the XFmode
	CONST_DOUBLE associated with standard_80387_constant_p.
	(ix86_rtx_costs): Give the new constants the same cost as 1.0.

	* config/i386/i386-protos.h (standard_80387_constant_opcode):
	Prototype here.
	(standard_80387_constant_rtx): Likewise.

	* config/i386/i386.md (*movsf1, *movsf1_nointerunit, *movdf_nointeger,
	*movdf_integer, *movxf_nointeger, *movtf_nointeger, *movxf_integer,
	*movtf_integer): Simplify using new standard_80387_constant_opcode.

2003-02-15  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (Optimize Options): Correct @option syntax.

2003-02-15  Richard Henderson  <rth@redhat.com>

	* Makefile.in (cfglayout.o): Depend on TARGET_H.
	* cfglayout.c: Include target.h.
	(cfg_layout_can_duplicate_bb_p): Check targetm.cannot_copy_insn_p.
	* target-def.h (TARGET_CANNOT_COPY_INSN_P): New.
	* target.h (struct gcc_target): Add cannot_copy_insn_p.

	* config/alpha/alpha.c (alpha_cannot_copy_insn_p): New.
	(TARGET_CANNOT_COPY_INSN_P): New.
	(override_options): Revert 2003-02-08 hack.

2003-02-15  Richard Henderson  <rth@redhat.com>

	* gcse.c (bypass_block): Use BLOCK_FOR_INSN for resolving LABEL_REFs.
	(bypass_conditional_jumps): Accept computed_jump_p insns as well.

2003-02-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (processor_type): Add PPC440.
	* config/rs6000/rs6000.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_VARIABLE_ISSUE): Define.
	(rs6000_use_dfa_pipeline_interface): New function.
	(rs6000_multipass_dfa_lookahead): New Function.
	(rs6000_variable_issue): New function.
	(rs6000_adjust_cost): Add CMP and DELAYED_CR types.
	(rs6000_issue_rate): Add PPC440.
	* config/rs6000/rs6000.md (unspec list): Correct typo.
	(attr "type"): Add load_ext, load_ext_u, load_ext_ux, load_u,
	store_ux, store_u, fpload_ux, fpload_u, fpstore_ux, fpstore_u,
	cmp, delayed_cr, mfcr, mtcr.
	(automata_option): Set "ndfa".
	(extendMMNN2): Update attributes.
	(movcc_internal1): Discourage move to non-cr0.  Update
	attributes.
	(movMM_update): Update attributes.
	(cmpMM_internal): Update attributes.
	(sCC CR materialization): Update attributes.
	(branch patterns): Do not discourage non-cr0.
	(cr logical patterns): Prefer destructive register allocation.
	Update attributes.
	(movesi_from_cr): Update attribute.
	(mtcrf_operation): Update attribute.
	(mtcrfsi): Update attribute.
	* config/rs6000/40x.md: New file.
	* config/rs6000/603.md: New file.
	* config/rs6000/6xx.md: New file.
	* config/rs6000/7450.md: New file.
	* config/rs6000/7xx.md: New file.
	* config/rs6000/mpc.md: New file.
	* config/rs6000/power4.md: New file.
	* config/rs6000/rios1.md: New file.
	* config/rs6000/rios2.md: New file.
	* config/rs6000/rs64.md: New file.
	[Some DFA descriptions based on work by Michael Hayes]

2003-02-15  Richard Henderson  <rth@redhat.com>

	* bb-reorder.c (find_traces_1_round): Don't connect easy to copy
	successors with multiple predecessors.
	(connect_traces): Try harder to copy traces of length 1.

	* function.h (struct function): Add computed_goto_common_label,
	computed_goto_common_reg.
	* function.c (free_after_compilation): Zap them.
	* stmt.c (expand_computed_goto): Use them to produce one
	indirect branch per function.

2003-02-15  Richard Henderson  <rth@redhat.com>

	* cfgcleanup.c: Include params.h.
	(try_crossjump_bb): Use PARAM_MAX_CROSSJUMP_EDGES.  Fix test for
	too many outgoing edges from a block.
	* Makefile.in (cfgcleanup.o): Depend on PARAMS_H.
	* params.def (max-crossjump-edges): New.
	* doc/invoke.texi: Document it.

2003-02-15  Richard Henderson  <rth@redhat.com>

	* recog.c (split_all_insns): Include new blocks in life update;
	do a global life update.

2003-02-15  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/mingw32.h (LIBGCC_SPEC): Add libmingwex.a.
	Update copyright.
	* config/i386/cygwin.h (LIBGCC_SPEC): Add libmingwex.a for
	-mno-cygwin case.

2003-02-14  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR optimization/7702
	* reload1.c (reload_cse_simplify_set): Honor
	CANNOT_CHANGE_MODE_CLASS.

2003-02-14  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.c (mn10300_wide_const_load_uses_clr): New
	function.
	* config/mn10300/mn10300-protos.h: Declare it.
	* config/mn10300/mn10300.md (movdi, movdf): Use it to compute
	attribute cc of instructions that may use clr.

2003-02-14  Kazu Hirata  <kazu@cs.umass.edu>

	* simplify-rtx.c (simplify_binary_operation): Simplify ~y when
	(x - (x & y)) is found.

2003-02-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.in: Fix typo.
	* configure: Regenerate.

2003-02-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi2_and_1_lshiftrt_1): New.

2003-02-13  Adam Nemet  <anemet@lnxw.com>

	PR opt/2391
	* combine.c: Fix spelling in comment.
	(cached_nonzero_bits): New function.
	(cached_num_sign_bit_copies): New function.
	(nonzero_bits_with_known): New macro.
	(num_sign_bit_copies_with_known): New macro.
	(nonzero_bits1): Rename from nonzero_bits.  Add three new
	arguments.  Change calls from nonzero_bits to
	nonzero_bits_with_known.
	(num_sign_bit_copies1): Rename from num_sign_bit_copies.  Add
	three new arguments.  Change calls from num_sign_bit_copies to
	num_sign_bit_copies_with_known.
	(nonzero_bits): New macro.
	(num_sign_bit_copies): New macro.
	(update_table_tick): Don't traverse identical subexpression more
	than once.
	(get_last_value_validate): Likewise.

2003-02-13  Zack Weinberg  <zack@codesourcery.com>

	* emit-rtl.c (init_emit): Use ggc_alloc for regno_reg_rtx.
	* function.h (struct emit_status): Length of regno_pointer_align
	and x_regno_reg_rtx as seen by gengtype is only x_reg_rtx_no,
	not regno_pointer_align_length (i.e. length actually used, not
	length as allocated)

	* config/i386/i386.c (struct stack_local_entry): New.
	(struct machine_function): Replace huge array with alist.
	(assign_386_stack_local): Change to match.

2003-02-13  John David Anglin  <dave.anglin@nrc-crnc.gc.ca>

	* inclhack.def (hpux_long_double): Tighten select and add bypass
	regexp.
	* fixincl.x: Rebuilt.

2003-02-13  Josef Zlomek  <zlomekj@suse.cz>

	* cfgcleanup.c (outgoing_edges_match): When there is single outgoing
	edge and block ends with a jump insn it must be simple jump.

2003-02-13  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (PREPROCESSOR_DEFINES): Add
	@TARGET_SYSTEM_ROOT_DEFINE@.
	* configure.in (PREFIX_INCLUDE_DIR): Don't define if $with_sysroot
	is specified or if building a cross compiler.
	(TARGET_SYSTEM_ROOT_DEFINE): Add TARGET_SYSTEM_ROOT_RELOCATABLE
	if the sysroot is under $exec_prefix.
	* configure: Regenerated.
	* cppdefault.h: Use native include paths if TARGET_SYSTEM_ROOT is
	defined.
	(struct default_include): Add add_sysroot field.
	(cpp_SYSROOT): Declare.
	* cppdefault.c (cpp_include_defaults): Fill in add_sysroot
	field.
	(cpp_SYSROOT): New variable.
	* cppinit.c (cpp_create_reader): Initialize
	CPP_OPTION (pfile, sysroot).
	(init_standard_includes): Handle add_sysroot.  Do not
	add unrelocated copies of relocated directories.
	(COMMAND_LINE_OPTIONS): Add -isysroot.
	(cpp_handle_option): Handle -isysroot.
	* cpplib.h (struct cpp_options): Add sysroot member.
	* gcc.c (The Specs Language): Update description of %I.
	(target_system_root_changed): New variable.
	(process_command): Conditionalize make_relative_prefix call
	on !VMS and TARGET_SYSTEM_ROOT_RELOCATABLE.  Set
	target_system_root_changed.
	(do_spec_1): Add -isysroot to %I.
	* doc/invoke.texi (Spec Files): Update description of %I.
	* doc/install.texi (--with-sysroot): Update comment about
	relocation.

2003-02-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-02-13  Robert Lipe <robertlipe@usa.net>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Update three SCO-related URLs.

2003-02-13  Andreas Schwab  <schwab@suse.de>

	* cgraph.c (SET_NPREDECESORS): Add intermediate cast to size_t.
	Parenthesize properly.
	(NPREDECESORS): Parenthesize properly.

2003-02-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* timevar.h (POP_TIMEVAR_AND_RETURN): New macro.

2003-02-12  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md (UNSPEC_FPATAN): New UNSPEC constant.
	(atan2sf3, atan2df3, atan2xf3, atan2tf3): New patterns.

	* reg-stack.c (subst_stack_regs_pat): Add support for binary
	UNSPEC instructions (e.g. "fpatan").

2003-02-12  Mike Stump  <mrs@apple.com>

	* varray.c (element_size): Remove.
	(uses_ggc): Remove.
	(element): Add.
	(varray_init): Use new interface.
	(varray_grow): Use new interface.
	(varray_clear): Use new interface.

2003-02-12  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Add casts to the arguments of the following
	macros: evfsabs, evfsnabs, evfsneg, evfsadd, evfssub, evfsmul,
	evfsdiv, evfscfui, evfscfsi evfscfuf evfscfsf, evfsctui, evfsctsi,
	evfsctuf, evfsctsf, evfsctuiz, evfsctsiz, __ev_get_upper*,
	__ev_get_lower*, __ev_get_u32, __ev_get_s32, __ev_get_fs,
	__ev_get_u16, __ev_get_s16.

2003-02-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): New.

2003-02-12  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (CRTSTUFF_CFLAGS): Add -fno-unit-at-a-time
	(OBJS): Add cgraph.o
	(cgraph.o): New.
	* c-decl.c (expand_body_1): Break out from ...
	(expand_body): This one;  change calling convention
	(finish_function): Move some of expand_body logic here.
	(c_expand_deferred_function): Update call of expand_body
	(c_expand_stmt): Use c_expand_body_1.
	* c-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
	* c-objc-commin.c (c_objc_common_finish_file): Use callgraph code.
	* c-tree.h (c_expand_body): Declare.
	* cgraph.c: New file.
	* flags.h (flag_unit_at_a_time): Declare.
	* langhooks.h (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION,
	LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
	LANG_HOOKS_CALLGRAPH_INITIALIZER): New macros.
	* langhooks.h (struct lang_hooks_for_callgraph): New.
	(struct lang_hooks): Add callgraph field.
	* toplev.c (flag_unit_at_a_time): New.
	(lang_independent_options): Add flag_unit_at_a_time.
	(process_options): Disable unit-at-a-time mode for frontends not
	supporting callgraph.
	* tree-inline.c (typedef struct inline_data): Add "decl"
	(expand_call_inline): Update callgraph.
	(optimize_inline_calls): Set id.decl.
	* tree.h (cgraph_finalize_function, cgraph_finalize_compilation_unit,
	cgraph_create_edges, dump_cgraph, cgraph_optimize, cgraph_remove_call
	cgraph_calls_p): Declare.
	* invoke.texi (-funit-at-a-time): Document.

2003-02-12  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.h: Fix misc formatting.
	(__ev_create_ufix32_fs): Cast ev argument.
	(__ev_create_sfix32_fs): Same.
	(__ev_get_sfix32_fs_internal): Cast arguments to builtins.
	(__ev_get_ufix32_fs_internal): Same.

2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>

	* doc/tm.texi (MODIFY_JNI_METHOD_CALL): Document.
	* config/i386/cygwin.h (MODIFY_JNI_METHOD_CALL): New macro.

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

	* cpplib.c (do_include_common): Move warnings for
	#include_next and #import out to callers.  Use early-return
	instead of nested ifs.  Don't do check_eol here.
	(parse_include): Do check_eol here with the rest of the
	parsing stuff.
	(do_include_next, do_import): Now handle warnings.

2003-02-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Update AVR- and Darwin-related URLs.

2003-02-12  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability):  Fix roundoff error.

2003-02-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Don't handle 65535.
	(two peephole2): New.

2003-02-12  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (several peephole2): Replace
	find_regno_note with peep2_reg_dead_p.

2003-02-11  Richard Henderson  <rth@redhat.com>

	* gcse.c (lookup_set): Remove unused argument PAT.  Update
	both callers.

2003-02-11  Geoffrey Keating  <geoffk@apple.com>

	* diagnostic.c (real_abort): New.
	(diagnostic_report_diagnostic): Call real_abort on error.
	* diagnostic.h (diagnostic_abort_on_error): New.
	(struct diagnostic_context): Add abort_on_error field.
	* toplev.c (setup_core_dumping): New.
	(decode_d_option): Handle 'H' case.
	* doc/invoke.texi (Debugging Options): Document -dH.

2003-02-11  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in: Remove pointless setting of CXXFLAGS for dejagnu
	which refers to obsolete directories.

2003-02-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/linux.h (TARGET_C99_FUNCTIONS): New.

2003-10-21  Jan Hubicka  <jh@suse.cz>

	* i386.c (contains_128bit_aligned_vector_p): New function.
	(ix86_function_arg_boundary): Properly align vector modes.

2003-02-11  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md (set_frame_ptr): Change rtl to set reg a7.
	* config/xtensa/xtensa.c (xtensa_reorg): Search for UNSPECV_SET_FP
	as a SET pattern.

2003-02-11  Roger Sayle  <roger@eyesopen.com>

	* builtins.c:  Fix failure caused by commiting wrong patch.

2003-02-11  Dale Johannesen  <dalej@apple.com>
	* ra-build.c (compare_and_free_webs):  Relax checking.
	* config/rs6000/darwin.h (HOT_TEXT_SECTION_NAME):  Define.
	(UNLIKELY_EXECUTED_TEXT_SECTION_NAME):  Define.

2003-02-11  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR optimization/9651
	* rtlanal.c (may_trap_p): Handle FIX.

2003-02-11  Dave Jones <davej@codemonkey.org.uk>

	* config/i386/i386.c (override_options): Define c3-2 as a 686 with SSE.
	* doc/invoke.texi: Extra alias.

2003-02-11  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/host-darwin.c: Fix comment.

2003-02-11  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (divmodsi4): Use register_operand
	predicate for mod result.

2003-02-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* inclhack.def (hpux_long_double, hpux10_ctype_declarations1,
	hpux10_ctype_declarations2, hpux_ctype_macros): New hacks.
	* fixincl.x: Rebuilt.
	* tests/base/stdlib.h: Update.
	* tests/base/ctype.h: New file.

2003-02-11  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (emit_copy_of_insn_after): Copy insn recog cache too.

2003-02-11  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_movstr): Fail if esi or edi
	appropriated as globals.
	(ix86_expand_clrstr): Similarly.
	* config/i386/i386.md (cmpstrsi): Similarly.

2003-02-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Add a case of 255.

2003-02-11  Roger Sayle  <roger@eyesopen.com>

	* optabs.h (enum optab_index): Add new OTI_pow and OTI_atan2.
	(pow_optab, atan2_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize pow_optab and atan2_optab.
	* genopinit.c (optabs): Implement pow_optab and atan2_optab
	using pow?f3 and atan2?f3 patterns.
	* builtins.c (expand_errno_check): New function to update errno
	if necessary, split out from expand_builtin_mathfn.
	(expand_builtin_mathfn): Use expand_errno_check.
	(expand_builtin_mathfn_2): New function to handle expanding binary
	math functions, reusing the code in expand_errno_check.
	(expand_builtin): Handle the pow and atan2 math built-ins,
	BUILT_IN_{POW,POWF,POWL,ATAN2,ATAN2F,ATAN2L} via the new function
	expand_builtin_mathfn_2.

	* doc/md.texi: Document new pow?f3 and atan2?f3 patterns.

2003-02-11  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Fix folding of
	nested float_truncates.

2003-02-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (a peephole2): Fix a typo.

2003-02-11  Richard Earnshaw  <rearnsha@arm.com>

	* arm.mc (return_address_mask): Use CC_REGNUM for the condition code
	register number.

2003-02-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	gtuleu_operator.
	* config/h8300/h8300.c (gtuleu_operator): New.
	* config/h8300/h8300.h (PREDICATE_CODES): Add gtuleu_operator.
	* config/h8300/h8300.md (a peephole2): New.

2003-02-11  Jan Hubicka  <jh@suse.cz>

	* sched-ebb.c (schedule_ebbs): Do not verify_flow_info.

2003-02-11  Jan Hubicka  <jh@suse.cz>

	* predict.c (choose_function_section): Choose sections correctly.

2003-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* reload1.c (first_label_num): New.
	(reload): Index offsets_known_at and offsets_at using difference of
	label number and first label number.  Don't use offset pointers.
	(set_label_offsets, set_initial_label_offsets): Likewise.

2003-02-10  Roger Sayle  <roger@eyesopen.com>

	* mips-tfile.c (init_file): Add missing initializers in the
	"#ifdef __alpha" case.
	(file_offset, max_file_offset): Declare as unsigned long.
	(write_varray): Cast to "unsigned long" in comparisons against
	either file_offset or max_file_offset.
	(write_object): Likewise.
	(read_seek): Likewise.
	(copy_object): Likewise. Declare "ifd" as int to match its use
	in add_ext_symbol, and avoid signed/unsigned conditional warning.

2003-02-10  Nick Clifton  <nickc@redhat.com>
	    Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Do not
	override options which have been specified on the command line.

2003-02-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (abssf2): New.
	(*abssf2_h8300): Likewise.
	(*abssf2_h8300hs): Likewise.

2003-02-10  Phil Edwards  <pme@gcc.gnu.org>

	* tree.c (build_tree_list):  Fix parameter names in comment.

2003-02-10  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/ppc64-fp.c: New file.
	* config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.

2003-02-10  Josef Zlomek  <zlomekj@suse.cz>

	* Makefile.in (bb-reorder.o): Add dependency on $(FIBHEAP_H).
	* bb-reorder.c (make_reorder_chain): Deleted.
	(make_reorder_chain_1): Deleted.
	(find_traces): New function.
	(rotate_loop): New function.
	(mark_bb_visited): New function.
	(find_traces_1_round): New function.
	(copy_bb): New function.
	(bb_to_key): New function.
	(better_edge_p): New function.
	(connect_traces): New function.
	(copy_bb_p): New function.
	(get_uncond_jump_length): New function.
	(reorder_basic_blocks): Use new functions (Software Trace Cache).
	* cfgcleanup.c (outgoing_edges_match): Enable crossjumping across loop
	boundaries.

2003-02-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (bdesc_2arg): Change spe_evxor to xorv2si3.

2003-02-09  Dan Nicolaescu  <dann@ics.uci.edu>

	* tree.h (struct tree_decl): Remove unused live_range_rtl field.
	(DECL_LIVE_RANGE_RTL): Remove.

2003-02-10  Nick Clifton  <nickc@redhat.com>

	* config/arm/aof.h, config/arm/aout.h, config/arm/arm-modes.def,
	config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h,
	config/arm/arm.md, config/arm/cirrus.md, config/arm/coff.h,
	config/arm/conix-elf.h, config/arm/ecos-elf.h, config/arm/elf.h,
	config/arm/freebsd.h, config/arm/linux-elf.h,
	config/arm/linux-gas.h, config/arm/netbsd-elf.h,
	config/arm/netbsd.h, config/arm/pe.c, config/arm/pe.h,
	config/arm/rtems-elf.h, config/arm/semi.h, config/arm/semiaof.h,
	config/arm/strongarm-coff.h, config/arm/strongarm-elf.h,
	config/arm/strongarm-pe.h, config/arm/uclinux-elf.h,
	config/arm/unknown-elf-oabi.h, config/arm/unknown-elf.h,
	config/arm/xscale-elf.h: Replace occurances of "GNU CC" with "GCC"
	and reformat as appropriate.

2003-02-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/clzsi2.c: Remove.
	* config/h8300/ctzsi2.c: Likewise.
	* config/h8300/paritysi2.c: Likewise.
	* config/h8300/popcountsi2.c: Likewise.
	* config/h8300/t-h8300 (LIB2FUNCS_EXTRA): Remove clzsi2,
	ctzsi2, paritysi2, and popcountsi2.

2003-02-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>

	PR c/7741
	* c-decl.c (duplicate_decls): Discard the initializer of the
	new decl when the types are conflicting.

2003-02-10  Josef Zlomek  <zlomekj@suse.cz>

	* Makefile.in (sreal.o): Added.
	(predict.o): Depends on sreal.h instead of real.h.
	* sreal.c: New file.
	* sreal.h: New file.
	* predict.c: Use sreal.c instead of real.c.

2003-02-10  Nick Clifton  <nickc@redhat.com>

	* Contributed support for the Cirrus EP9312 "Maverick"
	floating point co-processor.  Written by Aldy Hernandez
	<aldyh@redhat.com>.
	(config/arm/arm.c): Add Cirrus support.
	(config/arm/arm.h): Likewise.
	(config/arm/aout.h): Likewise.
	(config/arm/arm.md): Likewise.
	(config/arm/arm-protos.h): Likewise.
	(config.gcc): Likewise.
	(doc/invoke.texi): Describe new -mcpu value and new
	-mcirrus-fix-invalid-insns switch,
	(cirrus.md): New file.

2003-02-10  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Simplify using
	(float_truncate (float x)) is (float x)
	(float_extend (float_extend x)) is (float_extend x).

2003-02-10  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (try_to_integrate): Tidy stack_usage_map access.
	(emit_library_call_value_1): Likewise.	Formatting.
	(store_one_arg): Likewise.

2003-02-09  Nick Clifton  <nickc@redhat.com>
	    Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md: spe_evlhhesplat, spe_evlhhossplat,
	spe_evlhhousplat, spe_evlwhsplat, spe_evlwwsplat, spe_evldd,
	spe_evldh, spe_evldw, spe_evlwhe, spe_evlwhos, spe_evlwhou,
	spe_evstdd, spe_evstdh, spe_evstdw, spe_evstdwx, spe_evstwhe,
	spe_evstwho, spe_evstwwe, spe_evstwwo: Fix syntax to match newest
	docs.  Add range test for immediate value.

2003-02-09  Aldy Hernandez  <aldyh@redhat.com>

	Rename spe_evxor to xorv2si3.
	(xorv4hi3): New.
	(xorv1di3): New.

2003-02-10  Glen Nakamura  <glen@imodulo.com>

	* doc/extend.texi (C++98 Thread-Local Edits): Add missing @item
	tag.

2003-02-10  Jan Hubicka  <jh@suse.cz>

	* i386.c (vector_move_operand): New predicate.
	(ix86_expand_vector_move): Be happy about 0.
	* i386.h (PREDICATE_CODES): Add sse-move_operand.
	* i386.md (mov*_internal): Add 'C' alternative.

2003-02-09  Jan Hubicka  <jh@suse.cz>

	* i386.md (floathi*): Deal with SSE.

2003-02-09  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_unary_operation,
	simplify_binary_operation):  Deal with vector modes
	(simplify_ternary_operation):  Deal with no-op VEC_MERGE.

2003-02-09  Richard Sandiford  <rsandifo@redhat.com>

	* toplev.c (rest_of_compilation): Recompute register usage after
	split_all_insns.

2003-02-09  Richard Henderson  <rth@redhat.com>

	* libgcc-std.ver (__clztf2): New.
	(__ctztf2, __popcounttf2, __paritytf2): New.
	* libgcc2.c (__clzSI2, __clzDI2, __ctzSI2, __ctzDI2, __popcountSI2,
	__popcountDI2, __paritySI2, __parityDI2): Use UWmode and UDWmode;
	adjust code to match the different type sizes.
	* libgcc2.h (__clzSI2, __ctzSI2, __popcountSI2, __paritySI2,
	__clzDI2, __ctzDI2, __popcountDI2, __parityDI2): New macros.

	* optabs.c (init_integral_libfuncs): Don't hard-code SImode and
	TImode; select word_mode and twice that.
	(init_floating_libfuncs): Don't hard-code SFmode and TFmode;
	select the modes from float, double, and long double.
	(init_optabs): Remove duplicate initializations.

2003-02-09  Wolfgang Bangerth  <bangerth@ticam.utexas.edu>

	* doc/install.texi: Squeeze and streamline section on
	testing and regression checking.

2003-02-09  Jan Hubicka  <jh@suse.cz>

	* i386.md (ahi?v*3): Set third operand type to TImode.
	* i386.c (ix86_expand_binop_builtin): Extend operand when needed.

	* simplify-rtx.c (simplify_subreg): Fix conversion from vector into
	integer mode.

	* rtl.def (VEC_MERGE, VEC_SELECT, VEC_CONCAT, VEC_DUPLICATE):
	Change code so they are arithmetic expressions now.
	* simplify-rtx.c (simplify_unary_operation, simplify_binary_operation,
	simplify_ternary_operation): Deal with VEC_* expressions.

	* i386.md (vmaskcmp, pinsrw, movd patterns):  Fix RTL representation.

2003-02-08  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (verify_flow_info):  Use control_flow_insn_p.
	* reload1.c (fixup_abnormal_edges):  Split basic blocks when EH edges
	possibly got duplicated.

2003-02-08  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (override_options): Turn off explicit
	relocs until post-peep2 code duplication resolved.

2003-02-08  Kazu Hirata  <kazu@cs.umass.edu>

	* optabs.c (expand_unop): Widen clz properly when clz is done
	via libcall.

2003-02-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/clzsi2.c: Replace "GNU CC" with "GCC".
	* config/h8300/crti.asm: Likewise.
	* config/h8300/crtn.asm: Likewise.
	* config/h8300/ctzsi2.c: Likewise.
	* config/h8300/fixunssfsi.c: Likewise.
	* config/h8300/h8300-protos.h: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.
	* config/h8300/paritysi2.c: Likewise.
	* config/h8300/popcountsi2.c: Likewise.
	* config/h8300/rtems.h: Likewise.

2003-02-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* doc/invoke.texi: Documentation for my previous commit.
	* doc/passes.texi: Ditto.

2003-02-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.h (fix_loop_placement, can_duplicate_loop_p,
	duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
	Declare.
	(DLTHE_FLAG_UPDATE_FREQ): New.
	* cfgloopmanip.c (duplicate_loop, duplicate_subloops, copy_loops_to,
	loop_redirect_edge, loop_delete_branch_edge, copy_bbs, remove_bbs,
	rpe_enum_p, find_branch, alp_enum_p, add_loop, fix_loop_placements,
	fix_bb_placement, fix_bb_placements, place_new_loop,
	scale_loop_frequencies, scale_bbs_frequencies, record_exit_edges):
	New static functions.
	(fix_loop_placement, can_duplicate_loop_p,
	duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
	New functions.

	* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize,
	unswitch_loops): Declare.
	* loop-init.c: New file.
	* loop-unswitch.c: New file.
	* Makefile.in (loop-init.o, loop-unswitch.o): New.
	* params.def (PARAM_MAX_UNSWITCH_INSNS, PARAM_MAX_UNSWITCH_LEVEL): New.
	* toplev.c (DFI_loop2): New dump.
	(flag_unswitch_loops): New.
	(lang_independent_options): Add it.
	(rest_of_compilation): Call new loop optimizer.
	(parse_options_and_default_flags): Turn flag_unswitch_loops on with -O3.

2003-02-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/clzsi2.c: New.
	* config/h8300/ctzsi2.c: Likewise.
	* config/h8300/paritysi2.c: Likewise.
	* config/h8300/popcountsi2.c: Likewise.
	* config/h8300/t-h8300 (LIB2FUNCS_EXTRA): Add above files.

2003-02-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
	* config/rs6000/rs6000.md (clzsi2): Rename from cntlzw2.
	(ctzsi2): New pattern.
	(ffssi2): Use clz instead of unspec.
	(clzdi2): Rename from cntlzd2.
	(ctzdi2): New pattern.
	(ffsdi2): Use clz instead of unspec.

2003-02-07  Loren James Rittle  <ljrittle@acm.org>

	* config/alpha/freebsd.h (LINK_SPEC): Weaken error to notice.
	* config/ia64/freebsd.h (LINK_SPEC): Likewise.
	* config/sparc/freebsd.h (LINK_SPEC): Likewise.
	* config/i386/freebsd.h (LINK_SPEC): Add clause to mirror other arches.

2003-02-07  Wolfgang Bangerth  <bangerth@ticam.utexas.edu>

	* doc/trouble.texi: Document pitfalls of two-stage name lookup.

2003-02-07  Richard Henderson  <rth@redhat.com>

	PR 9226
	* gcse.c (local_cprop_find_used_regs): New.
	(local_cprop_pass): Use it.

2003-02-07  Fred Fish  <fnf@intrinsity.com>

	* mips-tfile.c (parse_def): Parenthesize assignments to fix
	precedence bugs.

2003-02-07  Segher Boessenkool  <segher@koffie.nl>

	* genoutput.c (output_get_insn_name): Handle NOOP_MOVE_INSN_CODE.

2003-02-07  Roger Sayle  <roger@eyesopen.com>

	* builtin-types.def (BT_FN_FLOAT_FLOAT_FLOAT): New built-in type.
	(BT_FN_LONG_DOUBLE_LONG_DOUBLE_LONG_DOUBLE): Likewise.
	(BT_FN_DOUBLE_DOUBLE_DOUBLE): Likewise.
	* builtins.def: Define pow, powf, powl, atan2, atan2f and atan2l
	builtin functions (and their __builtin_* variants).
	* builtins.c (mathfn_built_in): Handle missing log{,f,l} cases.
	(expand_builtin): Don't expand log{,f,l}, pow{,f,l} or atan2{,f,l}
	when not optimizing.

	* doc/extend.texi: Document new pow and atan2 builtins, and
	their float and long double variants.  Realphabetize builtins.

2003-02-07  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse2_nandv2di3): Fix.

2003-03-07  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/i386.h (MS_AGGREGATE_RETURN): New define.
	* config/i386/cygwin.h (MS_AGGREGATE_RETURN): Override default
	definition.
	* config/i386/i386.h (ix86_return_in_memory): Return aggregate
	types of up to 8 bytes via registers if MS_AGGREGATE_RETURN.

2003-02-07  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi_rex64_1): Fix mmx<->int move opcode.

2003-02-07  Daniel Berlin  <dberlin@dberlin.org>

	* cfg.c (dump_flow_info): Add back accidently deleted line.

2003-02-07  Andrey Petrov <petrov@netbsd.org>

	* optabs.c (expand_float): Search wider integer modes first.

2003-02-07  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (LIBGCC2_WORDS_BIG_ENDIAN): Set this
	based on preprocessor flag.

2003-02-07  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	* gcse.c (implicit_sets): New.
	(compute_hash_table_work): Include them in hash table.
	(find_implicit_sets, fis_get_condition): New.
	(one_cprop_pass): Allocate and free implicit_sets; call
	find_implicit_sets before building hash table.

2003-02-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/t-netbsd (USER_H): Revert previous change.

2003-02-07  Gabor Greif  <ggreif@lucent.com>

	* doc/c-tree.texi (Namespaces): Fix typo.

2003-02-07  Jan Hubicka  <jh@suse.cz>

	* regrename.c (do_replace, find_oldest_value_reg,
	copyprop_hardreg_forward_1): Update register attributes.

2003-02-06  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (VLA_PTR_CREATE, VLA_PTR_EXPAND, VLA_PTR_ADD,
	VLA_HWINT_CREATE, VLA_HWINT_EXPAND, VLA_HWINT_ADD): Use temporay
	variables starting with underscore.
	(struct unit_usage): New structure.
	(unit_usages, cycle_alt_unit_usages): New global variables.
	(check_unit_distribution_in_reserv): Remove it.
	(store_alt_unit_usage): New function.
	(check_regexp_units_distribution): Rewrite it.

2003-02-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config.gcc (hppa*-*-linux*): Set MASK_NO_SPACE_REGS in
	target_cpu_default.
	* pa.c (attr_length_call): Add 8 to call length (long indirect PA 1.X)
	if not MASK_NO_SPACE_REGS.
	(output_call): Adjust return pointer, don't load new space register
	into %sr0, and use %sr4 for call if TARGET_NO_SPACE_REGS is true.
	(pa_asm_output_mi_thunk): Don't load new space register into %sr0 if
	TARGET_NO_SPACE_REGS is true.
	* pa.md (return_external_pic): Add TARGET_NO_SPACE_REGS to insn
	conditions.
	(epilogue): Always use return_internal if TARGET_NO_SPACE_REGS is true.
	(interspace_jump): Add new pattern for when TARGET_NO_SPACE_REGS is
	true.  Use bve when TARGET_64BIT is true.

2003-02-06  Richard Henderson  <rth@redhat.com>

	* combine.c (nonzero_bits): Fix double break.

2003-02-06  Eric Botcazou <ebotcazou@libertysurf.fr>
	    Richard Henderson <rth@redhat.com>

	PR c/9530
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Forbid sibcalls
	from functions that return a float to functions that don't.

2003-02-06  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_inter_unit_moves): New variable.
	(ix86_secondary_memory_needed): Fix 64bit case, honor
	TARGET_INTER_UNIT_MOVES
	* i386.h (x86_inter_unit_moves): Declare.
	(TARGET_INTER_UNIT_MOVES): New macro.
	* i386.md (movsi_1): Cleanup constraints; disable
	when not doing inter-unit moves.
	(movsi_1_nointernunit): New.
	(movdi_1_rex64): Fix constraints; deal with SSE->GPR moves.
	(movdi_1_rex64_nointerunit): New.
	(mivsf_1): disable when not doing inter-unit moves.
	(movsf_1_nointerunit): New.

	* basic-block.h (inside_basic_block_p):  Declare.
	* cfgbuild.c (inside_basic_block_p): Make global.
	* haifa-sched.c (unlink_other_notes): Deal with NOT_INSN_BASIC_BLOCK.
	* scheudle-ebb.c  (schedule_ebb): Return last basic block of trace;
	update CFG.
	(fix_basic_block_boundaries, add_missing_bbs): New.
	(rank): Use profile.
	(scheudle_ebbs): Rely on CFG; update coments.

2003-02-05  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (host_hook_obj): New.
	(OBJS): Add $(host_hook_obj).
	(host_default.o): New rule.
	* config.gcc (host_hook_obj): New, default to host-default.o.
	(powerpc-*-darwin*): Use host-darwin.o.
	(out_host_hook_obj): New.
	* configure: Regenerate.
	* configure.in: Print information about out_host_hook_obj, substitute
	into output files.
	* host-default.c: New file.
	* hosthooks.h: New file.
	* toplev.c (general_init): Call host_hooks.extra_signals.
	* config/rs6000/host-darwin.c: New file.
	* config/rs6000/x-darwin: New file.
	* doc/hostconfig.texi: Add documentation for new host hook.
	Rearrange existing documentation.

2003-02-05  Roger Sayle  <roger@eyesopen.com>

	* dwarf2out.c (mem_loc_descriptor): Replace ASM_SIMPLIFY_DWARF_ADDR
	with *targetm.delegitimize_address.
	(rtl_for_decl_location): Likewise.
	* dwarfout.c (output_mem_loc_descriptor): Likewise.  Include target.h.
	* Makefile.in (dwarf2out.c, dwarfout.c): Depend upon $(TARGET_H)

	* config/i386/i386.h (ASM_SIMPLIFY_DWARF_ADDR): Remove definition.
	* config/i386/i386-protos.h (i386_simplify_dwarf_addr): Remove
	prototype.
	* config/i386/i386.c (ix86_delegitimize_address): Renamed from
	i386_simplify_dwarf_addr.  Made static.  Prototyped.
	(TARGET_DELEGITIMIZE_ADDRESS): Update definition from
	i386_simplify_dwarf_addr to ix86_delegitimize_address.
	(ix86_find_base_term): Likewise.
	(maybe_get_pool_constant): Likewise.

	* config/s390/s390.h (ASM_SIMPLIFY_DWARF_ADDR): Remove definition.
	* config/s390/s390-protos.h (s390_simplify_dwarf_addr): Remove
	prototype.
	* config/s390/s390.c (s390_delegitimize_address): Renamed from
	s390_simplify_dwarf_addr.  Made static.  Prototyped.
	(TARGET_DELEGITIMIZE_ADDRESS): Define as s390_delegitimize_address.

2003-02-05  Richard Henderson  <rth@redhat.com>

	PR c/8602
	* integrate.c (output_inline_function): Reset input_filename
	and lineno from the decl before rest_of_compilation.

2003-02-05  Richard Henderson  <rth@redhat.com>

	* defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
	(CTZ_DEFINED_VALUE_AT_ZERO): New.
	* doc/rtl.texi, doc/tm.texi: Document them.

	* combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness
	of the value at zero properly.
	* fold-const.c (tree_expr_nonnegative_p): Likewise.
	* simplify-rtx.c (simplify_unary_operation): Likewise.

	* config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
	(CTZ_DEFINED_VALUE_AT_ZERO): New.

	* config/arm/arm.c (TARGET_INIT_BUILTINS): Remove.
	(TARGET_EXPAND_BUILTIN): Remove.
	(def_builtin, arm_init_builtins, arm_expand_builtin): Remove.
	* config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
	(enum arm_builtins): Remove.
	* config/arm/arm.md (UNSPEC_CLZ): Remove.
	(clzsi2): Rename from clz; use clz instead of unspec.
	(ctzsi2): New.
	* config/arm/arm-protos.h: Update.

2003-02-05  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (x86_emit_floatuns):  Declare.
	* i386.c (x86_emit_floatuns): New global function.
	* i386.md (floatunssisf2, floatunsdisf2,
	floatunsdidf2):  New patterns.

2003-01-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopmanip.c (force_single_succ_latches): Fix missindentation.

2003-02-05  Hans Boehm <Hans.Boehm@hp.com>

	* config/ia64/unwind-ia64.c: include coretypes.h, tm.h to get
	  config/ia64/linux.h

2003-02-05  Roger Sayle  <roger@eyesopen.com>

	* cfgloop.h (flow_bb_inside_loop_p): Correct prototype again.

2003-02-05  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/8555
	* config/i386/i386.md (sse_mov?fcc split): Handle op2 == op3 case
	instead of aborting.

2003-02-04  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (UNSPEC_BSF): Remove.
	(ffssi2): Split into cmove and no_cmove insns and splitters;
	lose pentium float trick for now.
	(ffssi_1): Add * to name; use CTZ instead of UNSPEC.
	(ctzsi2, clzsi2, bsr): New.

2003-02-04  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (rtx_needs_barrier): Handle POPCOUNT,
	UNSPEC_GETF_EXP; remove UNSPEC_POPCNT.
	* config/ia64/ia64.md (UNSPEC_POPCNT): Remove.
	(ffsdi2): Use popcount instead of unspec.
	(popcountdi2): Rename from *popcnt.
	(ctzdi2, clzdi2, getf_exp_tf): New.

2003-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* genconfig.c (main): Generate CC0_P.
	* rtl.h (CC0_P): Remove.

2003-02-04  Richard Henderson  <rth@redhat.com>

	* libgcc2.h, libgcc2.c (__ffsSI2): New.
	(__ffsDI2): Rename from __ffsdi2.
	* mklibgcc.in (lib2funcs): Add _ffssi2.

2003-02-04  Richard Henderson  <rth@redhat.com>

	* libgcc2.c (__paritysi2, __paritydi2): Replace last two reduction
	rounds with a "bit table" lookup.

2003-02-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads): Do not use the mode specified in the insn
	pattern as reload mode for address operands.  Do not generate optional
	reloads for operands where a mandatory reload was already pushed.

2003-02-04  Richard Henderson  <rth@redhat.com>

	* longlong.h [alpha] (count_leading_zeros, count_trailing_zeros): Use
	builtins instead of inline assembly.

2003-02-04  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	PR c/9376
	* libgcc2.c (__subvdi3): Fix typo.

2003-02-04  Jan Hubicka  <jh@suse.cz>

	* i386.md (movti_rex64):  Fix constraint.

2003-02-04  Jan Hubicka  <jh@suse.cz>

	* i386.md (vector push splitters):  Fix typo in resolving conflict.

2003-02-04  Rodney Brown  <rbrown64@csc.com.au>

	* config/i386/i386.c (x86_function_profiler): Fix typo in format.

2003-02-04  Phil Edwards  <pme@gcc.gnu.org>

	* doc/install.texi (*-*-linux-gnu):  Mention glibc requirements
	for recent libstdc++.  Remove formatting cruft.

2003-02-04  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Add AT_comp_dir
	attribute even if input file name is absolute, but one of the
	includes is relative.

2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/gcc.texi, doc/gccint.texi, doc/gcov.texi,
	doc/include/fdl.texi, doc/invoke.texi: Update to GFDL 1.2.
	* doc/install.texi: Update copyright dates.  Update to GFDL 1.2.

2003-02-03  Richard Henderson  <rth@redhat.com>

	* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2, __paritydi2): Change
	return type to "int".  Shuffle declarations and undef int trap.
	* libgcc2.h: Remove their declarations.
	* optabs.c (expand_unop): Force outmode to int for bitops.

2003-02-03  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (order_regs_for_local_alloc): Order the
	coprocessor registers before floating-point registers.
	* config/xtensa/xtensa.h (REG_ALLOC_ORDER): Adjust register numbers
	to account for a previously removed register.
	(SPEC_REG_FIRST, SPEC_REG_LAST, SPEC_REG_NUM, COUNT_REGISTER_REGNUM):
	Delete unused macros.

2003-02-03  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_store_builtin):  Always force op1 to register.
	(mov*_internal): Fix predicates; require one of operands to not be
	memory.
	(SSE?MMX move expanders):  Fix predicates; force one of operands to
	register.
	(SSE/MMX push patterns): Reorganize; fix x86-64 code generation.
	(movups/movupd/movdqu patterns): Force one of operands to not be
	memory.

2003-02-03  Roger Sayle  <roger@eyesopen.com>

	* hooks.c (hook_rtx_rtx_identity): Generic hook function that
	takes a single rtx and returns it unmodified.
	* hooks.h (hook_rtx_rtx_identity): Prototype here.
	* target.h (struct gcc_target): Add "delegitimize_address"
	field to target structure.
	* target-def.h (TARGET_DELEGITIMIZE_ADDRESS):  Provide default
	for delegitimize_address target using hook_rtx_rtx_identity.
	(TARGET_INITIALIZER): Initialize delegitimize_address field
	using TARGET_DELEGITIMIZE_ADDRESS macro.
	* simplify-rtx.c (avoid_constant_pool_reference): Handle float
	extensions of constant pool references.  Use delegitimize_address
	to undo the obfuscation of "-fpic".
	* Makefile.in (simplify-rtx.o): Add dependency on target.h.

	* config/i386/i386.c (TARGET_DELEGITIMIZE_ADDRESS): Define as
	i386_simplify_dwarf_addr.
	(ix86_find_base_term): Simplify using i386_simplify_dwarf_addr.
	(maybe_get_pool_constant): Likewise.

2003-02-03  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_int_movcc):  Fix setcc sign bit case.

2003-02-03  Jan Hubicka  <jh@suse.cz>

	* regclass.c (cannot_change_mode_set_regs): Correct argument order.

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

	* mips/_tilib.c: Don't include tsystem.h or defaults.h.  Don't
	define LIBGCC2_WORDS_BIG_ENDIAN.  Include coretypes.h and tm.h.

2003-02-02  Andreas Schwab  <schwab@suse.de>

	* varasm.c (asm_output_aligned_bss): Declare as possibly unused.

2003-02-02  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (sibcall_epilogue): Set the "conds" to "clob".
	(epilogue_insns): Likewise.

2003-02-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi (hppa*-hp-hpux11*): Update installation notes.

2003-02-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-protos.h (attr_length_millicode_call): Remove second argument.
	(attr_length_indirect_call, attr_length_indirect_call,
	attr_length_save_restore_dltp): New prototypes.
	* pa.c (attr_length_millicode_call): Remove second argument.  Check
	INSN_ADDRESSES_SET_P in distance calculation.
	(output_millicode_call): Check INSN_ADDRESSES_SET_P before using
	INSN_ADDRESSES.
	(attr_length_call): Check INSN_ADDRESSES_SET_P in distance calculation.
	(output_call): Check INSN_ADDRESSES_SET_P before using INSN_ADDRESSES.
	Call attr_length_call directly.
	(attr_length_indirect_call, output_indirect_call,
	attr_length_save_restore_dltp): New functions.
	* pa.md (attr_length_millicode_call): Drop second argument from all
	patterns.
	(return_internal_pic): Delete.
	(return_external_pic): Remove use of PIC register and pic operand and
	flag checks.
	(epilogue): Use return_internal for both normal and pic code.
	(call, call_value): Emit new 32-bit pic patterns for symref and
	indirect calls.  Remove uses for arg pointer and pic register.
	(call_symref_pic, call_symref_pic_post_reload, call_reg_pic,
	call_reg_pic_post_reload, call_val_symref_pic,
	call_val_symref_pic_post_reload, call_val_reg_pic,
	call_val_reg_pic_post_reload): New pre and post reload insn patterns.
	Implement define_split and define_peephole2 patterns for pre reload
	patterns.
	(call_symref_64bit, call_internal_reg_64bit, call_value_symref_64bit,
	call_value_internal_reg_64bit): Shorten names.
	(all call patterns): Explicitly indicate registers used and clobbered.
	Use attr_length_indirect_call and attr_length_save_restore_dltp for
	attribute length calculation.  Move code generation for indirect calls
	to output_indirect_call.
	(sibcall, sibcall_value): Don't restore PIC register.
	(exception_receiver, builtin_setjmp_receiver): Add blockage after PIC
	register retore.

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

	* doc/install.texi (Testing): Simplify and compress instructions
	concerning Dejagnu.

2003-02-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* collect2.c (pexecute_pid): Rename to pid.
	(collect_wait, collect_execute, scan_prog_file, scan_libraries): Use
	pid.

2003-02-01  Geoffrey Keating  <geoffk@apple.com>

	* doc/extend.texi (Function Attributes): Remove documentation
	for PowerPC Windows NT function attributes..

2003-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2out.c (gen_type_die): Check for typedefs before calling
	for TYPE_MAIN_VARIANT.

2003-02-01  Richard Henderson  <rth@redhat.com>

	* libgcc2.c: Include auto-host.h.
	(ATTRIBUTE_HIDDEN): New.
	(__clz_tab): Don't declare here for clz and ctz.
	(__clzsi2, __clzdi2): Use count_leading_zeros.
	(__ctzsi2, __ctzdi2): Use count_trailing_zeros.
	(__popcount_tab): Mark ATTRIBUTE_HIDDEN.
	(__paritysi2, __paritydi2): Use shifts instead of __popcount_tab.
	* longlong.h (__clz_tab): Mark ATTRIBUTE_HIDDEN.

2003-02-01  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (addsi_1_zext splitter): Add TARGET_64BIT
	to the conditional.
	(ashlsi3_1_zext splitter): Likewise.

2003-02-01  Richard Henderson  <rth@redhat.com>

	* optabs.c (expand_unop): Use word_mode for outmode of bit scaners.
	* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change
	return type to Wtype.

	* libgcc-std.ver (GCC_3.4): Fix inheritance.

	* config/i386/i386.md (ffssi2): Use nonimmediate_operand for
	expander input constraint.

2003-02-01  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	* optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and
	OTI_parity.
	(clz_optab, ctz_optab, popcount_optab, parity_optab): New.
	* optabs.c (widen_clz, expand_parity): New.
	(expand_unop): Handle clz and parity.  Hardcode SImode as outmode
	for libcalls to clz, ctz, popcount, and parity.
	(init_optabs): Init clz_optab, ctz_optab, popcount_optab and
	parity_optab, and set up libfunc handlers.
	* libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2 __paritydi2,
	__popcount_tab): New.
	* libgcc2.h: Declare them.
	* libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c.
	* genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab
	and parity_optab.
	* builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New.
	* builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT,
	BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL,
	BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL,
	BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL,
	BUILT_IN_PARITYLL): New.
	* builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs
	and add optab argument.
	(expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*.
	* tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New.
	* expr.c (expand_expr): Handle them.
	* fold-const.c (tree_expr_nonnegative_p): Likewise.
	* rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New.
	* reload1.c (eliminate_regs): Handle them.
	(elimination_effects): Likewise.
	* function.c (instantiate_virtual_regs_1): Likewise
	* genattrtab.c (check_attr_value): Likewise.
	* simplify-rtx.c (simplify_unary_operation): Likewise.
	* c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR.
	* combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY.
	(nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY.
	* config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New.
	* config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to
	__builtin_arm_clz.
	* Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move...
	* mklibgcc.in (lib2funcs): ...here and merge.  Add new members.
	* doc/extend.texi (Other Builtins): Add new builtins.
	* doc/md.texi (Standard Names): Add new patterns.

2003-02-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c: Revert 2003-01-31 change.

2003-02-01  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx):  Use reversed_comparison_code_parts.

2003-02-01  Richard Sandiford  <rsandifo@redhat.com>

	* flags.h (flag_volatile): Remove declaration.
	(flag_volatile_global, flag_volatile_static): Likewise.
	* c-typeck.c (build_indirect_ref): Don't check flag_volatile.
	* toplev.c (flag_volatile): Remove definition.
	(flag_volatile_global, flag_volatile_static): Likewise.
	(f_options): Remove corresponding entries here.
	* varasm.c (make_decl_rtl): Don't check flag_volatile_global
	or flag_volatile_static.
	* doc/invoke.texi: Remove documentation of -fvolatile,
	-fvolatile-global and -fvolatile-static.

2003-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_output_function_prologue, pa_output_function_epilogue): Move
	updating of total_code_bytes from prologue to epilogue.

2003-01-31  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads): Do not use the mode specified in the insn
	pattern as reload mode for address operands.  Do not generate optional
	reloads for operands where a mandatory reload was already pushed.
	Generate optional reloads only in the final pass though find_reloads.
	(have_replacement_p): New function.

2003-01-31  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Testing): Remove a reference to our obsolete
	/testresults web pages and strip redundant information concerning
	test results.
	(Binaries): Refer to Microsoft Windows instead of listing all
	possible variants.

2003-02-01  Jan Hubicka  <jh@suse.cz>

	* loop.c (emit_prefetch_instructions):  Do conversion at right place in
	RTL chain.

	* combine.c (simplify_set): Reverse order of ragumetns to
	REG_CANNOT_CHANGE_MODE_P
	* df.c (df_def_record_1): Likewise.
	* recog.c (register_operand): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Update use of
	CANNOT_CHANGE_MODE_CLASS.
	* regclass.c (cannot_change_mode_set_regs, invalid_mode_change_p):
	Likewise.
	* reload.c (push_reload): Likewise.
	* alpha.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* ia64.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* mips.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* mips-protos.h (mips_cannot_change_mode_class): Update prototype.
	* mips.c (mips_cannot_change_mode_class): Update.
	* pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* rs6000.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* s390.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* sh.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* sh-protos.h (sh_cannot_change_mode_class): Update prototype.
	* sh.c (sh_cannot_change_mode_class): Update.
	* i386.h (CANNOT_CHANGE_MODE_CLASS): New.
	* tm.texi (CANNOT_CHANGE_MODE_CLASS): Update documentation.

2003-01-31  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_COMMAND_SPEC): Update for Nathan's recent
	change to LINK_COMMAND_SPEC in gcc.c.

2003-01-31  Jan Hubicka  <jh@suse.cz>

	PR c/9506
	* i386.c (override_options): Use DEFAULT_PCC_STRUCT_RETURN.

2003-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa32-regs.h (REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Delete
	duplicated code.

2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (TYPE_BINFO_SIZE, TYPE_BINFO_SIZE_UNIT): Remove.
	(BINFO_ELTS): New #define.
	* stor-layout.c (finalize_record_size): Don't set them.
	* cp/cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
	BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
	(BINFO_LANG_ELTS): New #define.
	* cp/tree.c (make_binfo): Use BINFO_LANG_ELTS.
	* java/class.c (make_class): Use BINFO_ELTS.
	(set_super_info): Likewse.
	(add_interface_do): Likewise.
	* objc/objc-act.c (start_class): Use BINFO_ELTS.

2003-01-31 Danny Smith <dannysmith@users.sourceforge.net>

	* timevar.c (getrusage): Don't ever declare if not HAVE_GETRUSAGE.
	(times): Don't ever declare if not HAVE_TIMES.
	(clock): Don't ever declare if not HAVE_CLOCK.

2003-01-30  Richard Henderson  <rth@redhat.com>

	* flow.c (update_life_info): Zap life info after cleanup_cfg.
	(regno_uninitialized): Use correct live at function entry set.
	(regno_clobbered_at_setjmp): Likewise.

	* expr.c (store_expr): Promote all MEM intermediates to regs.

2003-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c: Fix comment typos.
	* config/arm/arm.h: Likewise.
	* config/arm/netbsd-elf.h: Likewise.
	* config/arm/netbsd.h: Likewise.

2003-01-30  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (struct walk_type_data): Add needs_cast_p.
	(walk_type): Set needs_cast_p in walk_type_data.
	(write_types_process_field): Supply casts when required to suppress
	warnings.
	(write_root): Cast gt_pch_n_S to suppress warning.
	* Makefile.in: Remove -Wno-error from gtype-desc.o and c-decl.o.
	* config/rs6000/rs6000.c (print_operand): Mask off high bits only
	when they might exist.
	* config/rs6000/t-rs6000: Remove -Wno-error from varasm.o,
	insn-conditions.o, and rs6000.o.

2003-01-30  Richard Henderson  <rth@redhat.com>

	* ggc-page.c (G.context_depth_allocations): New.
	(G.context_depth_collections): New.
	(alloc_page): Set G.context_depth_allocations.
	(ggc_collect): Set G.context_depth_collections.
	(ggc_push_context): Limit to HOST_BITS_PER_LONG contexts.
	(ggc_pop_context): Early exit for no allocations or collections.

2003-01-30  Richard Henderson  <rth@redhat.com>

	* tree-inline.c (walk_tree): Streamline duplicate hash table lookup.

2003-01-30  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_compute_initial_elimination_offset): If optimizing for
	size, the link register is always saved if any other register is
	saved.

2003-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update the prototype for
	compute_plussi_cc.
	(cpp_reader): Declare before it is used.
	* config/h8300/h8300.c (compute_plussi_cc): Change the return
	type to int.
	* config/h8300/h8300.md (monitor_prologue): Call abort() if we
	see an unknown H8 variant.

2003-01-30  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>

	PR target/9316
	* config/rs6000/rtems.h: Add CPP_OS_DEFAULT_SPEC.
	* config/rs6000/sysv4.h: Add CPP_OS_RTEMS_SPEC.
	* config/rs6000/t-rtems: New file. multilib variants to match OS.
	* config.gcc (powerpc-*-rtems*): Use rs6000/t-rtems instead of
	rs6000/t-ppcgas so we get the desired multilibs.

2003-01-30  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_output_epilogue): Update stack pointer
	when popping saved IP register off the stack.

2003-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/rs6000/aix43.h: Fix comment typos.
	* config/rs6000/aix51.h: Likewise.
	* config/rs6000/aix52.h: Likewise.
	* config/rs6000/altivec.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/spe.md: Likewise.

2003-01-29  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (builtin_define_float_constants): Define
	__<TYPE>_HAS_INFINITY__ and __<TYPE>_HAS_QUIET_NAN__.

2003-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/lib1funcs.asm: Fix comment typos.
	* config/sh/linux.h: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.md: Likewise.

2003-01-30  Loren James Rittle  <ljrittle@acm.org>

	* objc/Make-lang.in (objc-parse.y): Find c-parse.in in $(srcdir).

2003-01-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.h (__make_dp): Declare if TMODES.

2003-01-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (PREDICATE_CODES): Add entries for
	general_operand_src and general_operand_dst.

2003-01-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (function_arg_pass_by_reference):
	Return true for variable sized types.
	(rs6000_va_arg): Handle variable sized types passed by reference
	on non-SVR4 ABI.

2003-01-29  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_legtimize_address): New function.
	* arm-protos.h (arm_legtimize_address): Add prototype.
	* arm.h (ARM_LEGITIMIZE_ADDRESS): Use arm_legitimize_address.
	(LEGITIMIZE_ADDRESS, THUMB_LEGITIMIZE_ADDRESS): Wrap with
	do ... while (0)

2003-01-29  Joel Sherrill  <joel@OARcorp.com>

	PR bootstrap/9296
	* gthr-rtems.h: Define __GTHREAD_MUTEX_INIT.  Apparently no code
	depended on it being defined until now.

2003-01-29  Joel Sherrill  <joel@OARcorp.com>

	PR target/9295
	* config/mips/rtems.h: Predefine __USE_INIT_FINI__ so generic
	RTEMS code knows which C++ initialization style the toolset
	configuration is using.

2003-01-29  Joel Sherrill  <joel@OARcorp.com>

	PR bootstrap/9293
	* config/m68k/t-crtstuff: Replace spaces with tabs, add
	 $(MULTILIB_CFLAGS) as compiler option and multilib crtbegin/end.o.

2003-01-29  Joel Sherrill  <joel@OARcorp.com>

	PR bootstrap/9292
	* config.gcc (hppa1.1-rtems):  Did not include t-rtems nor enable
	RTEMS threads.
	* config/pa/rtems.h (LIB_SPEC): Use -N when linking.

2003-01-29  Nick Clifton  <nickc@redhat.com>

	* Makefile.in (c-parse.o): Locate source file in $(parsedir)
	not $(srcdir).

2003-01-29  Andrew Haley  <aph@redhat.com>

	* tree-inline.c (walk_tree): Add CHAR_TYPE.

2003-01-29  Jan Hubicka  <jh@suse.cz>

	* i386.md (subdi3_carry_rex64): Fix typo.

2003-01-28  Stan Shebs  <shebs@apple.com>

	* coretypes.h (cpp_reader): Forward declare struct.
	* c-pragma.h (cpp_reader): Remove forward declaration.
	* hashtable.h (cpp_reader): Likewise.
	* scan.h (cpp_reader): Likewise.
	* tree.h (cpp_reader): Likewise.
	* config/darwin-protos.h (cpp_reader): Likewise.
	* config/arm/arm-protos.h (cpp_reader): Likewise.
	* config/rs6000/rs6000-protos.h: Remove GCC_CPPLIB_H ifdef, use
	struct cpp_reader in prototypes.

2003-01-28  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* doc/install.texi: Add documentation for installation into
	tooldirs and with DESTDIR.

2003-01-28  Richard Henderson  <rth@redhat.com>

	* config.gcc (ia64*-*-aix*): Remove.
	* config/ia64/aix.h, config/ia64/t-aix: Remove file.
	* config/ia64/unwind-aix.c: Remove file.

2003-01-28  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.md (tablejump+2): Don't sign extend an address
	register.
	* config/m68k/apollo68.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/coff.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/mot3300.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
	* config/m68k/pbb.h (ASM_RETURN_CASE_JUMP): Likewise.

2003-01-28  Richard Sandiford  <rsandifo@redhat.com>

	* combine.c (nonzero_bits): Fix check for negative divide operands.

2003-01-28  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_rwreloc_section_type_flags): New.
	* config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): New.

2003-01-28  Richard Henderson  <rth@redhat.com>

	* cse.c (find_best_addr): Kill !ADDRESS_COST code.

	* config/cris/cris.c (cris_address_cost): Make static.
	(TARGET_RTX_COSTS, TARGET_ADDRESS_COST): New.
	* config/cris/cris.h (ADDRESS_COST): Remove.
	* config/cris/cris-protos.h: Update.

2003-01-23  Mike Stump  <mrs@apple.com>

	* regclass.c (init_reg_autoinc): New function.
	(regclass): Move initialization of forbidden_inc_dec_class from
	here...
	(init_regs): to here.  Avoids reinitialization for each function,
	saving compilation time.

2003-01-28  Jason Merrill  <jason@redhat.com>

	* cpplib.h (struct cpp_options): Add warn_deprecated field.
	* cppinit.c (cpp_create_reader): Turn it on by default.
	* c-opts.c (c_common_decode_option): Set it.
	* cpplib.c (do_pragma_once): Only complain about #pragma once
	if warn_deprecated is set.

2003-01-28  Dale Johannesen  <dalej@apple.com>

	* emit-rtl.c (const_double_htab_hash):  Use mode in the hash.
	* loop.c (scan_loop):  Move movables on -Os rich-register targets.
	* config/rs6000/rs6000.md (sibcall*):  Use match_operand for LR.

2003-01-28  Richard Henderson  <rth@redhat.com>

	* target.h (targetm.address_cost): New.
	* target-def.h (TARGET_ADDRESS_COST): New.
	(TARGET_RTX_COSTS): Uncomment.  Oops.
	* cse.c (address_cost): Use new target hook.
	(default_address_cost): New.
	* output.h (default_address_cost): Declare.
	* hooks.c (hook_int_rtx_0): New.
	* hooks.h (hook_int_rtx_0): Declare.
	* loop.c (combine_givs_p): Remove if 0 code.
	* system.h (ADDRESS_COST): Poison.

	* config/alpha/alpha.c, config/alpha/alpha.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/m32r/m32r.c, config/m32r/m32r.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/sparc/sparc.c,
	config/sparc/sparc.h, config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(TARGET_ADDRESS_COST): Define as hook_int_rtx_0.
	(ADDRESS_COST): Remove.

	* config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h,
	config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h,
	config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h,
	config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/i386/i386-protos.h,
	config/i386/i386.c, config/i386/i386.h, config/i960/i960-protos.h,
	config/i960/i960.c, config/i960/i960.h, config/ip2k/ip2k-protos.h,
	config/ip2k/ip2k.c, config/ip2k/ip2k.h, config/mips/mips-protos.h,
	config/mips/mips.c, config/mips/mips.h,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/ns32k/ns32k-protos.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa-protos.h,
	config/pa/pa.c, config/pa/pa.h, config/s390/s390-protos.h,
	config/s390/s390.c, config/s390/s390.h, config/vax/vax-protos.h,
	config/vax/vax.c, config/vax/vax.h
	(foo_address_cost): Make static.
	(TARGET_ADDRESS_COST): New.
	(ADDRESS_COST): Remove.

	* config/arm/arm.h, config/arm/arm.c, config/m88k/m88k.h,
	config/m88k/m88k.c, config/romp/romp.h, config/romp/romp.c,
	config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h
	(ADDRESS_COST): Move code ...
	(foo_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.

	* config/m32r/m32r.c (m32r_address_cost): Remove.
	* config/m32r/m32r-protos.h: Update.

	* config/mmix/mmix.c (mmix_address_cost): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/mn10300/mn10300.c (mn10300_address_cost_1): Rename from
	mn10300_address_cost; move unsig allocation ...
	(mn10300_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.
	* config/mn10300/mn10300-protos.h: Update.
	* config/mn10300/mn10300.h (ADDRESS_COST): Remove.

	* doc/tm.texi: Update.

2003-01-28  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (schedule_insn): Return necessary cycle advance
	after issuing the insn.
	(rank_for_schedule): Make a insn with /S the highest priority
	insn.
	(move_insn): Ignore schedule groups.  Clear SCHED_GROUP_P.
	(choose_ready): Check SCHED_GROUP_P.
	(schedule_block): Advance cycle after issuing insn if it is
	necessary.  Don't reorder insns if there is an insn with /S.
	(set_priorities): Ignore schedule groups.

	* sched-deps.c (remove_dependence, group_leader): Remove the
	functions.
	(add_dependence): Ignore schedule groups.
	(set_sched_group_p): Don't make copy of dependencies from previous
	insn of the schedule group.  Add anti-dependency to the previous
	insn of the schedule group.
	(compute_forward_dependences): Ignore schedule groups.

	* sched-ebb.c (init_ready_list): Ignore schedule groups.

	* sched-rgn.c (init_ready_list): Ditto.
	(can_schedule_ready_p): Ditto.

2003-01-28  Vladimir Makarov  <vmakarov@redhat.com>

	* config/i386/i386.md (*movsi_1): Use movdqa to move one xmm
	register to another one.

2003-01-28  Richard Henderson  <rth@redhat.com>

	* calls.c (default_must_pass_in_stack): Fix typo in !type case.

2003-01-28  Roger Sayle  <roger@eyesopen.com>

	* cse.c (cse_insn): Avoid redundant REG_EQUAL notes.

2003-01-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/sh/sh.h (CLASS_MAX_NREGS): If TARGET_SHMEDIA, and the given
	class contains a floating-point register, return the size of the
	mode in half words.

2003-01-28  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_carry_flag_operator):  New predicate.
	(fcmov_operator): Fix whitespace.
	(ix86_expand_carry_flag_compare):  Deal with floating point.
	(ix86_expand_int_movcc): Deal with fp; update insn expansion
	(ix86_expand_int_addcc): Likewise.
	(ix86_expand_strlensi_unroll_1): likewsie.
	* i386.h (PREDICATE_CODES): Add ix86_carry_flag_operator.
	* i386.md (add?i_carry_rex64): Use new predicate.
	(sub?i3_carry_rex64): Likewise.
	(x86_mov?icc_0_m1*): Likewise.

2003-01-28  Andreas Schwab  <schwab@suse.de>

	* cfgloopmanip.c (create_preheader): Initialize src to avoid
	warning.

	* expmed.c (emit_store_flag): Fix cast to avoid sign
	comparison warning.

	* combine.c (force_to_mode): Add cast to fix warning when
	STORE_FLAG_VALUE is negative.

2003-01-27  Richard Henderson  <rth@redhat.com>

	* Makefile.in (cse.o): Depend on TARGET_H.
	* cse.c (rtx_cost): Use targetm.rtx_costs.
	* system.h (CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS): Poison.
	* doc/tm.texi: Update.

	* target.h (targetm.rtx_costs): New.
	* target-def.h (TARGET_RTX_COSTS): New.
	* hooks.c (hook_bool_rtx_int_int_intp_false): New.
	* hooks.h: Update.

	* config/alpha/alpha.c (alpha_rtx_cost_data): New.
	(alpha_rtx_costs, TARGET_RTX_COSTS): New.
	* config/alpha/alpha.h (PROCESSOR_MAX): New.
	(CONST_COSTS, RTX_COSTS): Remove.

	* config/arc/arc.c, config/arc/arc.h, config/c4x/c4x.c,
	config/c4x/c4x.h, config/cris/cris.c, config/cris/cris.h,
	config/d30v/d30v.c, config/d30v/d30v.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/frv/frv.c, config/frv/frv.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386.c, config/i386/i386.h,
	config/i960/i960.c, config/i960/i960.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68k/m68k.c, config/m68k/m68k.h, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mips/mips.h, config/mn10200/mn10200.c,
	config/mn10200/mn10200.h, config/mn10300/mn10300.c,
	config/mn10300/mn10300.h, config/ns32k/ns32k.c, config/ns32k/ns32k.h,
	config/pa/pa.c, config/pa/pa.h, config/pdp11/pdp11.c,
	config/pdp11/pdp11.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h,
	config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(CONST_COSTS, RTX_COSTS): Move code ...
	(foo_rtx_costs, TARGET_RTX_COSTS): ... here.

	* config/arm/arm.c (arm_rtx_costs_1): Rename from arm_rtx_costs.
	(arm_rtx_costs, TARGET_RTX_COSTS): New.
	* config/arm/arm-protos.h: Update.
	* config/arm/arm.h (DEFAULT_RTX_COSTS): Remove.

	* config/avr/avr.h (CONST_COSTS): Move code ...
	* config/avr/avr.c (avr_rtx_costs): ... here.
	(default_rtx_costs): Make static.
	* config/avr/avr-protos.h: Update.

	* config/h8300/h8300.c (const_costs): Make static.
	(h8300_and_costs, h8300_shift_costs): Likewise.
	* config/h8300/h8300-protos.h: Update.

	* config/ip2k/ip2k.h (DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/ip2k/ip2k.c (ip2k_rtx_costs): ... here.  Rename from
	default_rtx_costs; update for signature change.
	* config/ip2k/ip2k-protos.h: Update.

	* config/m68hc11/m68hc11.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/m68hc11/m68hc11.c (m68hc11_rtx_costs): ... here.
	(TARGET_RTX_COSTS): New.
	(m68hc11_rtx_costs_1): Rename from m68hc11_rtx_costs; make static.
	* config/m68hc11/m68hc11-protos.h: Update.

	* config/m68k/m68k.c (const_int_cost): Make static.
	* config/m68k/m68k-protos.h: Update.

	* config/mcore/mcore.c (mcore_const_costs): Make static.
	(mcore_and_cost, mcore_ior_cost): Likewise.
	* config/mcore/mcore-protos.h: Update.

	* config/mmix/mmix.c (mmix_rtx_costs, TARGET_RTX_COSTS): New.
	(mmix_rtx_cost_recalculated): Remove.
	* config/mmix/mmix.h (DEFAULT_RTX_COSTS): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/sh/sh.c (shiftcosts): Make static.
	(addsubcosts, andcosts, multcosts): Likewise.
	* config/sh/sh-protos.h: Update.

	* config/sparc/sparc.c (TARGET_RTX_COSTS): New.
	(sparc_rtx_costs): Make static; update for change in signature.
	* config/sparc/sparc.h (RTX_COSTS_CASES, RTX_COSTS): Remove.
	* config/sparc/sparc-protos.h: Update.

	* config/v850/v850.c (const_costs): Make static.
	* config/v850/v850-protos.h: Update.

	* config/vax/vax.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/vax/vax.c (vax_rtx_costs_1): ... here; rename
	from vax_rtx_cost.
	(vax_rtx_costs, TARGET_RTX_COSTS): New.

2003-01-27  Richard Henderson  <rth@redhat.com>

	* config/vax/vax.h (ASM_OUTPUT_MI_THUNK): Remove.  Really.
	* config/vax/vax-protos.h: Update.  Really.

2003-01-28  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (UNITS_PER_HWFPVALUE): Renamed from...
	(UNITS_PER_FPVALUE): Defined as the width of a long double, or
	zero if no hardware floating point.
	(LONG_DUBLE_TYPE_SIZE): Set to 128 on N32 and N64.
	(MAX_FIXED_MODE_SIZE): Define to LONG_DOUBLE_TYPE_SIZE.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define.
	(BIGGEST_ALIGNMENT): Same as LONG_DOUBLE_TYPE_SIZE.
	(FUNCTION_VALUE_REGNO_P): Set for FP_RETURN+2 on N32 and N64.
	* config/mips/mips.c (mips_arg_info): Pass TFmode values in
	even FP registers on N32 and N64.
	(mips_setup_incoming_varargs): Use UNITS_PER_HWFPVALUE.
	(mips_va_start): Adjust alignment of ARG_POINTER_REGNUM.
	(mips_va_arg): Use UNITS_PER_HWFPVALUE.  Impose additional
	even-register-like alignment to 128-bit arguments.
	(save_restore_insns): Use UNITS_PER_HWFPVALUE.
	(mips_function_value): Likewise.  Return TFmode in $f0 and $f2
	on N32 or N64.
	* config/mips/_tilib.c (__negti2, __ashlti3, __lshrti3): New.
	* config/mips/t-iris6 (LIB2FUNCS_EXTRA): Add _tilib.c.
	(TPBIT): Set to tp-bit.c.
	(tp-bit.c): Create out of fp-bit.c.

2003-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-parse.in: Remove '%expect 32' directive in objc mode.

2003-01-27  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (LIB2FUNCS_ST): Remove _gcov.
	(LIBGCOV): New variable.
	(libgcc.mk): Add LIBGCOV.
	(LIBGCC_DEPS): Add libgcov.c.
	(libgcov.a): New target.
	(clean): Remove libgcov.a.
	(install-libgcc): Do libgcov too.
	(stage1-start, stage2-start, stage3-start, stage4-start): Deal
	with libgcov.a.
	* libgcc2.c (L_gcov): Move into ...
	* libgcov.c: ... here. New file.
	* mklibgcc.in: Add libgcov rules.
	* gcc.c (LINK_COMMAND_SPEC): Add -lgcov when profiling.

	* doc/invoke.texi (profile-arcs, test-coverage): Update and
	clarify.

	* profile.c (index_counts_file): Remove duplicate check for open file.

2003-01-27  Jerry Quinn  <jlquinn@optonline.net>

	* gcc/doc/invoke.texi (Optimization Options): Group together
	optional and experimental flags.  Move trapv and bounds-check
	out of this section.  Group floating point flags together.
	(Code Gen Options): Move trapv and bounds-check to here.

2003-01-27  Josef Zlomek  <zlomekj@suse.cz>

	* gcse.c (constprop_register): Check NEXT_INSN (insn) != NULL.

2003-01-27  Richard Earnshaw  <rearnsha@arm.com>

	PR optimization/9090
	* function.c (purge_addressof_1): After pushing an addressed register
	onto the stack, simplify the result.

2003-01-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/extend.texi: Fix typo.

2003-01-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/cppopts.texi: Fix typo.
	* doc/objc.texi: Likewise.
	* doc/passes.texi: Likewise.

2003-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* real.c (ibm_extended_format): Add 53 to minimum exponent.
	(encode_ibm_extended): Adjust.

2003-01-26  Gabriel Dos Reis  <gdr@soliton.integrable-solutions.net>

	* timevar.def (TV_OVERLOAD, TV_TEMPLATE_INSTANTIATION): New
	timevar_id enumerations.

2003-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c: Fix formatting.

2003-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/gccint.texi: Update the copyright.

2003-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/cpp.texi: Fix typos.
	* doc/extend.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/install.texi: Likewise.
	* doc/passes.texi: Likewise.
	* doc/rtl.texi: Likewise.
	* doc/tm.texi: Likewise.

2003-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ia64/fde-glibc.c: Fix comment typos.
	* config/ia64/hpux.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ia64/unwind-ia64.c: Likewise.

2003-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386-modes.def: Fix comment typos.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.md: Likewise.

2003-01-26  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* config/avr/avr.h, config/cris/aout.h, config/elfos.h,
	config/i386/freebsd-aout.h, config/mips/iris6.h: Undefine
	ASM_FINISH_DECLARE_OBJECT before defining it.
	* toplev.c (rest_of_decl_compilation):  Don't define
	ASM_FINISH_DECLARE_OBJECT.  Only use it if it is defined.
	(rest_of_type_compilation): Don't ATTRIBUTE_UNUSED function
	parameters for DWARF2 targets because they _are_ used.

2003-01-26  Alexandre Oliva  <aoliva@redhat.com>

	* fp-bit.h: Define macros for TFmode floating-point constants
	in IBM-extended TFmode types.
	(TMODES): Define if __LDBL_MANT_DIG__ has the newly-supported
	widths.
	* config/fp-bit.c (pack_d, unpack_d): Support IBM-extended
	TFmode type.

	* config/fp-bit.h: Define macros for TFmode floating-point
	constants in IEEE quad TFmode type.  Declare functions according
	to L_ macros.
	(TMODES): Define if __LDBL_MANT_DIG__ is 113.
	(TFtype, TItype, UTItype): Define if TMODES is defined.
	(MAX_UDI_INT, MAX_DI_INT, BITS_PER_DI): Likewise.
	(F_T_BITOFF, D_T_BITOFF): Define.
	(IMPLICIT_1, IMPLICIT_2): Cast constants to types that are
	guaranteed to be wide enough.
	* config/fp-bit.c: Check for L_ macros for tf functions.
	(__thenan_tf): New.
	(nan): Adjust.
	(pack_d, unpack_d): Support IEEE 854 quad type.
	(_fpmul_parts): Support TFmode.  Compute exponent adjustment
	from FRAC_NBITS, FRAC_BITS and NGARDS.
	(usi_to_float): Cast constants to be shifted to fractype
	instead of assuming long long is wide enough.
	(sf_to_tf, df_to_tf, __make_tp, tf_to_df, tf_to_sf): New.

2003-01-26  Andreas Jaeger  <aj@suse.de>

	* df.c: Remove prototype of unused function df_regno_rtl_debug.

2003-01-26  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (FPBIT_FUNCS): Added _sf_to_tf.
	(DBBIT_FUNCS): Added _df_to_tf.
	(TPBIT_FUNCS): New.
	(libgcc.mk): Pass TPBIT and TPBIT_FUNCS down.
	(LIBGCC_DEPS): Added TPBIT.
	* mklibgcc.in: Support TPBIT and TPBIT_FUNCS.

	* optabs.c (expand_binop) <add, sub>: Return xtarget if we haven't
	been able to move the result to target.

	* expr.c (emit_group_store): Initialize dst with CONST0_RTX
	for the appropriate mode.

	* calls.c (emit_library_call_value_1): Handle return values
	in a PARALLEL.

	* rtl.c (get_mode_alignment): Moved to...
	* stor-layout.c: ... here.

	* print-rtl.c (print_rtx): Don't print MEM details in
	GENERATOR_FILEs.

2003-01-26  Michael Hayes  <mph@paradise.net.nz>

	* df.h: Update comments, tidy formatting.
	(DF_FORWARD, DF_REVERSE, DF_UNION, DF_INTERSECTION): Rename from FORWARD,
	REVERSE, UNION, INTERSECTION.  All uses updated.
	(OLD_DF_INTERFACE): Remove.
	(struct insn_info): Remove commented out insn field.
	* df.c: Update comments, tidy formatting.
	(df_def_table_realloc): Remove.


2003-01-26  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (save_fixed_argument_area): Tidy.
	(restore_fixed_argument_area): Tidy.  Set alignment of stack_area.
	(expand_call): Comment typo fixes.  Don't init low_to_save.  Start
	call chain loop at 1 if !try_tail_call.  Formatting.
	(emit_library_call_value_1): Don't init low_to_save or high_to_save.
	Use save_fixed_argument_area and restore_fixed_argument_area.

2003-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* df.c (df_uses_record): Handle CC0.

2003-01-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (maybe_memory_address_p): New function.
	(find_reloads_address): Use it instead of memory_address_p.

2003-01-25  Kaz Kojima  <kkojima@gcc.gnu.org>

	* final.c (shorten_branches): Align the address of code label
	when computing initial lengths and addresses.

2003-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68hc11/m68hc11.md: Fix a comment typo.

2003-01-25  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (x86_output_mi_thunk): Correct test for
	TARGET_MACHO.

2003-01-25  Roger Sayle  <roger@eyesopen.com>

	* gcse.c (bypass_last_basic_block): New global variable.
	(bypass_block):  Use redirect_edge_and_branch_force to redirect
	fall-through edges.  Use bypass_last_basic_block to determine
	which blocks have valid PRE information.
	(bypass_conditional_jumps): Initialize bypass_last_basic_block.

2003-01-25  Jan Hubicka  <jh@suse.cz>

	* gcse.c (local_cprop_pass): Update reg_sets table when needed.

2003-01-25  Jan Hubicka  <jh@suse.cz>
            Eric Botcazou <ebotcazou@libertysurf.fr>

	PR opt/8492
	* gcse.c (one_cprop_pass): Delete unreachable blocks.

2003-01-25  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_rwreloc_select_rtx_section): Rename
	from ia64_aix_select_rtx_section.
	(ia64_rwreloc_select_section): Simlarly; use default*_1 function
	instead of saving and restoring flag_pic.
	(ia64_rwreloc_unique_section): Similarly.
	* config/ia64/aix.h (TARGET_ASM_SELECT_SECTION,
	TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Update.
	* config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
	TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): New.

2003-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_shift_needs_scratch_p): Update a
	comment.

2003-01-25  Richard Henderson  <rth@redhat.com>

	* config/m68k/m68k-none.h (ASM_SPEC): Adjust inter-option spacing.

2003-01-25  Kelley Cook <kelleycook@comcast.net>

	* ggc-simple.c (debug_ggc_tree): Add PTR cast.

2003-01-25  Segher Boessenkool  <segher@koffie.nl>

	* bitmap.h (BITMAP_WORD): New typedef: fundamental storage
	type for bitmaps.  Use unsigned long.
	(nBITMAP_WORD_BITS): New macro.
	(BITMAP_WORD_BITS): New macro.
	(rest of file): Use it.
	* bitmap.c: Use it.

2003-01-25  Richard Henderson  <rth@redhat.com>

	2002-02-19  Robert Lipe  <robertlipe@usa.net>
	* config/i386/t-sco5gas: (CRTSTUFF_T_CFLAGS_S): Delete -mcoff.

2003-01-25  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (purge_builtin_constant_p): Scan insn stream
	sequentially rather than by basic block.
	* function.c (purge_addressof): Simplify test with INSN_P.

2003-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_comparison, case AND): Remove a redundant test.

2003-01-25  Roger Sayle  <roger@eyesopen.com>

	* function.h (struct function): New field calls_constant_p.
	(current_function_calls_constant_p): New macro for above.
	* function.c (prepare_function_start): Initialize calls_eh_return
	and calls_constant_p.
	* builtins.c (expand_builtin_constant_p): Set calls_constant_p.
	* toplev.c (rest_of_compilation): Only call purge_builtin_constant_p
	when the current_function_calls_constant_p.
	* integrate.c (expand_inline_function): Set calls_constant_p if
	the function being inlined has calls_constant_p set.

2003-01-25  Roger Sayle  <roger@eyesopen.com>

	* cse.c (fold_rtx): Instantiate CONSTANT_P_RTX to 0 when not
	optimizing, even if flag_gcse is true.
	* toplev.c (rest_of_compilation): purge_builtin_constant_p
	only needs to be called when "optimize > 0 && flag_gcse".

2003-01-25  Roger Sayle  <roger@eyesopen.com>

	* stmt.c (emit_case_bit_tests): New routine to implement suitable
	switch statements using the equivalent of "if ((1<<x) & cst) ... ".
	(case_bit_test_cmp): New comparison function for "qsort" to order
	case_bit_tests by decreasing number of destination nodes.
	(lshift_cheap_p): New function to determine if "1 << x" is cheap.
	(expand_end_case_type): Use emit_case_bit_tests to implement
	suitable switch statments.
	(CASE_USE_BIT_TESTS): New target macro to disable the above.
	* Makefile.in (stmt.o): Add dependency on optab.h.
	* doc/tm.texi (CASE_USE_BIT_TESTS): Document new target macro.

2003-01-23  Andreas Schwab  <schwab@suse.de>

	* config/ia64/crtend.asm [HAVE_INITFINI_ARRAY]: Make
	__do_global_ctors_aux hidden global and don't put it in
	.init_array.
	* config/ia64/crtbegin.asm [HAVE_INITFINI_ARRAY]: Put it here
	instead so that it comes first.

2003-01-25  Jan Hubicka  <jh@suse.cz>

	* df.c (read_modify_subreg_p):  When osize == UNITS_PER_WORD,
	subreg is read/modify.

2003-01-25  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_movstr, ix86_expand_clrstr): Consistently
	do libcall for large blocks.
	* i386.md (comi patterns): Set type to ssecomi.
	(sse2_unpck?pd): Fix mode of vec_select.

	* cse.c: Include except.h
	(cse_set_around_loop):  Do not create new basic blocks.
	* Makefile.in (cse.o): Add dependnecy on except.h

2003-01-25  Jan Hubicka  <jh@suse.cz>

	* builtins.c (fold_trunc_transparent_mathfn): New function.
	(fold_builtin): Use it.
	* convert.c (convert_to_real): Re-enable code to convert
	math functions; add support for floor familly functions.

2003-01-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (cfgloop.o, cfgloopanal.o, cfgloopmanip.o): Add
	dependencies on coretypes.h and $(TM_H).

2003-01-25  Jan Hubicka  <jh@suse.cz>

	* builtins.c (fold_trunc_transparent_mathfn):  Undo accidental commit.

2003-01-24  Stuart Hastings  <stuart@apple.com>

	* config/i386/i386.c (x86_output_mi_thunk): Add Darwin/x86 support.

2003-01-25  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (UNSPEC_BU): New constants.
	(UNSPEC_RPTS, UNSPEC_LSH, UNSPEC_CMPHI, UNSPEC_RCPF): Likewise.
	(UNSPEC_RND, UNSPEC_RPTB_FILL, UNSPEC_LOADHF_INT): Likewise.
	(UNSPEC_STOREHF_INT, UNSPEC_RSQRF, UNSPEC_LOADQF_INT): Likewise.
	(UNSPEC_STOREQF_INT, UNSPEC_LDIV, UNSPEC_PUSH_ST):  Likewise.
	(UNSPEC_POP_ST, UNSPEC_PUSH_DP, UNSPEC_POP_DP):  Likewise.
	(UNSPEC_POPQI, UNSPEC_POPQF, UNSPEC_ANDN_ST):  Likewise.
	(UNSPEC_RPTB_INIT, UNSPEC_TOIEEE, UNSPEC_FRIEEE):  Likewise.

2003-01-24  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (reg_attrs_htab): New static variable.
	(reg_attrs_htab_hash, reg_attrs_htab_eq, get_reg_attrs): New static
	functions.
	(reg_rtx): Do not maintain regno_decl.
	(gen_rtx_REG_offset, set_reg_attrs_from_mem, set_delc_rtx,
	set_mem_attrs_from_reg): New global function.
	(init_emit): Do not initialize regno_decl.
	(init_emit_once): initialize reg_attrs_htab.
	* final.c (alter_subreg): Do not replace REG by SUBREG.
	(gen_mem_expr_from_op): Improve output.
	(output_asm_operands): Likewise.
	* function.c (assign_params): Do not set REGNO_DECL.
	* function.h (struct function): Kill regno_decl.
	(REGNO_DECL): Kill.
	* gengtype.c (adjust_field_rtx_def): Handle new field of reg.
	* print_rtl.c (print_rtx): Output REG information.
	* regclass.c (reg_scan_mark_refs): Update attrs.
	* reload1.c (alter_reg): Likewise.
	* simplify_rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_decl): Likewise.
	* rtl.def (REG): Add new field.
	* rtl.h (struct reg_attrs): New.
	(rtunion_def): At rtreg.
	(X0MEMATTR): Add checking.
	(X0REGATTR, REG_ATTRS, REG_EXPR, REG_OFFSET): New macro.
	(set_reg_attrs_from_mem, set_mem_attrs_from_reg, gen_rtx_REG_offset):
	Declare.
	* tree.h (SET_DECL_RTL): Call set_decl_rtl.

2003-01-24  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c: Remove unused include of machmode.h.
	(xtensa_emit_call, print_operand): Fix printf format strings
	to avoid compile warnings.
	(xtensa_function_prologue, xtensa_function_epilogue): Change type
	of "size" argument to HOST_WIDE_INT to fix compile warnings.
	* config/xtensa/xtensa-protos.h
	(xtensa_function_prologue, xtensa_function_epilogue): Ditto.

2003-01-24  Jan Hubicka  <jh@suse.cz>

	* builtins.c (DEF_BUILTIN): Accept 10 arguments.
	(implicit_built_in_decls): New global array.
	(mathfn_built_in): New global function.
	(fold_trunc_transparent_mathfn): New static function
	(expand_builtin_strstr, expand_bultin_strchr,
	expand_builtin_strpbrk, expand_builtin_strcpy,
	expand_builtin_strncpy, expand_bultin_strcmp,
	expand_bultin_strncat, expand_builtin_fputs): Use
	implicint_built_in_decls.
	(fold_builtin): Fold floor/trunc/round/ceil/nearbyint.
	* builtins.def: Fix comments.
	(DEF_GCC_BUILTIN, DEF_FALLBACK_BUILTIN, DEF_EXT_FALLBACK_BUILTIN,
	DEF_LIB_BUILTIN, DEF_LIB_ALWAYS_BUILTIN, DEF_EXT_LIB_BUILTIN,
	DEF_C99_BULTIN, DEF_FRONT_END_LIB_BUILTIN,
	DEF_EXT_FRONT_END_LIB_BUILTIN): Pass implicit as needed.
	(DEF_C99_C90RES_BULTIN): New.
	(*f, *l builtins): Update.
	* c-common.c (DEF_BUILTIN): Initialize implicit array.
	(c_expand_builtin_printf, c_expand_builtin_fprintf): Update.
	* convert.c (strip_float_extensions): New global function.
	* tree.h (DEF_BUILTIN): Accept 10 arguments.
	(implicit_built_in_decls, mathfn_built_in, strip_float_extension):
	Declare.
	* java/builtins.c (define_builtin): Handle implicit.
	(DEF_BUILTIN): Update.
	* tm.texi (TARGET_C99_FUNCTIONS): Document.
	* defaults.h (TARGET_C99_FUNCTIONS): Default to 0.
	* config/linux.h (TARGET_C99_FUNCTIONS): Default to 1
	when using glibc2.

2003-01-24  Bob Wilson  <bob.wilson@acm.org>

	* config.gcc (xtensa-*-elf*): Removed assignments to with_newlib,
	extra_parts, and fixincludes.  Add xtensa/t-elf tmake_file.
	(xtensa-*-linux*): Add xtensa/t-linux tmake_file.
	* config/xtensa/crti.asm: New file.
	* config/xtensa/crtn.asm: New file.
	* config/xtensa/t-elf: New file.
	* config/xtensa/t-linux: New file.
	* config/xtensa/t-xtensa: Add rules for crti.o and crtn.o.
	Move various CFLAGS settings to new t-elf file.

2003-01-24  Richard Henderson  <rth@redhat.com>

	PR optimization/4382
	* tree-inline.c (find_builtin_longjmp_call_1): New.
	(find_builtin_longjmp_call): New.
	(inlinable_function_p): Use it.

2003-01-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* config/i386/i386-protos.h (function_arg_pass_by_reference): Declare.
	* config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use it.
	* config/i386/i386.c (function_arg_pass_by_reference): New.
	(ix86_va_arg): Support arguments passed by reference.

2003-01-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopanal.c: New file.
	* cfgloopmanip.c: New file.
	* Makefile.in (cfgloopanal.o, cfgloopmanip.o): New.
	(toplev.o, loop.o, doloop.o, unroll.o, cfgloop.o, predict.o,
	cfglayout.o): Add dependency on cfgloop.h.
	(cfgloop.o): Add flags.h dependency.
	* basic-block.h (BB_IRREDUCIBLE_LOOP, BB_SUPERBLOCK): New flags.
	(VLS_EXPECT_PREHEADERS, VLS_EXPECT_SIMPLE_LATCHES): Removed.
	(struct loop, struct loops, flow_loops_find, flow_loops_update,
	flow_loops_free, flow_loops_dump, flow_loop_dump,
	flow_loop_scan, flow_loop_tree_node_add, flow_loop_tree_node_remove,
	LOOP_TREE,,LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES,
	LOOP_ALL, flow_loop_outside_edge_p, flow_loop_nested_p,
	flow_bb_inside_loop_p, get_loop_body, loop_preheader_edge,
	loop_latch_edge, add_bb_to_loop, remove_bb_from_loops,
	find_common_loop, verify_loop_structure): Declarations moved to ...
	* cfgloop.h: New file.
	* bb-reorder.c (reorder_basic_blocks): Modified.
	* cfglayout.c: Include cfgloop.h.
	(cleanup_unconditional_jumps, cfg_layout_redirect_edge,
	cfg_layout_duplicate_bb, cfg_layout_initialize): Update loop structure.
	(break_superblocks): New static function.
	(cfg_layout_finalize): Use it.
	(cfg_layout_split_block): New function.
	* cfglayout.h (struct reorder_block_def): Add copy and duplicated
	fields.
	(cfg_layout_initialize, cfg_layout_redirect_edge): Declaration
	changed.
	(cfg_layout_split_block): Declare.
	* cfgloop.c: Include cfgloop.h and flags.h.
	(flow_loop_dump, flow_loops_free, flow_loop_exit_edges_find,
	get_loop_body): Avoid signed versus unsigned comparison warnings.
	(make_forwarder_block, flow_loops_find, loop_preheader_edge,
	loop_latch_edge): Modified.
	(verify_loop_structure): Modified to use flags stored in loop structure;
	check irreducible loops.
	(cancel_loop, cancel_loop_tree): New functions.
	(estimate_probability): Use loop analysis code for predictions.
	(estimate_loops_at_level):  Avoid signed versus unsigned comparison
	warnings.
	* doloop.c: Include cfgloop.h.
	* loop.c: Include cfgloop.h.
	* predict.c: Include cfgloop.h.
	* toplev.c: Include cfgloop.h.
	* unroll.c: Include cfgloop.h.
	* tracer.c (tracer): Modified.

2003-01-24  Kazu Hirata  <kazu@cs.umass.edu>

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

2003-01-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.in (HAVE_AS_TLS): Add s390-*-* and s390x-*-* cases.
	* configure: Regenerate.

	* config/s390/s390-protos.h (tls_symbolic_operand): Add prototype.
	(tls_symbolic_reference_mentioned_p): Add prototype.
	(s390_tls_get_offset): Add prototype.
	(emit_pic_move): Remove prototype, replace by ...
	(emit_symbolic_move): .. this new prototype.

	* config/s390/s390.c (TARGET_HAVE_TLS): Conditionally define.
	(tls_model_chars): New global variable.
	(s390_encode_section_info): Encode TLS model.
	Use targetm.binds_local_p to check for local symbols.
	(s390_strip_name_encoding): New function.
	(TARGET_STRIP_NAME_ENCODING): Define.

	(get_thread_pointer): New function.
	(legitimize_tls_address): New function.
	(legitimize_address): Call it.
	(emit_pic_move): Remove, replace by ...
	(emit_symbolic_move): ... this new function.

	(larl_operand): Handle TLS operands.
	(legitimate_constant_p): Likewise.
	(s390_decompose_address): Likewise.
	(s390_cannot_force_const_mem): New function.
	(TARGET_CANNOT_FORCE_CONST_MEM): Define.

	(s390_output_symbolic_const): Handle TLS unspecs.
	(print_operand): New code 'J'.
	(machine_function): Add struct member 'some_ld_name'.
	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): New.

	(enum s390_builtin): New type.
	(code_for_builtin_64, code_for_builtin_31): New global variables.
	(s390_init_builtins, s390_expand_builtin): New functions.
	(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.

	* config/s390/s390.h (TLS_SYMBOLIC_CONST): New macro.
	(ASM_OUTPUT_LABELREF): Define.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY): Handle TLS constants.

	* config/s390/s390.md: Define TLS UNSPEC constants.
	("movdi", "movsi"): Handle TLS operands.
	("get_tp_64", "get_tp_31", "set_tp_64", "set_tp_31"): New insns.
	("*tls_load_64", "*tls_load_31"): New insns.
	("call_value_tls", "call_value_tls_exp"): New expanders.
	("brasl_tls", "bras_tls", "basr_tls_64", "basr_tls_31",
	"bas_tls_64", "bas_tls_31"): New insns.

2003-01-24  Nathan Sidwell  <nathan@codesourcery.com>

	* config/rs6000/rs6000.c (rs6000_parse_abi_options): Make sure
	spe ABI is configured, if requested.

2003-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/passes.texi: Fix typo.

2003-01-24  Andreas Schwab  <schwab@suse.de>

	* stor-layout.c (excess_unit_span): Only define if used.

2003-01-24  Jerry Quinn  <jlquinn@optonline.net>

	* gcc/doc/invoke.texi (Optimization Options): List -O levels
	for each optimization flag.

2003-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*andsi3_ashift_n_lower): New.

2003-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* doc/bugreport.texi: Use @command instead of @code for commands.
	* doc/collect2.texi: Likewise.
	* doc/headerdirs.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/standards.texi: Likewise.
	* doc/tm.texi: Likewise.
	* doc/trouble.texi: Likewise.

2003-01-24  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (use_return_insn): Do not use a single return
	instruction for interrupt handelrs which have to create a stack
	frame.
	(arm_expand_prologue): Do not pre-bias the return address of
	interrupt handlers which create a stack frame.

2003-01-24  Nick Clifton  <nickc@redhat.com>

	* Add sh2e support:

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

		* config/sh/sh.c (output_branch) [TARGET_SH2E]: Handle
		med_cbranches.  Fix logic in short_cbranches.

	2002-04-03  Alexandre Oliva  <aoliva@redhat.com>

		* config/sh/sh.md (delay for cbranch): Don't annul delay
		slots on SH2e.
		* config/sh/sh.c (sh_insn_length_adjustment): Add 2 for
		cbranch with unfilled delay slot on SH2e.
		(output_branch): Fill with a nop the delay slot of a
		branch that required a delay slot but didn't get one.

	2002-04-02  Alexandre Oliva  <aoliva@redhat.com>

		* doc/invoke.texi (SH options): Document -m2e.
		* config/sh/crt1.asm: Add __SH2E__ Next to __SH3E__.
		* config/sh/lib1funcs.asm: Likewise.
		* config/sh/sh.c: Replace all uses of TARGET_SH3E with SH2E.
		* config/sh/sh.h (CPP_SPEC): Define __SH2E__ for -m2e, and
		not __sh1__.
		(CONDITIONAL_REGISTER_USAGE): Don't disable FP regs from
		SH2E up.
		(SH3E_BIT): Renamed to...
		(SH_E_BIT): ... this.  Replace all uses.
		(TARGET_SH2E): Define from SH_E_BIT and TARGET_SH2.
		Replace all uses of TARGET_SH3E with TARGET_SH2E.
		(TARGET_SWITCHES): Added 2e.
		(OVERRIDE_OPTIONS): Set sh_cpu for SH2E.
		(processor_type): Added PROCESSOR_SH2E.
		* config/sh/sh.md: Replace all uses of TARGET_SH3E with
		TARGET_SH2E, except in sqrtsf2_i.
		(attribute cpu): Added sh2e.
		* config/sh/t-sh (MULTILIB_OPTIONS): Replace m3e with m2e.
		(MULTILIB_MATCHES): Use m2e multilib for m3e.
		* config.gcc: Add sh2e target support.

2003-01-24  Phil Edwards  <pme@gcc.gnu.org>

	Rename -W to -Wextra.
	* c-decl.c:  Update comments.
	* c-typeck.c:  Likewise.
	* flags.h:  Likewise.
	* function.c:  Likewise.
	* stmt.c:  Likewise.
	* toplev.c:  Update comments.
	(W_options):  Add 'extra'.
	(display_help):  Remove '-W'.
	(decode_W_option):  Special warn_uninitialized treatment in the case
	of -Wextra.
	* doc/invoke.texi:  Update with new entries.

2003-01-23  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (noce_process_if_block): Re-add check vs X being changed
	in no-else-block case.  Add commentary.

2003-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Revert last change.

2003-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Don't include ansidecl.h in tconfig.h.
	* gcov-io.h (PARAMS, ATTRIBUTE_UNUSED): Define if IN_LIBGCC2.
	* unwind-dw2-fde.h (last_fde): Use __attribute__, not
	ATTRIBUTE_UNUSED.

	* configure: Regenerate.

2003-01-23  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR java/6748
	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Don't destroy
	regs->nip. Fix rt_sigreturn frame layout. Add support for newer
	kernels.

2003-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpplex.c (cpp_interpret_charconst): Squelch warning with cast.

2003-01-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* genattrtab.c (write_attr_get): Mark 'insn' paramter
	as ATTRIBUTE_UNUSED.

2003-01-23  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_base_register_rtx_p): New function.
	(thumb_index_register_rtx_p): New function.
	(thumb_legitimate_address_p): New function.
	(thumb_legitimate_offset_p): New function.
	* arm.h (REG_STRICT_P): Define according to setting of REG_OK_STRICT.
	(ARM_GO_IF_LEGITIMATE_ADDRESS): Use REG_STRICT_P to avoid duplicate
	definitions.
	(THUMB_GO_IF_LEGITIMATE_ADDRESS): Use thumb_legitimate_address_p.
	(THUMB_LEGITIMATE_OFFSET): Delte.
	(THUMB_LEGITIMIZE_RELOAD_ADDRESS): Use thumb_legitimate_offset.
	* arm-protos.h (thumb_legitimate_address_p): Add prototype.
	(thumb_legitimate_offset_p): Likewise.

2003-01-23  Andreas Schwab  <schwab@suse.de>

	* unwind.h (_Unwind_GetTextRelBase): Mark parameter as unused.

2003-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/Makefile.in (FL_LIST): Revert last change.

2003-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR other/7341
	* invoke.texi (ftest-coverage): Fix broken cross-reference.
	Change @code to @command for gcov command.

	* gcc.texi: Adjust title of gcov section.
	Adjust copyright.
	* gcov.texi: Likewise.

2003-01-22  Roger Sayle  <roger@eyesopen.com>

	PR optimization/8423
	* cse.c (fold_rtx): Only eliminate a CONSTANT_P_RTX to 1 when
	its argument is constant, or 0 if !flag_gcse.
	* simplify-rtx.c (simplify_rtx): Convert CONSTANT_P_RTX to 1
	if it's argument is constant.
	* gcse.c (want_to_gcse_p): Ignore CONSTANT_P_RTX nodes.
	(hash_scan_set): Don't record CONSTANT_P_RTX expressions.
	(do_local_cprop): Don't propagate CONSTANT_P_RTX constants.
	* builtins.c (purge_builtin_constant_p): New function to force
	instantiation of any remaining CONSTANT_P_RTX nodes.
	* rtl.h (purge_builtin_constant_p): Prototype here.
	* toplev.c (rest_of_compilation): Invoke purge_builtin_constant_p
	pass after GCSE and before loop.
	(flag_gcse): No longer static.
	* flags.h (flag_gcse): Prototype here.

2003-01-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (HARD_REGNO_MODE_OK): Fix warning regression
	introduced by last change.

2003-01-22  Andreas Schwab  <schwab@suse.de>

	* ra-rewrite.c (rewrite_program2): Initialize bb to avoid warning.

2003-01-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_shift_needs_scratch_p): Don't
	request a scratch reg on H8S when the shift count is 8.

2003-01-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (preferred_la_operand_p):
	Remove second parameter.
	* config/s390/s390.c (preferred_la_operand_p): Likewise.
	* config/s390/s390.h (FRAME_REGNO_P, FRAME_REG_P): New macros.
	(HARD_REGNO_MODE_OK): Use FRAME_REGNO_P.
	* config/s390/s390.md ("*la_cc_64", "*la_cc_31", splitters): Remove.
	Add peepholes to transform ADD to LOAD ADDRESS.

2003-01-22  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_address_register_rtx_p): New function.
	(arm_legitimate_address_p): New function.
	(arm_legitimate_index_p): New function.
	(legitimize_pic_address): Use arm_legitimate_index_p.
	* arm-protos.h (arm_legtimate_address_p): Add prototype.
	* arm.h (ARM_GO_IF_LEGITIMATE_INDEX): Delete.
	(ARM_GO_IF_LEGITIMATE_ADDRESS): Call arm_legitimate_address_p.

2003-01-22  Hartmut Penner  <hpenner@de.ibm.com>

	* config/s390/s390.md (floatdfdi2): Insn has type 'itof'.
	* config/s390/2064.md (define_bypass): Correct 'Load' and
	'Load-address' bypass values.

2003-01-22  Andreas Schwab  <schwab@suse.de>

	* config/ia64/t-ia64 (insn-attrtab.o-warn): Define as -Wno-error.

2003-01-21  Zack Weinberg  <zack@codesourcery.com>

	* genautomata.c (output_internal_insn_latency_func,
	output_print_reservation_func): Short circuit when there is no
	automaton to generate code for.

2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (ssa-ccp.o): Depend on coretypes.h $(TM_H).
	(df.o): Delete duplicate dependency on coretypes.h $(TM_H).

2003-01-21  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.md: Remove warning.
	(builtin_setjmp_receiver): Likewise.
	* config/darwin.c (update_stubs): Slightly improve terrible hack
	with identifiers.  Add comment pointing out problems with it.
	(update_non_lazy_ptrs): Likewise.

2003-01-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (lookup_filename): Fix printf format warning.
	* system.h (fread_unlocked, fwrite_unlocked): Undef.

	* fixinc/Makefile.in (FL_LIST): Add $($@-warn) hook.
	(fixincl.o-warn, gnu-regex.o-warn): New.
	* fixinc/fixfixes.c (FIX_PROC_HEAD): Mark parameters unused.
	* fixinc/fixtests.c (TEST_FOR_FIX_PROC_HEAD): Likewise.
	* fixinc/fixincl.c (process): Fix printf format warning.

2003-01-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2out (output_file_names): Don't crash if called
	with empty file_table.

2003-01-21  Zack Weinberg  <zack@codesourcery.com>

	* genautomata.c (output_internal_insn_latency_func): Add
	missing break statement to generated code.

2003-01-21  Roger Sayle  <roger@eyesopen.com>

	* stmt.c (same_case_target_p): New function to determine whether
	two case labels branch to the same target.  Split out from...
	(group_case_nodes): ... here.  Use same_case_target_p instead.
	(strip_default_case_nodes): Remove explicit case nodes
	that branch to the default destination.
	(expand_end_case_type): Call strip_default_case_nodes after
	group_case_nodes, to simplify the case-list before we count it.
	Only generate table_label RTX when actually needed.  Try to share
	thiscase->exit_label and thiscase->data.case_stmt.default_label
	when a switch has no explicit default case.  Simplify test for
	constant index.

2003-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*negsf2_h8300): Use \\t instead of
	\t.
	(*negsf2_h8300hs): Likewise.
	(*addsi3_lshiftrt_16_zexthi): Likewise.
	(*iorhi3_lshiftrt_8): Likewise.

2003-01-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2out.c (fde_table_in_use): Mark GTY.
	(dwarf2out_cfi_label_num): New variable, marked GTY.
	(dwarf2out_cfi_label): Use it instead of static label_num.
	* emit-rtl.c (label_num): Mark GTY.

2003-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_plussi): Support H8/300.
	(compute_plussi_length): Likewise.
	(compute_plussi_cc): Likewise.
	* config/h8300/h8300.md (addsi_h8300): Use output_plussi to
	output assembly instructions.

2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* calls.c (fix_unsafe_tree): Prototype.

	* Makefile.in (GCC_WARN_CFLAGS): Add $(WERROR) $($@-warn)
	(gtype-desc.o-warn, c-decl.o-warn, varasm.o-warn, gcc.o-warn,
	insn-conditions.o-warn, out_object_file, gengtype-yacc.o-warn,
	c-parse.o-warn): Add -Wno-error.
	(STAGE2_FLAGS_TO_PASS): Add WERROR="@WERROR@".

	* configure.in (--enable-werror): Add new flag.
	* doc/install.texi (--enable-werror): Document.
	* configure: Regenerate.

	* objc/Make-lang.in (objc/objc-parse.o-warn): Add -Wno-error.

2003-01-21  Andreas Schwab  <schwab@suse.de>

	* genautomata.c (output_internal_insn_latency_func): Fix missing
	close paren in output.

2003-01-21  Zack Weinberg  <zack@codesourcery.com>

	* genautomata.c: Space savings in generated code:
	(output_dfa_insn_code_func): Split out the table-enlargement
	path to an out-of-line static function, dfa_insn_code_enlarge.
	(output_internal_insn_latency_func): Use a lookup table for the
	default latencies.
	(output_print_reservation_func): Use a lookup table for the
	strings.

2003-01-21  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>

	PR opt/7507
	* calls.c (fix_unsafe_tree): Split out from ...
	(expand_call): ... here.  Use it on the function address too.

2003-01-20  Richard Henderson  <rth@redhat.com>

	* expr.h (default_must_pass_in_stack): Move decl outside ifdef.

2003-01-20  Richard Henderson  <rth@redhat.com>

	PR opt/7154
	* stmt.c (expand_asm_operands): Validize memory operands.

2003-01-20  Richard Henderson  <rth@redhat.com>

	PR opt/8848
	* ifcvt.c (noce_process_if_block): Correct arguments to
	modified_between_p for no-else-block case.

2003-01-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (const_costs): Remove a warning.
	(output_plussi): Likewise.
	(compute_plussi_length): Likewise.
	(compute_plussi_cc): Likewise.

2003-01-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (addsi_h8300): Remove the last
	alternative.

2003-01-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (get_shift_alg): Remove redundant code.

2003-01-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (__NO_STRING_INLINES): Define.

2003-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* ifcvt.c (noce_emit_store_flag): Don't emit store flag if mode of x
	is not a scalar int mode.

2003-01-20  Roger Sayle  <roger@eyesopen.com>

	* cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL
	insn's notes following a substitution inside a libcall.

2003-01-20  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Check for system-provided 'uchar' type.
	* configure, config.in: Regenerate.
	* cpphash.h: Only typedef 'uchar' if the system doesn't.

2003-01-20  Richard Henderson  <rth@redhat.com>

	* expr.h (MUST_PASS_IN_STACK): Move implementation...
	* calls.c (default_must_pass_in_stack): ... here.

2003-01-20  Vladimir Makarov  <vmakarov@redhat.com>

	* genattrtab.h (INSN_ALTS_FUNC_NAME): Move it from genautomata.c.

	* genautomata.c (INSN_ALTS_FUNC_NAME): Move it into genattrtab.h.

	* genattr.c (main): Output default definition of AUTOMATON_ALTS.
	Wrap up definition of `insn_alts'.

	* genattrtab.c (main): Wrap up `insn_alts'.

2003-01-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* collect2.c (ldgetname): Check HAVE_DECL_LDGETNAME before
	prototyping.
	* configure.in: Check for <ldfcn.h> and ldgetname() prototype.

	* config.in, configure: Regenerate.

2003-01-20  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (sibcall_epilogue): Add an
	UNSPEC_PROLOGUE_USE to prevent the link register from being
	considered dead.

2003-01-20  Jan Hubicka  <jh@suse.cz>

	* i386.md (SSE cmov splitter):  Handle memory operand in operand 5.

2003-01-20  Andreas Schwab  <schwab@suse.de>

	* system.h: Don't declare strsignal if the decl test hasn't been
	run yet.

2003-01-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (notice_update_cc): Don't assume that
	recog_data.operands[0] is always associated with cc0.

2003-01-19  David Edelsohn  <edelsohn@gnu.org>

	* collect2.c (ldgetname): Expand declaration to prototype.
	* read-rtl.c (atoll): Add prototype.
	* system.h (strsignal): Also declare if no declaration found.

2003-01-19  Alexandre Oliva  <aoliva@redhat.com>

	* config.gcc (mips64*-*-linux*): Added.
	* config/mips/linux64.h, config/mips/t-linux64: New file.
	* config/mips/iris6.h (MIPS_TFMODE_FORMAT): Define.
	* config/mips/mips.c (override_options): Use it.
	* config/mips/mips.h (TARGET_SWITCHES): Added...
	(SUBTARGET_TARGET_SWITCHES): New, empty by default.
	* Makefile.in (SPECS): New.
	(STAGESTUFF, specs, mostlyclean, install-common): Use it.
	* gcc.c (process_command): Move self-spec processing past spec
	file loading.
	* doc/tm.texi (DRIVER_SELF_SPECS): Document the change.
	* doc/fragments.texi (MULTILIB_EXTRA_OPTS): Document need for
	CRTSTUFF_T_CFLAGS.
	(SPECS): Document.
	* doc/invoke.texi (-mabi-fake-default): Document.

2003-01-19  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (stack_push_word, stack_pop_word,
	z_reg, z_reg_qi): Declare static and GTY().
	(da_reg): Remove.
	(create_regs_rtx): Don't create da_reg.
	("gt-m68hc11.h"): Include for GTY roots.
	* config/m68hc11/m68hc11.h (ix_reg, iy_reg, d_reg): Declare extern
	and GTY() here.
	(m68hc11_compare_op0, m68hc11_compare_op1): Likewise.
	(m68hc11_soft_tmp_reg): Likewise.
	* config/m68hc11/m68hc11-protos.h: Remove above declarations.

2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Fix comment formatting.
	* calls.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* gcov.c: Likewise.
	* haifa-sched.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* profile.c: Likewise.
	* system.h: Likewise.

2003-01-18  Roger Sayle  <roger@eyesopen.com>

	* config/pa/pa.md (muldi3): Avoid invalid sharing of SUBREG RTXs.

2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ra-build.c (undef_to_size_word): Avoid `switch' warning.

2003-01-17  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.md (*floatsidf2_internal):  Add earlyclobbers.
	  (*floatunssidf2_internal):  Ditto.

2003-01-17  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Fix comment typos.
	* basic-block.h: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pragma.c: Likewise.
	* c-pretty-print.h: Likewise.
	* cfg.c: Likewise.
	* cfganal.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgrtl.c: Likewise.
	* convert.c: Likewise.
	* cpphash.h: Likewise.
	* cpplex.c: Likewise.
	* cpplib.h: Likewise.
	* df.h: Likewise.
	* diagnostic.c: Likewise.
	* diagnostic.h: Likewise.
	* dwarf2.h: Likewise.

2003-01-17  Stan Shebs  <shebs@apple.com>

	* config/darwin-protos.h: Forward-declare struct cpp_reader.

2003-01-17  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/alpha.c (alpha_need_linkage): Fix obvious
	mistake in last checkin.

2003-01-17  Kazu Hirata  <kazu@cs.umass.edu>

	* et-forest.c: Fix comment typos.
	* et-forest.h: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* flags.h: Likewise.
	* flow.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* genautomata.c: Likewise.
	* gengtype.c: Likewise.
	* genrecog.c: Likewise.
	* global.c: Likewise.
	* gthr-rtems.h: Likewise.

2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* i386.c (x86_function_profiler): Fix format specifier.

2003-01-17  Richard Henderson  <rth@redhat.com>

	* gengtype.c (walk_type): Allow paramN_is.

2003-01-17  Nick Clifton  <nickc@redhat.com>

	* config/i960/t-960bare (i960-c.o): Add missing newline escape.

2003-01-16  Richard Henderson  <rth@redhat.com>

	* config/alpha/linux-elf.h (LIB_SPEC): Adjust inter-option spacing.

2003-01-16  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_sr_alias_set): Mark GTY.
	(alpha_next_sequence_number): Likewise.
	(alpha_this_literal_sequence_number): Likewise.
	(alpha_this_gpdisp_sequence_number): Likewise.
	(struct alpha_funcs, alpha_funcs_num): Likewise.
	(struct alpha_links): Fix branch merge error.
	(alpha_need_linkage, alpha_use_linkage): Use GC for alpha_funcs.

2003-01-17  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h: Don't use #elif.  Reported by Kaveh
	R. Ghazi.

2003-01-16  Kazu Hirata  <kazu@cs.umass.edu>

	* ifcvt.c: Fix comment typos.
	* lcm.c: Likewise.
	* libgcc2.c: Likewise.
	* local-alloc.c: Likewise.
	* loop.c: Likewise.
	* predict.c: Likewise.
	* ra-build.c: Likewise.
	* ra.c: Likewise.
	* ra-colorize.c: Likewise.
	* ra.h: Likewise.
	* ra-rewrite.c: Likewise.
	* regmove.c: Likewise.
	* reload.h: Likewise.
	* rtlanal.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.
	* unwind-dw2-fde-glibc.c: Likewise.
	* vmsdbgout.c: Likewise.

2003-01-16  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (struct file_table): Remove.
	(FILE_TABLE_INCREMENT): Remove.
	(file_table): Make a varray; mark for GC.  Update all users.
	(file_table_last_lookup_index): Extract from struct file_table.
	(output_file_names): Fix unsigned compare warnings.
	(add_name_attribute): Remove inline marker.
	(add_comp_dir_attribute): Split out from gen_compile_unit_die.
	(lookup_filename): Don't manage size of file_table.
	(init_file_table): Allocate file_table with GC.
	(dwarf2out_init): Don't record main_input_filename here.
	(dwarf2out_finish): Do it here instead.

2003-01-16  Bruce Korb  <bkorb@gnu.org>

	* gcc/fixinc/inclhack.def(limits_ifndef): QNX needs a bypass, too.

2003-01-16  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh_initialize_trampoline): Emit rotrdi3_mextr
	instead of rotldi3_mextr.

2003-01-16  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (move_insn): Restore moving all schedule group.
	(set_priorities): Restore taking SCHED_GROUP_P into account.

	* sched-deps.c (add_dependence): Restore processing the last group
	insn.
	(remove_dependence, group_leader): Restore the functions.
	(set_sched_group_p): Restore adding dependencies from previous insn
	in the group.
	(compute_forward_dependences): Restore usage of group_leader.

	* sched-ebb.c (init_ready_list): Restore taking SCHED_GROUP_P into
	account.

	* sched-rgn.c (init_ready_list): Restore taking SCHED_GROUP_P into
	account.
	(can_schedule_ready_p): Ditto.
	(add_branch_dependences): Restore skipping over the group insns.

2003-01-16  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Fix handling
	68HC12 pre/post inc/dec side effects.

2003-01-16  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (MASK_M6812): Define.

2003-01-16  J"orn Rennecke <amylaar@onetel.net.uk>

	* sh.md (mshflo_w_x): Fix description of operation.

2003-01-16  Zack Weinberg  <zack@codesourcery.com>

	* config/rs6000/rs6000.h: Mention Altivec registers in
	commentary.  Fix typo.

2003-01-16  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (movti_string): Remove clobber.
	* config/rs6000/rs6000.c (rs6000_emit_move, TImode): Explicitly
	generate PARALLEL with clobber for TARGET_POWER.

2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ra-colorize.c (colorize_one_web): Initialize variable.
	* regmove.c (fixup_match_1): Likewise.
	* reload1.c (reload_as_needed): Likewise.
	* sdbout.c (SET_KNOWN_TYPE_TAG): Add cast.

2003-01-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.c (flow_loops_find): Fix handling of abnormal edges.

2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* dbxout.c (lastfile, cwd): Fix `unused' warning.
	* dwarf2out.c (fde_table_in_use, current_funcdef_fde,
	dw_cfi_oprnd1_desc, dw_cfi_oprnd2_desc, next_die_offset,
	is_main_source, file_table, decl_die_table_in_use,
	abbrev_die_table_in_use, line_info_table_in_use,
	separate_line_info_table_in_use, pubname_table_in_use,
	arange_table_in_use, ranges_table_in_use,
	current_function_has_inlines): Likewise.
	* flow.c (life_analysis): Likewise.
	* genemit.c (gen_insn): Likewise.
	* protoize.c (cplus_suffix): Likewise.

	* arm.c (ROUND_UP_WORD): Renamed from ROUND_UP.
	* arm.h (ROUND_UP_WORD): Likewise.

	* arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned
	warning.
	* emit-rtl.c (gen_rtx_REG, set_mem_attributes_minus_bitpos,
	init_emit_once): Likewise.
	* flow.c (mark_regs_live_at_end, calculate_global_regs_live):
	Likewise.
	* function.c (assign_stack_temp_for_type): Likewise.
	* loop.c (loop_invariant_p): Likewise.
	* recog.c (push_operand): Likewise.
	* regclass.c (init_reg_sets_1): Likewise.
	* reload.c (update_auto_inc_notes): Likewise.
	* reload1.c (reload_as_needed, emit_input_reload_insns): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* stor-layout.c (start_record_layout): Likewise.

2003-01-16  Herman A.J. ten Brugge <hermantenbrugge@home.nl>

	* config/c4x/c4x.md (epilogue): Correct last patch.

2003-01-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (find_lo_sum_using_gp): Rename from find_lo_sum;
	also check that GP is being used.
	(alpha_find_lo_sum_using_gp): New.
	(alpha_does_function_need_gp): Use get_attr_usegp.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.md (attr usegp): New.  Annotate patterns
	as needed.

2003-01-15  Roger Sayle  <roger@eyesopen.com>

	* gcse.c (one_cprop_pass): Change function arguments to take both
	cprop_jumps and bypass_jumps flags instead of just alter_jumps.
	(gcse_main): Update calls to one_cprop_pass, disabling bypassing.
	(bypass_jumps): New function to perform separate jump bypassing pass.
	* rtl.h (bypass_jumps): Add function prototype.
	* timevar.def (TV_BYPASS): New timing variable.
	* toplev.c (enum dump_file_index): Add new entry DFI_bypass.
	(dump_file): New entry for the bypass RTL dump file.
	(rest_of_compilation): Insert new jump bypassing optimization
	pass after loop.
	* doc/passes.texi: Document new pass.

2003-01-15  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* som.h (SUPPORTS_WEAK, SUPPORTS_ONE_ONLY, MAKE_DECL_ONE_ONLY,
	ASM_WEAKEN_LABEL, GTHREAD_USE_WEAK): Define.
	* pa.h (TARGET_SOM_SDEF): Define.
	* pa-hpux11.h (TARGET_SOM_SDEF): Define.

2003-01-16  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (expand_prologue): Use push/pop to
	allocate 4-bytes of locals on 68HC11.
	(expand_epilogue): Likewise.
	(m68hc11_memory_move_cost): Increase cost of HI/QI soft registers.

2003-01-15  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (ASM_SPEC): Handle -m68hcs12; Pass -mshort
	and -mshort-double to the assembler to specify the ABI.
	(LINK_SPEC): Likewise.
	(CPP_SPEC): Pass HCS12 specific define.
	(MASK_M68S12): New define.
	(TARGET_M68S12): Likewise.
	(TARGET_SWITCHES): New options -m68hcs12 and -m68S12.
	(TARGET_VERSION): Update.
	* config/m68hc11/m68hc12.h (CPP_SPEC): Pass HCS12 specific define.
	(LINK_SPEC): Update.
	(ASM_SPEC): Update.
	* config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Update.
	* doc/invoke.texi (M68hc1x Options): Document -m68hcs12.

2003-01-15  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("return"): Use emit_jump_insn to emit
	the return code.

2003-01-15  Josef Zlomek  <zlomekj@suse.cz>

	* cfganal.c (set_edge_can_fallthru_flag): Clear the EDGE_CAN_FALLTHRU
	flag before setting it.

2003-01-15  Roger Sayle  <roger@eyesopen.com>

	* c-semantics.c (genrtl_while_stmt):  Improve initial RTL generation
	when loop condition is known true, i.e.  "while (1) { ... }".
	(genrtl_for_stmt): Similarly for "for" statements.

2003-01-15  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_sqrt): Return a bool result indicating whether
	a floating point exception or trap should be raised.
	* real.h (real_sqrt): Update function prototype.
	* builtins.c (fold_builtin): Only fold non-trapping square
	roots unless we're ignoring errno and trapping math.

2003-01-15  John David Anglin  <dave.anglin@nrc.gc.ca>

	* expr.h (emit_conditional_add): Add PARAMS to declaration.
	* gengtype-lex.l (malloc, realloc): Move defines after include of
	system.h.  Remove duplicate include of system.h.

2003-01-15  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/9009
	* optabs.c (expand_unop):  When manipulating the FP sign bit
	using integer operations, account for targets with different
	integer and FP word orders.
	(expand_abs): Likewise.

2003-01-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_gen_section_name): Do not include
	file extension in section name.

2003-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (find_auto_inc): Also try to generate a PRE_MODIFY with
	constant offset.

2003-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (HAVE_PRE_MODIFY_DISP, HAVE_PRE_MODIFY_REG): Define.
	(HAVE_POST_MODIFY_DISP, HAVE_POST_MODIFY_REG): Define.
	(ARM_GO_IF_LEGITIMATE_ADDRESS): Handle pre/post-modify addresses.
	(ARM_PRINT_OPERAND_ADDRESS): Likewise.

2003-01-15  Jan Hubicka  <jh@suse.cz>

	PR f/9258
	* global.c (struct allocno): Add no_stack_reg.
	(global_conflicts): Set no_stack_reg.
	(find_reg): Use it.

	* convert.c (convert_to_real): Fold - and abs only when profitable.
	* fold-const.c (fold): Fold truncates in - and abs.

2003-01-15  Josef Zlomek  <zlomekj@suse.cz>

	Segher Boessenkool  <segher@koffie.nl>

	* predict.c (real_inv_br_prob_base): New variable.
	(propagate_freq): Use multiply by reciprocal instead of
	division.  Don't divide by 1.0 at all.
	(estimate_bb_frequencies): Similar.

2003-01-15  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (libgcc_visibility): Force disabled on IRIX 6 too.
	* configure: Rebuilt.

2003-01-15  Hartmut Penner  <hpenner@de.ibm.com>

	* config/s390/s390.c (s390_safe_attr_type): New function.
	(s390_use_dfa_pipeline_interface): New function, return true for z900.
	(s390_issue_rate): New function.
	(s390_agen_dep_p): New function.
	(addr_generation_dependency_p): Use 's390_safe_attr_type'.
	(s390_adjust_cost): Return 'cost' if new DFA is used.
	(s390_adjust_priority): Delete function.
	* config/s390/s390-protos.h: (s390_agen_dep_p): New prototype.
	* config/s390/s390.md (atype attribute): Attribute 'atype' default
	determined by 'op_type'.
	(type attribute): Added more type attributes.
	* config/s390/2064.md: New DFA description for z900 pipeline.

2003-01-15  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.c (ix86_expand_vector_move): Validize constant
	forced to memory.  Fixes PR bootstrap/9036.

	* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Define so as
	to set $gp before the call.

2003-01-14  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_expand_mov): Use correct mode
	for force_const_mem.

2003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genattr.c (main): Rearrange output to avoid prototype warning.
	* genautomata.c (transform_3): Fix ambiguous-else warning.
	* local-alloc.c (requires_inout): Add parentheses around
	assignment used as truth-value.
	* timevar.c: Move system includes above local includes.  Include
	toplev.h
	* Makefile.in (timevar.o): Depend on toplev.h.

2003-01-14  Denis Chertykov  <denisc@overta.ru>

	* config/ip2k/ip2k.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	(VALID_MACHINE_TYPE_ATTRIBUTE): Remove.

	* config/ip2k/ip2k.c (ip2k_attribute_table): New table of
	attributes.
	(TARGET_ATTRIBUTE_TABLE): New macro.
	(valid_machine_type_attribute): Remove.
	(valid_machine_decl_attribute): Remove.
	(ip2k_handle_progmem_attribute): New function.
	(ip2k_handle_fndecl_attribute): New function.

2003-01-10  Andrew Haley  <aph@redhat.com>

	* config/i386/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Rename
	registers to be in correct order.  Add rip.

2003-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*andsi3_lshiftrt_9_sb): New.
	(*iorsi3_and_lshiftrt_9_sb): Likewise.

2003-01-14  Jan Hubicka  <jh@suse.cz>

	* convert.c (strip_float_extensions):  Look for narrowest type handling
	FP constants.

	* fold-const.c (fold):  Fold (double)float1 CMP (double)float2 into
	float1 CMP float2.
	* convert.c (strip_float_extensions): Make global.
	* tree.h (strip_float_extensions): Declare.

2003-01-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* timevar.def: define TV_NAME_LOOKUP.
	* timevar.c (timevar_pop): Be verbose when aborting.

2003-01-13  Andreas Schwab  <schwab@suse.de>

	* Makefile.in ($(parsedir)/gengtype-lex.c): Don't change to
	$(parsedir), just move the temporary file at the end.
	($(parsedir)/gengtype-yacc.c): Likewise.

2003-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* aclocal.m4 (gcc_AC_PROG_GNAT): Don't try to prepend
	${ac_tool_prefix} to ADAC or CC.  Protect them from word
	splitting.
	* configure: Rebuilt.

2003-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/sparc/gmon-sol2.c (moncontrol, monstartup, _mcleanup,
	internal_mcount): Don't use PARAMS.
	(monstartup, _mcleanup, internal_mcount, moncontrol): Convert to
	ISO C style.
	(internal_mcount): Use __attribute__, not ATTRIBUTE_UNUSED.

2003-01-13  Andreas Schwab  <schwab@suse.de>

	* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Output type
	directive.

2003-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*andsi3_lshift_n_sb): New.
	(*iorsi3_and_lshiftrt_n_sb): Likewise.

2003-01-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/9264
	* c-lex.c (c_lex): Set the token value to error_mark_node for
	invalid numeric constants.

2003-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-pch.c (asm_file_startpos): Change to `long'.
	(pch_init): Use ftell, not ftello.
	(c_common_write_pch): Use ftell/fseek, not ftello/fseeko.
	Use `long' instead of `off_t'.
	(c_common_read_pch): Likewise.
	* ggc-common.c (gt_pch_save): Use long/ftell instead of
	off_t/ftello.

2003-01-12  Alan Modra  <amodra@bigpond.net.au>

	* expr.c (expand_expr <RDIV_EXPR>): Correct recursive call args.

2003-01-11  Richard Earnshaw  (rearnsha@arm.com)

	* arm-protos.h (struct cpp_reader): Add declaration.

2003-01-11  Jan Hubicka  <jh@suse.cz>

	PR target/9068
	* i386.c (output_fp_compare): Fix typo.

2003-01-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (common_mode_defined): Mark for PCH.

2003-01-10  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (parsedir): New variable.
	(docobjdir): New variable.
	(c-parse.o, c-parse.c, c-parse.y, gengtype-lex.o, gengtype-yacc.o,
	gengtype-lex.c, gengtype-yacc.c): Use parsedir.
	(info, cpp.info, gcc.info, gccint.info, gccinstall.info,
	cppinternals.info, generated-manpages, gcov.1, cpp.1, gcc.1, gfdl.7,
	gpl.7, fsf-funding.7, maintainer-clean, install-info, install-man):
	Use docobjdir.
	* objc/Make-lang.in (objc/objc-parse.c, objc/objc-parse.y,
	objc.maintainer-clean): Use parsedir.

	* varasm.c (struct constant_descriptor_rtx): Remove unused
	`label' field.

	* toplev.c (documented_lang_options): Document -Winvalid-pch.

2003-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (NO_PROFILE_COUNTERS): Set.
	(ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Kill.

2003-01-10  Richard Henderson  <rth@redhat.com>

	* combine.c (make_compound_operation): Use SCALAR_INT_MODE_P,
	not INTEGRAL_MODE_P when widening extensions.

2003-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (decl_has_samegp): True for !TREE_PUBLIC.

2003-01-10  Geoffrey Keating  <geoffk@apple.com>

	* ggc-page.c (ggc_collect): Avoid overflow computing
	min_expand.

	* Makefile.in (RANLIB_FOR_TARGET): Use RANLIB when native.
	(RANLIB_TEST_FOR_TARGET): Delete.  Don't pass down to sub-makes.
	Remove calls.
	* mklibgcc.in: Remove uses of RANLIB_TEST_FOR_TARGET.

2003-01-10  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_try_addcc): Do not call emit_conditional_add
	with weird operands.

2003-01-10  Dale Johannesen <dalej@apple.com>

	* calls.c (load_register_parameters):  Add is_sibcall, sibcall_failure
	parameters.  Call check_sibcall_argument_overlap if indicated.
	(check_sibcall_argument_overlap):  Add mark_stored_args_map
	parameter.  Don't mark parameter area as clobbered if not set.
	(expand_call):	Adjust calls to above.

2003-01-10 Kelley Cook <kelleycook@comcast.net>

	* configure.in (linker read-only and read-write section mixing):
	Squelch some assembler warnings.
	* configure: Likewise.

2003-01-10  Hartmut Penner  <hpenner@de.ibm.com>

	* doc/invoke.texi: Document -mtune, delete -mcpu
	option for S/390 and zSeries.
	* config/s390/s390.c (s390_tune_string) New variable.
	(s390_cpu_string) Delete variable.
	(override_options): Use s390_tune_string instead of
	s390_cpu_string.
	* config/s390/s390.h: (TARGET_OPTIONS) '-mtune' instead of '-mcpu'.

2003-01-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorsi3_ashift_31): New.

2003-01-10  Josef Zlomek  <zlomekj@suse.cz>

	* jump.c (next_nonnote_insn_in_loop): New function.
	(copy_loop_headers): Use next_nonnote_insn_in_loop instead of
	next_nonnote_insn.
	(duplicate_loop_exit_test). Likewise.

2003-01-09  Geoffrey Keating  <geoffk@apple.com>

	Merge from pch-branch:

	2003-01-06  Geoffrey Keating  <geoffk@apple.com>

	* ggc-page.c (ggc_pch_read): Update the statistics after a PCH
	load.

	2002-12-24  Geoffrey Keating  <geoffk@apple.com>

	* cpplib.c (count_registered_pragmas): New function.
	(save_registered_pragmas): New function.
	(_cpp_save_pragma_names): New function.
	(restore_registered_pragmas): New function.
	(_cpp_restore_pragma_names): New function.
	* cpphash.h (_cpp_save_pragma_names): Prototype.
	(_cpp_restore_pragma_names): Likewise.
	* cpppch.c (struct save_macro_item): Split from save_macro_data.
	(struct save_macro_data): New field 'saved_pragmas'.
	(save_macros): Update for changes to struct save_macro_data.
	(cpp_prepare_state): Call _cpp_save_pragma_names, update
	for changes to struct save_macro_data.
	(cpp_read_state): Call _cpp_restore_pragma_names, update
	for changes to struct save_macro_data.

	* cpppch.c (cpp_read_state): Restore the hashtable references
	in the cpp_reader.

	* tree.h (built_in_decls): Mark for PCH.

	* dbxout.c (lastfile): Don't mark for PCH.

	* ggc.h: Document PCH calls into memory managers.

	2002-12-18  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (Precompiled Headers): Document the
	directory form of PCH.
	* cppfiles.c (validate_pch): New function.
	(open_file_pch): Search suitably-named directories for PCH files.

	2002-12-14  Geoffrey Keating  <geoffk@apple.com>

	* doc/gty.texi (GTY Options): Document chain_next, chain_prev,
	reorder options.
	(Type Information): Mention that the information is also
	used to implement PCH.
	* doc/passes.texi (Passes): Improve documentation of
	language-specific files.

	2002-12-11  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (struct write_types_data): Add reorder_note_routine field.
	(struct walk_type_data): Add reorder_fn field.
	(walk_type): Process 'reorder' option.
	(write_types_process_field): Reorder parameters to gt_pch_note_object,
	call reorder_note_routine.
	(write_func_for_structure): Reorder parameters to gt_pch_note_object.
	(ggc_wtd): Update for change to struct write_types_data.
	(pch_wtd): Likewise.
	* ggc.h (gt_pch_note_object): Reorder parameters.
	(gt_handle_reorder): New definition.
	(gt_pch_note_reorder): New prototype.
	* ggc-common.c (struct ptr_data): Add reorder_fn.
	(gt_pch_note_object): Reorder parameters.
	(gt_pch_note_reorder): New.
	(gt_pch_save): Call reorder_fn.
	* stringpool.c (gt_pch_n_S): Update for change to gt_pch_note_object.

	* dbxout.c (cwd): Don't mark for PCH.

	2002-12-09  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (finish_root_table): Fix some warnings.
	(write_root): Handle TYPE_STRING.
	* ggc.h (gt_ggc_m_S): Add prototype.
	* stringpool.c (gt_ggc_m_S): New function.

	2002-11-30  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (dw2_string_counter): New.
	(AT_string_form): Use it.
	(same_dw_val_p): Update for removal of hashtable.h hash tables.

	2002-11-22  Geoffrey Keating  <geoffk@apple.com>

	* dbxout.c: Include gt-dbxout.h.
	(lastfile): Mark for PCH/GGC.
	(cwd): Likewise.
	(struct typeinfo): Likewise.
	(typevec): Likewise.
	(typevec_len): Likewise.
	(next_type_number): Likewise.
	(struct dbx_file): Likewise.
	(current_file): Likewise.
	(next_file_number): Likewise.
	(dbxout_init): Allocate typevec, struct dbx_file with GGC.
	(dbxout_start_source_file): Allocate struct dbx_file with GGC.
	(dbxout_end_source_file): Don't free struct dbx_file.
	(dbxout_type): Use GGC to allocate typevec.
	* Makefile.in (dbxout.o): Depend on gt-dbxout.h, $(GGC_H).
	(GTFILES): Add dbxout.c.
	(gt-dbxout.h): New rule.

	* Makefile.in (c-pch.o): Add debug.h as dependency.
	* c-pch.c: Include debug.h.
	(pch_init): Call start_source_file to keep nesting right.
	(c_common_read_pch): Add orig_name parameter.  Call
	start_source_file debug hook.  Call end_source_file debug hook.
	* c-common.h (c_common_read_pch): Update prototype.
	* cpplib.h (struct cpp_callbacks): Add fourth field to read_pch
	callback.
	* cppfiles.c (struct include_file): Add new field `header_name'.
	(find_or_create_entry): Default it to `name'.
	(open_file_pch): Set it to the original header file searched for.
	(stack_include_file): Don't stack an empty buffer, just handle
	PCH files immediately.  Pass header_name field to read_pch callback.

	2002-11-19  Geoffrey Keating  <geoffk@apple.com>

	* function.c (funcdef_no): Mark to be saved in a PCH.

	2002-11-15  Geoffrey Keating  <geoffk@apple.com>

	* ggc-page.c (ggc_pch_read): Remove unused 'bmap_size'.

	* cpppch.c (cpp_read_state): Correct size reallocated for 'defn'.

	2002-11-14  Geoffrey Keating  <geoffk@apple.com>

	* optabs.h (code_to_optab): Add GTY marker.

	2002-11-13  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (GTFILES): Add cpplib.h.
	* c-common.h (struct c_common_identifier): Don't skip 'node' field.
	* c-decl.c (build_compound_literal): Don't use var_labelno.
	* cpplib.h (struct cpp_hashnode): Use gengtype to mark.
	* dwarf2asm.c (dw2_force_const_mem): Don't use const_labelno.
	* varasm.c (const_labelno): Use gengtype to mark.
	(var_labelno): Likewise.
	(in_section): Likewise.
	(in_named_name): Likewise.
	(struct in_named_entry): Likewise.
	(in_named_htab): Likewise.
	(set_named_section_flags): Use GGC to allocate struct in_named_entry.
	(init_varasm_once): Use GGC to allocate in_named_htab.
	* config/darwin.c (current_pic_label_num): Mark for PCH.

	2002-11-11  Geoffrey Keating  <geoffk@apple.com>

	* ggc-simple.c (init_ggc_pch): New stub procedure.
	(ggc_pch_count_object): Likewise.
	(ggc_pch_total_size): Likewise.
	(ggc_pch_this_base): Likewise.
	(ggc_pch_alloc_object): Likewise.
	(ggc_pch_prepare_write): Likewise.
	(ggc_pch_write_object): Likewise
	(ggc_pch_finish): Likewise.
	(ggc_pch_read): Likewise.

	2002-11-08  Geoffrey Keating  <geoffk@apple.com>

	* c-pch.c (c_common_write_pch): Write the macro definitions after
	the GCed data.
	(c_common_read_pch): Call cpp_prepare_state.  Restore the macro
	definitions after the GCed data.
	* cpplib.c (save_macros): New.
	(reset_ht): New.
	(cpp_write_pch_deps): Split out of cpp_write_pch.
	(cpp_write_pch_state): Split out of cpp_write_pch.
	(cpp_write_pch): Delete.
	(struct save_macro_data): Delete.
	(cpp_prepare_state): New.
	(cpp_read_state): Erase and restore initial macro definitions.
	* cpplib.h (struct save_macro_data): Forward-declare.
	(cpp_write_pch_deps): Prototype.
	(cpp_write_pch_state): Prototype.
	(cpp_write_pch): Delete prototype.
	(cpp_prepare_state): Prototype.
	(cpp_read_state): Add fourth argument.

	2002-11-04  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (adjust_field_rtx_def): Don't use skip on valid fields.
	(write_array): Remove warning.

	* gengtype.c (contains_scalar_p): New.
	(finish_root_table): Add the table to all languages, even if it's
	empty.
	(write_roots): Output gt_pch_scalar_rtab.
	* ggc-common.c (gt_pch_save): Write out scalars.
	(gt_pch_restore): Read scalars back.

	* ggc-page.c (OBJECTS_IN_PAGE): New macro.
	(struct page_entry): Delete pch_page field.
	(ggc_recalculate_in_use_p): Use OBJECTS_IN_PAGE.
	(clear_marks): Likewise.
	(sweep_pages): Likewise.
	(poison_pages): Likewise.
	(ggc_print_statistics): Likewise.
	(ggc_pch_read): Don't free objects read from a PCH.
	Properly set up in_use_p and page_tails.

	2002-10-25  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (struct write_types_data): New.
	(struct walk_type_data): Make `cookie' const; add extra
	prev_val item; add `orig_s' field.
	(walk_type): Update prev_val[3].
	(write_types_process_field): New.
	(write_func_for_structure): Take write_types_data structure.
	(write_types): New.
	(ggc_wtd): New.
	(pch_wtd): New.
	(write_types_local_process_field): New.
	(gc_mark_process_field): Delete.
	(write_local_func_for_structure): New.
	(gc_mark_func_name): Delete.
	(write_gc_types): Delete.
	(write_local): New.
	(finish_root_table): Don't include 'ggc_' in PFX.
	(write_root): Rename from write_root.  Fill pchw field of structures.
	(write_array): New.
	(write_roots): Rename from write_gc_roots.  Split out to write_array.
	Update to changes to other routines.  Write gt_pch_cache_rtab table.
	(main): Write PCH walking routines.
	* ggc-common.c: Include toplev.h, sys/mman.h.
	(ggc_mark_roots): For cache hashtables, also mark the hash table
	and the array of entries.
	(saving_htab): New.
	(struct ptr_data): New.
	(POINTER_HASH): New.
	(gt_pch_note_object): New.
	(saving_htab_hash): New.
	(saving_htab_eq): New.
	(struct traversal_state): New.
	(call_count): New.
	(call_alloc): New.
	(compare_ptr_data): New.
	(relocate_ptrs): New.
	(write_pch_globals): New.
	(struct mmap_info): New.
	(gt_pch_save): New.
	(gt_pch_restore): New.
	* ggc-page.c (ROUND_UP_VALUE): New.
	(ROUND_UP): New.
	(struct page_entry): Add field `pch_page'.
	(init_ggc): Use ROUND_UP.
	(struct ggc_pch_data): Declare.
	(init_ggc_pch): New.
	(ggc_pch_count_object): New.
	(ggc_pch_total_size): New.
	(ggc_pch_this_base): New.
	(ggc_pch_alloc_object): New.
	(ggc_pch_prepare_write): New.
	(ggc_pch_write_object): New.
	(ggc_pch_finish): New.
	(ggc_pch_read): New.
	* ggc.h (gt_pointer_operator): New.
	(gt_note_pointers): New.
	(gt_pch_note_object): New prototype.
	(gt_pointer_walker): New.
	(struct ggc_root_tab): Use gt_pointer_walker, add `pchw' field.
	(LAST_GGC_ROOT_TAB): Update.
	(gt_pch_cache_rtab): Declare.
	(gt_pch_scalar_rtab): Declare.
	(struct ggc_cache_tab): Use gt_pointer_walker, add `pchw' field.
	(LAST_GGC_CACHE_TAB): Update.
	(gt_pch_save_stringpool): Declare.
	(gt_pch_restore_stringpool): Declare.
	(gt_pch_p_S): Declare.
	(gt_pch_n_S): Declare.
	(struct ggc_pch_data): Forward-declare.
	(init_ggc_pch): Declare.
	(ggc_pch_count_object): Declare.
	(ggc_pch_total_size): Declare.
	(ggc_pch_this_base): Declare.
	(ggc_pch_alloc_object): Declare.
	(ggc_pch_prepare_write): Declare.
	(ggc_pch_write_object): Declare.
	(ggc_pch_finish): Declare.
	(ggc_pch_read): Declare.
	(gt_pch_save): Declare.
	(gt_pch_restore): Declare.
	* fold-const.c (size_int_type_wide): Allocate size_htab using GGC.
	* emit-rtl.c (init_emit_once): Allocate const_int_htab,
	const_double_htab, mem_attrs_htab using GGC.
	* c-pch.c: Include ggc.h.
	(pch_init): Allow reading PCH file back.
	(c_common_write_pch): Call gt_pch_save.
	(c_common_read_pch): Call gt_pch_restore.
	* c-parse.in (init_reswords): Delete now-untrue comment.
	Allocate ridpointers using GGC.
	* c-objc-common.c (c_objc_common_finish_file): Write PCH before
	calling expand_deferred_fns.
	* c-common.h (ridpointers): Mark for GTY machinery.
	* Makefile.in (stringpool.o): Update dependencies.
	(c-pch.o): Update dependencies.
	(ggc-common.o): Update dependencies.
	* stringpool.c: Include gt-stringpool.h.
	(gt_pch_p_S): New.
	(gt_pch_n_S): New.
	(struct string_pool_data): New.
	(spd): New.
	(gt_pch_save_stringpool): New.
	(gt_pch_restore_stringpool): New.
	* tree.c (init_ttree): Make type_hash_table allocated using GC.

	2002-10-04  Geoffrey Keating  <geoffk@apple.com>

	* gengtype.c (adjust_field_rtx_def): Don't pass size_t to printf.
	(output_mangled_typename): Don't pass size_t to printf.

	* tree.h (union tree_type_symtab): Add tag to `address' field.
	(union tree_decl_u2): Add tag to 'i' field.
	* varasm.c (union rtx_const_un): Add tags to all fields.
	* gengtype.c (struct walk_type_data): New.
	(output_escaped_param): Take struct walk_type_data parameter.
	(write_gc_structure_fields): Delete.
	(walk_type): New.
	(write_gc_marker_routine_for_structure): Delete.
	(write_func_for_structure): New.
	(gc_mark_process_field): New.
	(gc_mark_func_name): New.
	(gc_counter): Delete.
	(write_gc_types): Use write_func_for_structure.
	(write_gc_roots): Use walk_type.

	2002-10-02  Geoffrey Keating  <geoffk@apple.com>

	* ggc-common.c (ggc_mark_roots): Delete 'x'.
	(ggc_splay_dont_free): Fix warning about unused 'x'.
	(ggc_print_common_statistics): Remove warnings.

	2002-10-01  Mike Stump  <mrs@apple.com>

	* ggc-common.c (ggc_splay_alloc): Actually return the allocated area.
	* gengtype.c (write_gc_structure_fields): Handle param[digit]_is.

	2002-09-01  Geoffrey Keating  <geoffk@redhat.com>
	    Catherine Moore  <clm@redhat.com>

	* Makefile (c-pch.o): Update dependencies.
	(LIBCPP_OBJS): Add cpppch.o.
	(cpppch.o): New.
	* c-common.c (c_common_init): Don't call pch_init here.
	* c-common.h (c_common_read_pch): Update prototype.
	* c-lex.c (c_common_parse_file): Call pch_init here.
	* c-opts.c (COMMAND_LINE_OPTIONS): Add -Winvalid-pch, -fpch-deps.
	(c_common_decode_option): Handle them.
	* c-pch.c: Include c-pragma.h.
	(save_asm_offset): Delete.
	(pch_init): Move contents of save_asm_offset into here, call
	cpp_save_state.
	(c_common_write_pch): Call cpp_write_pch.
	(c_common_valid_pch): Warn only when -Winvalid-pch.  Call
	cpp_valid_state.
	(c_common_read_pch): Add NAME parameter.  Call cpp_read_state.
	* cppfiles.c (stack_include_file): Update for change to
	parameters of cb.read_pch.
	* cpphash.h (struct cpp_reader): Add `savedstate' field.
	* cpplib.h (struct cpp_options): Add `warn_invalid_pch' and
	`restore_pch_deps' fields.
	(struct cpp_callbacks): Add NAME parameter to `read_pch'.
	(cpp_save_state): Prototype.
	(cpp_write_pch): Prototype.
	(cpp_valid_state): Prototype.
	(cpp_read_state): Prototype.
	* cpppch.c: New file.
	* flags.h (version_flag): Remove prototype.
	* mkdeps.c (deps_save): New.
	(deps_restore): New.
	* mkdeps.h (deps_save): Prototype.
	(deps_restore): Prototype.
	* toplev.c (late_init_hook): Delete.
	(version_flag): Make static again.
	(compile_file): Don't call late_init_hook.
	* toplev.h (late_init_hook): Delete.
	* doc/cppopts.texi: Document -fpch-deps.
	* doc/invoke.texi (Warning Options): Document -Winvalid-pch.

	2002-08-27  Geoffrey Keating  <geoffk@redhat.com>

	* c-pch.c (c_common_write_pch): Rename from c_write_pch, change
	callers.
	(c_common_valid_pch): Rename from c_valid_pch, change callers.
	(c_common_read_pch): Rename from c_read_pch, change callers.

	* c-opts.c (COMMAND_LINE_OPTIONS): Allow -output-pch= to have
	a space between it and its argument.

	2002-08-24  Geoffrey Keating  <geoffk@redhat.com>

	* c-pch.c: New file.
	* toplev.h (late_init_hook): Declare.
	* toplev.c (late_init_hook): Define.
	(version_flag): Make globally visible.
	(compile_file): Call late_init_hook.
	(init_asm_output): Make output file seekable.
	* gcc.c (default_compilers): Update c-header rule.
	* flags.h (version_flag): Declare.
	* cpplib.h (struct cpp_callbacks): Add 'valid_pch' and 'read_pch'
	fields.
	* cppfiles.c (struct include_file): Add 'pch' field.
	(INCLUDE_PCH_P): New.
	(open_file_pch): New.
	(stack_include_file): Handle PCH files specially.
	(find_include_file): Call open_file_pch instead of open_file.
	(_cpp_read_file): Explain why open_file is used instead of
	open_file_pch.
	* c-opts.c (c_common_decode_option): Correct OPT__output_pch case.
	* c-objc-common.c (c_objc_common_finish_file): Call c_write_pch.
	* c-lex.c (init_c_lex): Set valid_pch and read_pch fields
	in cpplib callbacks.
	* c-common.c (pch_file): Correct comment.
	(allow_pch): Define.
	(c_common_init): Call pch_init.
	* c-common.h (allow_pch): Declare.
	(pch_init): Declare.
	(c_valid_pch): Declare.
	(c_read_pch): Declare.
	(c_write_pch): Declare.
	* Makefile.in (c-pch.o): New.
	(C_AND_OBJC_OBJS): Add c-pch.o.
	* doc/invoke.texi (Precompiled Headers): Add index entries,
	complete truncated paragraph.

	2002-08-17  Geoffrey Keating  <geoffk@redhat.com>

	* c-common.c: (pch_file): Define.
	* c-common.h (pch_file): Declare.
	* c-opts.c (COMMAND_LINE_OPTIONS): Add --output-pch=.
	(missing_arg): Require --output-pch= to have an argument.
	(c_common_decode_option): Handle --output-pch=.
	* gcc.c: Document new %V.
	(default_compilers): Handle compiling C header files.
	(do_spec_1): Implement %V.
	(main): Handle "gcc foo.h" without trying to run linker.
	* doc/invoke.texi (Invoking GCC): Add new menu item for PCH.
	(Overall Options): Document what the driver does with header files,
	document new -x option possibilities.
	(Invoking G++): More documentation for PCH.
	(Precompiled Headers): New.

	2002-08-09  Geoffrey Keating  <geoffk@redhat.com>

	* ggc.h: Don't include varray.h.  Rearrange functions to be more
	organized.
	(ggc_add_root): Delete.
	(ggc_mark_rtx): Delete.
	(ggc_mark_tree): Delete.
	(struct ggc_statistics): Remove contents.
	* ggc-common.c: Remove unneeded includes.
	(struct ggc_root): Delete.
	(roots): Delete.
	(ggc_add_root): Delete.
	(ggc_mark_roots): Don't mark `roots'.  Call ggc_mark_stringpool.
	(ggc_print_common_statistics): Remove most of the contents.
	* Makefile.in (GGC_H): No longer uses varray.h.
	(ggc-common.o): Update dependencies.
	(c-parse.o): Add varray.h to dependencies.
	(c-common.o): Add varray.h.
	* stringpool.c (mark_ident): Use mangled name for tree marker routine.
	(mark_ident_hash): Rename to ggc_mark_stringpool.
	(init_stringpool): Don't use ggc_add_root.
	* c-parse.in: Include varray.h.
	* c-common.c: Include varray.h.
	* objc/Make-lang.in (objc-act.o): Add varray.h.
	* objc/objc-act.c: Include varray.h.

	2002-07-25  Geoffrey Keating  <geoffk@redhat.com>

	* dwarf2out.c (dw_cfi_oprnd2_desc): Fix ISO-only function definition.
	(dw_cfi_oprnd1_desc): Likewise.

	2002-07-17  Geoffrey Keating  <geoffk@redhat.com>

	* config/alpha/alpha.c (struct alpha_links): Use gengtype to mark;
	move out of ifdef.
	(alpha_links): Use gengtype to mark; move out of ifdef.
	(mark_alpha_links_node): Delete.
	(mark_alpha_links): Delete.
	(alpha_need_linkage): Use GGC to allocate splay tree, struct
	alpha_links, strings.  Don't use ggc_add_root.
	* ggc-common.c (ggc_splay_alloc): New.
	(ggc_splay_dont_free): New.
	* ggc.h (ggc_mark_rtx): Update for changed name mangling.
	(ggc_mark_tree): Likewise.
	(splay_tree_new_ggc): New.
	(ggc_splay_alloc): Declare.
	(ggc_splay_dont_free): Declare.
	* dwarf2asm.c: Include gt-dwarf2asm.h.
	(mark_indirect_pool_entry): Delete.
	(mark_indirect_pool): Delete.
	(indirect_pool): Use gengtype to mark.
	(dw2_force_const_mem): Don't use ggc_add_root.
	* Makefile.in (dwarf2asm.o): Depend on gt-dwarf2asm.h.
	(GTFILES): Add SPLAY_TREE_H, dwarf2asm.c.
	(gt-dwarf2asm.h): Depend on s-gtype.

	2002-07-08  Geoffrey Keating  <geoffk@redhat.com>

	* tree.h (union tree_type_symtab): Mark `die' field.
	* Makefile.in (dwarf2out.o): Update dependencies.
	* dwarf2out.c: Use GGC to allocate all structures.  Convert to htab_t
	hash tables.
	(dw_cfi_oprnd1_desc): New function.
	(dw_cfi_oprnd2_desc): New function.
	(indirect_string_alloc): Delete.
	(debug_str_do_hash): New function.
	(debug_str_eq): New function.
	(mark_limbo_die_list): Delete.
	(dwarf2out_init): Don't call ggc_add_root.

2003-01-09  Vladimir Makarov  <vmakarov@redhat.com>

	The following changes are merged from itanium-sched-branch:

	2003-01-08  David Edelsohn  <edelsohn@gnu.org>

	* doc/md.texi: Clarify assignment of units to automata description.

	2003-01-08  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (unit_decl): Remove members
	`the_same_automaton_unit' and
	`the_same_automaton_message_reported_p'.
	(process_unit_to_form_the_same_automaton_unit_lists,
	form_the_same_automaton_unit_lists_from_regexp,
	form_the_same_automaton_unit_lists, the_same_automaton_lists):
	Remove them.
	(annotation_message_reported_p): New global variable.
	(check_unit_distribution_in_reserv,
	check_regexp_units_distribution): New functions.
	(check_unit_distributions_to_automata): Rewrite it.

	2003-01-04  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (form_the_same_automaton_unit_lists_from_regexp):
	Use continue instead of break if cycle is too big.

	2002-12-20  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (check_unit_distributions_to_automata): Output at
	most one message for a unit.
	(process_unit_to_form_the_same_automaton_unit_lists): Check
	automaton of units instead of units themself.

	* doc/md.texi: Describe the constraint about assigning unit to
	automata.

	2002-12-20  Jan Hubicka  <jH@suse.cz>
		    Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (unit_decl): Add new members `min_occ_cycle_num'
	and `in_set_p'.
	(gen_cpu_unit): Initialize the new members.
	(process_regexp_cycles): Calculate minimal finish cycle too.  Set
	up `min_occ_cycle_num'.
	(evaluate_max_reserv_cycles): Change the function call.
	(CLEAR_BIT): New macro.
	(states_union, state_shift): Use the mask.
	(initiate_excl_sets, form_reserv_sets_list): Set up `in_set_p'.
	(form_reservs_matter): New function.
	(make_automaton): Call the function and use the mask.
	(estimate_one_automaton_bound): Take `min_occ_cycle_num' into
	account.

	2002-12-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/itanium2.md (lfetch): Change the insn reservation.

	2002-12-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (bundling): Try to insert 2 nops for M insn
	for Itanium.

	2002-12-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (ia64_override_options): Make itanium2 as
	default cpu.

	2002-12-17  Vladimir Makarov  <vmakarov@redhat.com>
		2002-10-31  Dale Johannesen <dalej@apple.com>

	* haifa-sched.c (find_set_reg_weight): New function.
	(find_insn_reg_weight): Use the new function.
	(schedule_block): Do sorting ready queue always
	after insn issue.

	2002-11-27  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (bundling): Use MFI template instead of MLX.

	2002-11-19  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (choice_entry): New structure.
	(choice_stack, cycle_issued_insns): New variables.
	(max_issue): Rewrite it.
	(choose_ready): Set up ready_try for unknown insns too.
	(schedule_block): Allocate and free choice_stack.  Set up
	and modify cycle_issued_insns.

	* config/ia64/ia64.c (issue_nops_and_insn): Combine insn issue
	with and without filling the bundle.
	(bundling): Combine calls of issue_nops_and_insn.

	2002-10-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/itanium1.md: New file.

	* config/ia64/itanium2.md: New file.

	* config/ia64/ia64.md: Move DFA descriptions into the new files.
	Remove the old pipeline description.

	* config/ia64/ia64.c (ia64_override_options): Add aliases of
	itanium processor names.

	2002-10-16  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (bundling): Print states for Itanium2 too.
	(ia64_reorg):  Set up queried unit codes for Itanium2 too.

	* config/ia64/ia64.md: Add descriptions for Itanium2.

	2002-10-08  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.h (processor_type): New enumeration.
	(ia64_tune, ia64_tune_string): New external declarations.
	(TARGET_OPTIONS): Add option `tune='.

	* config/ia64/ia64.c (ia64_tune, ia64_tune_string): New global
	variables.
	(ia64_override_options): Set up `ia64_tune'.
	(ia64_sched_reorder2): Set up `clocks' only for Itanium.
	(ia64_dfa_new_cycle): Set up `add_cycles' only for Itanium.
	(bundling): Add nops for MM-insns only for Itanium.
	(ia64_reorg): Allocate and free `clocks' and `add_cycles' only for
	Itanium.

	* config/ia64/ia64.md (cpu): New attribute.
	(DFA description): Enable it only for Itanium.

	2002-10-08  Vladimir Makarov  <vmakarov@redhat.com>
		    Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (MASK_TUNE_STOP_BITS): Rename it to
	MASK_EARLY_STOP_BITS.
	(TARGET_TUNE_STOP_BITS): Rename it to TARGET_EARLY_STOP_BITS.
	(TARGET_SWITCHES): Rename option `tune-stop-bits' to
	`early-stop-bits'.

	* config/ia64/ia64.c (ia64_dfa_new_cycle,
	final_emit_insn_group_barriers): Use TARGET_EARLY_STOP_BITS
	instead of TARGET_TUNE_STOP_BITS.

	* doc/invoke.texi: Rename option `-mtune-stop-bits' to
	`-mearly-stop-bits'.

	* config/ia64/ia64.c (automata_option "v"): Comment it.

	2002-10-07  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.h (MASK_TUNE_STOP_BITS, TARGET_TUNE_STOP_BITS):
	New macros.
	(TARGET_SWITCHES): Add entries for the new option.

	* config/ia64/ia64.c (dfa_stop_insn, last_scheduled_insn, rtx
	dfa_pre_cycle_insn, ia64_nop): Don't make them as roots for GC.
	(stops_p, stop_before_p, clocks_length, clocks, add_cycles): New
	global variables.
	(ia64_sched_reorder2): Set up `clocks'.
	(ia64_variable_issue): Set up `stops_p' and reset `stop_before_p'.
	(ia64_dfa_new_cycle): Set up add_cycle.  Permit sorting ready
	queue when TARGET_TUNE_STOP_BITS.
	(bundling): Insert additional nops for MM-insns.
	(final_emit_insn_group_barriers): Add insertion of stop bits
	according `stops_p'.
	(ia64_reorg): Initiate the new varibales.

	* doc/invoke.texi: Add description of option `-mtune-stop-bits'.

	2002-10-02  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (schedule_block): Modify INSN_TICK of depended
	insns at the end of block insn scheduling.

	2002-09-30  Vladimir Makarov  <vmakarov@redhat.com>

	* sched-deps.c (remove_dependence, group_leader): Remove it.
	(add_dependence): Add dependence to group leader to.
	(set_sched_group_p): Add dependence to the first insn of the
	schedule group too.
	(sched_analyze_insn): Make dependence to jump as anti-dependence.
	Change true dependence by anti-dependence when
	`reg_pending_barrier'.

	* sched-rgn.c (init_ready_list, can_schedule_ready_p,
	add_branch_dependences): Ignore schedule groups.

	* sched-ebb.c (init_ready_list): Ditto.

	* (move_insn, set_priorities): Ditto.

	* config/ia64/ia64.c (ia64_sched_init): Check that schedule group
	flag is clear after reload.
	(adjust_cost): Change cost only for output dependencies.

	* config/ia64/ia64.md: Add more insns into bypass for MM-insns.

	2002-09-26  Vladimir Makarov  <vmakarov@redhat.com>

	* Makefile.in (sched-ebb.o): Add `$(TARGET_H)' to the entry.

	* target.h (gcc_target): Add member
	`dependencies_evaluation_hook'.

	* target-def.h (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): New
	macro.
	(TARGET_SCHED): Add initiatialization of the new member.

	* sched-ebb.c: Include `target.h'.
	(schedule_ebb): Call `dependencies_evaluation_hook'.

	* sched-rgn.c (schedule_region): Call
	`dependencies_evaluation_hook'.

	* config/ia64/ia64.c (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK):
	New macro.
	(ia64_dependencies_evaluation_hook): New function.

	* doc/tm.texi (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK):
	Describe the new hook.

	2002-09-25  Vladimir Makarov  <vmakarov@redhat.com>

	* target.h (gcc_target): Add members
	`first_cycle_multipass_dfa_lookahead_guard' and `dfa_new_cycle'.

	* target-def.h (TARGET_SCHED_DFA_NEW_CYCLE,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): New
	macros.
	(TARGET_SCHED): Add initiatialization of the new members.

	* haifa-sched.c (schedule_insn): Update last_clock_var for the 1st
	insn scheduling too.
	(choose_ready): Use `first_cycle_multipass_dfa_lookahead_guard' to
	initialize `ready_try'.
	(schedule_block): Use `dfa_new_cycle'.  Sort `ready' only unless
	`dfa_new_cycle' says not to do it.

	* config/ia64/ia64.md: Add DFA Itanium 1 description for insn
	bundling.

	* config/ia64/ia64.h (CPU_UNITS_QUERY): New macro.

	* config/ia64/ia64.c: Include `hashtab.h'.
	(ia64_first_cycle_multipass_dfa_lookahead_guard,
	ia64_dfa_new_cycle, final_emit_insn_group_barriers,
	ia64_dfa_sched_reorder, get_free_bundle_state, free_bundle_state,
	initiate_bundle_states, finish_bundle_states, bundle_state_hash,
	bundle_state_eq_p, insert_bundle_state,
	initiate_bundle_state_table, finish_bundle_state_table,
	try_issue_nops, try_issue_insn, issue_nops_and_insn, get_max_pos,
	get_template, get_next_important_insn, bundling): New functions.
	(ia64_internal_sched_reorder): Remove it.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD,
	TARGET_SCHED_DFA_NEW_CYCLE): New macros.
	(ia64_safe_itanium_requires_unit0): Remove it.
	(group_barrier_needed_p): Place group barrier right before a real
	insn.
	(bundle, ia64_packet, NR_PACKETS, type_names, packets, packets):
	Remove them.
	(bundle_name): New variable.
	(_0mii_, _0mmi_, _0mfi_, _0mmf_, _0bbb_, _0mbb_, _0mib_, _0mmb_,
	_0mfb_, _0mlx_, _1mii_, _1mmi_, _1mfi_, _1mmf_, _1bbb_, _1mbb_,
	_1mib_, _1mmb_, _1mfb_, _1mlx_, pos_1, pos_2, pos_3, pos_4, pos_5,
	pos_6, dfa_stop_insn, last_scheduled_insn, dfa_state_size,
	temp_dfa_state, prev_cycle_state): New global variables.
	(insn_matches_slot, maybe_rotate, finish_last_head,
	rotate_one_bundle, rotate_one_bundles, nop_cycles_until,
	cycle_end_fill_slots, packet_matches_p, get_split, find_best_insn,
	find_best_packet, itanium_reorder, dump_current_packet,
	schedule_stop, gen_nop_type, ia64_emit_nops): Remove them.
	(sched_data, sched_ready, sched_types): Remove them.
	(ia64_sched_init): Initiate only `last_scheduled_insn' and call
	`init_insn_group_barriers'.
	(ia64_sched_reorder, ia64_sched_reorder2): Call
	ia64_dfa_sched_reorder.
	(ia64_variable_issue): Rewrite it.
	(bundle_state): New structure.
	(index_to_bundle_states, bundle_states_num,
	allocated_bundle_states_chain, free_bundle_state_chain): New
	global variables.
	(ia64_sched_finish): Add stop bits and call `bundling' after the
	2nd insn scheduling.
	(ia64_use_dfa_pipeline_interface): Return zero always.
	(ia64_first_cycle_multipass_dfa_lookahead): Return 6 for the 2nd
	insn scheduling.
	(ia64_init_dfa_pre_cycle_insn): Initialize `dfa_state_size',
	`temp_dfa_state', `prev_cycle_state', and `dfa_stop_insn'.
	(ia64_reorg): Add bundling insns.

	* doc/tm.texi
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD,
	TARGET_SCHED_DFA_NEW_CYCLE): Describe the new hooks.

	2002-09-23  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.md: Add Itanium1 DFA description.
	(itanium_class): Add `nop' and `pre_cycle'.  Add
	define_function_unit for `nop'.
	(nop): Change attribute `itanium_class'.
	(pre_cycle): New define_insn.

	* config/ia64/ia64-protos.h (bundling_p): New external variable.
	(ia64_st_address_bypass_p, ia64_ld_address_bypass_p,
	ia64_produce_address_p): New function prototypes.

	* config/ia64/ia64.c (bundling_p): New global variable.
	(ia64_use_dfa_pipeline_interface,
	ia64_first_cycle_multipass_dfa_lookahead,
	ia64_init_dfa_pre_cycle_insn, ia64_dfa_pre_cycle_insn): New
	functions.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_DFA_PRE_CYCLE_INSN): New macros.
	(ia64_sched_init, ia64_sched_reorder, ia64_sched_reorder2,
	ia64_variable_issue, ia64_sched_finish): Do nothing before reload.
	(dfa_pre_cycle_insn): New variable.

	2002-09-20  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def (FINAL_PRESENCE_SET, FINAL_ABSENCE_SET): New
	constructions.

	* genattrtab.h (gen_final_presence_set, gen_final_absence_set):
	New function prototypes.

	* genattrtab.c (main): Process the new constructions.

	* genautomata.c (gen_presence_absence_set,
	process_presence_absence_names, process_presence_absence_patterns,
	add_presence_absence, check_absence_pattern_sets): Add parameter
	`final_p'.
	(unit_decl): Add new members `final_presence_list' and
	`final_absence_list'.
	(unit_pattern_rel_decl): Add new member `final_p'.
	(gen_final_presence_set, gen_final_absence_set): New functions.
	(process_decls): Use member `final_p'.
	(temp_reserv): New global variable.
	(reserv_sets_are_intersected): Add processing `final_presence_set'
	and `final_absence_set'.
	(initiate_states): Allocate `temp_reserv'.
	(unit_final_presence_set_table, unit_final_absence_set_table): New
	gloabal variables.
	(initiate_presence_absence_pattern_sets): Initiate them.
	(NDFA_to_DFA): Fix typo.
	(output_description): Output `final_presence_set' and
	`final_absence_set'.

	* doc/md.texi (final_presence_set, final_absence_set): Describe
	them.

	2002-09-20  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (transform_3): Process a missing case (nothing on
	unit place).

	2002-09-20  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def (DEFINE_QUERY_CPU_UNIT, AUTOMATA_OPTION): Change
	comments about queried units and the minimization.

	* doc/md.texi: Ditto.

	* genautomata.c (create_composed_state): Return nonzero if the new
	state has been created.
	(first_cycle_unit_presence): New function.
	(state_is_differed): Add new parameter.  Use the new function.
	Take queried units into account.
	(partition_equiv_class): Pass additional parameter to
	`state_is_differed'.
	(merge_states): Process composed states too.
	(build_automaton, create_automata, output_min_issue_delay_table,
	output_tables, output_statistics): Output more information.
	(output_reserved_units_table): Use function
	`first_cycle_unit_presence'.
	(output_tables): Output table of queried units even if the
	minimization is switched on.
	(write_automata): Output code for querying units even if the
	minimization is switched on.

	2002-09-19  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def (PRESENCE_SET, ABSENCE_SET): Add comments about extended
	syntax of the constructions.

	* doc/md.texi (PRESENCE_SET, ABSENCE_SET): Add description of
	extended syntax of the constructions.

	* genautomata.c (unit_rel_decl): Rename it to
	`unit_pattern_rel_decl'.
	(pattern_set_el, pattern_reserv): New structures.
	(pattern_set_el_t, pattern_reserv_t): New types.
	(gen_presence_absence_set): New function.
	(process_presence_absence): Remove it.
	(process_presence_absence_names,
	process_presence_absence_patterns): New functions.
	(get_presence_absence_set): Remove it.
	(initiate_presence_absence_sets): Rename it on
	`initiate_presence_absence_pattern_sets'.  Use new function
	`form_reserv_sets_list'.
	(form_reserv_sets_list, check_presence_pattern_sets,
	check_absence_pattern_sets, output_pattern_set_el_list): New
	functions.
	(unit_decl): Change types of members `presence_list' and
	`absence_list'.
	(unit_rel_decl): Rename member `names_num' to `all_names_num'.
	(decl): Change types of members `excl', `presence', and `absence'.
	(get_str_vect): Rename `par_flag' to `paren_p'.  Add null element
	at the end of the vector.
	(gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
	gen_automaton, gen_regexp_repeat, gen_regexp_allof,
	gen_regexp_oneof, gen_regexp_sequence): Use boolean values.
	(gen_presence_set, gen_absence_set): Use new function
	`gen_presence_absence_set'.
	(add_presence_absence): Process `pattern_list' instead of
	`source_list'.
	(process_decls): USe new functions
	`process_presence_absence_names' and
	`process_presence_absence_patterns'.
	(reserv_sets_are_intersected): Use new function
	`check_presence_pattern_sets'.
	(presence_set, absence_set): Remove them.
	(unit_presence_set_table, unit_absence_set_table): New global
	variables.
	(output_description): Use new function
	`output_pattern_set_el_list'.
	(generate): Use `initiate_presence_absence_pattern_sets'.

	2002-09-18  Vladimir Makarov  <vmakarov@redhat.com>

	* genattr.c (main): Add output of prototype of new interface
	function `dfa_clean_insn_cache'.

	* genautomata.c (output_dfa_clean_insn_cache_func): New function.
	(DFA_CLEAN_INSN_CACHE_FUNC_NAME): New macro.
	(output_dfa_start_func): Use function `dfa_clean_insn_cache' in
	the generated code.
	(write_automata): Call the new function.

2003-01-09  Jan Hubicka  <jh@suse.cz>

	* i386.md (unit, prefix_0f, memory attributes): Hanlde sseicvt
	correctly.

2003-01-09  Paolo Carlini  <pcarlini@unitus.it>

	* doc/tm.texi (EXTRA_ADDRESS_CONSTRAINT): Fix typo.

2003-01-09  J"orn Rennecke <joern.rennecke@superh.com>

	* defaults.h (EXTRA_MEMORY_CONSTRAINT): Add STR argument.
	(EXTRA_ADDRESS_CONSTRAINT): Likewise.
	(CONSTRAINT_LEN): Provide default definition.
	(CONST_OK_FOR_CONSTRAINT_P): Likewise.
	(CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Likewise.
	(EXTRA_CONSTRAINT_STR): Likewise.
	(REG_CLASS_FROM_CONSTRAINT): Define.
	* genoutput.c (check_constraint_len, constraint_len): New functions.
	(validate_insn_alternatives): Check CONSTRAINT_LEN for each
	constraint / modifier.
	(gen_insn): Call check_constraint_len.
	* local-alloc.c (block_alloc): Update to use new macros / pass
	second argument to EXTRA_{MEMORY,ADDRESS}_CONSTRAINT.
	* ra-build.c (handle_asm_insn): Likewise.
	* recog.c (asm_operand_ok, preprocess_constraints): Likewise.
	(constrain_operands, peep2_find_free_register): Likewise.
	* regclass.c (record_operand_costs, record_reg_classes): Likewise.
	* regmove.c (find_matches): Likewise.
	* reload.c (push_secondary_reload, find_reloads): Likewise.
	(alternative_allows_memconst): Likewise.
	* reload1.c (maybe_fix_stack_asms): Likewise.
	(reload_cse_simplify_operands): Likewise.
	* stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
	* doc/tm.texi (CONSTRAINT_LEN, REG_CLASS_FROM_CONSTRAINT): Document.
	(CONST_OK_FOR_CONSTRAINT_P): Likewise.
	(CONST_DOUBLE_OK_FOR_CONSTRAINT_P, EXTRA_CONSTRAINT_STR): Likewise.
	(EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT): Add STR argument.
	* config/s390/s390.h (EXTRA_MEMORY_CONSTRAINT): Likewise.

	* sh.h (OVERRIDE_OPTIONS): Allow first scheduling pass for SH5.

2003-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_1_r_h8300): Correct the insn
	length.
	(*extzv_1_r_h8300hs): Likewise.
	(*extzv_1_r_inv_h8300): Likewise.
	(*extzv_1_r_inv_h8300hs): Likewise.

2003-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (PREDICATE_CODES): New.

2003-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*addsi3_upper): New.
	(*iorsi3_shift): Likewise.
	(two splitters): Likewise.
	(*addsi3_shift): Likewise.
	(two splitters): Likewise.

2003-01-09  Josef Zlomek  <zlomj9am@artax.karlin.mff.cuni.cz>

	* Makefile.in (optabs.o): Add dependency on basic-block.h.
	* basic-block.h (control_flow_insn_p): Fuction was exported.
	* cfgbuild.c (control_flow_insn_p): Fuction was made non-static.
	* optabs.c (emit_libcall_block): Emit REG_LIBCALL and REG_RETVAL
	notes only when the region is contained in a single basic block.

2003-01-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR inline-asm/8832
	* tree.h (expand_asm): New prototype.
	* stmt.c (expand_asm): Set the MEM_VOLATILE_P flag if instructed
	to do so.
	* c-semantics (genrtl_asm_stmt): Pass the RID_VOLATILE qualifier
	down to expand_asm.
	* c-typeck.c (simple_asm_stmt): Set the RID_VOLATILE qualifier.
	* rtlanal.c (volatile_insn_p) [ASM_INPUT]: Test the MEM_VOLATILE_P flag.
	(volatile_refs_p) [ASM_INPUT]: Likewise.
	(side_effects_p) [ASM_INPUT]: Likewise.

2003-01-09  Jan Hubicka  <jh@suse.cz>

	* i386.md (*mul*): FIx constraints; remove confused comment; fix
	athlon_decode attributes
	(imul/k8 optimization peep2s): New.

	* athlon.md (athlon_ssecmp*): Handle ssecomi as well.
	* i386.md (type attribute): Add ssecomi.
	(unit, memory, prefix attributes): Handle ssecomi.
	(cvt?2? patterns): Fix athlon_decode attribute
	(comi patterns): Set attribute to ssecomi.

	PR target/8343
	* m68k.md (umulsidi, mulsidi expanders): Use register operand.

2003-01-09  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (PREDICATE_CODES): Add ADDRESSOF for predicates
	that match register_operands.
	* config/mips/mips.c (reg_or_0_operand, true_reg_or_0_operand): Make
	register_operand the default case.

2003-01-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/8032
	* c-typeck.c (process_init_element) [RECORD_TYPE]: For
	an empty element, do not advance the pointer to unfilled
	fields if there are pending initializers.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (ORDINARY_FLAGS_TO_PASS): Also pass DESTDIR.
	(install-gcc-tooldir, install-cpp, installdirs,
	install-common, install-driver, install-info, install-man,
	install-headers, install-include-dir, install-headers-tar,
	install-headers-cpio, install-headers-cp, install-mkheaders,
	install-collect2, uninstall): Prepend $(DESTDIR) to
	destination paths in all (un)installation commands.
	(install-driver): Rewrite $(LN) commands to support DESTDIR
	with "ln" as well as with "ln -s".
	(installdirs): Simply use mkinstalldirs.
	(install-libgcc, install-multilib): Also pass DESTDIR.
	* mklibgcc.in: Prepend $(DESTDIR) to $(libsubdir) in the
	installation destination variable ldir.
	* config/alpha/t-osf4, config/arm/t-netbsd,
	config/ia64/t-hpux, config/mips/t-iris5-6,
	config/pa/t-hpux-shlib, config/rs6000/t-aix43,
	config/rs6000/t-aix52, config/t-slibgcc-elf-ver,
	config/t-slibgcc-sld: Prepend $$(DESTDIR) to $$(slibdir)
	in the definition of SHLIB_INSTALL.
	* config/arc/t-arc (install-multilib-arc): Prepend $(DESTDIR) to
	$(libsubdir) in the installation commands.

2003-01-08  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.h (CASE_VECTOR_MODE): Use SImode for a
	non-optimizing compile.
	(ASM_OUTPUT_ADDR_VEC_ELT): Use .long for a non-optimizing
	compile.

2003-01-08  Douglas B Rupp  <rupp@gnat.com>

	* config/i386/i386.c (ix86_attribute_table): Add new attributes
	ms_struct and gcc_struct.
	(ix86_handle_struct_attribute): New function.
	(ix86_ms_bitfield_layout_p): Update to take new attributes
	into account.
	* doc/extend.texi: Document new attributes.
	* testsuite/gcc.dg/bf-ms-attrib.c: New test.

2003-01-08  Danny Smith  <dannysmith@users.sourceforge.net>

	PR optimization/8750
	* config/i386/i386.c (ix86_expand_prologue): Don't allow
	scheduling pass to move insns across __alloca call.

2003-01-08  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.md:  Replace *store_multiple_string
	with *stmsi[3-8].

2003-01-08  Jeff Sturm  <jsturm@one-point.com>

	PR target/9210
	* config/rs6000/rs6000.c (rs6000_elf_encode_section_info):
	Set SYMBOL_REF_FLAG on local data sym_ref.

2003-01-08  Dale Johannesen  <dalej@apple.com>

	* function.c (assign_parms):  Don't set pretend_args_size if
	  REG_PARM_STACK_SPACE.
	  config/rs6000/rs6000.c (setup_incoming_varargs):  Don't set
	  pretend_args_size.

2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* gcc.hlp: Delete.

2003-01-09  Jan Hubicka  <jh@suse.cz>

	* i386.c  (ix86_expand_int_addcc): Fix thinko.

2003-01-08  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (FUNCTION_MODE): Always use SImode.
	* config/rs6000/rs6000.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Redefine
	as hook_bool_tree_hwi_hwi_tree_true.
	(rs6000_emit_allocate_stack): Use TARGET_32BIT.
	(rs6000_emit_epilogue): Same.
	(rs6000_output_mi_thunk): Re-implement as RTL.
	* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Call
	xcoffout_declare_function if any debugging enabled.

2003-01-08  Chris Demetriou  <cgd@broadcom.com>

	* config.gcc (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*): New
	targets, to support MIPS32 Release 2 (MIPS32R2) configurations.
	* config/mips/mips.h (enum processor_type): Rename
	PROCESSOR_R4KC to PROCESSOR_4KC, PROCESSOR_R5KC to
	PROCESSOR_5KC, and PROCESSOR_R20KC to PROCESSOR_20KC.
	Add PROCESSOR_M4K.
	(TARGET_MIPS4KC, TARGET_MIPS5KC): Update for the renaming.
	(ISA_MIPS32R2): New define.
	(GENERATE_MULT3_SI, ISA_HAS_CONDMOVE, ISA_HAS_8CC)
	(ISA_HAS_MADD_MSUB, ISA_HAS_CLZ_CLO)
	(ISA_HAS_PREFETCH): Add support for MIPS32R2.
	(MIPS_ISA_DEFAULT): Likewise.  Also, fix indentation.
	(TARGET_CPU_CPP_BUILTINS): Add support for MIPS32R2.  Add new
	predefine __mips_isa_rev for MIPS32, MIPS32R2, and MIPS64.
	(ISA_HAS_ROTR_SI): Add support for MIPS32R2, and avoid if
	compiling MIPS16 code.
	(ISA_HAS_ROTR_DI): Do not use if compiling MIPS16 code, and fix
	comment.
	(ISA_HAS_SEB_SEH): New define.
	(ASM_SPEC, LINK_SPEC): Pass -mips32r2 to assembler and linker.
	* config/mips/mips.c (mips_cpu_info_table): Adjust for enum
	processor_type value renaming.  Add support for MIPS32R2.
	Clean up comments, and move "sb1" entry with other MIPS64 CPU
	entries.
	(override_options): Reimplement -mipsN option handling so that
	it will work correctly for -mips32r2.  Avoid branch-likely
	instructions on MIPS32R2.
	* config/mips/mips.md (mulsi3_mult3): Add support for MIPS32R2.
	(extendhisi2): Use extendhisi2_hw if ISA_HAS_SEB_SEH.
	(extendqisi2): Use extendqisi2_hw if ISA_HAS_SEB_SEH.
	(extendhisi2_hw, extendqisi2_hw): New.
	* config/mips/netbsd.h (TARGET_CPU_CPP_BUILTINS): Add support
	for MIPS32R2.  Add new predefine __mips_isa_rev for MIPS32,
	MIPS32R2, and MIPS64.
	(LINK_SPEC): Pass -mips32r2 to linker.
	* config/mips/t-isa3264: Built -mips32r2 multilibs.
	* doc/invoke.texi (MIPS Options): Add -mips32r2, add support
	for mips32r2 in the -march description.  Alphabetically sort
	CPU names in the -march description.  Add long-missed -mips32
	and -mips64 to MIPS option summary.

	* config.gcc: Update copyright years to include 2003.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/netbsd.h: Likewise.
	* doc/invoke.texi: Likewise.

2003-01-08  Andreas Schwab  <schwab@suse.de>

	* aclocal.m4 (gcc_AC_INITFINI_ARRAY): Fix spelling of cache
	variable.
	* configure: Regenerated.

2003-01-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_logical_op): Replace byte/word
	extraction of det with b0, b1, w0, w2, etc.
	(compute_logical_op_length): Likewise.
	(compute_logical_op_cc): Likewise.

2003-01-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (CONSTANT_ADDRESS_P): Allow CONST and
	HIGH on all variants.

2003-01-08  Josef Zlomek <zlomj9am@artax.karlin.mff.cuni.cz>

	* Makefile.in (PARTITION_H): New.
	(BASIC_BLOCK_H): Added hard-reg-set.h and $(PARTITION_H).
	* basic-block.h: Include hard-reg-set.h.

2003-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (ENABLE_XF_PATTERNS): Delete.
	* arm.md (addxf3, subxf3, mulxf3, divxf3, modxf3, negxf2, absxf2)
	(sqrtxf2, floatsixf2, fix_truncxfsi2, truncxfsf2, truncxfdf2)
	(extendsfxf2, extenddfxf2, movxf, cmpxf, cmpxf_insn)
	(cmpxf_trap): Delete.
	(movxf_hard_insn): Remove test of ENABLE_XF_PATTERNS.

2003-01-08  Jan Hubicka  <jh@suse.cz>

	* i386.md (adddi3_carry_rex64, subdi3_carry_rex64): Name pattern.
	(addhi3_carry, addqi3_carry, subhi3_carry, subqi3_carry): New patterns.
	(add??cc): New expanders.
	* i386.c (expand_int_addcc): New function.
	* i386-protos.h (expand_int_addcc): Declare.

	* alias.c (memory_modified_1): New static function.
	(memory_modified): New static varaible.
	(memory_modified_in_insn_p): New global function.
	* rtl.h (memory_modified_in_insn_p): Declare.
	* rtlanal.c (modified_between_p, modified_in_p): Be smart about memory
	references.

	* expr.h (emit_conditional_add): Declare.

2003-01-07  Janis Johnson  <janis187@us.ibm.com>

	PR other/8947
	* doc/invoke.texi (-malign-double): Explain that the option breaks
	binary compatibility.

2003-01-08  Andreas Schwab  <schwab@suse.de>

	* config.gcc (m68k-*-linux*): Don't set extra_parts and gnu_ld,
	should come from the generic *-*-linux* entry.

2003-01-07  Jan Hubicka  <jh@suse.cz>

	* cselib.c (cselib_current_insn_in_libcall): New static variable.
	(new_elt_loc_list, cselib_process_insn, cselib_init): Keep track on whether
	we are inside libcall.
	* cselib.h (elt_loc_list): Add in_libcall.
	* gcse.c (do_local_cprop): Do not copy propagate using insns
	in libcalls.

2003-01-07  David Edelsohn  <edelsohn@gnu.org>

	* doc/tm.texi (TARGET_SCHED_VARIABLE_ISSUE): CLOBBER and USE do
	not normally affect to issue rate.

2003-01-07  Jan Hubicka  <jh@suse.cz>

	* genopinit.c (optabs): Add addc_optab.
	* ifcvt.c (noce_try_store_flag): Rename to ...
	(noce_try_addcc): ... this one; handle generic conditional increment.
	(noce_process_if_block): Update noce_try_addcc call.
	* optabs.c (emit_conditional_add): New.
	(init_obtabs): Initialize addc_optab.
	* optabs.h (optab_index): Add OTI_addcc.
	(addcc_optab): New macro.
	* md.texi: Document addMcc

	PR target/8322
	* i386.c (ix86_init_mmx_sse_builtins): Constify arguments of loads.
	* xmmintrin.h (_mm_load*_si128. _mm_store*_si128): Add casts.
	* xmmintrin.h (_mm_load*_si128. _mm_store*_si128): Add casts.

	* reload1.c (delete_output_reload): Avoid repeated attempts
	to delete insn.

2003-01-07  Andreas Schwab  <schwab@suse.de>

	* configure.in: Restore CFLAGS before gcc_AC_INITFINI_ARRAY.
	Move --enable-initfini-array check ...
	* aclocal.m4 (gcc_AC_INITFINI_ARRAY): ... here.  Define
	HAVE_INITFINI_ARRAY also when --enable-initfini-array is given.
	Don't AC_SUBST gcc_cv_initfinit_array.  Use AC_TRY_RUN.
	* configure: Rebuild.

2003-01-07  Richard Henderson  <rth@redhat.com>

	* alias.c (find_base_value): Only use new_reg_base_value shortcut
	if the register is set once.

2003-01-07  Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de>

	* config/i386/i386.c (ix86_init_mmx_sse_builtins):
	__builtin_ia32_ldmxcsr and __builtin_ia32_stmxcsr are SSE, not MXX.
	* config/i386/i386.md (ldmxcsr, stmxcsr): SSE, not MMX.

2003-01-07  Benjamin Kosnik  <bkoz@redhat.com>
	    Sunil Davasam  <sunil.k.davasam@intel.com>

	PR libstdc++/9076
	* unwind-dw2.c (execute_cfa_program): DW_CFA_undefined,
	DW_CFA_same_value, read next and ignore.

2003-01-07  Richard Henderson  <rth@redhat.com>

	* cfganal.c (flow_call_edges_add): Don't crash on noreturn call.

2003-01-07  Daniel Berlin  <dberlin@dberlin.org>

	* cfg.c: Include alloc-pool.h
	(edge_pool): New pool.
	(bb_pool): New pool.
	(first_deleted_edge): Remove.
	(first_deleted_block): Remove.
	(init_flow): Alloc/free the pools.
	(free_edge): Use pools.
	(alloc_block): Ditto.
	(expunge_block): Ditto.
	(cached_make_edge): Ditto.

	* Makefile.in (cfg.o): Add alloc-pool.h dependency.

2003-01-07  Daniel Berlin  <dberlin@dberlin.org>

	* et-forest.c: Include alloc-pool.h.
	(struct et_forest): Add node_pool and occur_pool.
	(et_forest_create): Create the new pools.
	(et_forest_delete): Delete them.
	(et_forest_add_node): Allocate and free using pools.
	(et_forest_add_edge): Ditto.
	(et_forest_remove_node): Ditto.
	(et_forest_remove_edge): Ditto.

	* Makefile.in (et-forest.o): Add alloc-pool.h dependency.

2003-01-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_logical_op): Simplify and
	optimize the handling of SImode.
	* config/h8300/h8300.c (compute_logical_op_length): Update
	accordingly.
	* config/h8300/h8300.c (compute_logical_op_cc): Likewise.

2003-01-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_va_arg): In the EABI code, apply the
	big-endian correction to indirect arguments too.

2003-01-06  Aldy Hernandez  <aldyh@redhat.com>

	Segher Boessenkool  <segher@koffie.nl>

	* config/rs6000/rs6000.c (rs6000_reg_names): Add missing registers.
	(alt_reg_names): Ditto, fix formatting.
	* config/rs6000/rs6000.h (DEBUG_REGISTER_NAMES): Fix formatting.

2003-01-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (final_prescan_insn): Constify uid.
	(output_logical_op): Constify intval and det.
	(compute_logical_length): Likewise.
	(compute_logical_cc): Likewise.
	(output_a_shift): Constify mask.
	(h8300_encode_label): Constify len.

2003-01-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_expand_prologue): Remove fsize.
	(h8300_expand_epilogue): Likewise.

2003-01-06  Aldy Hernandez  <aldyh@redhat.com>

	Segher Boessenkool  <segher@koffie.nl>

	* config/rs6000/altivec.md: Remove spaces from assembler
	instruction argument lists.

2003-01-07  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_naked_function_p): Rename from
	c4x_assembler_function_p.
	(c4x_null_epilogue_p): Complement return value, all uses updated.
	(c4x_insert_attributes): Add naked.
	* config/c4x/c4x.md (c4x_null_epilogue_p): Changes uses.
	* doc/extend.texi: Update C4x function attributes.

2003-01-06  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_encode_section_info): Adjust symbol_str
	properly when changing "local-ness".
	* config/alpha/alpha.md (movdi_er_high_g): Allow all symbols.

2003-01-06  Dale Johannesen  <dalej@apple.com>

	* config/darwin-protos.h:  Add prototypes for new section functions.

2003-01-06  Chris Demetriou  <cgd@broadcom.com>

	* config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*): Default ABI
	to EABI.

2003-01-06  Zack Weinberg  <zack@codesourcery.com>

	* hwint.h: If the current compiler has no 64-bit type at all,
	make HOST_WIDEST_INT 32 bits.

2003-01-06  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md (movdf_internal2): Fix constraints.

2003-01-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*twoshifts_l16_r1): New.

2003-01-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (leadi): Use dla rather than la.

2003-01-06  Svein E. Seldal  <Svein.Seldal@solidas.com>

	* config/c4x/c4x.h: Updated specs for new gas format.  Fixed bug
	in C33_FLAG.  Added proper C33 support in ASM_FILE_START macro.

2003-01-06 Herman A.J. ten Brugge  <hermantenbrugge@home.nl>

	* config/c4x/c4x.h: Remove hwint.h include and HOST_WIDE_INT_PRINT_HEX
	redefinition.

2003-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*extzv_8_23): New.

2003-01-05  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa64-hpux.h (JCR_SECTION_NAME): Define.
	(PA_INIT_FRAME_DUMMY_ASM_OP): Check EH_FRAME_SECTION_NAME instead of
	USE_EH_FRAME_REGISTRY when defining.

2003-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_a_shift): Do not output a
	variable shift.
	* config/h8300/h8300.md (two splitters): New.

2003-01-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Disable the movstrsi define_split.

2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alloc-pool.c: Don't include "libiberty.h".
	* config/sparc/gmon-sol2.c: Include <fcntl.h>.
	* convert.c (convert_to_real): Hide unused variable.

2003-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (gtyp-gen.h): Const-ify.
	* gcov-dump.c (tag_table): Likewise.

2003-01-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixfixes.c(wrap_fix): the wrapper guard must be a function
	of *both* the file name and the fix name.

2003-01-04  John David Anglin  <dave.anglin@nrc.ca>

	* config.gcc (hppa*64*-*-hpux11*): Define extra_parts.  Don't use
	collect2.
	* pa-hpux11.h (LDD_SUFFIX, PARSE_LDD_OUTPUT): Undefine.
	(HAS_INIT_SECTION, LD_INIT_SWITCH, LD_FINI_SWITCH): Define.
	* pa64-hpux.h (HP_INIT_ARRAY_SECTION_ASM_OP,
	GNU_INIT_ARRAY_SECTION_ASM_OP, HP_FINI_ARRAY_SECTION_ASM_OP,
	GNU_FINI_ARRAY_SECTION_ASM_OP): Define.
	(CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Define when not using
	elfos.h.
	(EH_FRAME_IN_DATA_SECTION): Delete define.
	(HAS_INIT_SECTION, LD_INIT_SWITCH, LD_FINI_SWITCH): Undefine.
	(STARTFILE_SPEC): Use crtbegin.o.
	(ENDFILE_SPEC): Use crtend.o.
	(INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP, CRT_CALL_STATIC_FUNCTION,
	SUPPORTS_INIT_PRIORITY, PA_CXA_FINALIZE_STUB, PA_INIT_FINI_HACK,
	PA_INIT_FRAME_DUMMY_ASM_OP, PA_JV_REGISTERCLASSES_STUB,
	DTOR_LIST_BEGIN): Define.
	* pa.c (TARGET_ASM_CONSTRUCTOR): Define.
	(pa_asm_out_constructor, pa_asm_out_destructor): New functions.
	* som.h (SUPPORTS_INIT_PRIORITY): Delete define.

2002-12-31  Larin Hennessy  <larin@science.oregonstate.edu>

	* fixinc/fixinc.svr4: Remove references to i860, Sony NewsOS, and spur.
	* fixinc/inclhack.def: Remove tests for Apple A/UX, ARM/RISCiX, DG/UX,
	m88k-*-sysv3*, Sony NewsOS.   Remove references to i860.
	Cleanup handling of replacement text.
	* fixinc/mkfixinc.sh: Remove reference to i?86-*-osf1*

2003-01-04  Bruce Korb  <bkorb@gnu.org>

	* fixinc/tests/base/math.h: removed obsolete results
	* fixinc/tests/base/stdlib.h: ditto
	* fixinc/tests/base/sys/param.h: ditto
	* fixinc/tests/base/sys/stat.h: ditto
	* fixinc/tests/base/time.h: ditto
	* fixinc/tests/base/X11/Intrinsic.h: removed obsolete file
	* fixinc/tests/base/sys/byteorder.h: ditto
	* fixinc/inclhack.def: Remove superfluous backslashes

2003-01-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add prototypes for
	the new functions defined below.
	* config/h8300/h8300.c (TARGET_ASM_FUNCTION_PROLOGUE): Do not
	define.
	(dosize): Emit RTL instead of assembly code.
	(push): Likewise.
	(pop): Likewise.
	(h8300_output_function_prologue): Remove.
	(h8300_expand_prologue): New.
	(h8300_expand_epilogue): New.
	(h8300_output_function_epilogue): Do only the reset of
	pragma_saveall.
	* config/h8300/h8300.md (push_h8300): New.
	(push_h8300hs): Likewise.
	(pop_h8300): Likewise.
	(pop_h8300hs): Likewise.
	(*stm_h8300s_2): Change the name to stm_h8300s_2.
	(*stm_h8300s_3): Change the name to stm_h8300s_3.
	(*stm_h8300s_4): Change the name to stm_h8300s_4.
	(*ldm_h8300s_2): New.
	(*ldm_h8300s_3): Likewise.
	(*ldm_h8300s_4): Likewise.
	(return): Likewise.
	(*return_1): Likewise.
	(prologue): Likewise.
	(epilogue): Likewise.
	(monitor_prologue): Likewise.

2003-01-03  Dale Johannesen  <dalej@apple.com>

	* config/darwin.h:  (EXTRA_SECTIONS):  Add machopic_symbol_stub1,
	  machopic_picsymbol_stub1.
	  (EXTRA_SECTION_FUNCTIONS):  Ditto.
	* rs6000/rs6000.c:  Update copyright.
	  (machopic_output_stub):  Use them.  Remove an insn from stub code.

2003-01-02  Jason Merrill  <jason@redhat.com>

	* fold-const.c (fold) [COND_EXPR]: Avoid NOP_EXPRs better.

	* integrate.c (copy_decl_for_inlining): Don't clear the rtl for
	static/external decls.

	* c-common.c (finish_fname_decls): Put the DECL_STMTs inside the
	outermost scope.
	* c-decl.c (c_make_fname_decl): Push the decls there, too.

2003-01-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	h8300_current_function_interrupt_function_p.
	* config/h8300/h8300.c (interrupt_handler): Remove.
	(os_task): Likewise.
	(monitor): Likewise.
	(pragma_interrupt): New.
	(WORD_REG_USED): Use
	h8300_current_function_interrupt_function_p.
	(dosize): Likewise.
	(h8300_output_function_prologue): Likewise.
	Do not set interrupt_handler, os_task, monitor.
	(h8300_output_function_prologue): Use
	h8300_current_function_interrupt_function_p.
	Do not set interrupt_handler, os_task, monitor.
	(h8300_current_function_interrupt_function_p): New.
	(h8300_pr_interrupt): Set pragma_interrupt.
	(h8300_insert_attributes): Reset pragma_interrupt.

2003-01-03  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Configuration): Fix markup for reference to
	gcc/config.gcc.

2003-01-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*iorhi3_zext): Relax the condition.
	(*iorhi3_two_qi): Likewise.
	(*iorsi3_zexthi): Likewise.
	(*xorhi3_zextqi): Likewise.
	(*xorsi3_zexthi): Likewise.
	(*xorsi3_zextqi): Likewise.

2003-01-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (stack_pointer_operand): New.
	(const_int_gt_2_operand): Likewise.
	(const_int_ge_8_operand): Likewise.
	* config/h8300/h8300.md (a splitter): Likewise.
	(a peephole2): Likewise.
	* config/h8300/h8300-protos.h: Add prototypes for the new
	functions above.

2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* objc/Make-lang.in, objc/config-lang.in, objc/lang-specs.h,
	objc/objc-act.h: Fix copyright years.

2003-01-02  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* doc/passes.texi: Fix documentation for -fssa-ccp

2003-01-02  Neil Booth  <neil@daikokuya.co.uk>

	* gccbug.in: Update for new categories.

2003-01-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Reorder some patterns.

2003-01-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (output_logical_op): Fix a warning.

2003-01-01  Neil Booth  <neil@daikokuya.co.uk>

	* config/darwin-protos.h, config/c4x/c4x-protos.h,
	config/cris/cris-protos.h, config/i370/i370-protos.h,
	config/i960/i960-protos.h, config/ia64/ia64-protos.h,
	config/v850/v850-protos.h: Use struct, and don't conditionally
	compile on GCC_C_PRAGMA_H.

2003-01-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm-protos.h: Remove #ifdef GCC_C_PRAGMA_H.
	* config/h8300/h8300-protos.h: Likewise.
	* config/sh/sh-protos.h: Likewise.

2003-01-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm-protos.h: Use struct cpp_reader instead of
	cpp_reader.
	* config/h8300/h8300-protos.h: Likewise.
	* config/sh/sh-protos.h: Likewise.

2003-01-01  Neil Booth  <neil@daikokuya.co.uk>

	* config/arm/arm.c (arm_pr_long_calls, arm_pr_no_long_calls,
	arm_pr_long_calls_off): Use struct.
	* config/h8300/h8300.c (h8300_pr-interrupt, h8300_pr_saveall)
	: Similarly.
	Don't include cpplib.h.
	* config/sh/sh.c (sh_pr_interrupt, sh_pr_trapa,
	sh_pr_nosave_low_regs): Similarly.

2003-01-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c: Include cpplib.h.

2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* objc/Make-lang.in, objc/config-lang.in, objc/lang-options.h,
	  objc/lang-specs.h, objc/objc-act.c, objc/objc-act.h,
	  objc/objc-lang.c, objc/objc-tree.def: Replace "GNU CC" with
	  "GCC" in the copyright header.

2003-01-01  Neil Booth  <neil@daikokuya.co.uk>

	* c-pragma.c (c_register_pragma): New.
	(init_pragma): Use it.
	* c-pragma.h (cpp_register_pragma): Don't declare.
	(c_register_pragma): New.
	* cpplib.h: Remove #ifdef GCC_C_PRAGMA_H.
	* config/darwin.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/arm/arm.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/c4x/c4x.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/h8300/h8300.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/i370/i370.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/i960/i960.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/rs6000/rs6000.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/sh/sh.h (REGISTER_TARGET_PRAGMAS): Update.
	* config/v850/v850.h (REGISTER_TARGET_PRAGMAS): Update.
	* doc/tm.texi (REGISTER_TARGET_PRAGMAS): Update


Copyright (C) 2003 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.
