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.

2002-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

See ChangeLog.8 for earlier changes.
