ChangeLog   [plain text]

2007-05-21  Mike Stump  <>

	* config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
	handling as well.

2005-07-12  Eric Christopher  <>

	* gcc.c (struct infile): Update comment for language.
	(main): Rewrite input file resetting code.

2007-05-16  Eric Christopher  <>

	Radar 5188943
	* c-common.c: Add missed #undefs from __builtin_object_size

2007-05-16  Eric Christopher  <>

	Radar 4663646
	* config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
	saving after stack push. Set sp_offset whenever we push.
	(rs6000_emit_epilogue): Move altivec register restore before stack push.

2007-04-09  Jan Hubicka  <>

	Radar 5097839
        PR target/27869
        * config/i386/
        (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
        (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
        (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
        (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.

2007-03-28  Mike Stump  <>

	Radar 5077358
	* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
	* config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
	* config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.

2006-12-13  Geoffrey Keating  <>

	Radar 4697325
	* doc/invoke.texi (Darwin Options): Update documentation for
	* config.gcc (*-*-darwin*): Set extra_gcc_objs.
	* config/darwin-driver.c: New file.
	* config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
	* config/t-darwin (darwin-driver.o): New rule.

2006-12-12  Geoffrey Keating  <>

	* mips-tdump.c: Replace CROSS_COMPILE with
	* mips-tfile.c: Likewise.
	* gcc.c: Likewise.
	* Likewise.
	* cppdefault.c: Likewise.
	* Likewise.
	* config/alpha/osf.h: Likewise.
	* config/i386/cygwin.h: Likewise.
	* config/i386/beos-elf.h: Likewise.
	* config/i386/nto.h: Likewise.
	* config/fr30/fr30.h: Likewise.
	* config/svr4.h: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/pa/pa-hpux10.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.
	* collect2.c: Likewise.
	* configure: Regenerate.

2007-03-13  Geoffrey Keating  <>

	* doc/invoke.texi (Spec Files): Update for '%{,' spec.

2007-03-10  Tobias Schlüter  <>

	* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
	quotation mark.

2007-03-09  Geoffrey Keating  <>

	Radar 5040758
	* gcc.c: Document %{, in big comment at top.
	(input_suffix_matches): Remove special handling for .s and
	(input_spec_matches): New.
	(handle_braces): Handle %{,.
	(validate_switches): ',' indicates a value which is not a switch.
	* config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
	to detect assembler input.
	* config/i386/sol2.h (CPP_SPEC): Likewise.
	* config/rs6000/sysv4.h (ASM_SPEC): Likewise.
	* config/rs6000/vxworks.h (ASM_SPEC): Likewise.
	* config/rs6000/lynx.h (ASM_SPEC): Likewise.
	* config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
	* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
	-m64 causes deployment target to default to 10.5.
	* config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.

2007-02-20  Geoffrey Keating  <>

	Radar 5005743, 4226546
	* config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
	if user didn't pass it.
	* config/i386/darwin.h (CC1_SPEC): Likewise.
	* config/rs6000/darwin.h (CC1_SPEC): Likewise.
	(DARWIN_MINVERSION_SPEC): Don't depend on user's setting of

	* config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
	to linker.
	(DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
	darwin_macosx_version_min to be non-NULL always.
	(TARGET_C99_FUNCTIONS): Likewise.
	(CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
	* config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
	* config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
	to cc1*.
	* config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
	* config/darwin-c.c (darwin_cpp_builtins): Expect
	darwin_macosx_version_min to be non-NULL always.

2007-01-04  Geoffrey Keating  <>

	Radar 4871915
	* target.h (struct gcc_target): New field library_rtti_comdat.
	* target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
	* doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
	* config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.

2006-12-18  Roger Sayle  <>
            Eric Christopher  <>

	Radar 4820385
        PR target/29302
        * real.c (real_maxval): Correctly handle IBM extended double format.

2006-12-22  Mike Stump  <>

	* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Add

2006-12-18  Geoffrey Keating  <>

	Radar 4869554
	* doc/invoke.texi (Debugging Options): Document -g0.
	* config/darwin.h (LINK_COMMAND_SPEC): Replace -gnone with -g0.

2006-12-13  Geoffrey Keating  <>

	Radar 4697325
	* doc/invoke.texi (Darwin Options): Update documentation for
	* config.gcc (*-*-darwin*): Set extra_gcc_objs.
	* config/darwin-driver.c: New file.
	* config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
	* config/t-darwin (darwin-driver.o): New rule.

2006-12-12  Geoffrey Keating  <>

	* mips-tdump.c: Replace CROSS_COMPILE with
	* mips-tfile.c: Likewise.
	* gcc.c: Likewise.
	* Likewise.
	* cppdefault.c: Likewise.
	* Likewise.
	* config/alpha/osf.h: Likewise.
	* config/i386/cygwin.h: Likewise.
	* config/i386/beos-elf.h: Likewise.
	* config/i386/nto.h: Likewise.
	* config/fr30/fr30.h: Likewise.
	* config/svr4.h: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/pa/pa-hpux10.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.
	* collect2.c: Likewise.
	* configure: Regenerate.

2006-12-08  Mike Stump  <>

	* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
	libgcc with -mmacosx-version-min=10.4.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
	G4 for 10.5+ unless doing kernel builds.

2005-09-19  Steven Bosscher  <>

	Radar 4842086
	PR rtl-optimization/23943
	* cse.c (find_best_addr): Never propagate an EXPR_LIST rtx.

2006-12-04  Eric Christopher  <>

	Radar 4521370
	* config/darwin.h (DARWIN_EXTRA_SPECS): New.
	* config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
	* config/i386/darwin.h: Ditto.
	* config/rs6000/darwin.h: Ditto.

2005-04-11  Mark Mitchell  <>

	* target-def.h (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
	(TARGET_CXX): Adjust accordingly.
	* target.h (struct gcc_target): Remove epxort_class_data.  Add
	determine_class_data_visibility and class_data_always_comdat.
	* doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Remove.
	* config/arm/arm.c (arm_cxx_export_class_data): Remove.
	(arm_cxx_determine_class_data_visibility): New.
	(arm_cxx_class_data_always_comdat): Likewise.
	* config/arm/arm.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P): Define.
	* config/arm/symbian.h (TARGET_ARM_DYNAMIC_VAGUE_LINKAGE_P):

2006-11-09  Eric Christopher  <>

	PR bootstrap/26892
	PR bootstrap/27814
	PR other/28994
	* configure: Regenerate.
	* Match powerpc*-*-darwin* for powerpc darwin checks.
	* config.gcc (powerpc64-*-darwin*): New target.
	* Ditto.
	* config/rs6000/darwin64.h: New file.
	* config/rs6000/x-darwin64: Ditto.
	* config/rs6000/host-ppc64-darwin.c: Ditto.

2006-11-06  Eric Christopher  <>

	* config.gcc: Add x86_64-darwin host support.
	* Ditto.
	* config/i386/darwin64.h: New file.
	* config/i386/t-darwin64: Ditto.

2006-10-27  Mike Stump  <>

	* config/darwin-c.c (darwin_cpp_builtins): Move __STATIC__ and
	__DYNAMIC__ from here back to ...
	* config/darwin.h (CPP_SPEC): ... here.

2006-10-16  Mike Stump  <>

	* doc/invoke.texi (Darwin Options): Document -mkernel.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Add
	-mkernel support.
	(C_COMMON_OVERRIDE_OPTIONS): Add -mkernel support.  Add
	(CC1_SPEC): Don't turn on -fPIC when -mkernel is given.
	* config/i386/i386.c (override_options): Add
	* config/i386/darwin.h (CC1_SPEC): Don't turn on -fPIC when
	-mkernel, -static or -mdynamic-no-pic is given.
	* config/darwin.opt (fapple-kext): Add.
	(mkernel): Add.
	* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add
	-fapple-kext, -findirect-virtual-calls, -fterminated-vtables and
	-mkernel support.
	(CPP_SPEC): Move defines for __DYNAMIC__ and __STATIC__ from here...
	(SUBTARGET_ATTRIBUTE_TABLE): Add apple_kext_compatibility.
	(flag_mkernel): Add.
	(flag_apple_kext): Add.
	* config/darwin.c (darwin_handle_kext_attribute): Add.
	(darwin_binds_local_p): Add partial support for rebinding vtables
	in kexts.
	(darwin_kextabi_p): Add.
	(darwin_override_options): Add.
	* config/darwin-protos.h (darwin_handle_kext_attribute): Add.
	(darwin_kextabi_p): Add.
	(darwin_override_options): Add.
	* config/darwin-c.c (darwin_cpp_builtins): ... move defines for
	__DYNAMIC__ and __STATIC__ here.

2006-09-11  Geoffrey Keating  <>

	* config/darwin.h (PREFERRED_DEBUGGING_TYPE): Set to DWARF2_DEBUG.

2006-09-01  Geoffrey Keating  <>

	* config/darwin.h (LINK_COMMAND_SPEC): Don't do weird things with -@.
	Call dsymutil when compiling and linking one or more source files
	in one step.

2006-09-20  Eric Christopher  <>

	Radar 4632262
	* config/i386/i386.c (x86_fisttp): Remove.
	* config/i386/i386.h (x86_fisttp): Ditto.
        (TARGET_FISTTP): Ditto.

2005-06-16  Joseph S. Myers  <>

	* (cc1-checksum.c): Use
	build/genchecksum$(build_exeext), not build/genchecksum$(exeext).

2006-08-16  Mike Stump  <>

	* doc/invoke.texi (-Wno-deprecated-declarations): Fixup use of pxref.
	* doc/cppopts.texi (-MD): Likewise.

2005-10-31  Jan Hubicka  <>

	Radar 4651177
	PR target/20928
	* i386.c (legitimize_pic_address): Deal with large immediates.

2006-07-20  Eric Christopher  <>

        PR target/26877
	Radar 4639953
	* config/i386/i386.h (OPTION_DEFAULT_SPECS): Reorder.

2006-07-05  Mike Stump  <>

	* doc/invoke.texi (Invoking G++): Clarify prose for g++.

2006-06-02  Geoffrey Keating  <>

	Radar 4508814
	* config/rs6000/host-darwin.c (sigaltstack): Protect prototype with
	(MC_FLD): New.
	(segv_handler): Use MC_FLD.
	* Check for a sigaltstack declaration.
	* configure: Regenerate.
	* Regenerate.

2005-04-20  Michael Pogue  <>
	    Joseph S. Myers  <>

	Radar 2883585
	* c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
	* c-typeck.c (build_c_cast): Check these options.
	* doc/invoke.texi: Document these options.

2006-05-16  Geoffrey Keating  <>

	Radar 4550526
	* c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on
	inline static functions in c99 mode.

2006-05-09  Geoffrey Keating  <>

	Radar 4134307
	PR 16622
	* doc/extend.texi (Inline): Update.
	* c-tree.h (struct language_function): Remove field 'extern_inline'.
	* c-decl.c (current_extern_inline): Delete.
	(pop_scope): Adjust test for an undefined nested function.
	Add warning about undeclared inline function.
	(diagnose_mismatched_decls): Update comments.  Disallow overriding
	of inline functions in a translation unit in C99.  Allow inline
	declarations in C99 at any time.
	(merge_decls): Boolize variables.  Handle C99 'extern inline'
	(grokdeclarator): Set DECL_EXTERNAL here for functions.  Handle
	C99 inline semantics.
	(start_function): Don't clear current_extern_inline.  Don't set
	(c_push_function_context): Don't push current_extern_inline.
	(c_pop_function_context): Don't restore current_extern_inline.

2006-05-04  Geoffrey Keating  <>

	Radar 4134307
	PR 11377
	* c-typeck.c (build_external_ref): Warn about static variables
	used in extern inline functions.
	* c-decl.c (start_decl): Warn about static variables declared
	in extern inline functions.

2006-05-18  Mike Stump  <>

	Radar 4336222
	Fix up vla, vm and [*] sematics.

	PR c/18740
	PR c/7948
	PR c/25802
	PR c/27673
	* c-tree.h (struct c_arg_info): Add had_vla_unspec.
	(c_vla_unspec_p): Add.
	(c_vla_type_p): Add.
	* c-decl.c (struct c_scope): Add had_vla_unspec.
	(build_array_declarator): Add support for [*].
	(grokdeclarator): Likewise.
	(grokparms): Likewise.
	(get_parm_info): Likewise.
	* c-objc-common.c (c_vla_unspec_p): Likewise.
	* c-objc-common.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Likewise.
	* c-parser.c (c_parser_typeof_specifier): Evaluate arguments to
	typeof when argument is a variably modified type not inside sizeof or alignof.
	(c_parser_direct_declarator_inner): Propagate errors.
	(c_parser_sizeof_expression): Add support for [*].
	(c_parser_parms_declarator): Initialize had_vla_unspec.
	(c_parser_parms_list_declarator): Likewise.
	* c-typeck.c (c_vla_type_p): Add.
	(composite_type): Add support for vla compositing.
	(comptypes_internal): Add support for vla compatibility.
	(c_expr_sizeof_expr): Evaluate vla arguments.
	* tree.c (variably_modified_type_p): Update comment for [*].

2005-12-01  Geoffrey Keating  <>

	Radar 4096183
	* config/t-slibgcc-darwin (SHLIB_LINK): Use -single_module rather
	than -flat_namespace.

2006-10-10  Mark Mitchell  <>

	Radar 4484060
	PR c++/24302
	* toplev.c (check_global_declarations): Check anonymous
	decl name.

2006-06-11  Eric Christopher  <>

	Radar 4581948
	PR middle-end/27948
	* stor-layout.c (place_field): Remove check for
	remaining_in_alignment when aligning at the end of a run.

2006-05-08  Eric Christopher  <>

	Radar 4537881
	* unwind-dw2-fde-darwin.c (examine_objects): Only check data
	section for ppc.

2006-04-25  Eric Christopher  <>

	Radar 4529978
	with #ifndef/#endif.
	* config/darwin-c.c (darwin_ms_struct): New.
	(darwin_pragma_ms_struct): Ditto.
	(darwin_set_default_type_attributes): Ditto.
	* config/darwin-protos.h (darwin_pragma_ms_struct): Declare.
	Register ms_struct pragma.
	* config/i386/darwin.h (REGISTER_TARGET_PRAGMAS): Declare.
	* config/rs6000/rs6000.c (rs6000_set_default_type_attributes): Call
	darwin_set_default_type_attributes if TARGET_MACHO.

2006-04-25  Geoffrey Keating  <>

	Radar 4498201
	* dwarf2out.c (size_of_locs): Don't fill dw_loc_addr if there
	are no branches.

	Radar 4498201
	* dwarf2asm.c (dw2_asm_output_data): Don't generate RTL just
	to print an integer.

2006-04-24  Geoffrey Keating  <>

	Radar 4498201
	* dwarf2out.c (verify_marks_clear): New.
	(prune_unused_types): Call verify_marks_clear initially, not

2006-04-21  Geoffrey Keating  <>

	Radar 4498201
	* dwarf2out.c (struct die_struct): Document that die_sib makes
	a circular linked list.
	(reverse_die_lists): Delete.
	(reverse_all_dies): Delete.
	(add_dwarf_attr): Correct documentation.
	(remove_child_with_prev): New.
	(remove_child_TAG): Update for change to die_struct, use
	(add_child_die): Update for change to die_struct.
	(splice_child_die): Use remove_child_with_prev and add_child_die.
	(print_die): Use FOR_EACH_CHILD.
	(die_checksum): Likewise.
	(assign_symbol_names): Likewise.
	(output_location_lists): Likewise.
	(build_abbrev_table): Likewise.
	(calc_die_sizes): Likewise.
	(mark_dies): Likewise.
	(unmark_dies): Likewise.
	(unmark_all_dies): Likewise.
	(output_die): Likewise.
	(prune_unused_types_mark): Likewise.
	(prune_unused_types_walk): Likewise.
	(same_die_p): Update for change to die_struct.
	(break_out_includes): Likewise.
	(prune_unused_types_prune): Likewise.
	(add_sibling_attributes): Use FOR_EACH_CHILD, simplify logic.
	(prune_unmark_dies): Use FOR_EACH_CHILD, don't clear die_mark if
	it's already clear.
	(dwarf2out_finish): Don't call reverse_all_dies.

2006-04-04  Eric Christopher  <>

	Radar 4525014
	* config/rs6000/rs6000.c (TARGET_MS_BITFIELD_LAYOUT_P): Define.
	(rs6000_handle_struct_attribute): New.
	(rs6000_ms_bitfield_layout_p): Ditto.

2006-04-17  Geoffrey Keating  <>

	Radar 4498201
	* dwarf2out.c (free_AT): Delete.
	(remove_AT): Update string ref counts.
	(remove_child_TAG): Don't call free_die.
	(free_die): Delete.
	(break_out_includes): Don't call free_die on DW_TAG_GNU_BINCL
	(prune_unused_types_walk_attribs): Reset string refcounts.
	(prune_unused_types_update_strings): New.
	(prune_unused_types_prune): Don't make unnecessary stores.  Don't
	call free_die.  Do call prune_unused_types_update_strings.
	(prune_unused_types): Empty debug_str_hash.

2006-04-10  Geoffrey Keating  <>

	Radar 4498201
	* dwarf2out.c (struct dw_attr_struct): Remove dw_attr_next.
	Declare VECs of this type.
	(struct die_struct): Make field die_attr a VEC of dw_attr_struct.
	(remove_children): Delete.
	(add_dwarf_attr): Use VEC routines.
	(add_AT_flag): Update for changes to add_dwarf_attr.
	(add_AT_int): Likewise.
	(add_AT_unsigned): Likewise.
	(add_AT_long_long): Likewise.
	(add_AT_vec): Likewise.
	(add_AT_string): Likewise.
	(add_AT_die_ref): Likewise.
	(add_AT_fde_ref): Likewise.
	(add_AT_loc): Likewise.
	(add_AT_loc_list): Likewise.
	(add_AT_addr): Likewise.
	(add_AT_lbl_id): Likewise.
	(add_AT_lineptr): Likewise.
	(add_AT_macptr): Likewise.
	(add_AT_offset): Likewise.
	(add_AT_range_list): Likewise.
	(get_AT): Use VEC_iterate.
	(remove_AT): Use VEC_ordered_remove.
	(free_die): Fold remove_children into here; have it use VEC_iterate.
	(print_die): Use VEC_iterate on attrs.
	(reverse_die_lists): Don't reverse attr lists.
	(die_checksum): Use VEC_iterate on attrs.
	(same_die_p): Likewise.
	(output_location_lists): Likewise.
	(build_abbrev_table): Likewise.
	(size_of_die): Likewise.
	(unmark_all_dies): Likewise.
	(output_abbrev_section): Likewise.
	(output_die): Likewise.
	(prune_unused_types_walk_attribs): Likewise.

2006-04-04  Geoffrey Keating  <>

	Radar 4502209
	* config/darwin-crt3.c (atexit): Pass &__dso_handle rather than
	NULL for dso parameter to atexit_common.

	Radar 4383613
	* doc/extend.texi (Function Attributes): Rewrite visibility
	attribute documentation.
	* doc/invoke.texi (C++ Dialect Options): Rewrite
	-fvisibility-inlines-hidden documentation to describe something
	entirely different, although in practise compatible.
	(Code Gen Options): Warn about system headers in -fvisibility=

2006-03-22  Eric Christopher  <>

	Radar 4419200
	2006-01-27  H.J. Lu  <>

	* config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
	(_mm_cvtsi128_si64): Likewise.
	(_mm_cvtsd_si64): Likewise.
	(_mm_cvttsd_si64): Likewise.
	(_mm_cvtsi64_sd): Likewise.
	(_mm_cvtsi64_si128): Likewise.
	* config/i386/mmintrin.h (_m_from_int64): Likewise.
	(_mm_cvtsi64_m64): Likewise.
	(_m_to_int64): Likewise.
	(_mm_cvtm64_si64): Likewise.
	* config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
	(_mm_cvttss_si64): Likewise.
	(_mm_cvtsi64_ss): Likewise.
	(_mm_cvtss_f32): Likewise.

2006-03-30  Geoffrey Keating  <>

	Radar 4495520
	* config/darwin.h (LINK_COMMAND_SPEC): Don't try to protect %S with

2006-03-24  Geoffrey Keating  <>

	Radar 4485597
	* dwarf2out.c (is_c_family): Understand new DWARF3 language types.
	(is_cxx): Likewise.
	(gen_compile_unit_die): Use new language types for Objective-C and
	(dwarf2out_decl): Use is_cxx rather than testing explicitly against

2006-03-01  Jakub Jelinek  <>

	* dwarf2.h (DW_TAG_condition, DW_TAG_shared_type): New constants
	from DWARF 3.
	(DW_AT_description, DW_AT_binary_scale, DW_AT_decimal_scale,
	DW_AT_small, DW_AT_decimal_sign, DW_AT_digit_count,
	DW_AT_picture_string, DW_AT_mutable, DW_AT_threads_scaled,
	DW_AT_explicit, DW_AT_object_pointer, DW_AT_endianity,
	DW_AT_elemental, DW_AT_pure, DW_AT_recursive): New.
	(DW_OP_form_tls_address, DW_OP_call_frame_cfa, DW_OP_bit_piece): New.
	(DW_ATE_packed_decimal, DW_ATE_numeric_string, DW_ATE_edited,
	DW_ATE_signed_fixed, DW_ATE_unsigned_fixed): New.
	(DW_DS_unsigned, DW_DS_leading_overpunch, DW_DS_trailing_overpunch,
	DW_DS_leading_separate, DW_DS_trailing_separate): New.
	(DW_END_default, DW_END_big, DW_END_little): New.
	(DW_END_lo_user, DW_END_hi_user): Define.
	(DW_LNE_lo_user, DW_LNE_hi_user): Define.
	(DW_CFA_val_offset, DW_CFA_val_offset_sf, DW_CFA_val_expression): New.
	DW_LANG_D): New.

2006-03-15  Geoffrey Keating  <>

	Radar 3992198
	* config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.
	Do switch on default_use_cxa_atexit.
	(powerpc*-*-darwin*): Build crt2.o on powerpc.
	* config/darwin-crt3.o: New.
	* config/darwin.h (LINK_SPEC): If -shared-libgcc, make linker default
	to 10.3.  Pass '-multiply_defined suppress' if crt3.o is in use.
	(STARTFILE_SPEC): Add crt3.o when -shared-libgcc and appropriate
	OS version.
	* config/rs6000/t-darwin: Move crt2.o building to here.
	* config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Update
	Mac OS version for using __cxa_get_exception_ptr.  Don't test versions
	of __cxa_atexit.

2006-03-07  Geoffrey Keating  <>

	Radar 4466819
	* dwarf2out.c (DWARF2_FRAME_REG_OUT): Move up in file.
	(expand_builtin_dwarf_sp_column): Call DWARF2_FRAME_REG_OUT.
	(expand_builtin_init_dwarf_reg_sizes): Likewise.

	Radar 4446590
	* config/i386/i386.c (ix86_delegitimize_address): Handle Darwin
	addresses with offsets; reorganize.

2006-03-02  Eric Christopher  <>

	* config/i386/i386.c (machopic_output_stub): Add indirection to

2006-02-24  Geoffrey Keating  <>

	Radar 4086777
	* doc/tm.texi (Run-time Target): Document C_COMMON_OVERRIDE_OPTIONS.
	* doc/invoke.texi (C++ Dialect Options): Document
	* Define DEFAULT_USE_CXA_ATEXIT to 2 not 1.
	* configure: Regenerate.
	* c.opt (fuse-cxa-get-exception-ptr): New.
	* c-opts.c (c_common_handle_option): Handle
	* c-common.c (flag_use_cxa_atexit): Update documentation.
	(flag_use_cxa_get_exception_ptr): New.
	* c-common.h (flag_use_cxa_get_exception_ptr): New.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Improve

2006-02-21  Geoffrey Keating  <>

	Radar 4439051
	* config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.

2006-02-13  Geoffrey Keating  <>

	Radar 4433453
	* dwarf2out.c (base_type_die): Don't add AT_name here.
	(subrange_type_die): Don't add AT_name here.
	(modified_type_die): Rearrange code flow.  Do add AT_name here.

2006-02-10  Geoffrey Keating  <>

	Radar 4439051
	* config/i386/darwin.h (DBX_REGISTER_NUMBER): Define.

2006-02-07  Geoffrey Keating  <>

	Radar 4430041
	* config/i386/i386.c (ix86_delegitimize_address): Support Darwin
	PIC addresses.

2006-01-06  Eric Christopher  <>

        * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
        (TARGET_UNWIND_EMIT): Fix spelling.
        * target.h (gcc_target): Add except_table_label.
        * except.c (output_function_exception_table): Use.
        * varasm.c (default_emit_except_table_label): New.
        * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
        (asm_out): Add here.
        * output.h (default_emit_except_table_label): Prototype.
        * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
        * config/darwin.c (darwin_emit_except_table_label): Define.
        * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.

2006-01-02  Geoffrey Keating  <>

	* dwarf2out.c (have_switched_text_section): Delete.
	(have_multiple_function_sections): New.
	(have_location_lists): Make 'bool'.
	(add_AT_loc_list): Use 'true' not '1'.
	(dwarf2out_switch_text_section): Set have_multiple_function_sections.
	(output_loc_list): Use have_multiple_function_sections.
	(output_ranges): Likewise.
	(dwarf2out_begin_function): Set have_multiple_function_sections if
	(dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
	Check function_section rather than DECL_SECTION_NAME.
	(dwarf2out_finish): Use have_multiple_function_sections.
	Don't clear have_location_lists.

2005-12-06  Geoffrey Keating  <>

	* config/darwin.h (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): New.

2005-12-05  Geoffrey Keating  <>

	* config/darwin.c (machopic_select_section): It's not defined
	as weak if it's only marked as weak_import.

	* config/rs6000/host-darwin.c (segv_handler): Unblock SEGV so
	we don't go into an infinite loop.

2005-11-15  Mike Stump  <>

	* c-decl.c (lookup_name_two): Add.
	* c-tree.h (lookup_name_two): Likewise.
	* c-common.c (handle_cleanup_attribute): Use lookup_name_two instead.
	* config/darwin-c.c (darwin_pragma_unused): Likewise.

2005-11-14  Mike Stump  <>

	* config/i386/i386.c (override_options): -masm=intel isn't
	supported on darwin.
	* doc/invoke.texi (i386 and x86-64 Options): Likewise.

2005-10-06  Geoffrey Keating  <>

	* config/t-slibgcc-darwin (SHLIB_MAPFILES): Use '+='.

2005-10-04  Geoffrey Keating  <>

	* doc/invoke.texi (Option Summary): Correct spelling
	of -mmacosx-version-min.

2005-09-30  Geoffrey Keating  <>

	* config/t-slibgcc-darwin (libgcc_s_%.dylib): Remove old symlinks
	before creating new ones.  Do symlinks before creating the actual

	* config/t-slibgcc-darwin (libgcc_s_%.dylib): Use --print-multi-lib
	to work out which multilibs are actually being built.

2005-09-28  Geoffrey Keating  <>

	(stage1-start): Delete old libgcc and libunwind before moving
	anything into the stage directory.
	(stage2-start): Likewise.
	(stage3-start): Likewise.
	(stage4-start): Likewise.
	(stageprofile-start): Likewise.
	(stagefeedback-start): Likewise.
	* config.gcc (*-*-darwin*): Automatically use CPU-specific darwin.h
	header in tm_file and CPU-specific t-darwin in tmake_file.
	(i[34567]86-*-darwin*): Don't change tm_file.
	(powerpc-*-darwin*): Don't change tm_file or tmake_file.
	* config/darwin.h (REAL_LIBGCC_SPEC): Rewrite to use proper libgcc
	shared library stub for target OS version.
	* config/t-slibgcc-darwin (SHLIB_SOLINK): Delete.
	(libgcc_s.%.dylib): New.
	(LIBGCC): Define.
	(install-darwin-libgcc-stubs): New.
	(INSTALL_LIBGCC): New append.
	* config/i386/darwin-libgcc.10.4.ver: New.
	* config/i386/darwin-libgcc.10.5.ver: New.
	* config/i386/t-darwin: New.
	* config/rs6000/darwin-libgcc.10.4.ver: New.
	* config/rs6000/darwin-libgcc.10.5.ver: New.
	* config/rs6000/darwin.h (REAL_LIBGCC_SPEC): Delete.
	* config/rs6000/t-darwin (SHLIB_VERPFX): Define.

2005-09-01  Richard Henderson  <>

        PR 23668
	Radar 4232562
        * config/i386/i386.c (ix86_expand_vector_init_one_var): Restore
        conversion to CONST_VECTOR.

2005-08-29  Geoffrey Keating  <>

	Radar 4232562
        * config/i386/i386.c (ix86_expand_vector_init_one_var): Don't modify
        parts of 'vals'.

2005-09-06  Jakub Jelinek  <>

        PR rtl-optimization/23098
        Radar 4168635

        * cse.c (fold_rtx_mem): Call delegitimize_address target hook.
        * simplify-rtx.c (constant_pool_reference_p): New function.
        * rtl.h (constant_pool_reference_p): New prototype.
        * config/i386/ (pushf split, mov[sdx]f split): Use
        constant_pool_reference_p in condition and
        avoid_constant_pool_reference in preparation statements.

2005-08-31  Geoffrey Keating  <>

	* doc/install.texi (Specific): Update cctools version required
	for full functionality.
	* config/darwin.h (LINK_SPEC): Pass -mmacosx-version-min to the
	linkers as -macosx_version_min.

2005-07-07  Geoffrey Keating  <>

	* config.gcc (*-*-darwin*): Only one target-specific header file
	for generic darwin.
	(powerpc-*-darwin*): Add version-specific header files.
	* (gcc_AC_CHECK_DECLS): Add strverscmp.
	* Regenerate.
	* configure: Regenerate.
	* gcc.c: Include xregex.h.
	(version_compare_spec_function): New.
	(spec_function): Add version-compare.
	(replace_outfile_spec_function): Reformat comment.
	(compare_version_strings): New.
	* config/darwin-c.c (version_as_macro): New.
	(builtin_define): New.
	(darwin_cpp_builtins): New.
	* config/darwin-protos.h (darwin_cpp_builtins): New.
	* config/darwin.h (CPP_SPEC): Don't define APPLE_CC here.
	(LIB_SPEC): Make unconditional, update comment.
	* config/darwin.opt: Sort.
	(mmacosx-version-min=): New.
	* config/darwin7.h: Delete.
	* config/darwin8.h: Delete.
	* config/i386/darwin.h (): Call darwin_cpp_builtins.
	* config/rs6000/darwin.h (): Call darwin_cpp_builtins.
	* config/rs6000/darwin7.h: New.
	* config/rs6000/darwin8.h: New.
	* doc/invoke.texi (Darwin Options): Add -mmacosx-version-min=
	(-mmacosx-version-min): Document.

2005-08-31  Fariborz Jahanian <>

        * expr.c (expand_expr_real_1): Compare size of address
        mode to target's address mode size in deciding expansion of
        the constant address.

2005-07-19  Richard Henderson  <>

	PR tree-opt/22278
	* gimplify.c (gimplify_expr): Use main variant type for the temp
	destination for a discarded volatile read.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't elide
	casts between non-void types that change volatility.

2005-07-26  Diego Novillo  <>

	PR 22591
	* tree-ssa-alias.c (may_alias_p): Remove shortcut that tests
	whether a pointer of type T * may point to objects of type T *.

2005-07-08 Geoffrey Keating  <>

	* tree-inline.c (expand_call_inline): Prevent 'may reach end'
	warning in system headers.

2005-06-16  Geoffrey Keating  <>

	* config/t-slibgcc-darwin (SHLIB_SOVERSION): Rename from
	(SHLIB_VERSTRING): Update to compensate.
	(SHLIB_SONAME): Just use one '.' in the name.

2005-05-18  Geoffrey Keating  <>

	* dummy-checksum.c: New.
	* genchecksum.c: New.
	* c.opt (print_pch_checksum): New flag.
	* c-pch.c (struct c_pch_validity): Make much shorter.
	(no_checksum): New.
	(host_machine): Remove.
	(target_machine): Remove.
	(get_ident): Change PCH version number.
	(pch_init): When -fverbose-asm, print out the compiler fingerprint.
	Don't put triplets or version string in PCH validity data.
	Do put the compiler checksum in the validity data.
	(c_common_valid_pch): Don't check triplets or version string.  Do
	check checksum.
	(c_common_print_pch_checksum): New.
	* c-opts.c (c_common_handle_option): Add OPT_print_pch_checksum.
	Print fingerprint with -v.
	* c-common.h (c_common_print_pch_checksum): New.
	(executable_checksum): New.
	* (STAGEMOVESTUFF): Add cc1*-dummy, *-checksum.c.
	(cc1-dummy): New rule.
	(cc1-checksum.c): New rule.
	(cc1-checksum.o): New rule.
	(cc1): Add checksum support.
	(build/genchecksum): New.
	(build/genchecksum.o): New.
	(dummy-checksum.o): New.
	(genobjnames): Add genchecksum.o.
	(mostlyclean): Remove *-checksum.c.
	(gnucompare): Add libgcc to list of directories checked.
	Make comparison problems in libgcc/ and with checksum files only
	be warnings.
	* doc/invoke.texi (Precompiled Headers): Remove caution.
	Document that it must be the exact same binary.  Add a few
	known-safe flags to the list.

2005-06-13  Geoffrey Keating  <>

	* (install-man): Doesn't really depend on installdirs.
	(various rules for installing manpages): Do depend on installdirs.

2005-06-03  Geoffrey Keating  <>

	* config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
	when -isysroot passed.

2005-07-07  Release Manager

	* GCC 4.0.1 released.

2005-07-01  Jeff Law  <>

	* tree-ssa-dom.c (find_equivalent_equality_comparison): Do not
	a eliminate type conversion which feeds an equality comparison
	if the original type or either operand in the comparison is a
	function pointer.

2005-06-30  Eric Botcazou  <>

	PR target/22260
	* config/sparc/sparc.c (emit_and_preserve): Add 2nd register.
	Preserve the 2nd register too, if present.
	(sparc_output_mi_thunk) <PIC case>: Preserve the PIC register too.
	Adjust call to emit_and_preserve.

2005-06-24  Mark Mitchell  <>

	PR 22171
	* tree-ssa-operands (get_expr_operands): Check s_ann for NULL
	before use.

2005-06-23  Mark Mitchell  <>

	2005-06-13  Zdenek Dvorak  <>
	PR middle-end/21985
	* fold-const.c (split_address_to_core_and_offset): Always return
	the address of the base object.

	PR 22000
	* tree-ssa-operands.c (get_expr_operands): Check the volatility of
	the FIELD_DECL and set s_ann->has_volatile_ops accordingly.

2005-06-20  Jan Beulich  <>

	* config/i386/netware-libgcc.def: Update copyright.
	* config/i386/netware-libgcc.exp (__divdc3, __divsc3, __divxc3,
	__muldc3, __mulsc3, __mulxc3, __powidf2, __powisf2, __powixf2): Add.
	* config/i386/netware.c (gen_stdcall_decoration,
	gen_fastcall_decoration): Merge into ...
	(gen_stdcall_or_fastcall_decoration): ... this. Adjust to match
	WinNT's changes.
	(gen_regparm_prefix): Adjust to match i386_nlm_encode_section_info.
	(i386_nlm_encode_section_info): Adjust to match WinNT's changes.
	* config/i386/t-nwld (SHLIB_LINK): Also create libgcc.imp alias of
	libgcc_s.imp. Use 'expr' rather than $(()) shell expressions.
	* gthr-nks.h (__gthread_objc_mutex_allocate): Kill another dubious

2005-06-17  Jakub Jelinek  <>

	PR middle-end/21850
	* tree.c (get_unwidened): Stop at NOP_EXPR/CONVERT_EXPR that convert
	from vector types.

2005-06-14  Jakub Jelinek  <>

	PR tree-optimization/22043
	* gimplify.c (gimplify_init_constructor): If num_type_elements < 0
	for a constant-sized object, set cleared as well.

2005-06-14  Eric Botcazou  <>

	PR target/20301
	* config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
	unsigned index numbers.

2005-06-08  Zdenek Dvorak  <>

	PR tree-optimization/21171
	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not
	record address uses if the reference is volatile.

2005-06-08  Eric Botcazou  <>

	PR target/21889
	* config/sparc/sol2.h (ASM_OUTPUT_DWARF_DTPREL): Undefine.
	* config/sparc/sol2-gas.h (ASM_OUTPUT_DWARF_DTPREL): Redefine.

2005-06-08  Andrew Pinski  <>

	PR tree-opt/19768
	* tree-ssa-dse.c: Revert accidental committed patch.

2005-06-07  Richard Henderson  <>

	PR rtl-opt/21528
	* rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.

2005-06-07  Steven Bosscher  <>

	PR tree-optimization/21847
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
	-fnon-call-exceptions, also mark statements inherently
	necessary if they may throw.

2005-06-06  Jakub Jelinek  <>

	* intl.h (G_): New macro.
	* rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
	instead of msgid for argument name.
	* tree-ssa.c (warn_uninit): Likewise.
	* config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
	* config/darwin-c.c (BAD): Likewise.
	* config/c4x/c4x-c.c (BAD): Likewise.
	* c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
	* c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
	* c-common.c (c_parse_error): Likewise.
	* diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
	pedwarn, error, sorry, fatal_error, internal_error): Likewise.
	(fnotice): Use cmsgid instead of msgid for argument name.
	* gcov.c (fnotice): Likewise.
	* protoize.c (notice): Likewise.
	* final.c (output_operand_lossage): Likewise.
	* gcc.c (fatal, notice): Likewise.
	(error): Use gmsgid instead of msgid for argument name.
	* collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
	of msgid for argument name.
	(error): Use gmsgid instead of msgid for argument name.
	* c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
	instead of N_().
	* c-typeck.c (readonly_error, convert_for_assignment): Likewise.
	* tree-inline.c (inline_forbidden_p_1): Likewise.
	* ABOUT-GCC-NLS: Require gettext 0.14.5 or later.  Mention the new
	conventions for marking translations.
	* doc/install.texi: Mention gettext 0.14.5 or later requirement.

2005-06-06  Sebastian Pop <>

	PR tree-optimization/20742
	* params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
	default value 20.
	* tree-chrec.c: Depend on params.h.  Replace build with buildN,
	and fold build with fold_buildN.
	(chrec_fold_plus_1): Fail with a chrec_don_know when the size of
	the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
	(tree_contains_chrecs): Compute an estimation of the size of the
	given expression.
	* tree-chrec.h (tree_contains_chrecs): Modify its declaration.
	(tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
	* tree-scalar-evolution.c (simple_iv): Ditto.
	* doc/invoke.texi (scev-max-expr-size): Documented.

2005-06-04  Richard Henderson  <>

        PR target/21888
        * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
        until we've passed initial ldgp.

2005-06-04  David Edelsohn  <>

	* config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.

2005-06-04  Joseph S. Myers  <>

	PR c/21873
	* c-typeck.c (push_init_level): Don't pop levels without braces if
	implicit == 1.

2005-06-03  Joseph S. Myers  <>

	PR c/21879
	* c-decl.c (start_function): Restore label_context_stack_se and
	label_context_stack_vm  if returning with an error.

2005-06-03  Gabriel Dos Reis  <>

	* Check declaration for asprintf, needed by
	* configure: Regenerate.
	* Likewise.

2005-06-03  Andrew Pinski  <>

	* tree.c (build_common_builtin_nodes): Fix the return type on

2005-06-01  Jakub Jelinek  <>

	PR c/21536
	PR c/20760
	* gimplify.c (gimplify_decl_expr): Call gimplify_type_sizes
	on variable sizes types if a decl is a pointer to a VLA.
	(gimplify_type_sizes): Handle POINTER_TYPE and REFERENCE_TYPE.
	Call gimplify_type_sizes on aggregate fields.  Prevent infinite

	* config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps,
	_mm_set_ps, _mm_setr_ps): Add __extension__.
	* config/i386/emmintrin.h (_mm_set_sd, _mm_set1_pd, _mm_set_pd,
	_mm_setr_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi64x,
	_mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128):
	(_mm_clflush): Don't use return in void function.

	* config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128,
	_mm_castps_pd, _mm_castps_si128, _mm_castsi128_ps, _mm_castsi128_pd):
	Use __inline instead of inline.

2005-06-01  Richard Henderson  <>

	*, configure: Rebuild.
	* config/alpha/alpha.c (print_operand): Add 'j'.
	* (divmodsi_internal_er_1): Use it.
	(divmoddi_internal_er_1): Likewise.

2005-05-31  Zdenek Dvorak  <>

	PR tree-optimization/21817
	* tree-ssa-loop-im.c (for_each_index): Handle VECTOR_CST.

2005-05-31  Andrew Pinski  <>

	PR middle-end/20931
	PR middle-end/20946
	* fold-const.c (fold_checksum_tree): Copy types also if
	Don't call fold_checksum_tree for TREE_LIST's TREE_CHAIN
	Tail recurse TREE_LIST's TREE_CHAIN.

2005-05-31  Eric Botcazou  <>

	* doc/install.texi (sparc-sun-solaris2*): Update note
	about Sun bug 4910101.
	(sparc-sun-solaris2.7): Document bootstrap
	failure with Sun WorkShop 6 99/08/18 as.

2005-05-27  Richard Guenther  <>

	PR middle-end/21595
	* builtins.c (fold_builtin_constant_p): Handle
	&"string cst"[0] as constant.

2005-05-26  Ulrich Weigand  <>

	Backport from mainline:
	2005-05-26  Ian Lance Taylor  <>
	* reload1.c (verify_initial_elim_offsets): Add braces to avoid
	having a declaration after a statement.

2005-05-26  Jakub Jelinek  <>

	PR target/21716
	* reg-stack.c (swap_rtx_condition): Don't crash if %ax user was not
	found in the basic block and last insn in the basic block is not
	INSN_P.  Remove explicit unspec numbers that are no longer valid
	from comments.

2005-05-26  Ralf Corsepius  <>

	* config/rs6000/t-rtems: Remove roe multilib variant.

2005-05-25  Jakub Jelinek  <>

	PR middle-end/21492
	* cfgcleanup.c (try_crossjump_to_edge): update_forwarder_flag for
	src2 if src2 has been split.

2005-05-25  Ulrich Weigand  <>

	* reload1.c (verify_initial_elim_offsets): Return boolean status
	instead of aborting.
	(reload): Adapt verify_initial_elim_offsets call site.  Restart
	main loop if some initial elimination offsets changed.

2005-05-24  Kazuhiro Inaoka <>

	* config/m32r/m32r.c (m32r_expand_block_move):  Return 0 if
	nothing was done.
	* config/m32r/ (movmemsi):  If m32r_expand_block_move did
	nothing then FAIL.
	* config/m32r/m32r/m32r-protos.h  (m32r_expand_block_move): Update

2005-05-23  Andreas Krebbel  <>

	* config/s390/s390.c (s390_optimize_prologue): Don't replace an insn
	saving less registers than the replacement.

2005-05-23  Jan Beulich  <>

	* gthr-posix.h (__gthread_recursive_mutex_init_function): Add
	missing return statement.

2005-05-21  Andrew Pinski  <>

	PR middle-end/21331
	PR tree-opt/21293
	Backport from the mainline:
	2005-03-14  Zdenek Dvorak  <>
	* tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
	* tree-gimple.c (is_gimple_min_invariant): Consider overflowed
	constants invariant.

2005-05-19  Richard Henderson  <>

	PR target/21390
	* config/alpha/alpha.c (alpha_emit_conditional_branch): Move
	TFmode code swapping ...
	(alpha_emit_xfloating_compare): ... here.
	(alpha_emit_setcc): Update to match.
	(alpha_lookup_xfloating_lib_func): Assert TARGET_HAS_XFLOATING_LIBS.

2005-05-19  Jie Zhang  <>
	    Bernd Schmidt  <>

	* config/bfin/bfin.c (branch_dest): Add comment why it's
	* config/bfin/ (attr "length" default): Change the offset of
	forward conditional branch of length 4 from 4096 to 4092.

2005-05-18  Richard Henderson  <>

	PR target/21657
	* config/ia64/ia64.c (ia64_expand_tls_address): Remove extra
	memory indirection in local-dynamic case.

2005-05-18  Richard Henderson  <>

	PR target/21632
	* config/ia64/ia64.c (ia64_extra_constraint) <'T'>: Use

2005-05-18  Eric Botcazou  <>

	* config/sparc/sol2.h (TARGET_DEFAULT): Add back MASK_APP_REGS.
	* config/sparc/sol2-64.h (TARGET_DEFAULT): Likewise.
	* config/sparc/sp-elf.h (TARGET_DEFAULT): Delete.
	* doc/invoke.texi (SPARC options): Document that -mapp-regs is
	the default on Solaris too.

2005-05-17  Jakub Jelinek  <>

	PR tree-optimization/21610
	* c-typeck.c (decl_constant_value_for_broken_optimization): If not
	returning DECL, call unshare_expr.

	* varasm.c (struct constant_descriptor_tree): Add hash field.
	(const_desc_hash): Just return hash field.
	(const_desc_eq): If hash values are different, return 0 immediately.
	(output_constant_def): Compute hash field of temporary key, use
	htab_find_slot_with_hash instead of htab_find_slot.  Set hash in
	newly built constant descriptor.
	(lookup_constant_def): Compute hash field of temporary key, use
	htab_find_with_hash instead of htab_find.

2005-05-16  Richard Henderson  <>

	PR target/21556
	* config/ia64/ (load_dtpmod, load_ltoff_dtpmod, load_dtprel,
	load_dtprel64, load_dtprel22, load_dtprel_gd, load_ltoff_dtprel,
	add_dtprel, add_dtprel14, add_dtprel22, load_tprel, load_tprel64,
	load_tprel22, load_tprel_ie, load_ltoff_tprel, add_tprel, add_tprel14,
	add_tprel22): Remove mode from symbolic operand.

2005-05-15  Mark Mitchell  <>

	2005-05-09  Mark Mitchell  <>
	PR 18655
	* dwarf2out.c (output_call_frame_info): Use DWARF2_FRAME_REG_OUT
	before outputting DWARF_FRAME_RETURN_COLUMN.

2005-05-15  H.J. Lu  <>

	PR target/21551
	* config/ia64/ia64.c (ia64_expand_move): Don't add addend twice.

2005-05-13  David Edelsohn  <>

	PR middle-end/21237
	* dojump.c (do_jump, MINUS_EXPR): Build NE_EXPR and fall through
	to NE_EXPR case.

2005-05-13  Richard Guenther  <>

	2005-05-11  Richard Guenther  <>
	* fold-const.c (fold_indirect_ref_1): Avoid removing
	NOP_EXPRs with type qualifiers like const.

2005-05-12  Daniel Berlin  <>

	Fix PR tree-optimization/21532
	* tree-ssa-pre.c (create_expression_by_pieces): stmt
	needs to go onto the inserted_exprs list.

2005-05-12  Richard Henderson  <>

	PR target/21412
	* config/ia64/ia64.c (TARGET_CANNOT_FORCE_CONST_MEM): New.
	(ia64_cannot_force_const_mem): New.
	(tls_symbolic_operand_type): New.
	(ia64_legitimate_constant_p): New.
	(ia64_expand_load_address): Return true on success.  Improve
	checks for when we should not split.
	(ia64_expand_tls_address): New addend operand.  Distribute it
	as appropriate to the tls_kind.  Delay referencing gp.
	(ia64_expand_move): Split symbolic addend as necessary.  Handle
	tls symbols with addends.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.h (CALL_REALLY_USED_REGISTERS): False for r0,
	p0, f0, f1, and r13.
	(LEGITIMATE_CONSTANT_P): Move to ia64_legitimate_constant_p.
	* config/ia64/ (UNSPEC_DTPMOD): New.
	(symbolic_operand splitter): Pass everything through
	ia64_expand_load_address and FAIL or DONE as appropriate.
	(load_fptr): Only accept after reload.
	(load_fptr_internal1, gprel64_offset, load_gprel64, load_symptr_high,
	load_symptr_low, load_ltoff_dtpmod,
	(load_dtpmod): New.
	(load_dtprel): Only accept tls symbols.
	(load_dtprel64, load_dtprel22): Likewise.
	(load_tprel, load_tprel64, load_tprel22): Likewise.
	(load_dtprel_gd, load_ltoff_dtprel, load_tprel_ie): New.
	(add_dtprel): Only accept tls symbols.  Canonicalize PLUS.
	(add_dtprel14, add_dtprel22): Likewise.
	(add_tprel, add_tprel14, add_tprel22): Likewise.
	* config/ia64/ (small_addr_symbolic_operand): New.
	(any_offset_symbol_operand, aligned_offset_symbol_operand): New.
	(got_symbolic_operand): Check CONST offsets.
	(tls_symbolic_operand, ld_tls_symbolic_operand): New.
	(ie_tls_symbolic_operand, le_tls_symbolic_operand): New.
	(move_operand): Don't handle tls here.  Check CONST offsets.

2005-05-11  James A. Morrison  <>

	PR tree-optimization/21085
	* fold-const (fold): Don't change X % -C to X % C if C has

2005-05-11  Richard Guenther  <>

	* fold-const.c (fold_indirect_ref_1): Avoid removing
	NOP_EXPRs with type qualifiers like const.

2005-05-11  Richard Henderson  <>

	PR c/21502
	* c-decl.c (finish_decl): Propagate the completed array type of
	a global variable into the binding.

2005-05-10  Eric Botcazou  <>

	* config/sparc/sparc.c (mem_min_alignment): Do not rely

2005-05-10  Joseph S. Myers  <>

	PR c/21342
	* c-decl.c (pushdecl): When there is a declaration in the current
	scope and the declarations are external linkage, check for
	compatibility with the type in the external scope and update the
	type in the external scope with the composite type information.
	Do not form a composite type of the new type and the visible type
	if they are incompatible.

2005-05-10  Michael Matz  <>

	from trunk:
	2005-04-28  James E Wilson  <>

	* config/i386/i386.h (HI_REGISTER_NAMES): Fix typos in comment.
	(ADDITIONAL_REGISTER_NAMES): Delete obsolete mmx register entries.

2005-05-10  Joseph S. Myers  <>

	PR other/21052
	* doc/extend.texi (Type Attributes): Correct example syntax.

2005-05-09  Joseph S. Myers  <>

	PR c/21160
	* doc/invoke.texi (-Wuninitialized): Update documentation.

2005-05-09  Richard Earnshaw  <>

	PR target/21397
	(arm_override_options): Use them instead of manifest constants.  Don't
	allow -march to override the -mtune setting.

2005-05-08  Jakub Jelinek  <>

	* config/ia64/ia64.c (ia64_override_options): Don't set
	ia64_flag_var_tracking and clear flag_var_tracking here...
	(ia64_file_start): ... but here.

2005-05-08  Stephane Carrez  <>

	* config/m68hc11/m68hc11.c (m68hc11_z_replacement): Use emit_insn_after
	when adding the save Z instruction so that it is part of the good BB.
	(reg_or_some_mem_operand): Do not allow the 68HC12 address indirect
	addressing mode as it is not supported by bset and bclr.
	(m68hc11_gen_movhi): Fix invalid generation of indexed indirect
	addressing with movw.
	(m68hc11_gen_movqi): Use pula and pulb instead of lda and ldb for
	* config/m68hc11/ ("movhi_const0"): Use this pattern only
	for 68HC11.
	("*movhi_68hc12"): Handle movhi_const0.
	("*subhi3", "subqi3"): Use general_operand for operand 1.
	("*subhi3_zext"): Likewise.

2005-05-08  Stephane Carrez  <>

	PR target/19051
	* config/m68hc11/ ("mulqi3"): Use general_operand for operand
	1 and fix constraints.
	("mulqihi3"): Use general_operand for operand 2.

2005-05-08  Richard Sandiford  <>

	PR target/21416
	* config/mips/mips.c (mips_emit_compare): Don't reverse UNGE and UNGT
	* config/mips/ (swapped_fcond): New code macro and attribute.
	(sgt_<mode>, sge_<mode>): Generalize to all members of swapped_fcond,
	including sunge_<mode> and sungt_<mode>.

2005-05-08  Stephane Carrez  <>

	PR target/16925
	* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Handle split of
	64-bit constants on 64-bit hosts.
	(m68hc11_split_logical): Simplify.
	(m68hc11_split_move): Likewise.

2005-05-07  Anthony Green  <>

	PR bootstrap/21403
	* (STMP_FIXPROTO): Fix [ ] consumption problem in
	* configure: Rebuilt.

2005-05-07  Joseph S. Myers  <>

	* config/pa/pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Do not define
	inappropriate feature test macros if flag_iso.

2005-05-07  Richard Henderson  <>

	PR target/21412
	* config/rs6000/rs6000.c (rs6000_emit_move): Look for tls addresses
	with constant offsets.

2005-05-06  Jakub Jelinek  <>

	PR rtl-optimization/21330
	* loop-unswitch.c (may_unswitch_on): Set *cinsn only when
	returning non-NULL.
	(unswitch_single_loop): Clear cinsn when retrying.

	PR c++/20961
	* varasm.c (merge_weak): Remove NEWDECL from WEAK_DECLS chain
	if both NEWDECL and OLDDECL are already weak.

2005-05-05  Jeff Law  <>

	PR tree-optimization/21380
	* tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
	thread through a block with no preds.

2005-05-05  Ralf Corsepius  <>

	* config.gcc (hppa1.1-*-rtems*): Obsolete.

2005-05-05  Ralf Corsepius  <>

	* config/rs6000/t-rtems (MULTILIB_NEW_EXCEPTIONS_ONLY):
	Exclude roe/603e multilib variants.

2005-05-04  Denis Chertykov  <>

	PR target/21284
	* config/avr/avr.c (avr_output_addr_vec_elt): Use special section
	for output.

2005-05-04  Gerald Pfeifer  <>

	* doc/contrib.texi (Contributors): Add Mostafa Hagog and Ayal Zaks.

2005-05-04  Jakub Jelinek  <>

	PR middle-end/21265
	* expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL.
	(clear_storage): Add argument.
	* expr.c (emit_block_move_via_libcall, clear_storage_via_libcall):
	Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to
	(emit_block_move): Handle BLOCK_OP_TAILCALL method.
	(clear_storage): Add method argument, handle BLOCK_OP_TAILCALL.
	(store_expr, store_constructor): Adjust callers.
	* builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL
	to emit_block_move if CALL_EXPR_TAILCALL (exp).
	(expand_builtin_memmove): Add ORIG_EXP argument, copy
	(expand_builtin_bcopy): Replace ARGLIST and TYPE arguments
	with EXP.  Pass EXP to expand_builtin_memmove.
	(expand_builtin_memset): Add ORIG_EXP argument, pass
	BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp).
	(expand_builtin_bzero): Replace ARGLIST argument with EXP.
	Pass EXP to expand_builtin_memset.
	(expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to
	the new CALL_EXPR.
	(expand_builtin_strncmp): Likewise.
	(expand_builtin_printf): Replace ARGLIST argument with EXP.
	(expand_builtin_fprintf): Likewise.
	(expand_builtin): Adjust calls to

	* config/i386/i386.c (ix86_expand_vector_set): Fix setting 3rd and 4th
	item in V4SF mode.

	PR rtl-optimization/21239
	* combine.c (combine_simplify_rtx) <case VEC_SELECT>: Fix a typo.

	PR target/21297
	* config/i386/i386.c (legitimize_address): When canonicalizing
	ASHIFT into MULT, multiply by 1 << shift_count instead of
	1 << log2 (shift_count).

2005-05-03  Alexandre Oliva  <>

	PR target/16888
	* config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names
	for unavailable registers.

2005-05-03  Dorit Naishlos  <>

	* doc/passes.texi: Document vectorization pass.

2005-05-02  Joseph S. Myers  <>

	PR c/15698
	* c-tree.h (C_DECL_BUILTIN_PROTOTYPE): New.
	* c-decl.c (current_function_prototype_built_in,
	current_function_prototype_arg_types): New.
	(merge_decls): Keep source location of prototype followed by
	nonprototype declaration.  Update C_DECL_BUILTIN_PROTOTYPE.
	(builtin_function): Set C_DECL_BUILTIN_PROTOTYPE.
	(start_function): Always set current_function_prototype_locus,
	current_function_prototype_built_in and
	current_function_prototype_arg_types.  Check for external
	prototype whether or not visible for external function and set
	current_function_prototype_arg_types accordingly.
	(store_parm_decls_oldstyle): Use
	current_function_prototype_arg_types for checking old-style
	definition against prototype.  Give warnings only if

2005-05-02  Janis Johnson  <>

	PR 19985
	* gcov-io.h: Declare gcov external functions hidden.

2005-05-01  Gerald Pfeifer  <>

	* doc/install.texi (Specific): Omit dots in the @anchors names
	for i?86-*-sco3.2v5*, i?86-*-solaris2.10, and sparc-sun-solaris2.7.
	Omit underscores for x86_64-*-* and the "all ELF targets" entry.

2005-05-01  Eric Botcazou  <>

	PR bootstrap/20633
	* config/freebsd-spec.h (FBSD_CPP_SPEC): Add %(cpp_arch).

2005-05-01  Michael Matz  <>

	PR c++/19542
	* c-common.c (c_common_nodes_and_builtins): Create global null_node.
	(warn_strict_null_sentinel): Define.
	(check_function_sentinel): Check for null_node as valid sentinel too.
	* c-common.h (c_tree_index): Added CTI_NULL.
	(null_node) Define global_tree[CTI_NULL].
	(warn_strict_null_sentinel): Declare.
	* c-opts.c: (c_common_handle_option): Handle -Wstrict-null-sentinel.
	* c.opt: (Wstrict-null-sentinel): New C++ option.
	* doc/invoke.texi (C++ Options): Document -Wstrict-null-sentinel.

2005-04-30  Paul Brook  <>

	* config/arm/bpabi.h (RENAME_LIBRARY_SET): Always use .thumb_set in
	thumb mode.
	* config/arm/ieee754-df.S: Use __INTERWORKING_STUBS__.
	* config/arm/ieee754-sf.S: Ditto.
	* config/arm/lib1funcs.asm: Define and use __INTERWORKING_STUBS__.
	(FUNC_ALIAS): Use .thumb_set for thumb routines.

2005-04-29  Michael Matz  <>

	* config/i386/ (movmemsi): Also active when

2005-04-29  Michael Matz  <>

	PR rtl-optimization/21144
	* postreload.c (reload_cse_move2add): Check for VOIDmode.

2005-04-29  Alan Modra  <>

	PR target/21098
	* config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
	* config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.

2005-04-28  James E Wilson  <>

	* doc/install.texi: Update -enable-languages info.  Correct path to
	html docs.

2005-04-19  Andrew Haley  <>

	PR java/21022
	* dbxout.c (dbxout_type_fields): Check DECL_IGNORED_P before
	looking at a field's bitpos.

2005-04-28  Kazu Hirata  <>

	* config.gcc: Obsolete c4x-* and tic4x-*.

2005-04-28  Joseph S. Myers  <>

	* c-typeck.c (build_compound_expr): Correct logic in last change.

2005-04-27  Joseph S. Myers  <>

	PR c/21159
	* c-typeck.c (build_compound_expr): Don't warn for left-hand side
	being a compound expression whose right-hand side is cast to void.

2005-04-27  Joseph S. Myers  <>

	PR c/21213
	* c-decl.c (finish_struct): Don't dereference NULL TYPE_FIELDS of
	transparent union.

2005-04-27  Joseph S. Myers  <>

	PR c/20740
	* c-format.c (init_dynamic_asm_fprintf_info): Give errors, not
	assertion failures, if __gcc_host_wide_int__ is not properly
	(init_dynamic_diag_info): Give errors, not assertion failures, if
	location_t, tree or __gcc_host_wide_int__ are not properly

2005-04-25  Kaveh R. Ghazi  <>

	* collect2.c, gcc.c, gcov-dump.c, gcov.c, gen-protos.c,
	gensupport.c, protoize.c, toplev.c: Replace calls to
	`unlock_stream' with `unlock_std_streams'.

2005-04-25  Joseph S. Myers  <>

	* doc/invoke.texi (Blackfin Options): Avoid empty @opindex line.

2005-04-25  Joseph S. Myers  <>

	PR bootstrap/21215
	* doc/install.texi: Document correct assembler and linker to use
	on i?86-*-solaris2.10.

2005-04-25  Daniel Berlin  <>

	Fix PR tree-optimization/21173

	* tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr
	on things we pass to force_gimple_operand.  Don't try to special
	case min_invariants.

2005-04-25  Bernd Schmidt  <>

	* config/bfin/bfin-modes.def: New file.
	* config/bfin/bfin-protos.h: New file.
	* config/bfin/bfin.c: New file.
	* config/bfin/bfin.h: New file.
	* config/bfin/ New file.
	* config/bfin/crti.s: New file.
	* config/bfin/crtn.s: New file.
	* config/bfin/elf.h: New file.
	* config/bfin/lib1funcs.asm: New file.
	* config/bfin/ New file.
	* config/bfin/t-bfin: New file.
	* config/bfin/t-bfin-elf: New file.
	* doc/extend.texi (exception_handler, kspisusp, nesting, nmi_handler):
	Document new attributes.
	(interrupt, interrupt_handler, saveall): Update documentation for
	these attributes.
	* doc/install.texi (Specific): Add entry for the Blackfin.
	* doc/invoke.texi (Blackfin Options): New section.
	* doc/md.texi (Blackfin family): New section to document constraints.
	* config.gcc: Add bfin*-* and bfin*-elf configurations.

2005-04-25  Ralf Corsepius  <>

	* config.gcc (avr-*-*): Remove redundant "case".

2005-04-25  Ralf Corsepius  <>

	PR target/17822
	* config/avr/t-avr (AR_FOR_TARGET,RANLIB_FOR_TARGET): Remove.

2005-04-24  Kaveh R. Ghazi  <>

	* (gcc_UNLOCKED_FUNCS): New.
	* system.h (putchar, getc, getchar, clearerr, feof, fileno,
	fflush, fgetc, fgets, ferror, fread): Redefine to the associated
	_unlocked function.
	(fwrite_unlocked): Fix prototype.

	* configure, Regenerate.

	* system.h (fopen, fdopen, freopen): Define these to the unlocked
	libiberty functions.

	* collect2.c (main): Unlock the stdio streams.
	* gcc.c (main): Likewise.
	* gcov-dump.c (main): Likewise.
	* gcov.c (main): Likewise.
	* gen-protos.c (main): Likewise.
	* gensupport.c (init_md_reader_args_cb): Likewise.
	* protoize.c (main): Likewise.
	* toplev.c (general_init): Likewise.

2005-04-24  Richard Henderson  <>

	PR rtl-opt/21163
	* simplify-rtx.c (simplify_binary_operation) <IOR>: Check
	for SCALAR_INT_MODE_P instead of not MODE_CC before returning
	<DIV, MOD>: Likewise.

2005-04-24  Jakub Jelinek  <>

	PR middle-end/20991
	* cgraph.h (cgraph_local_info): Add vtable_method field.
	* varasm.c (mark_decl_referenced): If cgraph_global_info_ready
	and node is vtable_method, finalized and not reachable, don't do

	2005-04-18  Jakub Jelinek  <>
	* tree-ssa-ccp.c (fold_stmt): Don't optimize OBJ_TYPE_REFs if that
	would result in an already finalized unreachable node becoming
	reachable while cgraph_global_info_ready.

2005-04-24  Ralf Corsepius  <>

	PR target/17824
	* config/c4x/c4x.h (ASM_PROG, LD_PROG): Remove.

2005-04-24  Richard Henderson  <>

	PR target/21101
	* config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
	* config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
	Deny modes smaller than 4 bytes.
	* config/i386/i386-protos.h: Update.

2005-04-24  Ralf Corsepius  <>

	* config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
	Switch h8300-*-rtems* to ELF.

2005-04-23  Richard Henderson  <>

	* simplify-rtx.c (simplify_binary_operation): Fix second instance
	later in the same function.

	PR rtl-opt/21102
	* simplify-rtx.c (simplify_binary_operation): Fix mode check before
	performing some integral scalar simplifications.

2005-04-23  Richard Henderson  <>

	PR target/21100
	* config/i386/ (push<MMXMODE>1): Fix predicate thinko.

2005-04-23  Richard Henderson  <>

	PR target/21099
	* config/i386/i386.c (ix86_split_to_parts): Use proper mode when
	simplifying CONST_VECTOR.

2005-04-22  James E Wilson  <>

	PR c++/20805
	* dwarf2out.c (gen_variable_die): Don't emit a specification if this
	is another declaration.

2005-04-22  Michael Matz  <>

	PR middle-end/20973
	* reload.c (push_reload, find_dummy_reload): Check for uninitialized

2005-04-22  David Edelsohn  <>

	Backport from mainline.
	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Set TFmode
	optabs to xlq names if TARGET_XL_COMPAT.

2005-04-22  Joseph S. Myers  <>

	PR c/12913
	* c-tree.h (struct c_label_list): Update comment.
	(struct c_label_context): Rename to struct c_label_context_se.
	(label_context_stack): Rename to label_context_stack_se.
	c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
	c_end_vm_scope): New.
	* c-decl.c (pop_scope): Call c_end_vm_scope.
	(pushdecl): Call c_begin_vm_scope for variably modified
	(define_label): Check for jumping into scope of identifier with
	variably modified type.  Push label on stack for those defined at
	current context of identifiers with variably modified type.
	(start_function): Create stack level for context of identifiers
	with variably modified type.
	(finish_function): Pop stack level for context of identifiers with
	variably modified type.
	* c-typeck.c (label_context_stack): Rename to
	(label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
	(c_finish_goto_label): Check for jumping into scope of identifier
	with variably modified type.  Push label on stack for those jumped
	to from current context of identifiers with variably modified
	(struct c_switch): Add blocked_vm.
	(c_start_case): Initialize blocked_vm.
	(do_case): Check blocked_vm.
	(c_finish_case): Add comment.
	(c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
	variable label_context_stack.

2005-04-22  Joseph S. Myers  <>

	* varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN

2005-04-22  Eric Botcazou  <>

	* doc/invoke.texi (SPARC options): Document that -mapp-regs
	is turned off by default on Solaris.

2005-04-21  Mark Mitchell  <>

	* version.c (version_string): Restore prerelease information.
	* doc/include/gcc-common.texi (version): Set to 4.0.1.

2005-04-20  Release Manager

	* GCC 4.0.0 released.

2005-04-18  Jakub Jelinek  <>

	PR middle-end/20991
	* tree-ssa-ccp.c (fold_stmt): Don't optimize OBJ_TYPE_REFs if that
	would result in an already finalized unreachable node becoming
	reachable while cgraph_global_info_ready.

2005-04-19  Ben Elliston  <>

	* doc/invoke.texi (Optimize Options): Refer to the correct
	optimisation flag -ftree-dominator-opts, not -ftree-dom.

2005-04-17  Daniel Berlin  <>

	Fix PR tree-optimization/20490
	Fix PR tree-optimization/20929

	* tree-ssa-pre.c (create_expression_by_pieces): Use
	force_gimple_operand on result of fold, value number
	gimple_operand result.

2005-04-17  Joseph S. Myers  <>

	Merge from mainline:

	2005-02-28  Geert Bosch  <>

		PR ada/15977
		* doc/contrib.texi: List contributors for Ada front end

	2005-03-14  Geoffrey Keating  <>

		* doc/cppopts.texi (-fexec-charset): Add concept index
		(-fwide-exec-charset): Likewise.
		(-finput-charset): Likewise.

	2005-04-15  David Edelsohn  <>

		* doc/install.texi (*-ibm-aix*): Add comment about system

2005-04-17  Richard Sandiford  <>

	* combine.c (combine_simplify_rtx): Remove a transformation that
	relies on an invalid assumption about rtl sign-extension semantics.

2005-04-17  Richard Henderson  <>

	PR target/20375
	* config/alpha/alpha.c (alpha_setup_incoming_varargs): Advance a copy
	of CUMULATIVE_ARGS past the last named argument.
	(alpha_va_start): Expect pretend_args_size only if strictly less than
	6 named arguments.
	* config/alpha/alpha.h (TARGET_FP, TARGET_FPREGS, TARGET_GAS,

2005-04-17  Alexandre Oliva  <>

	PR middle-end/20739
	* gimplify.c (gimplify_addr_expr): Compensate for removal of
	e.g. cv-qualification conversions.

2005-04-16  Gerald Pfeifer  <>

	* doc/install.texi (Specific): Avoid using asterisks in @anchor
	names related to target triplets.
	Remove i?86-*-esix from platform directory.
	Remove powerpc-*-eabiaix from platform directory.

2005-04-16  Joseph S. Myers  <>

	PR middle-end/20491
	* config/ia64/ia64.c (rtx_needs_barrier): Recurse instead of
	falling through from SUBREG case to REG.

2005-04-15  Dave Korn <>

	* gcc.c (default_compilers): Clarify obscure error message when
	reading from standard input.

2005-04-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* gthr-posix.c (pthread_cancel): Define.
	(pthread_mutexattr_init): Likewise.
	(pthread_mutexattr_settype): Likewise.
	(pthread_mutexattr_destroy): Likewise.

2005-04-15  Volker Reichelt  <>

	* doc/invoke.texi: Fix typos.
	* doc/md.texi: Likewise.
	* doc/rtl.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/tm.texi: Likewise.

2005-04-15  Alexandre Oliva  <>

	* tree-eh.c (lower_try_finally_copy): Generate new code in
	response to goto_queue entries as if the queue was sorted by
	index, not pointers.
	(lower_try_finally_switch): Likewise.

2005-04-15  Richard Sandiford  <>

	* config/mips/mips.h (ASM_OUTPUT_CASE_LABEL): Delete.
	* config/mips/mips.c (mips16_insn_length): Remove reference to

2005-04-14  Joseph S. Myers  <>

	* doc/cpp.texi, doc/install.texi: Change references to GCC 3.5 to
	refer to 4.0.

2005-04-14  Steve Ellcey  <>

	PR target/20924
	* config/ia64/ (divsf3_internal_lat): Generate frcpa with
	fpsr 0 instead of fpsr 1.
	(divsf3_internal_thr): Ditto.
	(divdf3_internal_lat): Ditto.
	(divdf3_internal_thr): Ditto.
	(divxf3_internal_lat): Ditto.
	(divxf3_internal_thr): Ditto.

2005-04-14  Ulrich Weigand  <>

	PR target/20927
	* config/s390/s390-modes.def: Define TFmode.

2005-04-14  Alexandre Oliva  <>
	    Roger Sayle  <>

	PR target/20126
	* loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
	signal that all GIVs couldn't be reduced.

2005-04-12  Eric Botcazou  <>

	* config/sparc/sparc.h (APPLY_RESULT_SIZE): Set to 24 in 64-bit mode.
	* config/sparc/ (untyped_call): Save the registers manually.

	* config/sparc/sparc.c (legitimate_address_p): Use TARGET_ARCH32.

2005-04-12  Ulrich Weigand  <>

	PR middle-end/20917
	* config/s390/ ("*set_tp"): Use SET in pattern.
	("set_tp_64", "set_tp_31"): Adapt expanded pattern.

2005-04-09  Jakub Jelinek  <>

	PR target/20795
	* config/i386/i386.c (construct_container): Pass empty aligned
	struct, union or class in memory.

2005-04-08  Ulrich Weigand  <>

	Backport from mainline:
	* config/s390/tpf.h (ASM_SPEC): Define.

2005-04-07  Andreas Schwab  <>

	Backport from mainline:

	2005-04-03  Steven Bosscher  <>

	PR middle-end/20648
	* bb-reorder.c (duplicate_computed_gotos): Do not unfactor
	a computed goto if the edge to the computed goto block has
	incoming abnormal edges.  Clarify how the function works.

2005-04-07  Joseph S. Myers  <>

	PR target/20093
	* simplify-rtx.c (simplify_unary_operation): Check
	SUBREG_PROMOTED_UNSIGNED_P (op) > 0 for zero-extension.

2005-04-07  Eric Botcazou  <>

	PR ada/18659
	PR ada/18819
	* doc/invoke.texi (Optimize Options): Document that
	-ftree-sra is not automatically enabled for the Ada compiler.

2005-04-06  Richard Sandiford  <>

	* c.opt (-F): Remove trailing whitespace from help string.
	(-finput-charset): Use a tab to separate the switch name and help
	* common.opt (-fsched-stalled-insns, -fsched-stalled-insns-dep)
	(-ftree-vectorizer-verbose): Likewise.

2005-04-06  Dale Johannesen  <>

	* doc/invoke.texi (Optimization Options):  Remove
	duplicate -fcse-follow-jumps.  Add -fweb.
	(-ftree-lim):  Fix spelling (-ftree-loop-im, invariants).
	(-fivcanon):  Fix spelling (-ftree-loop-ivcanon).

2005-04-06  Joseph S. Myers  <>

	* c-decl.c (finish_decl): Apply pending #pragma weak regardless of

2005-04-06  Ranjit Mathew  <>

	* doc/install.texi: Update the URL for Jacks.
	* doc/sourcebuild.texi: Likewise.

2005-04-06  Eric Botcazou  <>

	PR target/17245
	* config/sparc/sparc.c (legitimate_address_p): Remove 'imm2'.
	Revert 2004-10-08 patch.  Reject TFmode LO_SUM in 32-bit mode.

2005-04-05  Jakub Jelinek  <>

	PR tree-optimization/20076
	* tree-inline.c (inline_forbidden_p_1): Prevent inlining functions
	that call __builtin_return or __builtin_apply_args.

2005-04-06 Uros Bizjak <>

	PR target/20421
	* config/i386/ (frndintxf2_floor, frndintxf2_ceil)
	(frndintxf2_trunc, frndintxf2_mask_pm): Add FLAGS_REG clobber.
	Allocate local stack slots here.  Set ix86_optimize_mode_switching.
	flag here. Implement using define_insn_and_split.
	(frndintxf2_floor_i387, frndintxf2_ceil_i387, frndintxf2_trunc_i387)
	(frndintxf2_mask_pm_i387): New insn patterns.
	(floorsf2, floordf2, floorxf2): Remove local stack slot allocations.
	Do not set ix86_optimize_mode_switching flag.
	(ceilsf2, ceildf2, ceilxf2): Same.
	(btruncsf2, btruncdf2, btruncxf2): Same.
	(nearbyintsf2, nearbyintdf2, nearbyintxf2): Same.

2005-04-05  James E. Wilson  <>

	PR target/20670
	* unwind-ia64.c (uw_intall_context): Add missing load of r27.

2005-04-05  Thomas Fitzsimmons  <>

	* doc/install.texi (Configuration): Document --with-java-home.

2005-04-05  Dale Johannesen  <>

	PR middle-end/19225
	* calls.c (expand_call):  Flush pending deferrals before
	throwing call.

2005-04-06  Zdenek Dvorak  <>

	PR target/20625
	* tree-ssa-loop-ivopts.c (generic_type_for): New function.
	(add_candidate_1): Use generic_type_for instead of unsigned_type_for.

2005-04-05  Roger Sayle  <>

	* config/i386/ (*truncdfsf2_i387_1): New pattern.

2005-04-05  Ben Elliston  <>

	* doc/invoke.texi (Optimize Options): Mention -ftree-lrs, not
	-ftree-live_range_split.  Perhaps renamed at some point?

2005-04-05  Jason Merrill  <>

	PR c++/19317
	* calls.c (expand_call): Disable return slot optimization.

2005-04-05  Richard Henderson  <>

	PR target/20342
	PR target/20447
	* config/i386/i386.c (print_operand): Handle vector zeros.
	(ix86_split_to_parts): Handle CONST_VECTOR.
	(ix86_hard_regno_mode_ok): Allow MMX modes in general regs.
	(ix86_modes_tieable_p): Use ix86_hard_regno_mode_ok to decide
	what modes to tie for MMX and SSE registers.
	* config/i386/i386.h (MMX_REG_MODE_P): Remove.
	* config/i386/ Extend move 0 -> xor peephole to apply
	to vector modes as well.
	* config/i386/ (const0_operand): Handle VOIDmode
	properly as an input mode.

2005-04-05  Hans-Peter Nilsson  <>

	PR rtl-optimization/20527
	* combine.c (can_combine_p) [AUTO_INC_DEC]: When INSN has an
	REG_INC note, test that the register also isn't mentioned in PRED
	or SUCC.

2005-04-05  Eric Botcazou  <>

	* config/sparc/sparc.c (TARGET_ASM_FILE_END): Undefine before

2005-04-05  Olivier Hainque  <>

	* config/mips/iris6.h (DWARF_FRAME_RETURN_COLUMN): Redefine to
	match what the system unwinder expects.
	* config/mips/mips.c (mips_frame_set): If we're saving the return
	address register and the dwarf return address column number differs
	from the hard register number, adjust the note reg to refer to the

2005-04-05  Eric Botcazou  <>
	    Sebastian Pop <>

	PR tree-optimization/19903
	* tree-chrec.c (chrec_convert): Return chrec_dont_know for constants
	that don't fit in their type after conversion.

2005-04-04  Roger Sayle  <>
	    Alexandre Oliva  <>

	PR c++/19199
	* fold-const.c (non_lvalue): Split tests into...
	(maybe_lvalue_p): New function.
	(fold_cond_expr_with_comparison): Preserve lvalue-ness for the
	C++ front-end prior to lowering into gimple form.

2004-04-04  Richard Sandiford  <>

	PR target/19537
	* (tree-ssa-loop-ivopts.o): Depend on langhooks.h.
	* tree-ssa-loop-ivopts.c: Include langhooks.h.
	(add_standard_iv_candidates_for_size): New function, extracting code
	from add_standard_iv_candidates and parameterizing it by type size.
	(add_standard_iv_candidates): Use add_standard_iv_candidates_for_size.

2005-04-04  Eric Botcazou  <>

	* doc/invoke.texi (SPARC options): Document that
	-mlittle-endian is not supported on Linux either.

2005-04-04  Eric Botcazou  <>

	PR target/20446
	* config/sparc/sparc.h (NEED_INDICATE_EXEC_STACK): Define to 0.
	* config/sparc/linux.h (TARGET_ASM_FILE_END): Delete.
	* config/sparc/linux64.h (TARGET_ASM_FILE_END): Delete.
	* config/sparc/sparc.c (TARGET_ASM_FILE_END): Set to sparc_file_end.
	(add_pc_to_pic_symbol): Rename into pic_helper_symbol.
	(add_pc_to_pic_symbol_name): Rename into pic_helper_symbol_name.
	(pic_helper_emitted_p): New global.
	(emit_pic_helper): New function extracted from...
	(load_pic_register):  Add 'delay_pic_helper' parameter.
	Do not call emit_pic_helper if delay_pic_helper is true.
	(sparc_expand_prologue): Pass 'false' to load_pic_register.
	(sparc_output_mi_thunk): Pass 'true' to load_pic_register.
	(sparc_file_end): New function.

2005-04-04  Richard Henderson  <>
	    Jakub Jelinek  <>

	PR rtl-optimization/16104
	* fold-const.c (fold_unary): Fix folding of vector conversions.

2005-04-04  Nathan Sidwell  <>

	PR debug/20505
	* dwarf2out.c (tree_add_const_value_attribute): Only add if it's

2005-04-03  Gabriel Dos Reis  <>

	PR c++/18644
	* doc/invoke.texi (-Wsynth): Don't document, as it now is void of

2005-04-02  Alexandre Oliva  <>

	PR debug/19345
	* tree-inline.c (remap_type): Remap TYPE_STUB_DECL.
	(remap_decl): Insert type decl in map earlier.

2005-04-02  Alexandre Oliva  <>

	PR tree-optimization/20640
	* tree-ssa-dce.c (remove_dead_stmt): Don't redirect edge to
	post-dominator if it has phi nodes.
	(eliminate_unnecessary_stmts): Remove dead phis in all blocks
	before dead statements.

2005-04-02  Alexandre Oliva  <>

	PR middle-end/20491
	* final.c (alter_subreg): Don't call subreg_regno for a non-REG.

2005-04-02  Alexandre Oliva  <>

	PR rtl-optimization/20290
	* loop.c (for_each_insn_in_loop): Don't assume the loop body runs
	in every iteration if the entry point is the exit test.

2005-04-02  Geoffrey Keating  <>

	* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Add -pipe.
	* config/t-darwin (TARGET_LIBGCC2_CFLAGS): Likewise.

2005-04-02  Geoffrey Keating  <>

	* config/rs6000/t-darwin8: Comment out ppc64 multilib.

2005-04-01  Richard Guenther <>
	    Jan Hubicka  <>
	    Steven Bosscher <>

	* cgraphunit.c (cgraph_estimate_size_after_inlining): Compute
	call cost based on argument sizes.
	(cgraph_mark_inline_edge): Avoid inline unit from shrinking by
	* params.def: (max-inline-inssn-single): Set to 450.
	(max-inline-insns-auto): Set to 90.
	(max-inline-insns-recursive): Set to 450
	(max-inline-insns-recursive-auto): Set to 450.
	(large-function-insns): Set to 2700.
	(inline-call-cost): New parameter.
	* tree-inline.c (estimate_move_cost): New function.
	(estimate_num_insns_1): Compute move sizes costs by estimate_move_cost
	for non-gimple-regs, set cost to 0 for gimple-regs.  Compute call size
	based on arguments.
	* tree-inline.h (estimate_move_cost): Declare.
	* invoke.texi: (max-inline-inssn-single): Change default to 450.
	(max-inline-insns-auto): Change default to 90.
	(max-inline-insns-recursive): Change default to 450
	(max-inline-insns-recursive-auto): Change default to 450.
	(large-function-insns): Change default to 2700.
	(inline-call-cost): Document new parameter.

2005-04-01  Paul Brook  <>

	* config/arm/arm.c (thumb_call_via_label): Include space for SP.
	(arm_output_function_epilogue): Allow call_via_SP.
	(thumb_call_via_reg, arm_file_end): Ditto.
	* config/arm/arm.h (struct machine_function): Include space for SP.
	(thumb_call_via_label): Update declaration.

2005-04-01  Joseph S. Myers  <>

	* c-decl.c (validate_proto_after_old_defn): Look at
	TYPE_MAIN_VARIANT of argument types.

2005-04-01  Jan Hubicka  <>

	PR middle-end/20635
	* varasm.c (mark_decl_referenced): Do not mark extern inline functions
	as needed.

2005-04-01  Paolo Bonzini  <>

	PR middle-end/19454
	PR rtl-optimization/20600

	* combine.c (gen_binary): Remove.
	(known_cond, simplify_shift_const, find_split_point,
	combine_simplify_rtx, simplify_if_then_else, simplify_set,
	simplify_logical, expand_field_assignment, extract_left_shift,
	force_to_mode, if_then_else_cond, apply_distributive_law,
	simplify_and_const_int, simplify_shift_const, gen_lowpart_for_combine,
	simplify_comparison, reversed_comparison): Replace with
	simplify_gen_binary, simplify_gen_relational or
	(distribute_and_simplify_rtx): New function.

	* config/i386/i386.c (ix86_decompose_address): Look inside SUBREGs
	to fix addresses involving EBP and ESP.
	(aligned_operand, legitimate_address_p, ix86_address_cost): Be prepared
	for SUBREGed registers.
	(legitimate_address_p): Accept SUBREGed registers.

2005-04-01  Jakub Jelinek  <>

	PR c++/19406
	* dwarf2out.c (gen_type_die_for_member): Handle FIELD_DECL.
	(dwarf2out_imported_module_or_decl): Use gen_type_die_for_member

2005-04-01  Kazu Hirata  <>

	* doc/contrib.texi, doc/invoke.texi, doc/tm.texi: Fix typos.

2005-04-01  Joseph S. Myers  <>

	PR c/17855
	* gimplify.c (gimplify_expr): Create a temporary for lvalue

2005-03-31  Kazu Hirata  <>

	* doc/tree-ssa.texi: Fix a typo.

2005-03-31  Olivier Hainque  <>

	* dwarf2out.c (dwarf2out_frame_finish): Honor DWARF2_FRAME_INFO
	defined and non-zero.

2005-03-31  Alan Modra  <>

	PR target/20611
	* config/rs6000/ (load_toc_v4_PIC_1b): Remove inline
	label operand.  Remove (use (unspec..)).  Don't emit a label on
	the offset word.
	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Don't
	generate inline label for load_toc_v4_PIC_1b.
	(rs6000_emit_load_toc_table): Likewise.

2005-03-31  Kazu Hirata  <>

	* config.gcc: Obsolete i860-*-sysv4*, ip2k-*-elf,
	ns32k-*-netbsdelf*, and ns32k-*-netbsd*.

2005-03-31  Alan Modra  <>

	* config.gcc (cpu_is_64bit): Set for 64-bit powerpc cpus.
	(powerpc64-*-linux*): Use it.  Rearrange tm_file assignment.
	(powerpc-*-linux*): Build a biarch compiler when --enable-targets
	is given with "powerpc64*" or "all", or when --with-cpu chooses
	a 64-bit cpu.

2005-03-30  Richard Henderson  <>

	* cgraph.h (struct cgraph_node): Add alias.
	* varasm.c (assemble_alias): Set it.
	* cgraphunit.c (cgraph_assemble_pending_functions): Check it and
	avoid calling cgraph_expand_function.

2005-03-30  Joseph S. Myers  <>

	PR c/772
	PR c/17913
	C_DECL_UNDEFINABLE_STMT_EXPR, struct c_label_list, struct
	c_label_context, label_context_stack): New.
	* c-decl.c (define_label): Check for jumps into statement
	expressions.  Add label to list of defined labels.
	(start_function): Push context on label_context_stack.
	(finish_function): Pop context from label_context_stack.
	* c-typeck.c (label_context_stack): New.
	(c_finish_goto_label): Check for jumps into statement
	expressions.  Add label to list of jumped to labels.
	(struct c_switch): Add blocked_stmt_expr.
	(c_start_case): Initialize it.
	(do_case): Check it.
	(c_finish_case): Verify !blocked_stmt_expr.
	(c_begin_stmt_expr):  Push context on label_context_stack.
	Increment blocked_stmt_expr.  Mark labels jumped to from outside
	as undefinable.
	(c_finish_stmt_expr): December blocked_stmt_expr.  Mark labels
	defined in the statement expression and no longer jumpable to.
	Mark labels jumped to from just outside the statement expression
	as again definable.  Pop context from label_context_stack.
	* doc/extend.texi (Statement Exprs): Update.

2005-03-30  Joseph S. Myers  <>

	PR c/20368
	* c-decl.c (start_function): Check for old_decl being

2005-03-30 Mostafa Hagog <>

	PR middle-end/20177
	* ddg.c (create_ddg_dependence): Ignore reg-anti dependency.
	* modulo-sched.c (const_iteration_count): Return on NULL
	(print_node_sched_params): Return on NULL dump_file.
	(generate_reg_moves): Handle reg-anti dependencies and disregard
	closing branch when generating register moves.
	(sms_schedule): Mark the SMSed block dirty.
	* passes.c (rest_of_handle_sms): Call update_life_info for all
	* testsuite/gcc.dg/20050321-1.c: New test.
	* testsuite/gcc.dg/20050330-1.c: New test.

2005-03-30  Sebastian Pop  <>

	* tree-scalar-evolution.c (instantiate_parameters_1): Return
	as soon as a chrec_dont_know is detected.

2005-03-30  Alan Modra  <>

	* doc/install.texi: Update binutils requirement for powerpc*-linux.

2005-03-30  Alan Modra  <>

	PR target/20203
	* builtins.c (get_memory_rtx): Expand address exp using EXPAND_NORMAL.
	Remove convert_memory_address call duplicating that in memory_address.

2005-03-29  Alexandre Oliva  <>

	PR rtl-optimization/20532
	* simplify-rtx.c (simplify_binary_operation): Protect from
	overflow when adding coefficients for PLUS or MINUS.  Handle
	CONST_DOUBLE exact power of two as multiplier.

2005-03-29  Richard Henderson  <>

	PR c/20519
	* c-decl.c (c_finish_incomplete_decl): Update complete_array_type call.
	(build_compound_literal): Likewise.  Propagate decl type into the
	(finish_decl): Likewise.  Use new return value from complete_array_type
	for zero sized arrays.
	(complete_array_type): Move ...
	* c-common.c (complete_array_type): ... here.  Change first argument
	to pointer-to-type-node.  Consistently use sizetype for the index
	except for zero sized arrays.  Detect zero sized arrays for pedantic
	mode diagnostics.  Create a new type node instead of modifying the
	old node in place.
	* c-tree.h (complete_array_type): Move decl ...
	* c-common.h (complete_array_type): ... here.

2005-03-29  Richard Henderson  <>

	PR tree-opt/19108
	* tree-sra.c (generate_element_init_1): Handle RANGE_EXPR.

2005-03-29  Jakub Jelinek  <>

	PR middle-end/20622
	* cgraph.h (struct cgraph_varpool_node): Add alias field.
	* cgraph.c (cgraph_varpool_assemble_pending_decls): Don't call
	assemble_variable on aliases.
	* varasm.c (assemble_alias): Set node->alias.
	* toplev.c (wrapup_global_declarations): Don't call
	rest_of_decl_compilation on aliases again.

2005-03-29  Eric Botcazou  <>

	PR middle-end/20263
	* varasm.c (make_decl_rtl) [ASM_DECLARE_REGISTER_GLOBAL]: Use

2005-03-24  Geoffrey Keating  <>

	* c.opt (fvisibility-inlines-hidden): Allow for ObjC++.

	* config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Add

2005-03-25  John David Anglin  <>

	PR target/15491
	* vax.c (vax_rtx_costs_1): Merge with vax_rtx_costs.
	(vax_rtx_costs): Return false when passed unsupported rtx's.  Handle

2005-03-25  Zdenek Dvorak  <>

	PR rtl-optimization/20249
	* cse.c (insert_regs): Do not record equivalence of registers in
	different modes.

2005-03-24  James E Wilson  <>

	* doc/install.texi (--enable-altivec): Delete docs.

2005-03-24  J"orn Rennecke <>

	Band aid for PR target/20617:
	* config/sh/lib1funcs.asm (FUNC, ALIAS): Add .hidden directive.

2005-03-23  Daniel Berlin  <>

	Fix PR tree-optimization/20601

	* tree-ssa-pre.c (insert_aux): Add missing condition to

2005-03-22  James E Wilson  <>

	PR c++/19769
	* dwarf2out.c (declare_in_namespace): Ignore decls with an abstract

2005-03-22  Daniel Berlin  <>

	* c-opts.c (c_common_parse_file): Only start/end main source file
	if debug hooks says the writer wants it.
	* dbxout.c (dbx_debug_hooks): Add start_end_main_source_file
	(xcoff_debug_hooks): Ditto.
	* debug.c (do_nothing_hooks): Ditto.
	* debug.h (gcc_debug_hooks): Ditto.
	* dwarf2out.c (dwarf2_debug_hooks): Ditto.
	* sdbout.c (sdb_debug_hooks): Ditto.
	* vmsdbgout.c (vmsdbg_debug_hooks): Ditto.

2005-03-22  Mark Mitchell  <>

	* doc/extend.texi: Deprecate C++ min/max operators.

2005-03-22  Jakub Jelinek  <>

	PR target/20561
	* cfglayout.c (reemit_insn_block_notes): Don't put block notes in
	between jump table and its label.
	* final.c (shorten_branches): Handle notes in between ADDR_VEC
	resp. ADDR_DIFF_VEC and the label preceeding it.
	(final_scan_insn): Likewise.  Ensure ADDR_VEC resp. ADDR_DIFF_VEC
	is emitted in the right section.

2005-03-21  Roger Sayle  <>

	PR middle-end/20539
	* fold-const.c (fold_binary): Fix type mismatch between
	TRUTH_{AND,OR,XOR}_EXPR nodes an their operands' types.
	(fold_binary) <TRUTH_XOR_EXPR>: Avoid calling invert_truthvalue
	for non-truth-valued expressions.

	* c-common.c (c_common_truthvalue_conversion): Handle ERROR_MARK
	and FUNCTION_DECL in the main switch.
	TRUTH_XOR_EXPR>: When changing the result type of these tree nodes,
	we also need to convert their operands to match.
	<TRUTH_NOT_EXPR>: Likewise.

2005-03-21  Roger Sayle  <>

	PR middle-end/20557
	* bb-reorder.c (duplicate_computed_gotos): Use can_duplicate_block_p
	to determine whether a block can be duplicated, rather than test
	whether the block contains noncopyable insns ourselves.

2005-03-21  Richard Guenther  <>

	* tree-ssa-loop.c (gate_tree_complete_unroll): Run complete
	unrolling if -fpeel-loops is specified, too.
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
	Remove superfluous check for flag_unroll_loops.

2005-03-21  Nathan Sidwell  <>

	PR other/20564
	* gcov.c (output_lines): Only output function block summary when
	outputting branch information.
	* doc/gcov.texi: Document format of preamble and additional block
	information lines.

2005-03-21  Richard Sandiford  <>

	* libgcc2.h (LIBGCC2_HAS_SF_MODE): New macro.
	the defaults false if BITS_PER_UNIT != 8.
	(SFtype, SCtype, __fixsfdi, __floatdisf, __fixunssfSI, __fixunssfDI)
	(__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE rather
	than BITS_PER_UNIT != 8.
	(L_fixdfdi, L_fixsfdi, L_fixtfdi, L_fixunsdfdi, L_fixunsdfsi)
	(L_fixunssfdi, L_fixunssfsi, L_fixunstfdi, L_fixunsxfdi, L_fixunsxfsi)
	(L_fixxfdi, L_floatdidf, L_floatdisf, L_floatditf, L_floatdixf): Remove
	* libgcc2.c (__fixunssfDI, __fixsfdi, __floatdisf, __fixunssfSI)
	(__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE.

2005-03-20  Marek Michalkiewicz  <>

	PR target/18551
	* config/avr/avr.c (avr_output_function_prologue): Do not use
	current_function_name() in a label, use a local label instead.

2005-03-08  Dorit Naishlos  <>
	    Ira Rosen  <>

	PR tree-optimization/20474
	* tree-vect-analyze.c (vect_analyze_pointer_ref_access): Check the
	size_type of the relevant pointer. Check for COMPLETE_TYPE_P.

2005-03-20  Joseph S. Myers  <>

	* c-decl.c (check_bitfield_type_and_width): Require bit-field
	width to have integer type.
	(build_enumerator): Require enumerator value to have integer type.

2005-03-19  Joseph S. Myers  <>

	* doc/extend.texi (__builtin_inf): Move statement about INFINITY
	to __builtin_inff.

2005-03-19  Joseph S. Myers  <>

	* c.opt (ansi, std=iso9899:1990, std=iso9899:1999,
	std=iso9899:199x): Correct descriptions.

2005-03-19  Joseph S. Myers  <>

	* config.gcc: Consistently use solaris2.1[0-9]* instead of

2005-03-19  John David Anglin  <>

	PR middle-end/20493
	* fold-const.c (fold_widened_comparison): Don't optimize casts of
	function pointers on targets that require function pointer
	(fold_sign_changed_comparison): Likewise.

2005-03-19  Andy Hutchinson  <>

	PR target/18251
	* config/avr/ (movmemhi): Rewrite as RTL loop.
	(*movmemqi_insn): Delete.
	(*movmemhi): Delete.

2005-03-18  Jan Hubicka  <>

	PR middle-end/20225
	* cgraph.c (cgraph_mark_reachable_node): Assert that it is not called
	too late.
	* varasm.c (find_decl_and_mark_needed): Mark needed only when not
	called too late.

2005-03-18  Ralf Corsepius  <>

	* config/i386/t-rtems-i386 (MULTILIBS): Remove k6, athlon,
	mno-fp-ret-in-387 multilib variants.

2005-03-17  H.J. Lu  <>

	PR target/18380
	* config/ia64/unwind-ia64.c (_Unwind_FindTableEntry): Removed.

2005-03-17  Richard Henderson  <>

	* doc/extend.texi (Weak Pragmas): New section.
	(attribute alias): Clarify that target must be in the same
	translation unit.

2005-03-16  James E. Wilson  <>

	* config/ia64/ia64.c (issue_nops_and_insn): Check first_insn attribute,
	and return without creating new state if before_nops_num is nonzero.
	* config/ia64/ (first_insn): New attribute.
	(alloc): Set it to yes.

2005-03-16  Richard Henderson  <>

	PR middle-end/15700
	* varasm.c (struct alias_pair): Rename from struct output_def_pair.
	(alias_pairs): Rename from output_defs.
	(find_decl_and_mark_needed): Split out from assemble_alias.
	(do_assemble_alias): New.
	(assemble_output_def): Remove.
	(finish_aliases_1, finish_aliases_2): New.
	(process_pending_assemble_output_defs): Remove.
	(assemble_alias): Defer aliases for which we don't yet have a
	non-external decl for the target symbol.
	* passes.c (rest_of_decl_compilation): Register variables with cgraph.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Use finish_aliases_1.
	* toplev.c (compile_file): Use finish_aliases_2 instead of
	* tree.h (finish_aliases_1, finish_aliases_2): Declare.
	(process_pending_assemble_output_defs): Remove.

2005-03-16  Andrew Pinski  <>

	* config/i386/emmintrin.h (_mm_extract_epi16): Correct the number
	of closing parenthesis.

2005-03-16  Roger Sayle  <>

	PR tree-optimization/17454
	* tree.c (tree_size): Add case for TREE_BINFO.
	* fold-const.c (fold_checksum_tree): Only clear the overloaded

2005-03-15  Eric Christopher  <>

	* config/mips/mips.h (DWARF_CIE_DATA_ALIGNMENT): Change for

2005-03-15  Daniel Jacobowitz  <>

	* config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't clear
	call_used_regs for wCG registers.

2005-03-15  Ulrich Weigand  <>

	* config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
	for non-offsettable memory references to cope with outstanding reload
	replacements, take 2.

2005-03-14  Alexandre Oliva  <>

	PR c++/20280
	* gimplify.c (gimplify_cond_expr): Add fallback argument.  Use a
	temporary variable of pointer type if an lvalues is required.
	(gimplify_modify_expr_rhs): Request an rvalue from it.
	(gimplify_expr): Pass fallback on.

2005-03-14  Alexandre Oliva  <>

	PR middle-end/18628
	* cse.c (fold_rtx_mem): Don't fold a load from a jumptable into a

2005-03-14  Richard Sandiford  <>

	* doc/invoke.texi: Document new MIPS -msym32 and -mno-sym32 options.
	* config/mips/mips.h (MASK_SYM32, TARGET_SYM32): New macros.
	(TARGET_SWITCHES): Add -msym32 and -mno-sym32.
	(ABI_HAS_64BIT_SYMBOLS): Set to false if TARGET_SYM32.
	(ASM_SPEC): Pass down -msym32 and -mno-sym32.

2005-03-14  Richard Sandiford  <>

	* config/mips/mips.h (mips_fix_vr4130_string): Declare.
	(TARGET_FIX_VR4130): New macro.
	(TARGET_OPTIONS): Add -mfix-vr4130.
	(ISA_HAS_MACCHI): New macro.
	(ASM_SPEC): Add -mfix-vr4130.
	* config/mips/mips.c (mips_fix_vr4130_string): New variable.
	(override_options): Handle mips_fix_vr4130_string.
	(mips_avoid_hazards): Clear all_noreorder_p
	if we're working around VR4130 errata and the macc alternatives
	are not available.
	* config/mips/ (mfhilo_<mode>): Turn into a define_expand.
	(*mfhilo_<mode>, *mfhilo_<mode>_macc): New insns.
	* config/mips/vr.h (DEFAULT_VR_ARCH): Set to mfix-vr4130.
	(MULTILIB_DEFAULTS): Remove leading "march=".
	(DRIVER_SELF_SPECS): Likewise.  Make -mfix-vr4130 imply -march=vr4130
	if no architecture option is given.
	* config/mips/t-vr (MULTILIB_OPTIONS): Use -mfix-vr4130 for the
	VR4130 multilibs.
	(MULTILIB_MATCHES): Map -march=vr4130 to the -mfix-vr4130 multilibs.
	* doc/invoke.texi: Document -mfix-vr4130.

2005-03-13  Roger Sayle  <>

	PR middle-end/19331
	* tree.c (get_unwidened): Treat CONVERT_EXPR and NOP_EXPR identically.
	* fold-const.c (fold_sign_changed_comparison): Likewise.
	(fold_binary): Optimize comparisons against widened operands if
	the extension is represented by a CONVERT_EXPR, same as a NOP_EXPR.

2005-03-14  Alan Modra  <>

	* config.gcc: Remove excess indentation.
	(powerpc*-*-*, rs6000-*-*): Accept --with-cpu/tune power5 and 8548.

2005-03-13  Marek Michalkiewicz  <>

	PR target/20288
	* config/avr/avr.c (print_operand): Add 'p' and 'r'.
	(out_movhi_r_mr): Read low byte of volatile MEM first.
	(out_movhi_mr_r): Write high byte of volatile MEM first.

2005-03-11  David Edelsohn  <>

	PR rtl-optimization/20306
	* expr.c (emit_move_complex): Set try_int false if mode is
	MODE_COMPLEX_FLOAT and mov_optab exists for inner mode.  Only try
	emit_block_move if try_int is true.

2005-03-11  Richard Henderson  <>

	PR target/20415
	* config/i386/ (vec_dupv4hi): Fix predicate.
	* config/i386/i386.c (ix86_expand_vector_init_duplicate): Update
	to match.

2005-03-11  Richard Sandiford  <>

	* config/mips/mips.c (override_options): Only warn about -mint64
	deprecation if TARGET_INT64.

2005-03-10  Andrew Pinski  <>

	PR rtl-opt/20412
	* simplify-rtx.c (simplify_relational_operation_1): Fix typo - check the
	correct mode.

2005-03-10  Jakub Jelinek  <>

	PR target/20322
	* combine.c (try_combine): If recog_for_combine added CLOBBERs
	to NEWI2PAT, fail to combine if they are used by NEWPAT.

2005-03-10  Aldy Hernandez  <>

	* doc/invoke.texi: Add 8540 to list of cpus in rs6000 cpu section.

2005-03-10  Bob Wilson  <>

	* config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Define.

2005-03-10  Nathan Sidwell  <>

	PR c++/20375
	* function.c (struct assign_parm_data_one): Remove last_named
	(assign_parm_find_data_types): Don't determine last_named.
	Reorder named_parm determination.
	(assign_parms): Only setup varargs on the last non-varadic

2005-03-10  Jakub Jelinek  <>

	PR inline-asm/20314
	* gimplify.c (gimplify_asm_expr): Handle input/output constraints
	with multiple alternatives.

	* stmt.c (parse_output_constraint): Fix a typo.

2005-03-09  Ulrich Weigand  <>

	* config/s390/s390.c (s390_secondary_output_reload_class): Adapt check
	for non-offsettable memory references to cope with outstanding reload
	* config/s390/ ("reload_outti"): Call find_replacement to
	avoid losing outstanding address reloads.
	("reload_outdi", "reload_outdf"): Likewise.

2005-03-08  Ira Rosen  <>

	PR tree-optimization/20122
	* tree-vect-analyze.c (vect_object_analysis): Analyze initial
	condition of access function instead of base.

2005-03-07  Aldy Hernandez  <>

	* config/rs6000/rs6000-protos.h: Rename output_e500_flip_eq_bit to

	* config/rs6000/rs6000.c (print_operand): case D: Print out bit 31
	as bit 31.
	(rs6000_generate_compare): Fix logic to look at the correct bits.
	(output_e500_flip_eq_bit): Rename to output_e500_flip_gt_bit.
	Look at GT bit.
	(rs6000_emit_sCOND): Rename gen_e500_flip_eq_bit to
	gen_e500_flip_gt_bit.  Rename gen_move_from_CR_eq_bit to

	* config/rs6000/ ("move_from_CR_eq_bit"): Change bit
	("move_from_CR_eq_bit"): Rename to move_from_CR_gt_bit.

	* config/rs6000/ ("e500_cr_ior_compare"): New.
	(E500_CR_IOR_COMPARE): New constant.

2005-03-08  Earl Chew <>
	    David Billinghurst <>

	* config/i386/host-cygwin.c: New file to support precompiled
	headers on cygwin
	* config/i386/x-cygwin: Use host-cygwin.c on cygwin host
	* Use above files for cygwin host.

2005-03-07  Richard Sandiford  <>

	PR rtl-optimization/19683
	* reload1.c (choose_reload_regs): Pass the number of bits, not the
	number of bytes, to smallest_int_for_mode.  Fix arguments to

2005-03-07  David Billinghurst <>

	* config/i386/cygwin1.c(mingw_scan): Use xstrdup in calls to putenv.

2005-03-07  Joseph S. Myers  <>

	* config/ia64/hpux.h (LINK_SPEC): Add -z.
	* config/ia64/ia64.c (ia64_function_value): Return a REG not a
	PARALLEL for an empty structure.

2005-03-05  James A. Morrison  <>

	* doc/c-tree.texi: Wrap comments in @r{}.
	* doc/cpp.texi: Likewise.
	* doc/cppinternals.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/md.texi: Likewise.
	* doc/objc.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/tm.texi: Likewise.
	* doc/tree-ssa.texi

2005-03-04  Devang Patel  <>

	PR tree-optimization/18815
	* tree-if-conv.c (combine_blocks): Adjust loop header edges for
	loops with zero exit edges.

2005-03-05  Joseph S. Myers  <>

	* config.gcc (hppa*64*-*-hpux11*): Use pa/pa-hpux1111.h for
	*-*-hpux11.[1-9]*, not just for *-*-hpux11.11.

2005-03-05  John David Anglin  <>
	    Joseph S. Myers  <>

	PR c++/19797
	* pa/elf.h, pa64-hpux.h, som.h (ASM_OUTPUT_EXTERNAL_REAL): Define.
	(ASM_OUTPUT_EXTERNAL): Call pa_hpux_asm_output_external.
	* pa-protos.h (pa_hpux_asm_output_external): Add prototype.
	* pa.c (get_plabel): Change argument to symbol_ref.  Call
	maybe_get_identifier instead of get_identifier.
	(pa_hpux_asm_output_external, pa_hpux_file_end): New functions.
	(struct deferred_plabel): Replace name field with symbol field.
	(TARGET_ASM_FILE_END): Define as pa_hpux_file_end if
	(output_global_address): Use output_addr_const for output of all
	(output_deferred_plabels): Use symbol_ref instead of name for address
	* som.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Use assemble_name_raw.  Update
	(ASM_WEAKEN_LABEL): Use targetm.asm_out.globalize_label to globalize

2005-03-04  Andrew Haley  <>

	* unwind-dw2-fde-glibc.c (struct
	(frame_hdr_cache): New.
	(_Unwind_IteratePhdrCallback): Add ext_dl_phdr_info.
	Cache frame header info.

2005-03-04  Daniel Jacobowitz  <>

	2005-03-02  Daniel Jacobowitz  <>
	* config/arm/linux-elf.h (ARM_FUNCTION_PROFILER): Do not use (PLT)
	for Thumb.
	* config/arm/netbsd-elf.h (ARM_FUNCTION_PROFILER): Likewise.

2005-03-04  Daniel Berlin <>

	Fix PR debug/20253

	* c-opts.c (c_common_parse_file): Call start_source_file
	and end_source_file at the approriate times.

	* dwarf2out.c (dwarf2out_finish): Don't auto-end
	the main file, it will be done for us now.

2005-03-03  Alan Modra  <>

	PR target/20277
	* config/rs6000/rs6000.c (rs6000_override_options): Don't allow
	-mcpu to override any other explicitly given flags.

2005-03-02  Mark Mitchell  <>

	PR c++/19916
	* varasm.c (initializer_constant_valid_p): Allow conversions
	between OFFSET_TYPEs.  Tidy.

2005-03-02  Geoffrey Keating  <>

	* config/darwin8.h (LIB_SPEC): Switch -lmx and -lSystem.

2005-03-02  Richard Guenther  <>

	* cgraph.h (struct cgraph_edge): Add prev_caller and
	prev_callee fields.
	(cgraph_node_remove_callees): Export.
	* cgraph.c (cgraph_create_edge): Initialize prev_caller
	and prev_callee.
	(cgraph_edge_remove_callee): New function.
	(cgraph_edge_remove_caller): Likewise.
	(cgraph_remove_edge): Use.
	(cgraph_redirect_edge_callee): Likewise.
	(cgraph_node_remove_callees): New function.
	(cgraph_node_remove_callers): Likewise.
	(cgraph_remove_node): Use.
	* tree-optimize.c (tree_rest_of_compilation): Use
	cgraph_node_remove_callees instead of manual loop.
	* cgraphunit.c (cgraph_finalize_function): Likewise.
	(cgraph_expand_function): Likewise.
	(cgraph_remove_unreachable_nodes): Likewise.

2005-03-01  Roger Sayle  <>

	PR tree-optimization/20216
	* tree-chrec.c (tree_fold_factorial): Delete.
	(tree_fold_binomial): Change argument list to take a return type
	and change the type of K to unsigned int.  Rewrite to avoid explicit
	evaluation of factorials, and (recursively) calling fold to perform
	compile-time arithmetic.  Return NULL on (internal) overflow.
	(chrec_evaluate): Change type of K to an unsigned int.  Avoid
	calling tree_fold_binomial unnecessarily.  Return chrec_dont_know
	if any intermediate calculation overflows.
	(chrec_apply): Update call to chrec_evaluate.

2005-03-01  Hans-Peter Nilsson  <>

	PR target/19065.
	* config/cris/cris.h (EXTRA_CONSTRAINT_Q): Accept only (mem (reg)),
	not including (reg). Do not check for reg being CRIS_PC_REGNUM.
	* config/cris/ Tweak comments referring to Q.
	("cmpsi", "cmphi", "cmpqi", "*movsi_internal", "movhi")
	("movstricthi", "movqi", "movstrictqi", "movsf", "addsi3")
	("addhi3", "addqi3", "subsi3", "subhi3", "subqi3")
	("*expanded_andsi", "*expanded_andhi", "*andhi_lowpart", "andqi3")
	("*andqi_lowpart", "iorsi3", "iorhi3", "iorqi3", "uminsi3"):
	Insert spaces in constraints to align alternatives vertically for
	("cmphi"): Ditto.  Add separate alternative for operand 0 "r",
	operand 1: "M".

2005-02-28  Dale Johannesen  <>
	    Stan Shebs  <>

	Rewrite of 64-bit Darwin structure-by-value pass/return.
	* config/rs6000/rs6000.h (CUMULATIVE_ARGS): New fields
	intoffset, use_stack, named.
	* config/rs6000/rs6000.c (rs6000_darwin64_function_arg):  Remove.
	(rs6000_darwin64_record_arg_advance_flush):  New.
	(rs6000_darwin64_record_arg_advance_recurse): New.
	(rs6000_darwin64_record_arg_flush):  New.
	(rs6000_darwin64_record_arg_recurse):  New.
	(rs6000_darwin64_record_arg):  New.
	(rs6000_return_in_memory):  Remove AGGREGATE_TYPE_P check.
	(function_arg_boundary):  Handle 128-bit aligned structs.
	(function_arg_advance):  Rewrite darwin64 struct handling.
	(function_arg):  Call rs6000_darwin64_record_arg.
	(function_arg_partial_nregs):  Handle darwin64 structs.
	(rs6000_darwin64_function_value):  Remove.
	(rs6000_function_value):  Call rs6000_darwin64_record_arg.

2005-02-28  John David Anglin  <>

	PR target/19819
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
	and after reload in REG+REG indexed addresses without REG_POINTER
	set in the base and not set in the index.

2005-02-28  Roger Sayle  <>

	PR middle-end/19874
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): A conversion
	between different machine modes is never a "useless" conversion.

2005-02-27  Zack Weinberg  <>

	* config/alpha/t-osf4, config/arm/t-netbsd, config/ia64/t-hpux
	* config/pa/t-hpux-shlib (SHLIB_INSTALL): Create the
	installation directory first.

2005-02-27  John David Anglin  <>

	PR rtl-optimization/17728
	* (mulsi3, divsi3, udivsi3, modsi3): Change predicate for
	operand 0 from general_operand to move_dest_operand.

2005-02-26  John David Anglin  <>

	* pa/elf.h, pa/som.h (ASM_OUTPUT_EXTERNAL): Use assemble_name_raw
	instead of trying to save and restore TREE_SYMBOL_REFERENCED.
	* pa/pa64-hpux.h (ASM_OUTPUT_TYPE_DIRECTIVE): Define.

2005-02-26  Andrew Pinski  <>

	PR tree-opt/20188
	* tree-ssa-alias.c (count_uses_and_derefs): If we have TREE_LIST
	for the lhs, also walk over the tree.  Likewise for rhs.

2005-02-26  Joseph S. Myers  <>

	* doc/invoke.texi, doc/standards.texi: Refer to

2005-02-26  Paolo Carlini  <>

	* doc/extend.texi (5.24 Declaring Attributes of Functions)<noreturn>:
	Clarify that the alternative way doesn't work in GNU C++.

2005-02-25  Steve Ellcey  <>

	PR target/19930
	* doc/tm.texi (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Document.
	* libgcc2.h (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE.
	* libgcc2.c (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE.
	* config/ia64/t-ia64 (LIB1ASMFUNCS): Remove __compat
	and add _fixtfdi, _fixunstfdi, _floatditf
	* lib1funcs.asm: Remove L__compat. Add L_fixtfdi,
	L_fixunstfdi, L_floatditf.
	* config/ia64/hpux.h (LIBGCC2_HAS_XF_MODE): Define.

2005-02-25  Diego Novillo  <>

	PR tree-optimization/20204
	* tree-into-ssa.c (insert_phi_nodes_for): Do not use
	REWRITE_THIS_STMT markers on PHI nodes.
	(rewrite_initialize_block): Likewise.

2005-02-25  Mark Mitchell  <>

	* version.c (version_string): Mark as prerelease.
	* doc/include/gcc-common.texi (DEVELOPMENT): @clear it.
	* (is_release): Set to 1.
	* configure: Regenerated.

2005-02-25  Zdenek Dvorak  <>

	PR tree-optimization/19937
	* tree-ssa-loop-ivopts.c (rewrite_use_compare): Cast the final value
	to the type of the induction variable.

2005-02-25  Kaz Kojima  <>

	PR rtl-optimization/20117
	* bb-reorder.c (duplicate_computed_gotos): Don't duplicate
	the block including noncopyable insn.

2005-02-24  Kazu Hirata  <>

	* cse.c (delete_trivially_dead_insns): Speed up by minimizing
	calls to find_reg_note.

2005-02-24  Richard Henderson  <>

	PR tree-opt/20127
	* tree-sra.c (instantiate_element): Copy TREE_THIS_VOLATILE from
	the type.

2005-02-24  Fariborz Jahanian <>

	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Check for
	vector types if to use base reg for misaligned non-word ld/std.

2005-02-24  Hans-Peter Nilsson  <>

	PR target/14619
	* config/cris/cris.c (cris_target_asm_function_prologue): Create
	dwarf2 label manually and put it after, not before the prologue.

2005-02-24  David Edelsohn  <>

	PR target/19019
	* reload.c (operands_match_p): Only increment register number for
	SCALAR_INT_MODE_P modes in multiple hard registers.

	* config/rs6000/ (trunctfdf2): Remove register constraints.
	Fix formatting.

2005-02-24  Volker Reichelt  <>

	* ChangeLog.5: Fix log message typo(s).
	* ChangeLog.7: Likewise.
	* ChangeLog.tree-ssa: Likewise.
	* cfgexpand.c: Fix comment typo(s).
	* conflict.c: Likewise.
	* defaults.h: Likewise.
	* dwarf2out.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-ssa-dom.c: Likewise.

2005-02-24  Jakub Jelinek  <>

	PR target/19019
	* Pass -DSHARED when compiling all *_s${objext} objects.
	* config/rs6000/darwin-ldouble.c: Only use the .symver directives
	if SHARED is defined.

	PR target/20196
	* config/rs6000/ (LTU, GTU sCC splitters): Add earlyclobber,
	allow splitting only if operands 0 and 3 don't overlap.

2005-02-24  Richard Henderson  <>

	PR middle-end/19953
	* builtins.c (fold_builtin_complex_mul, fold_builtin_complex_div): New.
	(fold_builtin_1): Call them.
	* fold-const.c (fold_complex_mult_parts): Split out from ...
	(fold_complex_mult): ... here.  Fix typo in both imaginary case.
	(fold_complex_div_parts, fold_complex_div): New.
	(fold): Use them.
	* tree.h (fold_complex_mult_parts, fold_complex_div_parts): Declare.

2005-02-24  Richard Kenner  <>

	* tree-ssa-ccp.c (visit_assignment): Verify that result of
	VIEW_CONVERT_EXPR is_gimple_min_invariant.

	* print-tree.c (print_node_brief): Print LABEL_DECL_UID.
	(print_node): Likewise.

2005-02-24  Hans-Peter Nilsson  <>

	* config/cris/ ("umulhisi3", "umulqihi3", "mulsi3")
	("mulqihi3", "mulhisi3", "mulsidi3", "umulsidi3"): Mark input
	operands as commutative in constraints.

2005-02-24  Diego Novillo  <>

	* tree-into-ssa.c: Re-organize internal functions.

2005-02-24  Richard Henderson  <>

	PR middle-end/18902
	* c-opts.c (c_common_post_options): Set flag_complex_method to 2
	for c99.
	* common.opt (fcx-limited-range): New.
	* opts.c (set_fast_math_flags): Set flag_cx_limited_range.
	* toplev.c (flag_complex_method): Initialize to 1.
	(process_options): Set flag_complex_method to 0 if
	* doc/invoke.texi (-fcx-limited-range): New.

2005-02-24  Kazu Hirata  <>

	* cse.c (delete_trivially_dead_insns): Speed up by using
	NEXT_INSN and PREV_INSN directly instead of next_real_insn and

2005-02-24  Andrea Tarani  <>

	* config/m68k/m68k.c (m68k_save_reg): Also save A5 for non-leaf
	functions when -mid-shared-library is being used.

2005-02-23  Daniel Jacobowitz  <>

	* doc/tm.texi (LINK_LIBGCC_SPECIAL): Remove.
	(LINK_LIBGCC_SPECIAL_1): Don't mention it.
	* gcc.c: Don't check for LINK_LIBGCC_SPECIAL.
	* system.h: Poison LINK_LIBGCC_SPECIAL.

2005-02-23  James E Wilson  <>

	* gengtype.c (note_insn_name): Make 1 element larger.

2005-02-23  Roger Sayle  <>

	PR target/20018
	PR rtl-optimization/20097
	* simplify-rtx.c (simplify_relational_operation_1): Avoid creating
	BImode SUBREGs of SImode registers which confuse the ia64 backend.

2005-02-23  David Edelsohn  <>

	* t-aix43 (SHLIB_INSTALL): Create directory for shared library.
	* t-aix52 (SHLIB_INSTALL): Same.

2005-02-23  Kazu Hirata  <>

	* genpreds.c: Update copyright.

2005-02-23  Michael Beach  <>

	PR target/20159
	* config/sparc/t-elf (startup files): Assemble with CPP.

2005-02-23  Paolo Bonzini  <>

	* genpreds.c (mark_mode_tests): Handle non-VOIDmode match_operands.
	(write_predicate_expr): Likewise.

2005-02-22  Diego Novillo  <>

	PR tree-optimization/20100
	PR tree-optimization/20115
	* tree-optimize.c (init_tree_optimization_passes): Remove
	* tree-pass.h (pass_maybe_create_global_var): Remove.
	* tree-ssa-alias.c (aliases_computed_p): Declare.
	(struct alias_info): Add field NUM_PURE_CONST_CALLS_FOUND.
	(count_calls_and_maybe_create_global_var): Remove.
	(pass_maybe_create_global_var): Remove.
	(init_alias_info): Do not declare aliases_computed_p.
	(maybe_create_global_var): If the function contains no
	call-clobbered variables and a mix of pure/const and regular
	function calls, create .GLOBAL_VAR.
	Mark all call-clobbered variables for renaming.
	(merge_pointed_to_info): Update comment.
	(add_pointed_to_var): Likewise.
	(is_escape_site): Likewise.
	Accept struct alias_info * instead of size_t *.
	Update all users.
	as necessary.
	* tree-ssa-operands.c (get_call_expr_operands): If
	ALIASES_COMPUTED_P is false, do not add call-clobbering
	* tree-ssa.c (init_tree_ssa): Set ALIASES_COMPUTED_P to false.
	(delete_tree_ssa): Likewise.

2005-02-22  James E Wilson  <>

	* toplev.c (backend_init): Don't call init_adjust_machine_modes here.
	(do_compile): Do call it here.

2005-02-22  Kazu Hirata  <>

	PR rtl-optimization/20017.
	* passes.c (rest_of_handle_combine, rest_of_handle_cse,
	rest_of_handle_cse2, rest_of_handle_gcse): Call
	delete_dead_jumptables immediately before calling cleanup_cfg.

2005-02-22  Devang Patel  <>

	PR 19952
	* tree-if-conv.c (process_phi_nodes): Use bsi_after_labels and skip
	all labels

2005-02-22  David Edelsohn  <>

	* config/rs6000/aix.h (WINT_TYPE): Define.

2005-02-22  Stan Shebs  <>

	* config/rs6000/rs6000.c (rs6000_override_options): Default to
	natural alignment for 64-bit Darwin.
	(rs6000_parse_alignment_option): Warn about uses of -malign-power
	on 64-bit Darwin.
	* doc/invoke.texi: Document this.

2005-02-22  DJ Delorie  <>

	* c-common.c (c_common_type_for_mode): Pass the mode's precision
	to make_[un]signed_type, not the mode itself.

2005-02-22  Kazu Hirata  <>

	* cfg.c (cached_make_edge): Call make_edge if edge cache is
	not available.  Use tail calls wherever possible.
	(make_edge): Call unchecked_make_edge to create an edge.

	* tree-outof-ssa.c (SSANORM_USE_COALESCE_LIST): Remove.
	(coalesce_ssa_name): Don't check for
	(rewrite_out_of_ssa): Don't use SSANORM_USE_COALESCE_LIST.

2005-02-22  Diego Novillo  <>

	* tree-into-ssa.c (rewrite_blocks): Move debug dumps from ...
	(rewrite_into_ssa): ... here.

2005-02-21  Alexandre Oliva  <>

	PR tree-optimization/19786
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add one
	tag to another's may-alias bitmap when adding to the other's list.

2005-02-21  DJ Delorie  <>

	* tree-ssa-loop-ivopts.c (computation_cost): Start register
	numbering at LAST_VIRTUAL_REGISTER+1 to avoid possibly using hard
	registers in unsupported ways.
	* expmed.c (init_expmed): Likewise.

2005-02-21  Stan Cox  <>

	* config/iq2000/iq2000.h (DWARF_FRAME_RETURN_COLUMN): Change to 31.

2005-02-21  Kazu Hirata  <>

	* tree-cfg.c (fold_cond_expr_cond): New.
	(make_edges): Call fold_cond_expr_cond.
	(find_taken_edge): Accept nothing but INTEGER_CST.
	(find_taken_edge_cond_expr): Reject INTEGER_CST other than 0
	and 1.
	(find_taken_edge_switch_expr): Remove a check for INTEGER_CST.

	* flow.c (delete_dead_jumptables): Speed up by scanning insns
	that do not belong to any basic block.

2005-02-21  Jeff Law  <>

	* cfganal.c (find_unreachable_blocks): Manually CSE load of

2005-02-21  Kazu Hirata  <>

	* tree-outof-ssa.c (SSANORM_REMOVE_ALL_PHIS): Remove.
	Adjust their definitions.
	(remove_ssa_form): Don't check for SSANORM_REMOVE_ALL_PHIS.
	(rewrite_out_of_ssa): Don't use SSANORM_REMOVE_ALL_PHIS.

	* c-objc-common.h, c-pretty-print.c, cgraphunit.c, except.c,
	genautomata.c, langhooks.c, langhooks.h, system.h,
	config/arm/lib1funcs.asm: Update copyright.

2005-02-21  Ulrich Weigand  <>

	* dbxout.c (dbxout_function_end): Emit Lscope label always.

2005-02-21  Richard Guenther  <>

	PR bootstrap/13770
	* doc/install.texi: Document --with-gc.

2005-02-21  Paolo Bonzini  <>

	* simplify-rtx.c (simplify_unary_operation): Add a missing
	"break" statement.

2005-02-21  Eric Botcazou  <>

	PR tree-optimization/18663
	* tree-ssa-dom.c (extract_range_from_cond): Return 0
	if the type has variable bounds.

2005-02-20  Kazu Hirata  <>

	* gcse.c: Remove an obsolete comment.

	* cse.c (init_cse_reg_info): Use xmalloc instead of xrealloc.

2005-02-20  Hans-Peter Nilsson  <>

	* doc/extend.texi (Function Attributes) <Attribute const>: The
	attribute "pure" is below this text, not above.

2005-02-20  John David Anglin  <>

	* pa.c (pa_assemble_integer, get_plabel): Small cleanups.
	(pa_asm_output_mi_thunk): Use asm_output_insn instead of fprintf.
	* som.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Small cleanup.

2005-02-20  Zack Weinberg  <>

	PR 18785
	* langhooks.h (struct lang_hooks): Add to_target_charset.
	* langhooks.c (lhd_to_target_charset): New function.
	* langhooks-def.h: Declare lhd_to_target_charset.
	* c-common.c (c_common_to_target_charset): New function.
	* c-common.h: Declare it.
	* c-objc-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to

	Delete definitions.
	* system.h: Poison them.
	* doc/tm.texi: Don't discuss them.
	* builtins.c (fold_builtin_isdigit): Use lang_hooks.to_target_charset.
	* c-pretty-print.c (pp_c_integer_constant): Don't use pp_c_char.
	(pp_c_char): Do not attempt to generate letter escapes for
	newline, tab, etc.
	* config/arm/arm.c (output_ascii_pseudo_op): Likewise.
	* config/mips/mips.c (mips_output_ascii): Likewise.

2005-02-20  Dorit Naishlos  <>

	PR tree-optimization/19951
	* tree-vect-analyze.c (vect_analyze_loop_form): Check if loop exit edge
	is abnormal.

2005-02-19  Steven Bosscher  <>

	PR middle-end/19698
	* function.h (struct function): New field `max_loop_depth'.
	* cfgloop.c (establish_preds): Update maximum loop depth seen so far.
	(flow_loops_find): Reset the max loop depth count before finding loops.
	* flow.c (MAX_LIVENESS_ROUNDS): New constant.
	(update_life_info_in_dirty_blocks): Remove 2002-05-28 workaround.
	(calculate_global_regs_live): Make sure the loop will terminate
	when the initial sets are not empty.

2005-02-19  Zack Weinberg  <>

	* If libgcc_eh.a would be empty, put a dummy
	object inside.
	* config/ia64/hpux.h: Don't define LIBGCC_SPEC.

2005-02-19  Richard Sandiford  <>

	PR other/19525
	* doc/invoke.texi: Remove documentation of %M spec.
	* gcc.c: Likewise.
	(init_spec): Remove %M suffix from -lgcc_s.
	(do_spec_1): Remove 'M' case.
	* Remove SHLIB_MULTILIB handling.  Expect SHLIB_LINK
	to put shared libraries in the multilib directory.  Remove the
	shlib_so_soname substitution variable.  Don't add a multilib encoding
	to shlib_base_name.  Set shlib_slibdir_qual to the full pathname
	reported by -print-multi-os-directory.  Pass @multilib_dir@ to
	* config/t-slibgcc-elf-ver (SHLIB_SONAME): Use @shlib_base_name@.
	(SHLIB_NAME): Delete.
	(SHLIB_DIR): New macro.
	(SHLIB_INSTALL): Adjust accordingly.
	* config/t-slibgcc-darwin: As for t-slibgcc-elf-ver.
	* config/t-slibgcc-sld: Likewise.
	* config/t-libunwind-elf (SHLIBUNWIND_NAME): Delete.
	(SHLIBUNWIND_SONAME): Use @shlib_base_name@.
	in $(SHLIB_DIR).
	(SHLIBUNWIND_INSTALL): Adjust accordingly.
	* config/i386/t-nwld (SHLIB_SONAME): Delete.
	Use @shlib_base_name@ instead of @shlib_so_name@.
	* config/ia64/t-hpux (SHLIB_LINK): Put
	and in @multilib_dir@.
	(SHLIB_INSTALL): Adjust accordingly.  Add @shlib_slibdir_qual@
	to the install path.
	* config/mips/t-slibgcc-irix: As for t-slibgcc-elf-ver.
	(SHLIB_LINK): Remove previous workaround.
	* config/pa/t-hpux-shlib (SHLIB_DIR, SHLIB_SLIBDIR_QUAL): New macros.
	(SHLIB_INSTALL): Adjust accordingly.  Add $(SHLIB_SLIBDIR_QUAL) to
	the install path.
	* config/rs6000/t-aix43 (SHLIB_LINK): Put @shlib_base_name@.a in
	@multilib_dir@.  Use @multilib_dir@ to check for threading libraries.
	(SHLIB_INSTALL): Adjust accordingly.
	(SHLIB_LIBS): Use @multilib_dir@ to check for threading libraries.
	* config/rs6000/t-aix52: As for config/rs6000/t-aix43.
	* config/sh/t-linux (SHLIB_LINK, SHLIB_INSTALL): As for

2005-02-19  Zdenek Dvorak  <>
	    Jakub Jelinek  <>

	PR tree-optimization/19828
	* tree-ssa-loop-im.c: Add a TODO comment.
	(movement_possibility): Return MOVE_PRESERVE_EXECUTION for calls
	without side-effects.

2005-02-18  James A. Morrison  <>

	* tree-ssa-ccp.c (widen_bitfield): Pass type to build_int_cst and don't
	call fold_convert.

2005-02-18  James E. Wilson  <>

	* doc/invoke.texi (IA-64 Options): Delete -mb-step.
	* config/ia64/ia64.c (last_group, group_idx): Delete variables.
	(errata_find_address_regs, errata_emit_nops, fixup_errata): Delete
	(ia64_reorg): Delete fixup_errata call.
	* config/ia64/ia64.h (MASK_B_STEP, TARGET_B_STEP): Delete.
	(TARGET_SWITCHES): Delete -mb-step entry.

2005-02-19  Jakub Jelinek  <>

	PR c/20043
	* c-typeck.c (composite_type): Handle quals in transparent unions.
	(type_lists_compatible_p): Likewise.

2005-02-18  Stan Shebs  <>

	* config/darwin.c (machopic_select_rtx_section): Don't put relocatable
	expressions in the .literal8 section.

2005-02-18  Geoffrey Keating  <>

	* config/rs6000/darwin-tramp.asm: Remove stray 'APPLE LOCAL' marker.

2005-02-18  Roger Sayle  <>

	* fold-const.c (constant_boolean_node): Always create values of the
	specified type, don't bother calling truthvalue_conversion.

2005-02-18  Joseph S. Myers  <>

	* except.c (output_function_exception_table): Call
	assemble_external_libcall (eh_personality_libfunc).

2005-02-18  Joseph S. Myers  <>

	PR target/19886
	* config/ia64/ia64.h (struct machine_function): Add state_num.
	* config/ia64/ia64.c (process_epilogue,
	process_for_unwind_directive): Use new unwind state numbers each
	time rather than state 1.

2005-02-18  Ulrich Weigand  <>

	PR target/20054
	* config/s390/ ("*llgt_sidi", "*llgt_sidi_split"): Move to
	before the "*llgt_didi" pattern.

2005-02-18  Jason Merrill  <>

	* gimplify.c (gimplify_modify_expr_rhs) [CALL_EXPR]: Revert again.

2005-02-18  Richard Earnshaw  <>

	* arm/lib1funcs.asm (FUNC_ALIAS): New macro.
	(div0): Use it in place of ARM_FUNC_ALIAS.
	(lshrdi3, ashrdi3, ashlrdi3): Likewise.

2005-02-18  Andrew Pinski  <>

	PR middle-end/20030
	* fold-const.c (fold_indirect_ref_1): Use the correct index for zero
	access, the lower bound of the array type if it exists.

2005-02-18  Alexandre Oliva  <>

	PR c++/20008
	* stmt.c (expand_case): Don't assume cleanup_tree_cfg will remove
	cases that are out-of-range for the index type.

2005-02-18  James A. Morrison  <>

	* stmt.c (emit_case_bit_tests): Call fold_convert instead of convert.
	(estimate_case_costs): Don't call convert.
	* expmed.c (expand_shift): Likewise.
	(make_tree): Call fold_convert instead of convert.

2005-02-18  Jakub Jelinek  <>

	PR c++/19813
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Add assertion
	that ref to be marked MEM_READONLY_P doesn't have base that needs

2005-02-18  Joseph S. Myers  <>

	* genautomata.c (output_get_cpu_unit_code_func,
	output_cpu_unit_reservation_p): Don't generate old-style function

2005-02-18  Jakub Jelinek  <>

	PR c++/20023
	PR tree-optimization/20009
	* convert.c (convert_to_integer): Revert 2005-02-16 change.

	PR tree-optimization/18947
	* cgraphunit.c (cgraph_finalize_function): When redefining an extern
	inline, remove all nodes that are inlined into the extern inline
	being redefined.

2005-02-17  Kazu Hirata  <>

	* bt-load.c, cfgloop.c, convert.c, dominance.c, global.c,
	loop-invariant.c, stmt.c, tree-ssa-forwprop.c,
	tree-ssa-live.c, tree-ssanames.c, tree-vn.c,
	config/host-linux.c, config/arm/, config/avr/avr.h:
	Update copyright.

2005-02-17  Roger Sayle  <>

	PR tree-optimization/19917
	* tree-eh.c (tree_could_trap_p): Consider calls to weak functions
	to be potentially trapping.

2005-02-17  Kazu Hirata  <>

	* libgcc2.c, tree-vect-analyze.c: Fix comment typos.

2005-02-17  Andreas Krebbel  <>

	* builtins.c (expand_builtin_return_addr): Remove tem parameter.
	tem becomes a local variable which is set to the value of the
	back end defined INITIAL_FRAME_ADDRESS macro.
	(expand_builtin_frame_address): Omit the base parameter to
	(expand_builtin_profile_func): Likewise.
	* config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Define new macro.
	(DYNAMIC_CHAIN_ADDRESS): Remove the case for the initial frame.
	* doc/tm.texi: Documentation for INITIAL_FRAME_ADDRESS_RTX added.

2005-02-17  Jakub Jelinek  <>

	* config/s390/s390.c (s390_alloc_pool, s390_free_pool,
	s390_chunkify_start): Use BITMAP_ALLOC and BITMAP_FREE.
	* config/frv/frv.c (frv_function_epilogue): Likewise.

2005-02-17  Daniel Berlin  <>

	* lambda-code (perfect_nestify): Remove mark/unmark
	for rewriting hack.
	* tree-loop-linear.c (linear_transform_loops): Add
	rewrite_into_ssa call so that ssa is correct for
	rewriting into loop closed.

2005-02-17  Nathan Sidwell  <>

	* bitmap.h (BITMAP_XMALLOC, BITMAP_XFREE): Remove.
	* bb-reorder.c (duplicate_computed_gotos): Use BITMAP_ALLOC and
	* bt-load.c (btr_def_live_range, combine_btr_defs,
	migrate_btr_def, migrate_btr_defs): Likewise.
	* cfgcleanup.c (thread_jump): Likewise.
	* cfgloop.c (get_loop_body_in_bfs_order): Likewise.
	* df.c (df_insn_table_realloc, df_bitmaps_alloc, df_bitmaps_free,
	df_alloc, df_free, df_du_chain_create, df_bb_rd_local_compute,
	df_rd_local_compute, df_reg_info_compute): Likewise.
	* dominance.c (init_dom_info, free_dom_info): Likewise.
	* flow.c (init_propagate_block_info,
	free_propagate_block_info): Likewise.
	* gcse.c (alloc_gcse_mem, free_gcse_mem): Likewise.
	* global.c (allocate_bb_info, free_bb_info, calculate_reg_pav,
	modify_reg_pav): Likewise.
	* loop-invariant.c (find_defs, find_invariant_insn,
	find_invariants, free_inv_motion_data): Likewise.
	* predict.c (tree_predict_by_opcode,
	estimate_bb_frequencies): Likewise.
	* stmt.c (expand_case): Likewise.
	* tree-cfg.c (tree_duplicate_sese_region): Likewise.
	* tree-dfa.c (mark_new_vars_to_rename): Likewise.
	* tree-if-conv.c (get_loop_body_in_if_conv_order): Likewise.
	* tree-into-ssa.c (insert_phi_nodes_for, def_blocks_free,
	get_def_blocks_for, mark_def_site_blocks, rewrite_into_ssa,
	rewrite_ssa_into_ssa): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree-outof-ssa.c (new_temp_expr_table, free_temp_expr_table,
	analyze_edges_for_bb, perform_edge_inserts): Likewise.
	* tree-scalar-evolution.c (scev_initialize, scev_finalize): Likewise.
	* tree-sra.c (tree_sra): Likewise.
	* tree-ssa-alias.c (init_alias_info, delete_alias_info): Likewise.
	* tree-ssa-ccp.c (ccp_fold_builtin): Likewise.
	* tree-ssa-dce.c (tree_dce_init, tree_dce_done): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
	* tree-ssa-dse.c (tree_ssa_dse): Likewise.
	* tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_var):
	* tree-ssa-live.c (new_tree_live_info, delete_tree_live_info,
	calculate_live_on_entry, calculate_live_on_exit,
	build_tree_conflict_graph): Likewise.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_init, record_use,
	record_important_candidates, set_use_iv_cost, find_depends,
	determine_use_iv_costs, iv_ca_new, iv_ca_free, free_loop_data,
	tree_ssa_iv_optimize_finalize): Likewise.
	* tree-ssa-loop-manip.c (add_exit_phis_var, get_loops_exit,
	find_uses_to_rename_use, rewrite_into_loop_closed_ssa,
	tree_duplicate_loop_to_header_edge): Likewise.
	* tree-ssa-pre.c (init_pre, fini_pre): Likewise.
	* tree-ssa.c (verify_flow_insensitive_alias_info,
	verify_name_tags, verify_ssa, init_tree_ssa,
	delete_tree_ssa): Likewise.
	* tree-ssanames.c (marked_ssa_names, init_ssanames,
	fini_ssanames): Likewise.
	* tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Likewise.

2005-02-17  Ralf Corsepius  <>

	* config/rs6000/t-rtems: Completely reworked.

2005-02-17  Ira Rosen  <>

	* tree-data-ref.c (array_base_name_differ_p): Remove gcc_assert.

2005-02-17  Ira Rosen  <>

	* tree-vect-analyze.c (vect_analyze_pointer_ref_access): Use
	POINTER_TYPE_P when checking that type is a pointer.
	(vect_get_memtag): Remove.
	(vect_address_analysis): Use POINTER_TYPE_P. Call
	vect_object_analysis with dummy parameter for memtag.
	(vect_object_analysis): Extract memtag (functionality that
	used to be in vect_get_memtag and moved here). Fix printings.
	(vect_analyze_data_refs): Fix comment. Call vect_object_analysis
	with correct parameters. Remove call to vect_get_memtag.

2005-02-17  Dorit Naishlos  <>

	* (tree-vect-analyze.o, tree-vect-transform.o): New.
	(tree-vectorizer.o): Added missing dependencies.

	* tree-vectorizer.h (vect_dump, vect_verbosity_level): Added extern
	(slpeel_tree_peel_loop_to_edge): Function externalized (had a static
	declaration in tree-vectorizer.c, now has an extern declaration in
	(slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
	slpeel_verify_cfg_after_peeling, vect_strip_conversion,
	get_vectype_for_scalar_type, vect_is_simple_use,
	vect_is_simple_iv_evolution, vect_can_force_dr_alignment_p,
	vect_supportable_dr_alignment, new_loop_vec_info, destroy_loop_vec_info,
	new_stmt_vec_info, vect_analyze_loop, vectorizable_load,
	vectorizable_store, vectorizable_operation, vectorizable_assignment,
	vect_transform_loop, vect_print_dump_info, vect_set_verbosity_level,
	find_loop_location): Likewise.

	* tree-vectorizer.c (langhooks.h): #include removed.
	(slpeel_tree_peel_loop_to_edge): Function externalized. Declaration
	moved to tree-vectorized.h.
	(slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
	slpeel_verify_cfg_after_peeling, vect_strip_conversion,
	get_vectype_for_scalar_type, vect_is_simple_use,
	vect_is_simple_iv_evolution, vect_can_force_dr_alignment_p,
	vect_supportable_dr_alignment, new_loop_vec_info,
	destroy_loop_vec_info, new_stmt_vec_info, vect_print_dump_info,
	vect_set_verbosity_level, find_loop_location): Likewise.

	(vect_analyze_loop): Function externalized. Declaration moved to
	tree-vectorized.h. Function definition moved to tree-vect-analyze.c.
	(vect_analyze_loop_form): Moved to tree-vect-analyze.c.
	(vect_mark_stmts_to_be_vectorized, vect_analyze_scalar_cycles,
	vect_analyze_data_ref_accesses, vect_analyze_data_ref_dependences,
	vect_analyze_data_refs_alignment, vect_compute_data_refs_alignment,
	vect_enhance_data_refs_alignment, vect_analyze_operations,
	exist_non_indexing_operands_for_use_p, vect_mark_relevant,
	vect_stmt_relevant_p, vect_get_loop_niters,
	vect_analyze_data_ref_dependence, vect_compute_data_ref_alignment,
	vect_analyze_data_ref_access, vect_analyze_pointer_ref_access,
	vect_can_advance_ivs_p, vect_get_ptr_offset, vect_analyze_offset_expr,
	vect_base_addr_differ_p, vect_object_analysis, vect_address_analysis,
	vect_get_memtag): Likewise.

	(vectorizable_load): Function externalized. Declaration moved to
	tree-vectorized.h. Function definition moved to tree-vect-transform.c.
	(vectorizable_store, vectorizable_operation, vectorizable_assignment,
	vect_transform_loop): Likewise.
	(vect_transform_stmt): Moved to tree-vect-transform.c.
	(vect_align_data_ref, vect_create_destination_var,
	vect_create_data_ref_ptr, vect_create_index_for_vector_ref,
	vect_create_addr_base_for_vector_ref, vect_get_new_vect_var,
	vect_get_vec_def_for_operand, vect_init_vector,
	vect_finish_stmt_generation, vect_generate_tmps_on_preheader,
	vect_build_loop_niters, vect_update_ivs_after_vectorizer,
	vect_gen_niters_for_prolog_loop, vect_update_inits_of_dr,
	vect_update_inits_of_drs, vect_do_peeling_for_alignment,
	vect_do_peeling_for_loop_bound): Likewise.

	* tree-vect-analyze.c: New file.
	* tree-vect-transform.c: New file.

2005-02-17  Jason Merrill  <>

	PR mudflap/19319, c++/19317
	* gimplify.c (gimplify_modify_expr_rhs) [CALL_EXPR]: Make return
	slot explicit.

2005-02-17  Gerald Pfeifer  <>

	* doc/install.texi (Specific): Update link for Darwin-specific
	tool binary site.

2005-02-16  James A. Morrison  <>

	* fold-const.c (invert_truthvalue): <INTEGER_CST>: Call

2005-02-16  David Edelsohn  <>

	PR target/19019
	* config/rs6000/t-aix43 (SHLIB_MAPFILES): Add libgcc-ppc64.ver.
	* config/rs6000/t-aix52 (SHLIB_MAPFILES): Same.

2005-02-16  Richard Henderson  <>

	PR 19920
	* libgcc2.c (WORD_SIZE): Remove all definitions; replace uses
	with W_TYPE_SIZE.
	(HIGH_WORD_COEFF, HIGH_HALFWORD_COEFF): Remove all definitions;
	replace uses with Wtype_MAXp1_F.
	(L_fixunstfdi, L_fixtfdi, L_floatditf, L_fixunsxfdi, L_fixxfdi,
	L_floatdixf, L_fixunsxfsi, L_fixunsdfdi, L_floatdidf, L_fixunsdfsi,
	L_powidf2, L_powixf2, L_powitf2, L_muldc3, L_divdc3, L_mulxc3,
	L_divxc3, L_multc3, L_divtc3): Protect with HAVE_DFMODE, HAVE_XFMODE,
	and HAVE_TFMODE as appropriate.
	(__fixunssfDI): Provide an implementation that doesn't need DFmode.
	(__floatdisf): Likewise.
	* libgcc2.h (LIBGCC2_DOUBLE_TYPE_SIZE): New.
	(Wtype_MAXp1_F): New.
	(DFtype, DCtype, __fixdfdi, __floatdidf, __fixunsdfSI, __fixunsdfDI,
	__powidf2, __divdc3, __muldc3): Protect with HAVE_DFMODE.

2005-02-16  Richard Earnshaw  <>

	* PR target/19162
	* arm.c (arm_apply_result_size): New function.
	* arm.h (APPLY_RESULT_SIZE): Define.
	* arm-protos.h (arm_apply_result_size): Add prototype.
	* (RO_REGNUM, FPA_F0_REGNUM, FPA_F7_REGNUM): New constants.
	(movxf): New expand.
	(ldmsi_postinc4_thumb, stmsi_postinc4_thumb): New patterns for Thumb.
	(call_value_symbol): Remove predicate for operand 0.
	(call_value_insn, sibcall_value, sibcall_value_insn): Likewise.
	(untyped_call): Rework to correclty return values for any type.
	(untyped_return): New expand.
	* (movxf_fpa): Simplify and use sfm/lfm when appropriate.

2005-02-16  Stan Shebs  <>

	* config.gcc (powerpc-*-darwin*): Use fragment for Darwin 8 or later.
	* config/rs6000/t-darwin8: New, for 64-bit multilib.

2005-02-16  Eric Botcazou  <>

	* doc/install.texi (sparc-sun-solaris2*): Document required GMP
	configure settings on Solaris 7 and later.

2005-02-16  Diego Novillo  <>

	PR tree-optimization/19865
	* tree-optimize.c (init_tree_optimization_passes): Run
	pass_may_alias after pass_sra.

2005-02-16  Richard Henderson  <>
	    Stuart Hastings  <>

	PR debug/19521
	* dbxout.c (dbxout_function_end): Take decl parameter; update callers.
	Do nothing if debug info suppressed for this function.
	(dbxout_begin_function): Early exit if debug info suppressed for
	this function.

2005-02-16  Kazu Hirata  <>

	PR target/20007
	* config/ip2k/ip2k.c (ip2k_reorg): Adjust calls to
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.

	PR tree-optimization/19967
	* builtins.c (expand_builtin_strstr, expand_builtin_strpbrk,
	expand_builtin_strchr, expand_builtin_strrchr): Take a new
	argument TYPE.  Adjust calls to fold_builtin_XXX.
	(expand_builtin, fold_builtin_1): Adjust calls to
	(fold_builtin_strchr, fold_builtin_strpbrk,
	fold_builtin_strstr, fold_builtin_strrchr): Convert the folded
	result to a requested type TYPE.

2005-02-16  Jakub Jelinek  <>

	PR middle-end/19857
	* fold-const.c (fold): Don't optimize (T)(x & cst) to
	(T)x & (T)cst if (T)cst overflows.
	* convert.c (convert_to_integer) <case POINTER_TYPE>: Pass
	TYPE_UNSIGNED (type) as type_for_size's UNSIGNEDP argument.

2005-02-15  Jeff Law  <>

	* gcse.c (blocks_with_calls): New bitmap.
	(alloc_gcse_mem): Allocate it.
	(free_gcse_mem): Free it.
	(clear_modifY_mem_tables): Clear it.
	(record_last_mem_set_info): Set the proper bit in BLOCK_WITH_CALLS
	when we encounter CALL_INSNs.
	(compute_transp, case MEM): Handle blocks with calls separate
	from blocks without calls.  Use bitmap iterators rather than

2005-02-15  Peter O'Gorman  <>

	PR bootstrap/18810
	* (vis_hide): Use a temporary object file, not
	-o /dev/null.

2005-02-15  Andy Hutchinson  <>

	PR target/19924
	* config/avr/avr.h (MODES_TIEABLE_P): Define to 1 to allow subreg
	access optimization.

2005-02-15  David Edelsohn  <>
	    Alan Modra  <>

	PR target/19019
	* config/rs6000/darwin-ldouble.c (_xlqadd): Rename to __gcc_qadd.
	(_xlqsub): Rename to __gcc_qsub.
	(_xlqmul): Rename to __gcc_qmul.
	(_xlqdiv): Rename to __gcc_qdiv.
	Provide versioned symbol aliases with old names.
	* config/rs6000/libgcc-ppc64.ver: Rename symbols.
	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Rename symbols.
	* config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): New.
	* config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): New.
	* config/rs6000/t-newas (LIB2FUNCS_EXTRA): New.

2005-02-15  James A. Morrison  <>

	* fold-const.c (fold): Fold -(~A) to A + 1.  Fold ~(-A) to A - 1.
	Fold ~(A - 1) and ~(A + -1) to -A.

2005-02-15  James A. Morrison  <>

	PR pch/14940
	PR target/19300
	* config/host-linux.c (linux_gt_pch_use_address): Copy from

2005-02-15  Daniel Berlin  <>

	* tree-vn.c (get_value_handle): Make sure that given an
	is_gimple_min_invariant expression, we always return it.

2005-02-15  Kazu Hirata  <>

	* passes.c (rest_of_handle_gcse): Fix a comment.

2005-02-15  Jeff Law  <>

	* gcse.c (canon_modify_mem_set_list_set): Kill unnecessary
	(alloc_gcse_mem, free_gcse_mem): Corresponding changes.
	(canon_list_insert, record_last_mem_set_info): Similarly.
	(clear_modify_mem_tables): Similarly.

2005-02-15  Kazu Hirata  <>

	* bitmap.c, bitmap.h, lambda-code.c, tree-dfa.c, tree-dump.c,
	tree-dump.h, tree-ssa-loop-manip.c, value-prof.c,
	config/mips/, config/rs6000/aix.h,
	config/rs6000/beos.h, config/rs6000/sysv4.h: Update copyright.

2005-02-15  Richard Henderson  <>

	* bb-reorder.c (find_traces_1_round): Force fallthru edge from a
	call to be best_edge.

2005-02-14  Kazu Hirata  <>

	* basic-block.h: Adjust the prototype for find_basic_blocks.
	* cfgbuild.c (find_basic_blocks): Remove unused arguments.
	* passes.c (rest_of_handle_loop_optimize): Adjust the call to

	* flow.c (recompute_reg_usage): Remove all arguments.
	* passes.c (rest_of_compilation): Adjust the call to
	* rtl.h: Adjust the prototype for recompute_reg_usage.

2005-02-14  Daniel Berlin  <>

	* tree-dump.c (dump_files): Update to reflect new member
	of dump_file_info.
	(dump_register): Add new argument.
	Set glob name.
	(dump_switch_p_1): Check against glob name if doglob was passed.
	(dump_switch_p): Check against regular first, then glob if
	we didn't have any hits on the dump name.
	* tree-optimize.c (register_one_dump_file):
	Pass in glob name as well.
	* tree-pass.h (struct dump_file_info): Add glob

2005-02-14  Joseph S. Myers  <>

	PR preprocessor/16323
	* doc/invoke.texi: Document that -Wendif-labels is on by default.

2005-02-14  David Edelsohn  <>

	PR target/19019
	* config/rs6000/ (trunctfdf2): Change to define_expand.
	(trunctfdf2_internal1): New.
	(trunctfdf2_internal2): Renamed from trunctfdf2.

2005-02-14  Diego Novillo  <>

	PR tree-optimization/19853
	* tree-dfa.c (add_referenced_var): Always examine DECL_INITIAL.

2005-02-14  Kazu Hirata  <>

	* passes.c (rest_of_handle_loop_optimize): Remove calls to
	delete_dead_jumptables and cleanup_cfg.

2005-02-14  Ulrich Weigand  <>

	* reload.c (find_reloads): Swap address_reloaded flags when
	swapping commutative operands.

2005-02-14  Sebastian Pop  <>

	* lambda-code.c (lambda_loopnest_to_gcc_loopnest, perfect_nestify):
	Use standard_iv_increment_position for computing the bsi position
	for create_iv.
	* tree-ssa-loop-manip.c (create_iv): Add a comment on how to compute
	the bsi position.

2005-02-13  Zdenek Dvorak  <>

	PR target/17428
	* cfgrtl.c (safe_insert_insn_on_edge): Avoid extending
	life range of hard registers.
	* value-prof.c (insn_prefetch_values_to_profile): Only
	scan normal insns.

	* value-prof.c (rtl_find_values_to_profile): Do not look for values to
	profile in libcalls.

2005-02-13  Nathan Sidwell  <>

	* bitmap.h (bitmap_and_compl_into): Return bool.
	* bitmap.c (bitmap_and_compl_into): Return changed flag.

2005-02-13  James A. Morrison  <>

	PR tree-optimization/19944
	* fold-const.c (fold): Re-add ABS_EXPR folding.

2005-02-13  David Edelsohn  <>

	PR target/19019
	* config/rs6000/aix.h ({TARGET,MASK}_XL_CALL): Rename to
	(SUBTARGET_SWITCHES): Rename xl-call to xl-compat.  Use
	* config/rs6000/beos.h ({TARGET,MASK}_XL_CALL): Remove.
	* config/rs6000/rs6000.c (function_arg): Change TARGET_XL_CALL to
	(rs6000_arg_partial_bytes): Same.
	(rs6000_generate_compare): Generate PARALLEL for compare if TFmode
	and XL compatibility enabled.
	* config/rs6000/rs6000.h (TARGET_XL_CALL): Rename to TARGET_XL_COMPAT.
	* config/rs6000/ (cmptf_internal1): Add !TARGET_XL_COMPAT
	test to final condition.
	(cmptf_internal2): New.
	* doc/invoke.texi (RS/6000 Subtarget Options): Change xl-call to
	xl-compat.  Add TFmode information to description.

2005-02-13  Kazu Hirata  <>

	* flags.h, read-rtl.c, tree-ssa-live.h: Update copyright.

2005-02-13  Jason Merrill  <>

	PR c++/16405
	* fold-const.c (fold_indirect_ref_1): Split out from...
	(build_fold_indirect_ref): Here.
	(fold_indirect_ref): New fn.
	* tree.h: Declare it.
	* gimplify.c (gimplify_compound_lval): Call fold_indirect_ref.
	(gimplify_modify_expr_rhs): Likewise.
	(gimplify_expr): Likewise.

2005-02-13  James A. Morrison  <>

	PR tree-optimization/14303
	PR tree-optimization/15784
	* fold-const.c (fold): Fold ABS_EXPR<x> >= 0 to true, when possible.
	Fold ABS_EXPR<x> < 0 to false.  Fold ABS_EXPR<x> == 0 to x == 0 and
	ABS_EXPR<x> != 0 to x != 0.

2005-02-12  Kazu Hirata  <>

	* c-tree.h, combine.c, expmed.c, flow.c, libgcc2.c,
	simplify-rtx.c, tree-ssa-live.h: Fix comment typos.  Follow
	spelling conventions.

	* passes.c (rest_of_handle_gcse): Don't run cse_main and
	delete_trivially_dead_insns too many times.

	* passes.c (rest_of_handle_gcse): Remove dead assignments to
	tem and tem2.

2005-02-12  Ira Rosen  <>

	* tree-vectorizer.c (vect_get_base_and_offset): Remove.
	(vect_is_simple_iv_evolution): Remove redundant parameter
	and step check.
	(vect_analyze_scalar_cycles): Call vect_is_simple_iv_evolution
	without last parameter.
	(vect_analyze_pointer_ref_access): Get access_fn as parameter.
	Return pointer step. Call vect_is_simple_iv_evolution without
	last parameter. Check only that the step is multiple of size
	type. Remove stmt_vinfo updates.
	(vect_get_memtag_and_dr): Remove.
	(vect_get_memtag): New function.
	(vect_address_analysis): New function.
	(vect_object_analysis): New function.
	(vect_analyze_data_refs): Call vect_object_analysis and
	vect_get_memtag. Update stmt_vinfo fields.

2005-02-12  Ira Rosen  <>

	* tree-data-ref.c (array_base_name_differ_p): Check that the bases
	exist and are objects. Remove checks for pointer.
	* tree-vectorizer.c (vect_create_addr_base_for_vector_ref): Use
	(vect_create_data_ref_ptr): Likewise.
	(vect_base_addr_differ_p): New function.
	(vect_analyze_data_ref_dependence): Call vect_base_addr_differ_p.
	(vect_analyze_pointer_ref_access): Add output parameter - ptr_init.
	Don't set the DR_BASE_NAME field of data-ref.
	(vect_get_memtag_and_dr): Use ptr_init instead of DR_BASE_NAME.

2005-02-12  Uros Bizjak  <>

	* optabs.h (enum optab_index): Add new OTI_ldexp.
	(ldexp_optab): Define corresponding macro.
	* optabs.c (init_optabs): Initialize ldexp_optab.
	* genopinit.c (optabs): Implement ldexp_optab using ldexp?f3
	* builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_LDEXP{,F,L}
	using ldexp_optab.
	(expand_builtin): Expand BUILT_IN_LDEXP{,F,L} using
	expand_builtin_mathfn_2 if flag_unsafe_math_optimizations is set.

	* config/i386/ (ldexpsf3, ldexpdf3, ldexpxf3): New expanders
	to implement ldexpf, ldexp and ldexpl built-ins as inline x87

2005-02-12  Ira Rosen  <>

	* tree-vectorizer.h (struct _stmt_vec_info): Rename a field: base
	to base_address.
	* tree-vectorizer.c (new_stmt_vec_info): Rename the above field of
	(vect_get_base_and_offset): Always return an address.
	(vect_create_addr_base_for_vector_ref): Remove treatment for
	different data reference types.
	(vect_compute_data_ref_alignment): Rename base to base_address in
	stmt_vec_info. Get the object in order to force its alignment.
	(vect_get_memtag_and_dr): Rename base to base_address in
	stmt_vec_info. Extract the object for memtag analysis.

2005-02-12  Hans-Peter Nilsson  <>

	PR regression/19898.
	* config/cris/cris.c (cris_notice_update_cc): When testing if insn
	changes cc_status, use apply modified_in_p to part of cc_status
	and insn, not cris_reg_overlap_mentioned_p on SET_DEST of insn

2005-02-11  Richard Henderson  <>

	* tree-complex.c (expand_complex_libcall): New.
	(expand_complex_multiplication): Use it for c99 compliance.
	(expand_complex_division): Likewise.
	* fold-const.c (fold_complex_add, fold_complex_mult): New.
	(fold): Call them.
	* builtins.c (built_in_names): Remove const.
	* tree.c (build_common_builtin_nodes): Build complex arithmetic
	(built_in_names): Remove const.
	* c-common.c (c_common_type_for_mode): Handle complex modes.
	* flags.h, toplev.c (flag_complex_method): Rename from
	* libgcc2.c (__divsc3, __divdc3, __divxc3, __divtc3,
	__mulsc3, __muldc3, __mulxc3, __multc3): New.
	* libgcc2.h: Declare them.
	* libgcc-std.ver: Export them.
	* (lib2funcs): Build them.

2005-02-11  Steven Bosscher  <>

	PR tree-optimization/19876
	Partially revert my change from 2005-01-14
	* tree-ssa-pre.c (compute_antic_aux): Make recursive once again...
	(compute_antic): ...and remove the loop here.

2005-02-11  Jakub Jelinek  <>

	PR middle-end/19858
	* fold-const.c (make_bit_field_ref): If bitpos == 0 and bitsize
	is number of inner's bits, avoid creating a BIT_FIELD_REF.

	* config/rs6000/sysv4.h (ENDFILE_LINUX_SPEC): Use crtendS.o instead of
	crtend.o if -pie.  Use %{x:a;:b} spec syntax.

2005-02-11  Daniel Jacobowitz  <>

	* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
	offsets for the big-endian 32-bit case.

2005-02-11  Joseph S. Myers  <>

	* config/ia64/hpux.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.

2005-02-11  Dale Johannesen  <>

	* cselib.c (cselib_process_insn):  Clear out regs where
	* reload.c (find_equiv_reg): Ditto.

2005-02-11  Ian Lance Taylor  <>

	* read-rtl.c (read_rtx_1): Give fatal error if we see a vector
	with no elements.

	* tree.c (build_function_type_list): Work correctly if there are
	no arguments.

2005-02-11  Ulrich Weigand  <>

	* config/s390/ ("*cmpdi_cct", "*cmpsi_cct", "*cmpdi_ccs",
	"*cmpsi_ccs"): Use %h instead of %c to print immediate operand.
	("*zero_extendhisi2_64", "*zero_extendhisi2_31"): Choose based on

2005-02-11  Ralf Corsepius  <>

	* config/rs6000/t-rtems:
	(MULTILIB_OPTIONS): Remove mcpu=602.
	(MUTLILIB_DIRNAMES): Remove m602.
	Let mcpu=602 match mcpu=603.
	(MULTILIB_NEW_EXCEPTIONS_ONLY): Add mcpu=601, mcpu=602, mcpu=m603.

2005-02-10  John David Anglin  <>

	* pa/linux-unwind.h (pa32_fallback_frame_state): Handle misaligned
	signal trampolines.

2005-02-10  David Daney  <>

	* config/alpha/linux-unwind.h: Add exception clause to copyright.
	* config/i386/linux-unwind.h: Likewise.
	* config/ia64/linux-unwind.h: Likewise.
	* config/mips/linux-unwind.h: Likewise.
	* config/pa/linux-unwind.h: Likewise.
	* config/rs6000/linux-unwind.h: Likewise.
	* config/s390/linux-unwind.h: Likewise.
	* config/sh/linux-unwind.h: Likewise.
	* config/sparc/linux-unwind.h: Likewise.

2005-02-10  Steven Bosscher  <>

	PR tree-optimization/17549
	* tree-outof-ssa.c (find_replaceable_in_bb): Do not allow
	TER to replace a DEF with its expression if the DEF and the
	rhs of the expression we replace into have the same root

2005-02-10  Richard Sandiford  <>

	* config/mips/ Fix the placement of the match_scratch in the
	lea64 peephole2.

2005-02-10  Kazu Hirata  <>

	* cse.c, tree-ssa-loop-ivopts.c, config/rs6000/linux-unwind.h:
	Fix comment typos.

2005-02-10  Zdenek Dvorak  <>

	* tree-ssa-loop-ivopts.c (determine_base_object): Ignore casts.
	(strip_offset): Handle addresses.
	(add_address_candidates): Use strip_offset.
	(difference_cost): Reflect strip_offset change.
	(force_var_cost, difference_cost): Strip nops.

2005-02-10  Kazu Hirata  <>

	* df.h (DF_REF_MODE_CHANGE, DF_REF_MEM_OK): Remove.

	* builtins.def, haifa-sched.c, libgcc2.c, libgcc2.h,
	tree-ssa-loop-ivcanon.c, tree-ssa-loop-niter.c,
	config/cris/cris-protos.h, config/cris/cris.c: Update

2005-02-10  Jeff Law  <>

	* tree-ssa-dom.c (thread_across_edge): Use xmalloc, not xcalloc.
	(lookup_avail_expr): Similarly.

2005-02-10  Richard Guenther  <>

	* builtins.c (fold_builtin_powi): New function.
	(fold_builtin_1): Call it.

2005-02-10  Steven Bosscher  <>

	PR documentation/19309
	* doc/cpp.texi: The __GNUC__ and related predefined macros
	are also defined for the "standalone" cpp.
	Some non-GCC compilers may also define __GNUC__.

2005-02-10  Jakub Jelinek  <>

	PR c/19342
	* c-typeck.c (common_type): New routine.  Old common_type renamed
	(c_common_type): ...this.
	(build_conditional_expr, build_binary_op): Use c_common_type instead
	of common_type.

2005-02-10  Steven Bosscher  <>

	* doc/md.texi: Replace @samp{length} with @code{length}.

2005-02-09  Zdenek Dvorak  <>

	PR tree-optimization/18687
	* tree-flow.h (find_loop_niter): Declare.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Try using scev even for loops with more than one exit.
	* tree-ssa-loop-ivopts.c (struct loop_data): Removed niter field.
	(struct ivopts_data): Added niters field.
	(struct nfe_cache_elt): New.
	(nfe_hash, nfe_eq, niter_for_exit, niter_for_single_dom_exit): New
	(tree_ssa_iv_optimize_init): Initialize niters cache.
	(determine_number_of_iterations): Removed.
	(find_induction_variables): Do not call determine_number_of_iterations.
	Access niters for single exit through niter_for_single_dom_exit.
	(add_iv_outer_candidates): Access niters for single exit through
	(may_eliminate_iv): Take data argument.  Use niter_for_exit.  Do not use
	(iv_period): New function.
	(determine_use_iv_cost_condition): Pass data to may_eliminate_iv.
	(may_replace_final_value): Take data argument.  Use
	(determine_use_iv_cost_outer): Pass data to may_replace_final_value.
	(rewrite_use_compare): Pass data to may_eliminate_iv.
	(rewrite_use_outer): Pass data to may_replace_final_value.
	(free_loop_data): Clean up the niters cache.
	(tree_ssa_iv_optimize_finalize): Free the niters cache.
	(tree_ssa_iv_optimize_loop): Do not call loop_commit_inserts.
	* tree-ssa-loop-niter.c (find_loop_niter): New function.
	(find_loop_niter_by_eval): Use tree_int_cst_lt.
	(num_ending_zeros): Moved to tree.c.
	* tree.h (num_ending_zeros): Declare.
	* tree.c (num_ending_zeros): Moved from tree.c.

2005-02-09  Richard Henderson  <>

	* builtins.c (DEF_BUILTIN): Add COND argument.
	* tree.h (DEF_BUILTIN): Likewise.
	* c-common.c (DEF_BUILTIN): Add COND argument.
	* tree.c (local_define_builtin): New.
	(build_common_builtin_nodes): New.

2005-02-09  Roger Sayle  <>

	* fold-const.c (fold_strip_sign_ops): New function to simplify a
	floating point expression ignoring the sign of the result.
	(fold) <ABS_EXPR>: Use it to simplify fabs(x).
	(fold) <MULT_EXPR>: Use it to simplify x*x.
	* tree.h (fold_strip_sign_ops): Prototype here.
	* builtins.c (fold_builtin_copysign): Take an additional FNDECL
	argument.  Use fold_strip_sign_ops to simplify the first argument.
	(fold_builtin_pow):  Use fold_strip_sign_ops to simplify the
	first argument when the second argument is an even integer
	constant, but only with -funsafe_math_optimizations.
	(fold_builtin_1): Update call to fold_builtin_copysign.

2005-02-09  Ian Lance Taylor  <>

	PR middle-end/19583
	* gimple-low.c (try_catch_may_fallthru): In EH_FILTER_EXPR case,
	just check whether EH_FILTER_FAILURE falls through.

2005-02-09  Andreas Krebbel  <>

	* gcc/haifa-sched.c (schedule_block): Make queued sched group
	insns return to ready list in the next turn.

2005-02-09  Richard Guenther  <>

	PR middle-end/19402
	* builtins.def: New __builtin_powi[lf].
	* builtins.c (mathfn_built_in): Handle BUILT_IN_POWI.
	(expand_builtin_powi): New function.
	(expand_builtin): Dispatch to expand_builtin_powi.
	* libgcc2.h: Add prototypes for __builtin_powi[lf].
	* libgcc2.c: Add __builtin_powi[lf] implementation.
	* Add __builtin_powi[lf] to lib2funcs.
	* optabs.h: Add powi_optab.
	* optabs.c (init_optabs): Initialize powi_optab.
	* doc/extend.texi: Document __builtin_powi[lf].

2005-02-09  Dorit Naishlos  <>

	* tree-vectorizer.c (vect_set_dump_settings): Check that dump_file

2005-02-09  Richard Guenther  <>

	PR middle-end/19854
	* fold-const.c (try_move_mult_to_index): Remove redundant
	type argument.  Create ADDR_EXPR with correct type.
	(fold): Update callers of try_move_mult_to_index.  Convert
	result to the appropriate type.

2005-02-09  Roger Sayle  <>

	PR target/19597
	* config/avr/avr.c (default_rtx_costs): Delete.
	(avr_operand_rtx_cost): New function.
	(avr_rtx_costs): Completely rewrite.

2005-02-08  Hans-Peter Nilsson  <>

	PR target/19806
	* config/cris/cris.c (in_code): New variable.
	(cris_output_addr_const): Now a static function, a wrapper for
	(cris_asm_output_symbol_ref): New function, broken out SYMBOL_REF
	case from old cris_output_addr_const.
	(cris_asm_output_label_ref): Similar for LABEL_REF.
	(cris_output_addr_const_extra): Similar for UNSPEC.
	* config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA)
	* config/cris/cris-protos.h (cris_output_addr_const): Remove
	(cris_asm_output_symbol_ref, cris_output_addr_const_extra)
	(cris_asm_output_label_ref): Declare.

2005-02-08  Paolo Bonzini  <>

	PR preprocessor/19801
	* doc/cppinternals.texi (Conventions, Lexer, Files): Adjust
	filenames that changed when libcpp was moved to the toplevel.

2005-02-07  Roger Sayle  <>

	* simplify-rtx.c (simplify_relational_operation_1): Avoid creating
	zero extensions of BImode operands.  Call lowpart_subreg instead
	of gen_lowpart_common and gen_lowpart_SUBREG.

2005-02-07  Nathanael Nerode  <>

	PR ada/19489
	* Use cc_for_cross_gnattools, not cc_set_by_configure.
	* Set cc_for_cross_gnattools.
	* configure: Regenerate.

2005-02-08  Alan Modra  <>

	PR target/19803
	* predict.c (PROB_VERY_UNLIKELY): Use 1% instead of 10%.

2005-02-07  Eric Botcazou  <>

	PR debug/19327
	* dbxout.c (dbxout_symbol) <FUNCTION_DECL>: Skip inline instance
	of nested functions.

2005-02-07  Jonathan Wakely  <>

	* doc/extend.texi: Document deprecated extensions allowing
	static floating-point members to have initializers and allowing
	floating-point literals in integral constant expressions.

2005-02-07  Kazu Hirata  <>

	* cfgcleanup.c, df.h, diagnostic.c, rtl.c, tree-vectorizer.h,
	config/darwin7.h, config/mips/mips.c,
	config/rs6000/, config/rs6000/darwin-tramp.asm:
	Update copyright.

	* cse.c: Update comments.

2005-02-07  Richard Guenther  <>

	PR middle-end/19775
	* builtins.c (fold_builtin_sqrt): Transform
	sqrt(pow(x,y)) to pow(fabs(x),y*0.5), not

2005-02-07  Leehod Baruch  <>
	    Dorit Naishlos  <>

	* doc/invoke.texi (ftree-vectorizer-verbose): New.
	* opts.c (OPT_ftree_vectorizer_verbose_): New case for switch.
	* common.opt (ftree-vectorizer-verbose): New Flag for the vectorizer
	was added.
	* tree.h (vect_set_verbosity_level): New extern function declaration
	* tree-vectorizer.h (verbosity_levels): New enum type.
	* tree-vectorizer.c (vect_debug_stats): Function removed.
	(vect_debug_details): Likewise.
	(vect_verbosity_level): Global variable was defined and initialized.
	(vect_dump): Global variable definition.
	(vect_print_dump_info): New function.
	(vect_set_dump_settings): New function.
	(vect_set_verbosity_level): New function.
	(vectorize_loops): Add call to vect_set_dump_settings.

	(slpeel_make_loop_iterate_ntimes): Dump condition was changed.
	(slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
	(slpeel_tree_peel_loop_to_edge): Likewise.

	(vect_analyze_offset_expr): Call to vect_print_dump_info with
	appropriate verbosity level instead of call to vect_debug_details
	or vect_debug_stats.
	(vectorize_loops): Likewise.

	(vect_do_peeling_for_loop_bound): Dump format slightly changed.
	(vect_analyze_loop): Likewise.
	(vect_mark_stmts_to_be_vectorized): Add call to print_generic_expr.

2005-02-07  Richard Sandiford  <>

	PR bootstrap/19796
	2005-01-26  Richard Sandiford  <>
	* config/mips/iris6.h (ENDFILE_SPEC): Don't link in irix-csr.o if
	either -ffast-math or -funsafe-math-optimizations is in use.

	2005-01-24  Richard Sandiford  <>
	* config/mips/irix-csr.c: New file.
	* config/mips/t-iris6 (irix-csr.o): New rule to build it.
	(EXTRA_MULTILIB_PARTS): Add irix-csr.o.
	* config/mips/iris6.h (ENDFILE_SPEC): Include it in n32 and n64

2005-02-07  Alexandre Oliva  <>

	* config/mn10300/linux.h (LIB_SPEC, STARTFILE_SPEC): Remove
	redundant, incorrect definitions.

	* config/frv/ ("tls_indirect_call"): Turn into libcall-like
	("*tls_indirect_call"): New, reference hard regs directly.
	* config/frv/frv.c (gen_inlined_tls_plt): Adjust.

2005-02-07  Ralf Corsepius  <>

	* config/arm/rtems-elf.h (SUBTARGET_EXTRA_ASM_SPEC):
	Let !-mhard-float !-msoft-float imply -mfpu=softfpa.

2005-02-06  Roger Sayle  <>

	PR rtl-optimization/19800
	* simplify_rtx.c (simplify_relational_operation_1): Explicitly
	call gen_lowpart_common and gen_lowpart_SUBREG instead of calling

2005-02-07  Ralf Corsepius  <>

	* config/m68k/t-rtems (MULTILIB_MATCHES): Let m528x match m5200.

2005-02-07  Joseph S. Myers  <>

	PR other/17135
	* doc/invoke.texi: Correct documentation of -freorder-functions.

2005-02-06  Joseph S. Myers  <>

	PR other/14402
	* doc/invoke.texi: Don't mention gccbug.

2005-02-06  Roger Sayle  <>
	    Andrew Pinski  <>
	    Paolo Bonzini  <>

	* simplify-rtx.c (simplify_relational_operation_1): Simplify
	(ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))
	into just (zero_extract:SI FOO (const_int 1) BAR).

2005-02-06  Joseph S. Myers  <>

	* doc/cpp.texi: Include gcc-common.texi.  Don't define gcctabopt
	macro locally.  Don't give last revision date.  Use GCC version
	number from gcc-common.texi.
	* doc/cppinternals.texi: Include gcc-common.texi.  Don't give last
	revision date.  Use GCC version number from gcc-common.texi.
	Describe being a library as current state rather than as 3.x
	* doc/gcc.texi: Remove last update date.
	* doc/gccint.texi: Likewise.  Update copyright dates.
	* doc/install.texi: Update copyright dates.

2005-02-06  Joseph S. Myers  <>

	PR other/7549
	* doc/invoke.texi: Mention for each option included in -Wall that
	it is included in -Wall.
	* doc/gcc.texi: Update copyright and last modification date.

2005-02-06  Zdenek Dvorak  <>

	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add
	unnecessary cast to original induction variable increments.

2005-02-06  Zdenek Dvorak  <>

	PR tree-optimization/18219
	* tree-ssa-loop-ivopts.c (get_computation_at): Produce computations
	in distributed form.

2005-02-06  Richard Sandiford  <>

	* expmed.c (store_bit_field): Make the SUBREG code adjust bitnum.
	Set bitpos and offset later in the function.  Do nothing if the
	target is a register and if the bitfield lies completely outside
	that register.
	(extract_bit_field): Make the same SUBREG, bitpos and offset changes
	here.  Return an uninitialised register if the source value is stored
	in a register and the bitfield lies completely outside that register.

2005-02-06  Steven Bosscher  <>

	* df.c (df_insn_refs_record): Use XEXP to get the operand of a USE,
	not SET_DEST.

2005-02-06  Marcin Dalecki  <>

	* diagnostic.c (default_diagnostic_finalizer): Fix use of attribute.

2005-02-06  Geoffrey Keating  <>

	* config.gcc (*-*-darwin*): Separate darwin7 and darwin8 configs.
	* config/darwin8.h: New.
	* config/darwin7.h: Update comment.

2005-02-03  Leehod Baruch  <>
	    Dorit Naishlos  <>

	* tree-vectorizer.h (LOC): New type.
	(loop_line_number): New field in struct _loop_vec_info.
	(LOOP_VINFO_LOC, LOOP_LOC): New macros.

	* tree-vectorizer.c (input.h): Included.
	(find_loop_location): New function.
	(vect_debug_stats): Argument changed from loop to LOC. Computation of
	loop line number removed.
	(vect_debug_details): Likewise.
	(new_loop_vec_info): Initialize new field LOOP_VINFO_LOC.

	(slpeel_make_loop_iterate_ntimes): Call find_loop_location. Argument in
	call to vect_debug_details/stats changed from loop to loop_loc.
	(slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
	(slpeel_tree_peel_loop_to_edge): Likewise.

	(vect_analyze_offset_expr): Argument in call to vect_debug_details/stats
	changed from NULL to UNKNOWN_LOC.
	(vectorize_loops): Likewise.

	(vectorizable_load): Argument in call to vect_debug_details/stats
	changed from loop to LOOP_LOC (loop_vinfo).
	(vect_analyze_loop): Likewise.

	(vect_analyze_loop_form): Argument in call to vect_debug_details/stats
	changed from loop to loop_loc.

	(vect_enhance_data_refs_alignment): Removed unused variable loop.

2005-02-03  Leehod Baruch  <>
	    Dorit Naishlos  <>

	* tree-vectorizer.c (vect_analyze_data_ref_dependence): Function
	declaration added.
	(vect_analyze_data_ref_dependences): Likewise.

	(vect_is_simple_use): Argument changed from loop structure to
	loop_vect_info structure.
	(vect_can_advance_ivs_p): Likewise.
	(vect_create_index_for_vector_ref): Likewise.
	(vect_update_ivs_after_vectorizer): Likewise.
	(new_stmt_vec_info): Likewise.

	(new_loop_vec_info): Second argument in call to new_stmt_vec_info was
	changed from loop to loop_vinfo.
	(vect_create_data_ref_ptr): First argument in call to
	vect_create_index_for_vector_ref was changed from loop to loop_vinfo.
	(vectorizable_assignment): Second argument in call to vect_is_simple_use
	was changed from loop to loop_vinfo.
	(vectorizable_operation): Likewise.
	(vectorizable_store): Likewise.
	(vect_mark_stmts_to_be_vectorized): Likewise.
	(vect_do_peeling_for_loop_bound): First argument in call to
	vect_update_ivs_after_vectorizer was changed from loop to loop_vinfo.
	(vect_analyze_operations): Argument in call to vect_can_advance_ivs_p
	was changed from loop to loop_vinfo.
	(vect_analyze_data_ref_dependences): Third argument in call to
	vect_analyze_data_ref_dependence was changed from loop to loop_vinfo.

	(vect_create_index_for_vector_ref): Get the loop from loop_vinfo.
	(vect_create_data_ref_ptr): Likewise.
	(vect_init_vector): Likewise.
	(vect_get_vec_def_for_operand): Likewise.
	(vectorizable_assignment): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_store): Likewise.
	(vectorizable_load): Likewise.
	(vect_update_ivs_after_vectorizer): Likewise.
	(vect_is_simple_use): Likewise.
	(vect_analyze_data_ref_dependence): Likewise.
	(vect_analyze_pointer_ref_access): Likewise.
	(vect_can_advance_ivs_p): Likewise.

	* tree-vectorizer.h: (_loop_vec_info): Definition and macros moved
	before _stmt_vec_info.
	(_stmt_vec_info): Loop field replaced by loop_vec_info.
	(new_stmt_vec_info): Argument changed from loop structure to
	loop_vect_info structure

	(vect_analyze_data_ref_dependences): Unnecessary line was removed.
	(vect_analyze_offset_expr): Avoid 80 columns overflow.
	(vect_create_addr_base_for_vector_ref): Likewise.
	(vect_analyze_pointer_ref_access): Likewise.

2005-02-03  Andrew Pinski  <>

	PR tree-opt/19768
	* tree-ssa-dse.c (fix_phi_uses): Update the occurs in abnormal
	phi flag if the phi is abnormal.

2005-02-03  Andrew Pinski  <>

	PR tree-opt/19736
	* tree-ssa.c (replace_immediate_uses): Update the immediate_uses
	information for the new statement.

2005-02-03  Joseph S. Myers  <>

	PR driver/19117
	* gcc.c (main): Include the target in -v output.

2005-02-03  Alexandre Oliva  <>

	* combine.c (simplify_comparison, case SIGN_EXTEND, ZERO_EXTEND):
	Do not drop the extend if we'd have to add a paradoxical subreg
	later.  Include optabs.h and insn-codes.h.
	* (combine.o): Depend on $(OPTABS_H).

2005-02-02  Roger Sayle  <>

	PR middle-end/19405
	* real.h (REAL_MODE_FORMAT_COMPOSITE_P): New macro.
	* fold-const.c (const_binop): Avoid constant folding floating
	point operations in modes that use composite representations.
	* simplify-rtx.c (simplify_binary_operation): Likewise.

2005-02-02  Geoffrey Keating  <>

	* config/rs6000/ (altivec_dst): Make the first operand
	a REG, not a MEM.
	(altivec_dstt): Likewise.
	(altivec_dstst): Likewise.
	(altivec_dststt): Likewise.
	* config/rs6000/rs6000.c (altivec_expand_dst_builtin): Adjust creation
	of first operand.

2005-02-03  Dorit Naishlos  <>

	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Copy
	EXPR_LOCUS from orig_cond to the new cond_stmt.
	(vect_finish_stmt_generation): Copy EXPR_LOCUS from stmt to
	the new vec_stmt.

2005-02-03  Dorit Naishlos  <>

	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Call
	standard_iv_increment_position. Remove call to bsi_next
	(no need to bump the iterator anymore).
	(vect_create_index_for_vector_ref): Call
	standard_iv_increment_position. Remove second function argument.
	(vect_finish_stmt_generation): Remove call to bsi_next
	(no need to bump the iterator anymore).
	(vect_create_data_ref_ptr): Remove second argument (bsi) in call
	to vect_create_index_for_vector_ref.

2005-02-03  Dorit Naishlos  <>

	* tree-vectorizer.c (vect_mark_stmts_to_be_vectorized): Check if
	phis are used out of the loop.

2005-02-03  Joseph S. Myers  <>

	PR c/17807
	* c-decl.c (undef_nested_function): New variable.
	(pop_scope): Diagnose undefined nested functions.
	(finish_function): Don't attempt cgraph processing or genericizing
	if current top-level function contained an undefined nested
	function.  Reset undef_nested_function at the end of a top-level

2005-02-02  Zdenek Dvorak  <>

	* tree.c (build_int_cst_type): Take sign of the value into account
	when deciding whether sign extend the value.

2005-02-02  Joseph S. Myers  <>

	PR c/18502
	* gcc.c (cpp_unique_options): Remove %{trigraphs}.
	(cpp_options, cc1_options): Change %{std*&ansi} to

2005-02-02  Kazu Hirata  <>

	* cse.c: Update comments.

2005-02-02  Aldy Hernandez  <>

	* config/rs6000/rs6000.c (rs6000_spe_function_arg): Multi-reg
	arguments go on the stack.  Do not put complex doubles in odd/even

2005-02-02  Steven Bosscher  <>

	* doc/invoke.texi: Update the options enabled at -O1, -O2,
	and -O3.  Update the documentation for -fgcse-sm, -fgcse-las,
	-ftree-pre, and -fthread-jumps.

2005-02-02  Richard Sandiford  <>

	PR tree-optimization/19578
	* tree-flow.h (modified_noreturn_calls): Declare.
	(noreturn_call_p): Declare.
	* tree-flow-inline.h (noreturn_call_p): New function.
	(modify_stmt): Add modified noreturn calls to modified_noreturn_calls.
	* tree-cfg.c (modified_noreturn_calls): New variable.
	(cleanup_control_flow): Use noreturn_call_p.  Split basic blocks
	that contain a mid-block noreturn call.
	* tree-ssa.c (delete_tree_ssa): Clear modified_noreturn_calls.

2005-02-02  Kazu Hirata  <>

	* df.c (df_def_record_1, df_uses_record): Don't use
	* df.h (DF_FOR_REGALLOC): Remove.

2005-02-02  Joseph S. Myers  <>

	PR c/19435
	* c-typeck.c (really_start_incremental_init): Reset
	constructor_max_index for arrays of incomplete type.

2005-02-02  Jeff Law  <>

	* gcse.c (struct reg_set): Store the block index where the register
	was set rather than the setting insn.
	(record_one_set, compute_transp): Corresponding changes.
	(pre_insert_copy_insn): Do not call replace_one_set.
	(replace_one_set): Remove.

2005-02-02  Joseph S. Myers  <>

	PR other/15514
	* doc/gcov.texi: Fix typo.

2005-02-01  Richard Henderson  <

	PR target/19680
	* config/i386/i386.h (MODES_TIEABLE_P): Use ix86_modes_tieable_p.
	* config/i386/i386.c (ix86_hard_regno_mode_ok): Change return
	type to bool.
	(ix86_tieable_integer_mode_p, ix86_modes_tieable_p): New.
	* config/i386/i386-protos.h: Update.

2005-02-01  Steven Bosscher  <>

	PR tree-optimization/19217
	* tree-cfg.c (verify_expr): Use the data field to see if TP was
	seen inside a PHI node.  Do not do the ADDR_EXPR check if it was.
	(verify_stmts): Pass (void*)1 as data to verify_expr to signal
	that it is walking a PHI node.

2005-02-01  Joseph S. Myers  <>

	* doc/extend.texi (Nested Functions): Update.

2005-02-01  Richard Henderson  <>

	PR 19696
	* optabs.c (expand_copysign_absneg): Export.
	* optabs.h (expand_copysign_absneg): Declare.
	* config/rs6000/ (copysigntf3): New.

2005-02-01  Diego Novillo  <>

	PR tree-optimization/19633
	* tree-flow.h (struct ptr_info_def): Add field 'pt_null'.
	* tree-ssa-alias.c (init_alias_info): Initialize.
	(merge_pointed_to_info): Set.
	(add_pointed_to_expr): Set pt_null if EXPR is a NULL pointer.
	(dump_points_to_info_for): Show value of pt_null.
	(struct count_ptr_d): Declare.
	(find_ptr_dereference): Remove.
	(ptr_is_dereferenced_by): Remove.
	(count_ptr_derefs): New local function.
	(count_uses_and_derefs): New local function.
	(compute_points_to_and_addr_escape): Call it.  If the number
	of dereferences is greater than zero, mark the pointer as
	dereferenced.  If there are fewer dereferences than uses of
	the pointer, the pointer's value escapes.

2005-02-01  Diego Novillo  <>

	PR tree-optimization/19670
	* tree-ssa.c (verify_ssa_name): Don't set TREE_VISITED
	(verify_use): ... set it here, instead.

2005-02-01  Janis Johnson  <>

	* doc/sourcebuild.texi (Test directives): Fix formatting.

	* doc/sourcebuild.texi (Test directives): Describe selector

2005-02-01  Segher Boessenkool  <>

	* config.gcc (powerpc64-*-linux*): Default to -m64 also for
	specific 64-bit CPUs.

2005-02-01  Richard Earnshaw  <>

	PR target/16201
	* arm.c (arm_eliminable_register): New function.
	(adjacent_mem_locations): Don't allow eliminable registers.  Use
	HOST_WIDE_INT for address offsets.
	* arm-protos.h (arm_eliminable_register): Add prototype.

2005-02-01  Steven Bosscher  <>

	PR optimization/15242
	* params.def (PARAM_MAX_GOTO_DUPLICATION_INSNS): New param.
	* basic-block.h (duplicate_computed_gotos): Add prototype.
	* bb-reorder.c (duplicate_computed_gotos): New function to
	duplicate sufficiently small blocks ending in a computed jump.
	* passes.c (rest_of_compilation): Call duplicate_computed_gotos
	if not optimizing for size.
	* cfgcleanup.c (try_crossjump_bb): If not optimizing for size,
	never do tail merging for blocks ending in a computed jump.
	* doc/invoke.texi: Document the max-goto-duplication-insns param.

2005-02-01  Eric Botcazou  <>

	Patch from Richard Sandiford <>
	* reload1.c (choose_reload_regs): Prevent the find_equiv_reg() code
	from inheriting a subreg equivalence with a non-spill register.

	* tree.h (DECL_FUNCTION_CODE): Document that it is overloaded.

2005-02-01  Alexandre Oliva  <>

	* config/frv/frv.c (movcc_fp_destination_operand): New.
	(gpr_or_memory_operand): Fix typo in comment.
	(gpr_or_memory_operand_with_scratch): New.
	* config/frv/frv.h (PREDICATE_CODES): Add the two new predicates.
	* config/frv/ (movcc_fp, movcc_fp_internal): Use
	(reload_incc_fp): Use gpr_or_memory_operand_with_scratch.
	Legitimize memory addresses using a scratch register.

2005-01-31  Jeff Law  <>

	* tree-into-ssa.c (mark_def_sites_global_data): Make KILLS
	bitmap a sparse bitmap instead of a simple bitmap.
	(mark_def_sites_initialize_block):  Corresponding changes.
	(ssa_mark_def_sites_initialize_block): Likewise.
	(ssa_mark_phi_uses): Likewise.
	(mark_def_site, ssa_mark_def_sites): Likewise.
	(mark_def_site_blocks): Likewise.
	(rewrite_ssa_into_ssa): Likewise.

	* tree-ssa-dom.c (record_cond): Pass correct variable type
	for last argument to htab_find_slot_with_hash.

	* fold-const.c (fold, case CEIL_MOD_EXPR): Do not lose side
	effects when optimizing 0 % X.  Do not try to optimize X % 0.

2005-01-31  James E. Wilson  <>

	* config/ia64/ (1_scall bypass): Change 2_mmalua to

2005-02-01  Eric Christopher  <>

	* config/mips/mips.c (override_options): Warn if -mint64
	is used.
	* doc/invoke.texi (MIPS Options): Document that -mint64 is

2005-02-01  Kazu Hirata  <>

	* cse.c (cse_reg_info): Remove hash_next, next, regno.  Add
	(cse_reg_info_list, cse_reg_info_list_free, REGHASH_SHIFT,
	cached_cse_reg_info, GET_CSE_REG_INFO): Remove.
	(cached_regno): Initialize to INVALID_REGNUM.
	cse_reg_info_timestamp): New.
	(init_cse_reg_info, get_cse_reg_info_1): New.
	(get_cse_reg_info): Cache the last look-up.
	(new_basic_block): Update the code to clear mappings from
	registers to cse_reg_info entries.
	(cse_main): Call init_cse_reg_info.

	* cse.c (get_cse_reg_info): Update a comment.

2005-01-31  Steven Bosscher  <>

	PR c/19333
	* c-decl.c (start_decl): Do not warn about arrays of elements with
	an incomplete type here.
	(grokdeclarator): Do it here by making a pedwarn an error.
	* c-typeck.c (push_init_level): If there were previous errors with
	the constructor type, do not warn about braces for initializers.
	(process_init_element): Likewise for excess initializer elements.

2005-01-31  Kazu Hirata  <>

	* cse.c (delete_trivially_dead_insn): Don't iterate.

2005-01-31  Andrew Pinski  <>

	* config/rs6000/ (copysignsf3): New expand.
	(copysigndf3): Likewise.

2005-01-31  Steven Bosscher  <>

	* recog.c (constrain_operands): Only look for earlyclobber operand
	conflicts if an '&' constraint was seen.

2005-01-31  Marc Espie <>

	* config.gcc: Don't include embedded systems fragment, switches default
	debugging format to ELF.
	* config/i386/openbsdelf.h: Add DBX_REGISTER_NUMBER since we no
	longer pick it up there.

2005-01-31  Dale Johannesen  <>

	* doc/extend.texi (nested functions): Fix linkage description.
	Clarify that static is not allowed.

2005-01-31  Dale Johannesen  <>

	* config/rs6000/ (movsf_low_di):  Make work.
	(movdf_low_di):  Make work.

2005-01-31  Dale Johannesen  <>

	* config/rs6000/darwin-tramp.asm (__trampoline_setup):
	Make work for 64 bit.

2005-01-31  Roger Sayle  <>
	    Dale Johannesen  <>

	PR middle-end/19650
	* fold-const.c (fold_binary_op_with_conditional_arg):
	Make types match original operands, before STRIP_NOPS.

2005-01-31  Alan Modra  <>

	* config/rs6000/linux-unwind.h (struct gcc_vregs): New.
	(struct gcc_regs): Rename from gcc_pt_regs.  Add more regs.
	(struct gcc_sigcontext): Delete.  Merge contents to..
	(struct gcc_ucontext):
	(get_sigcontext): Delete.
	(get_regs): New function, like get_sigcontext but return regs ptr.
	64-bit version finds regs from r1 to support vdso.
	(ppc_linux_aux_vector): New function.
	(ppc_fallback_frame_state): Modify for get_regs.  Restore fprs
	and vector regs.

2005-01-31  Ira Rosen  <>

	* tree-vectorizer.c (vect_analyze_offset_expr): Use ssizetype instead
	(vect_get_base_and_offset): Use ssizetype instead sizetype. Remove
	redundant fold. Fix misalignment for MINUS_EXPR.
	(vect_compute_data_ref_alignment): Use ssizetype instead sizetype.
	(vect_analyze_pointer_ref_access): Likewise.
	(vect_get_memtag_and_dr): Likewise.

2005-01-31  Richard Henderson  <>

	* config/i386/i386.c (absnegsf2_mixed): Remove all of the # hackery.
	(absnegsf2_sse, absnegsf2_i387, absnegdf2_mixed, absnegdf2_sse,
	absnegdf2_i387, absnegxf2_i387): Likewise.

2005-01-31  Richard Henderson  <>

	PR 19696
	* optabs.c (expand_copysign_absneg): New.
	(expand_copysign_bit): Split out from ...
	(expand_copysign): ... here.  Use expand_copysign_absneg.

2005-01-30  Roger Sayle  <>

	PR middle-end/19697
	* config/pa/ (anddi3, iordi3): On HPPA64, disallow an integer
	constant as the second operand and a register as the third.

2005-01-31  Danny Smith  <>

	PR target/19704
	* config/i386/i386.c (ix86_function_ok_for_sibcall):  Also check
	that dllimport'd functions do not use all call-clobbered registers
	to pass parameters.

2005-01-30  Richard Henderson  <>

	PR 19696
	* optabs.c (expand_absneg_bit): Split out from expand_unop and
	expand_abs_nojump and generalize.  Use operand_subword and
	emit_no_conflict_block.  Support large modes.
	(expand_abs_nojump): Use it.  Use HONOR_SIGNED_ZEROS to fall
	back to maximum.
	(expand_unop): Likewise.  Use HONOR_SIGNED_ZEROS to fall back
	negation to subtraction.
	(expand_copysign): Check that the format has signed zeros.
	Use operand_subword and emit_no_conflict_block.  Support large modes.

2005-01-30  Daniel Berlin  <>

	Fix PR tree-optimization/19624

	* (tree-ssa-pre.o): Add CFGLOOP_H.
	* tree-ssa-pre.c: Add cfgloop.h.
	Update comment.
	(pre_stats): New member, constified.
	(inserted_exprs): New static variable.
	(NECESSARY): New macro.
	(create_expression_by_pieces): Fold the expression, and
	mark it as defaulting to not necessary. Also put in
	(fully_constant_expression): New function.
	(insert_into_preds_of_block): Modify to not insert phis when we
	are playing with induction variables.
	Push phis onto the inserted_exprs vector, and mark them as not
	necessary by default.
	(insert_aux): Call fully_constant_expression on eprime.
	If all edges produce the same value, mark it constant.
	(mark_operand_necessary): New function.
	(remove_dead_inserted_code): New function.
	(init_pre): Init loop optimizer to get loop info.
	(fini_pre): Free loop_optimizer, and inserted_exprs vec.
	(execute_pre): Commit edge inserts, then remove dead code.

2005-01-30  Richard Henderson  <>

	* rtl.c (rtx_equal_p): No early exit for CONST_VECTOR.
	* varasm.c (const_rtx_hash_1): Handle CONST_VECTOR.

2005-01-30  Richard Henderson  <>

	PR target/19700
	* config/i386/i386.c (ix86_expand_copysign): New.
	(ix86_split_copysign_const): New.
	(ix86_split_copysign_var): Rename from ix86_split_copysign,
	rearrange op1/nmask operands.
	* config/i386/i386-protos.h: Update.
	* config/i386/ (copysignsf3): Use ix86_expand_copysign.
	(copysigndf3): Likewise.
	(copysignsf3_const, copysigndf3_const): New.
	(copysignsf3_var): Rename from copysignsf3, split out splitter
	and fix split predicate for X constraint.
	(copysigndf3_var): Similarly.

2005-01-30  Kazu Hirata  <>

	* optabs.c, doc/c-tree.texi, doc/install.texi, doc/md.texi,
	doc/passes.texi, doc/rtl.texi, doc/sourcebuild.texi,
	doc/tm.texi, doc/tree-ssa.texi: Update copyright.

2005-01-29  Richard Henderson  <>

	PR target/19690
	* config/i386/ (movdf_nointeger, movdf_integer): Fix ordering
	of # and * in constraints.

2005-01-29  Richard Henderson  <>

	PR middle-end/19689
	* expr.c (store_field): Don't strip sub-mode cast when the input
	data is even smaller.

2005-01-29  Richard Henderson  <>

	PR middle-end/19687
	* expr.c (categorize_ctor_elements_1): Check for CONSTRUCTOR of a
	union being empty.

2005-01-29  Richard Henderson  <>

	* combine.c (make_field_assignment): Fix argument order
	to gen_int_mode.

2005-01-29  Richard Guenther <>

	PR tree-optimization/15791
	* fold-const.c (extract_array_ref): New function.
	(fold): Fold comparisons between &a[i] and &a[j] or
	semantically equivalent trees.

2005-01-29  Jeff Law  <>

	* gcse.c (insert_expr_in_table): Revamp handling of available
	and anticipatable occurrence lists to avoid unnecessary list
	(insert_set_in_table): Similarly.

2005-01-29  Joseph S. Myers  <>

	* c-common.c (fix_string_type): Just use c_build_qualified_type to
	build string type.
	(c_build_qualified_type): Build qualified array types with
	TYPE_MAIN_VARIANT pointing to corresponding unqualified type.
	* c-decl.c (c_make_fname_decl): Build unqualified array type
	before qualified type.
	(grokdeclarator): Use TYPE_MAIN_VARIANT of typedef type if element
	type is qualified, not just if type itself is.  Don't apply
	qualifiers to array type when declarator is processed.  Apply
	qualifiers to field type whether or not it is an array type.
	Don't handle array types specially for applying qualifiers to
	* c-typeck.c (composite_type): Build unqualified element type and
	array type when forming composite of array types.
	(common_pointer_type, comptypes, comp_target_types,
	type_lists_compatible_p, build_indirect_ref, build_array_ref,
	convert_for_assignment): Don't apply TYPE_MAIN_VARIANT to array
	(type_lists_compatible_p): Cache TREE_VALUE (args1) and TREE_VALUE
	(args2) in variables a1 and a2.

2005-01-29  Kazu Hirata  <>

	* cse.c (n_elements_made, max_elements_made): Remove.
	(insert): Don't touch n_elements_made.
	(cse_main): Don't touch n_elements_made or max_elements_made.

2005-01-28  Stephane Carrez  <>

	PR target/15384
	* config/m68hc11/t-m68hc11-gas (dp-bit.c): Fix typo causing a
	configuration part of dp-bit.c to be lost.

2005-01-28  Roger Sayle  <>

	* expmed.c (expand_mult_highpart_optab): When attempting to use
	a non-widening multiplication in a wider mode, the operands need
	to be converted (zero or sign extended) to that mode.

2005-01-28  Ian Lance Taylor  <>

	PR middle-end/16558
	PR middle-end/19583
	* gimple-low.c (block_may_fallthru): TRY_FINALLY_EXPR only falls
	through if both operands fall through.

2005-01-28  Kazu Hirata  <>

	* cse.c (fold_rtx) <PC>: Don't optimize.

2005-01-28  Jeff Law  <>

	* fold-const.c (fold, case CEIL_MOD_EXPR): Optimize 0 % X.

2005-01-28  Kazu Hirata  <>

	* cse.c (cse_reg_info_free_list, cse_reg_info_used_list,
	cse_reg_info_used_list_end): Remove.
	(cse_reg_info_list, cse_reg_info_list_free): New.
	(get_cse_reg_info): When allocating an instance of
	cse_reg_info, add it to the beginning of the cse_reg_info_list
	list.  Remove code to maintain cse_reg_info_used_list.
	(new_basic_block): Reset the free list to the beginning of

2005-01-28  Richard Sandiford  <>

	* config/frv/frv.c (bdesc_2arg): Remove __MDPACKH.
	(frv_init_builtins): Change its prototype to take 4 uhalf arguments.
	(frv_expand_mdpackh_builtin): New function.
	(frv_expand_builtin): Use it to expand __MDPACKH.
	* doc/extend.texi (__MDPACKH): Update documentation.

2005-01-28  Uros Bizjak  <>

	* config/i386/i386.c (ix86_expand_fp_absneg_operator): Use
	SSE_FLOAT_MODE_P for use_sse computation.

2005-01-28  Ralf Corsepius  <>

	PR target/19663
	* config/sparc/rtemself.h (LINK_GCC_C_SEQUENCE_SPEC): undefine.

2005-01-27  Richard Henderson  <>

	* builtins.c (expand_builtin_copysign): New.
	(expand_builtin): Call it.
	* genopinit.c (optabs): Add copysign_optab.
	* optabs.c (init_optabs): Initialize it.
	(expand_copysign): New.
	* optabs.h (OTI_copysign, copysign_optab): New.
	(expand_copysign): Declare.

	* config/alpha/ (UNSPEC_COPYSIGN): New.
	(copysignsf3, ncopysignsf3, copysigndf3, ncopysigndf3): New.

	* config/i386/i386.c (ix86_build_signbit_mask): Split from ...
	(ix86_expand_fp_absneg_operator): ... here.
	(ix86_split_copysign): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/ (UNSPEC_COPYSIGN): New.
	(copysignsf3, copysigndf3): New.

	* config/ia64/ (UNSPEC_COPYSIGN): New.
	(copysignsf3, ncopysignsf3): New.
	(copysigndf3, ncopysigndf3): New.
	(copysignxf3, ncopysignxf3): New.
	* config/ia64/ia64.c (rtx_needs_barrier): Handle UNSPEC_COPYSIGN.

2005-01-27  Arend Bayer  <>
	    Kazu Hirata  <>

	* cse.c: (find_best_addr): Don't call copy_rtx before calling
	fold_rtx.  Save cost recomputation if fold_rtx did nothing.
	(fold_rtx) <ASM_OPERANDS>: Don't do anything if INSN is

2005-01-27  Jeff Law  <>

	* tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register
	definitions of SSA_NAMEs which are not being rewritten.
	(rewrite_ssa_into_ssa): Only initialize the current definition
	of an SSA_NAME if that SSA_NAME has been marked for rewriting.
	If checking is enabled, assert that SSA_NAME_AUX is clear for all
	SSA_NAMEs before returning.

2005-01-27  Kazu Hirata  <>

	* c-common.def, c-dump.c, c-gimplify.c, c-objc-common.c,
	cfgexpand.c, dbxout.c, function.h, opts.c, tree-flow-inline.h,
	tree-ssa-operands.h, tree-ssa-threadupdate.c, tree-tailcall.c,
	config/avr/, config/cris/aout.h, config/cris/cris.h,
	config/mips/iris6.h, config/sh/sh.c: Update copyright.

2005-01-27  Steven Bosscher  <>

	PR middle-end/17278
	* opts.c (decode_options): Move flag_thread_jumps from -O1 and
	higher to -O2 and higher.  Likewise for tree PRE.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Only iterate at -O2
	and better.

2005-01-27  Ian Lance Taylor  <>

	PR middle-end/19583
	* gimple-low.c (try_catch_may_fallthru): New static function.
	(block_may_fallthru): Handle TRY_CATCH_EXPR.
	* tree-inline.c (expand_call_inline): Don't warn about reaching
	the end of a non-void function being inlined if the function uses
	a return slot.

2005-01-27  Jakub Jelinek  <>

	* config/i386/i386.h (CALL_USED_REGISTERS): Fix comment pastos.

	PR c/18946
	* c-decl.c (warn_if_shadowing): Handle old_decl error_mark_node.
	(pushdecl): Only use DECL_FILE_SCOPE_P if DECL_P.
	(implicitly_declare): Handle error_mark_node.

2005-01-27  Richard Henderson  <>

	PR tree-opt/14329
	* tree.h (struct tree_decl): Add debug_expr_is_from.
	* dwarf2out.c (dwarf2out_var_location): Update to match.
	* tree-outof-ssa.c (create_temp): Likewise.
	* var-tracking.c (track_expr_p): Likewise.
	* tree-sra.c (instantiate_element): Set DECL_DEBUG_EXPR.
	* c-objc-common.c (c_tree_printer) <'D'>: Handle DECL_DEBUG_EXPR.
	* toplev.c (default_tree_printer): Likewise.

2005-01-27  Alexandre Oliva  <>

	* config/frv/frv.c (frv_class_likely_spilled_p): Add GR8_REGS,

2005-01-27  Steven Bosscher  <>

	ASM_CLOBBERS): Add tree checks.

	* c-common.h (SWITCH_TYPE): Rename to SWITCH_STMT_TYPE.
	* c-common.def (SWITCH_STMT): Update to match.
	* c-common.c (c_do_switch_warnings): Use SWITCH_STMT accessor
	macros instead of SWITCH_EXPR ones.
	* c-dump.c (c_dump_tree): Likewise.
	* c-gimplify.c (gimplify_switch_stmt): Likewise.
	* c-typeck.c (c_start_case, do_case, c_finish_case): Likewise.

	* doc/c-tree.texi (SWITCH_STMT): Update accessor macro names.

2005-01-27  Alan Modra  <>

	* unwind-dw2.c (execute_stack_op): Add missing cases for
	DW_OP_shl, DW_OP_shr, DW_OP_shra, DW_OP_xor.

2005-01-27  Eric Botcazou  <>

	* config.gcc (Obsolete configurations): Remove 'dummy', add
	sparclite-*-coff*, sparclite-*-elf*, sparc86x-*-elf* and

2005-01-26  Diego Novillo  <>

	PR tree-optimization/19633
	* tree-ssa-alias.c (ptr_is_dereferenced_by): Also handle
	(maybe_create_global_var): Do not create .GLOBAL_VAR if there
	are no call-clobbered variables.
	* tree-outof-ssa.c (check_replaceable): Return false for calls
	with side-effects.

2005-01-26  Ulrich Weigand  <>

	* dbxout.c (dbxout_symbol_location): Resolve constant pool references
	even for variables with NULL DECL_INITIAL.

2005-01-26  Stuart Hastings  <>

	* gimplify.c (shortcut_cond_expr): Re-compute side-effects.

2005-01-26  Richard Henderson  <>

	PR middle-end/18008
	* c-decl.c (finish_struct): Set DECL_MODE after resetting a
	field's type.
	* expr.c (store_field): Strip conversions to odd-bit-sized types
	if the destination field width matches.

2005-01-26  Richard Henderson  <>

	* c-decl.c, expmed.c, expr.c: Revert last change.

2005-01-26  Richard Henderson  <>

	PR middle-end/18008
	* c-decl.c (finish_struct): Set DECL_MODE after resetting a
	field's type.
	* expmed.c (store_fixed_bit_field): Create a paradoxical subreg
	if we don't need the bits above those present in the current mode.
	* expr.c (store_field): Strip conversions to odd-bit-sized types
	if the destination field width matches.

2005-01-26  Richard Sandiford  <>

	* config/mips/iris6.h (ENDFILE_SPEC): Don't link in irix-csr.o if
	either -ffast-math or -funsafe-math-optimizations is in use.

2005-01-26  Marek Michalkiewicz  <>

	PR target/19293
	PR target/19329
	* config/avr/avr.c (notice_update_cc): Only set condition code for
	ashrqi3 if shift count > 0.
	(out_shift_with_cnt): Handle shift count <= 0 as a no-op.
	(ashlqi3_out, ashlhi3_out, ashlsi3_out, ashrqi3_out, ashrhi3_out,
	ashrsi3_out, lshrqi3_out, lshrhi3_out, lshrsi3_out): Handle shift
	count <= 0 as a no-op, and shift count >= width by copying zero
	or sign bit to all bits of the result.
	* config/avr/ (all shifts): Add alternatives for zero shift
	count, with attribute "length" set to 0 and "cc" set to "none".

2005-01-26  Aldy Hernandez  <>

	* doc/invoke.texi: Document -mTLS.

	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.
	* testsuite/ New.

	* Check for a TLS capable gas.

	* configure: Regenerate.

2005-01-26  Richard Henderson  <>

	PR middle-end/18008
	* combine.c (make_field_assignment): Simplify store to zero_extract
	from a source with an overlapping mask.

2005-01-26  Aldy Hernandez  <>

	2004-11-11  Eric Christopher  <>

	* config/frv/ Add fr400_integer automaton. Don't
	allow TYPE_MUL, TYPE_MACC, or TYPE_CUT to issue in parallel

2005-01-26  Steven Bosscher  <>

	PR middle-end/16585
	* cfgbuild.c (make_edges): Do not clear or set
	* function.h (struct function): Remove the has_computed_jump field.
	(current_function_has_computed_jump): Do not define.
	* sched-rgn.c (is_cfg_nonregular): Return true if a basic block ends
	in a computed jump.  Ignore current_function_has_computed_jump.

2005-01-26  Richard Henderson  <>

	PR middle-end/19515
	* expr.c (categorize_ctor_elements): New argument p_must_clear.
	(categorize_ctor_elements_1): Likewise.  Detect a union that isn't
	fully initialized.
	(mostly_zeros_p): Update for new categorize_ctor_elements argument.
	* gimplify.c (gimplify_init_constructor): Likewise.  Only shove
	objects into static storage if they have more than one non-zero value.
	* tree.h (categorize_ctor_elements): Update decl.

2005-01-26  Steven Bosscher  <>

	PR middle-end/19616
	* tree.h (CALL_EXPR_TAILCALL): Add comment.
	* calls.c (check_sibcall_argument_overlap_1): Revert the change
	to this function from 2004-07-10.
	* tree-tailcall.c (suitable_for_tail_opt_p): Do not consider the
	the current function for tail call optimizations if the address
	of one of it its arguments is taken.

2005-01-26  Kazu Hirata  <>

	* cse.c (fold_rtx): Call equiv_constant only when necessary.

2005-01-26  Bernd Schmidt  <>

	* function.c (expand_function_end): If current_function_calls_alloca,
	emit stack restore in a place that is reached when the function falls
	through at the end.

2005-01-26  Alexandre Oliva  <>

	* (../$(build_subdir)/fixincludes/fixincl): Add dummy
	rule to avoid matching inappropriate suffix rule.

2005-01-26  Jan Hubicka  <>

	PR tree-optimization/19241
	* tree-inline.c (copy_body_r): Do not walk subtrees after substituting.

2005-01-26  Hans-Peter Nilsson  <>

	* config/cris/cris.h (LIB_SPEC) <sim*>: Use -lsyslinux, not
	-lsyssim.  Wrap -lc -lsyssim in --start-group --end-group instead
	of doubling.
	(STARTFILE_SPEC): Add crti.o, before crtbegin.o.
	<sim*>: Always use crt1.o, regardless of N in simN.
	<!sim>: Drop support for -pg and -p variants; always use crt0.o.
	(ENDFILE_SPEC): Add crtn.o, after crtend.o.
	* config/cris/aout.h (STARTFILE_SPEC): <!melinux && sim*>: Always
	use crt1.o, regardless of N in simN.
	<!sim>: Drop support for -pg and -p variants; always use crt0.o.
	(LIB_SPEC): Do not define; default to the one in config/cris/cris.h.
	(CRIS_CPP_SUBTARGET_SPEC) <melinux && !nostdinc>: Remove special
	case isystem setting.
	(MAX_OFILE_ALIGNMENT): Correct to 32, not 16.

2005-01-25  Ian Lance Taylor  <>

	* gimple-low.c (block_may_fallthru): Correct handling of
	SWITCH_EXPR--may fall through if SWITCH_LABELS is NULL.

2005-01-26  Hans-Peter Nilsson  <>

	* config/cris/cris.h (CPP_SPEC): Adjust the various mtune=
	handlers to match indentation; nested under the mtune=* handler.
	Similar for mcpu= and march=.

2005-01-25  Daniel Jacobowitz  <>

	* config/mips/linux.h (LIB_SPEC): Remove -rpath-link.
	* config/mips/linux64.h (LIB_SPEC): Likewise.
	* config/mn10300/linux.h (LIB_SPEC): Likewise.
	* config/sh/linux.h (LIB_SPEC): Likewise.

2005-01-25  Aldy Hernandez  <>

	* config/frv/frv.c (frv_legitimize_tls_address): New.
	(frv_override_options): Handle new register classes.
	(frv_legitimate_address_p): Reject tls addresses.
	(frv_legitimize_address): Handle TLS addresses.
	(gen_inlined_tls_plt): New.
	(gen_tlsmoff): New.
	(frv_legitimize_tls_address): New.
	(unspec_got_name): Add TLS entries.
	(got12_operand): Add R_FRV_TLSMOFF12 case.
	(frv_emit_move): Fixup TLS addresses.
	(frv_emit_movsi): Legitimize TLS addresses.

	* config/frv/frv.h (MASK_BIG_TLS): New.
	(HAVE_AS_TLS): Define.
	(TARGET_SWITCHES): Add -mTLS and -mtls options.
	(enum reg_class): Add GR8_REGS, GR9_REGS, GR89_REGS.
	(PREDICATE_CODES): Add symbolic_operand.

	* config/frv/ (define_constants): Add UNSPEC_GETTLSOFF,
	(type): Add load_or_call attribute.
	("load_or_call"): New reservation.
	("call_gettlsoff"): New.
	("tls_indirect_call"): New.
	("tls_load_gottlsoff12"): New.
	("tlsoff_hilo"): New.
	("tls_tlsdesc_ldd"): New.
	("tls_tlsoff_ld"): New.
	("tls_lddi"): New.

	* config/frv/frv-protos.h (symbolic_operand): Protoize.

	2005-01-25  Alexandre Oliva  <>

	* config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Define.
	* config/frv/frv-protos.h (frv_output_dwarf_dtprel): Declare.
	* config/frv/frv.c (TLS_BIAS): Define.
	(frv_output_dwarf_dtprel): New.

2005-01-26  Jakub Jelinek  <>

	PR rtl-optimization/19579
	* ifcvt.c (noce_try_cmove_arith): If emitting instructions to set up
	both A and B, see if they don't clobber registers the other expr uses.

2005-01-25  J"orn Rennecke <>

	* real.c (do_add): Initialize signalling and canonical members.

	* real.c (real_from_integer): Zero out destination.

2005-01-18  Jan Hubicka  <>

	PR tree-optimize/19337
	* tree-inline.c (initialize_inlined_parameters): Copy
	saved_static_chain_decl only.

2005-01-25  Richard Henderson  <>

	PR target/19556
	PR target/19584
	* config/i386/i386.c (x86_inter_unit_moves): Zero.
	(ix86_preferred_reload_class): Rewrite fp-constant section, with
	80387 enabled, to return a proper subclass.  Return the subset that
	overlaps with GENERAL_REGS for PLUS.
	* config/i386/ (movsi_1, movdi_2): Set type to "mmx" for pxor.

2005-01-25  Richard Henderson  <>

	PR middle-end/19609
	* tree-complex.c (expand_complex_div_wide): Use the correct formulae.

2005-01-25  Roger Sayle  <>

	* expmed.c (choose_multiplier): Change interface to return the
	multiplier lowpart as an rtx instead of an unsigned HOST_WIDE_INT.
	(expand_divmod): Update calls to choose_multiplier.

2005-01-24  John David Anglin  <>

	PR middle-end/19330
	* expmed.c (extract_bit_field): Use adjust_address instead of
	gen_lowpart when op0 is a MEM.

2005-01-24  Steven Bosscher  <>

	* cfgexpand.c (expand_gimple_tailcall): Fix typo.

2005-01-24  Richard Sandiford  <>

	* config/mips/irix-csr.c: New file.
	* config/mips/t-iris6 (irix-csr.o): New rule to build it.
	(EXTRA_MULTILIB_PARTS): Add irix-csr.o.
	* config/mips/iris6.h (ENDFILE_SPEC): Include it in n32 and n64

2005-01-24  Eric Botcazou  <>

	PR bootstrap/19364
	* config.gcc (sparc-*-elf*): Remove sol2.h, sparc/sol2.h and
	sparc/elf.h, add sparc/sp-elf.h.
	(sparc-*-rtems*): Likewise.
	(sparclite-*-elf*): Remove sol2.h, sparc/sol2.h, sparc/elf.h and
	tm-dwarf2.h, add sparc/sp-elf.h.
	(sparc86x-*-elf): Likewise.
	(sparc64-*-elf*): Remove sol2.h, sparc/sol2.h and tm-dwarf2.h.
	* config/sparc/liteelf.h (TARGET_SUB_OS_CPP_BUILTINS): Rename into
	* config/sparc/sp86x-elf (TARGET_SUB_OS_CPP_BUILTINS): Likewise.
	* config/sparc/rtemself.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise.
	Undefine it.
	* config/sparc/openbsd64.h (NO_IMPLICIT_EXTERN_C): Undefine.
	* config/sparc/sp64-elf.h (NO_IMPLICIT_EXTERN_C): New macro.
	(SWITCH_TAKES_ARG): Likewise.
	* config/sparc/elf.h: Delete.
	* config/sparc/sp-elf.h: New file.

2005-01-24  Kazu Hirata  <>

	* tree-flow-inline.h (phi_arg_from_edge): Remove.
	* tree-flow.h: Remove the corresponding prototype.
	* tree-ssa-operands.h, tree-ssa-threadupdate.c, tree-ssa.c,
	tree-vectorizer.c: Use dest_idx instead of phi_arg_from_edge.

2005-01-24  Jakub Jelinek  <>

	PR target/17751
	* config/rs6000/rs6000.c (rs6000_file_start): Create toc section
	for AIX ABI or ELF -fPIC.
	(rs6000_emit_load_toc_table): Don't create toc_section here.
	(rs6000_xcoff_file_start): Nor here.

2005-01-24  J"orn Rennecke <>

	* sh.c (ra.h): Don't #include.
	(hard_regs_intersect_p): New function, resurrected from ra.c.

	* sh.c: Fix 1996 Copyright.

2005-01-24  Richard Henderson  <>
	    Aldy Hernandez  <>

	* regrename.c (note_sets): Handle subregs.

2005-01-24  Joseph S. Myers  <>

	PR bootstrap/18058
	* genconditions.c (write_header, write_conditions): Elide file if
	not GCC >= 3.0.1.

2005-01-24  Kazu Hirata  <>

	* c-opts.c, expmed.c, gengtype.c, tree-complex.c,
	config/arm/, config/avr/avr.c, config/s390/s390.h:
	Update copyright.

2005-01-24  Jakub Jelinek  <>

	* builtins.c (get_pointer_alignment, gimplify_va_arg_expr,
	expand_builtin_printf, expand_builtin_fprintf,
	expand_builtin_sprintf): Use POINTER_TYPE_P instead TREE_CODE
	checking against POINTER_TYPE.
	(validate_arglist): Handle POINTER_TYPE code by checking

2005-01-24  Paolo Bonzini  <>

	* rtlanal.c (non_rtx_starting_operands, for_each_rtx_1,
	init_rtlanal): New.
	(for_each_rtx): Call for_each_rtx_1.
	* rtl.h (init_rtlanal): Declare.
	* toplev.c (backend_init): Call init_rtlanal.

2005-01-24  Jakub Jelinek  <>

	* flow.c (propagate_one_insn): Formatting.

	PR middle-end/19551
	* flow.c (libcall_dead_p): Be more conservative if unsure.
	If there are any instructions between insn and call, see if they are
	all dead before saying the libcall is dead.

2005-01-24  Uros Bizjak  <>

	* config/i386/ (*extendsfdf2_sse): Use "nonimmediate_operand"
	operand constraint for operand 0.

2005-01-23  Richard Henderson  <>

	PR 19486
	* tree-complex.c (expand_complex_div_wide): Set EDGE_FALLTHRU on
	edges leading to join block.

2005-01-23  Roger Sayle  <>

	* expmed.c (expand_mult_highpart): Make static.  Change type of
	constant multiplier argument from unsigned HOST_WIDE_INT to rtx.
	(expand_divmod): Updates calls to expand_mult_highpart by using
	gen_int_mode to pass a CONST_INT rtx.
	* rtl.h (expand_mult_highpart): Remove prototype.

2005-01-23  Kazu Hirata  <>

	* flow.c (regset_bytes, regset_size): Remove.

	* cfganal.c: Fix a reference to Harvey's paper.

2005-01-23  Steven Bosscher  <>

	PR rtl-optimization/19464
	* tree-optimize.c (init_tree_optimization_passes): Add one more
	copyrename pass just before out-of-ssa.

2005-01-23  Joseph S. Myers  <>

	PR bootstrap/18058
	* recog.c (recog_memoized): Don't define if GENERATOR_FILE.
	* ggc-none.c (ggc_free): Define.

2005-01-23  Kazu Hirata  <>

	* cse.c (max_reg, max_insn_uid): Remove.
	(cse_main): Don't access max_reg or max_insn_uid.

	* c-common.c (explicit_flag_signed_bitfields,
	lang_statement_code_p, lang_expand_function_end): Remove.
	* c-common.h: Remove the corresponding declarations.
	* c-opts.c (c_common_handle_option): Remove all write access
	to explicit_flag_signed_bitfields.

	* cgraph.c (cgraph_varpool_n_nodes): Remove.
	(cgraph_varpool_node): Don't access cgraph_varpool_n_nodes.
	* cgraph.h: Remove the corresponding declaration.

	* gcse.c (null_pointer_info): Remove.

2005-01-23  Roger Sayle  <>
	    Eric Botcazou  <>

	* combine.c (simplify_logical): Only simplify logical expressions
	of the form ior(and(x,y),z) by the inverse distributive law if the
	result is cheaper than the original.

2005-01-23  Kazu Hirata  <>

	* alias.c, c-common.h, c-incpath.c, c-incpath.h, expr.c,
	fold-const.c, gimplify.c, params.h, tree-data-ref.c,
	tree-if-conv.c, tree-nested.c, tree-outof-ssa.c,
	tree-ssa-dom.c, tree-vectorizer.c, tree.def, config/darwin.c,
	config/freebsd-spec.h, config/arm/arm.h,
	config/h8300/, config/i386/,
	config/i386/, config/i386/,
	config/ia64/ia64.c, config/ip2k/ip2k.c, config/s390/s390.c,
	config/vax/ Fix comment typos.  Follow spelling

2005-01-23  Steven Bosscher  <>

	* gengtype.c (walk_type): Produce `not equal to' compares for loop
	tests, instead of `less than'.

2005-01-23  Richard Sandiford  <>

	* function.c (assign_parm_setup_block): When creating a new stack slot
	for a parameter, get its alignment from the parameter's DECL_ALIGN
	rather than the type's TYPE_ALIGN.  Make sure that the parameter
	is at least word aligned.

2005-01-22  Roger Sayle  <>

	PR middle-end/19378
	* config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.

2005-01-22  Richard Henderson  <>

	PR target/19506
	* config/i386/ (movsfcc_1_sse_max): Use nonimmediate_operand
	in both compare operands.
	(movdfcc_1_sse_max): Likewise.
	(movsfcc_1_sse): Likewise.  Add earlyclobber for scratch.
	(movdfcc_1_sse): Likewise.
	* config/i386/i386.c (ix86_split_sse_movcc): Emit copies into the
	scratch register as needed.

2005-01-22  Richard Henderson  <>

	* config/i386/ (smaxsf3): Fix mnemonic typo.

	* config/i386/i386.c (ix86_prepare_fp_compare_args): Fix is_sse test.

2005-01-22  Richard Henderson  <>

	* genopinit.c (optabs): Use smin/smax for floating point too.
	* doc/md.texi: Update to match.  Clarify that floating point
	results are undefined for +0/-0 and NaN.
	* doc/rtl.texi: Likewise.
	* rtl.def (SMIN, SMAX): Likewise
	* tree.def (MIN_EXPR, MAX_EXPR): Likewise.

	* config/alpha/ (smaxdf3, smindf3, smaxsf3, sminsf3): Add
	leading 's' to the name.
	* config/ia64/ (smaxsf3, sminsf3, smaxdf3, smindf3,
	smaxxf3, sminxf3): Likewise.
	* config/rs6000/ (smaxdf3, smindf3, smaxsf3, sminsf3):

2005-01-22  Paul Brook  <>

	* config/arm/ Use "Uy" constraint for wcgr load/stores.

2005-01-21  Mark Dettinger  <>

	* config/s390/s390.c (struct processor_costs): New fields
	dlgr, dlr, dr, dsgfr, dsgr.
	(z900_cost, z990_cost): Values for new fields.
	(s390_rtx_costs): New cases MEM und COMPARE in switch
	statement. Modified handling of SIGN_EXTEND, ZERO_EXTEND,

2005-01-21  Ulrich Weigand  <>

	* config/s390/ ("doloop_si64"): Reload input value directly
	into the register being decremented.
	("doloop_si31", "doloop_di"): Likewise.
	("*doloop_si_long"): Adapt pattern.

2005-01-21  Ulrich Weigand  <>

	* config/s390/s390.h (HARD_REGNO_NREGS): Fix computation for
	access registers.
	(CLASS_MAX_NREGS): Likewise.

2005-01-21  Daniel Berlin  <>

	* doc/tree-ssa.texi (Statement Operands): Add example for new
	must-def macro. Note deprecation of old operands interface.

2005-01-22  Richard Sandiford  <>

	PR tree-optimization/19484
	* tree-cfg.c (remove_fallthru_edge): New function.
	(cleanup_control_flow): Remove fallthru edges from calls that are
	now known not to return.

2005-01-20  Daniel Berlin  <>

	Fix PR tree-optimization/19038
	* tree-ssa-dom.c (cprop_operand): Don't replace loop invaeriant
	copies with loop variant ones.

2005-01-22  Kazu Hirata  <>

	* cfganal.c, real.h, reorg.c, timevar.def, tree-ssa-ccp.c,
	config/alpha/alpha-protos.h, config/alpha/alpha.h,
	config/alpha/, config/alpha/,
	config/sparc/freebsd.h, config/sparc/netbsd-elf.h,
	config/sparc/sol2.h: Update copyright.

	* tree-cfg.c (remove_forwarder_block_with_phi): Look at the
	first label to see if it is a nonlocal label.

2005-01-22  David Edelsohn  <>
	    Andrew Pinski  <>

	PR target/19491
	* config/rs6000/rs6000.c (rs6000_va_start): Saturate n_gpr at
	maximum number of GPRs.  Saturate n_fpr at maximum number of FPRs.

2005-01-22  Ralf Corsepius  <>

	* config/rs6000/rtems.h: Update copyright.

2005-01-22  Ralf Corsepius  <>

	PR target/19548
	* config/rs6000/rtems.h: Resurrect cpp_os_rtems_spec from gcc < 3.4.
	(CPP_OS_RTEMS_SPEC): New (From gcc-3.3's config/rs6000/sys4.h).

2005-01-22  Volker Reichelt  <>

	PR c/18809
	* c-typeck.c (convert_arguments): Check for error_mark_node.

2005-01-21  Ian Lance Taylor  <>

	PR tree-optimization/13000
	* tree-inline.c: Include "tree-flow.h".
	(expand_call_inline): If warn_return_type, warn if non-void inline
	function falls through.
	* tree-cfg.c (execute_warn_function_return): Don't warn about
	control reaching end if TREE_NO_WARNING is set.  Set
	* gimple-low.c (block_may_fallthru): Don't assume that SWITCH_EXPR
	has been lowered.
	* gimplify.c (shortcut_cond_expr): Don't emit a jump over the else
	branch if we don't need one.
	* c-typeck.c: Include "tree-flow.h"
	(c_finish_bc_stmt): Don't add a goto if the current statement
	list doesn't fall through to the current point.

2005-01-21  Roger Sayle  <>

	PR rtl-optimization/576
	* real.c (real_arithmetic): Change return type from void to bool
	to return an indication that the result may be inexact.
	* real.h (real_arithmeric): Update prototype.
	* fold-const.c (const_binop):  Don't constant fold floating
	point expressions when the user specifies -frounding-math and
	the result may depend upon the run-time rounding mode.
	(fold_convert_const_real_from_real): Clean-up.
	(fold_initializer): Ignore flag_rounding_math for initializers.
	* simplify-rtx.c (simplify_binary_operation): Likewise, don't
	constant fold FP operations with flag_rounding_math if the
	result may depend upon the run-time rounding mode.

2005-01-21  Tom Tromey  <>

	* c-cppbuiltin.c (define__GNUC__): Correct assertion.

2005-01-21  Kazu Hirata  <>

	* tree-cfg.c: Fix comment typos.

2005-01-21  J"orn Rennecke <>

	* passes.c (rest_of_handle_flow2): Close / open the flow2 dump file
	around the call to rest_of_handle_branch_target_load_optimize.

2005-01-21  Eric Botcazou  <>

	* config.gcc (sparc-*-netbsdelf*): Include dbxelf.h
	(sparc64-*-openbsd*): Likewise.
	(sparclite-*-elf*): Include tm-dwarf2.h.
	(sparc86x-*-elf*): Likewise.
	(sparc64-*-elf*): Likewise.
	* config/sparc/linux64.h (DWARF2_DEBUGGING_INFO): Delete.
	* config/sparc/liteelf.h (DWARF2_DEBUGGING_INFO): Likewise.
	* config/sparc/netbsd-elf.h (PREFERRED_DEBUGGING_TYPE): Likewise.
	* config/sparc/sp64-elf.h (DBX_DEBUGGING_INFO): Likewise.
	* config/sparc/sp86x-elf.h (DWARF2_DEBUGGING_INFO): Likewise.
	* config/sparc/sparc.h (DBX_DEBUGGING_INFO): Likewise.

2005-01-21  Hans-Peter Nilsson  <>

	PR target/18701
	* combine.c (combine_simplify_rtx): Revert change of 2004-12-31.

2005-01-20  Paul Brook  <>

	* doc/rtl.texi: Document value extension requirements for CONST_INT.

2005-01-20  Kazu Hirata  <>

	* tree-cfg.c (tree_verify_flow_info): Check that a nonlocal
	label is first in a sequence of labels.

	* tree-cfg.c (tree_verify_flow_info): Fix a typo.

2005-01-20  Janis Johnson  <>
	    Giovanni Bajo  <>

	* doc/sourcebuild.texi (Test Directives): New.

2005-01-20  Roger Sayle  <>

	* real.c (real_floor): Don't leave the result uninitialized when
	mode is VOIDMode, but return the unrounded intermediate value.
	(real_ceil): Likewise.

2005-01-20  Paul Brook  <>

	* config/arm/ (insv): Use gen_int_mode.

2005-01-20  Eric Botcazou  <>

	* config/sparc/freebsd.h (ASM_OUTPUT_INTERNAL_LABELREF): Delete.
	* config/sparc/linux.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise.
	* config/sparc/linux64.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise.
	* config/sparc/netbsd-elf.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise.
	* config/sparc/sol2.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise.

2005-01-20  Daniel Berlin  <>

	Fix PR debug/19124
	* dwarf2out.c (concat_loc_descriptor): We don't know we can use
	fbreg, so we have to assume we can't.
	(loc_descriptor_from_tree_1): Ditto.
	(containing_function_has_frame_base): New function.
	(add_location_or_const_value_attribute): Use it.
	Also try to generate a frame_base from a single element location

2005-01-20  Kazu Hirata  <>

	PR tree-optimization/15349
	* timevar.def (TV_TREE_MERGE_PHI): New.
	* tree-cfg.c (tree_forwarder_block_p): Add a new argument
	(remove_forwarder_block, cleanup_forwarder_blocks): Adjust the
	calls to tree_forwarder_block_p.
	(remove_forwarder_block_with_phi, merge_phi_nodes,
	gate_merge_phi, pass_merge_phi): New.
	* tree-optimize.c (init_tree_optimization_passes): Add
	* tree-pass.h: Add an extern for pass_merge_phi;

2005-01-20  Richard Henderson  <>

	PR target/19418
	* config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128): New.
	(_mm_castps_pd, _mm_castps_si128): New.
	(_mm_castsi128_ps, _mm_castsi128_pd): New.

2005-01-20  Richard Henderson  <>

	PR target/19530
	* config/i386/mmintrin.h (_mm_cvtsi32_si64): Use
	(_mm_cvtsi64_si32): Use __builtin_ia32_vec_ext_v2si.
	* config/i386/i386.c (IX86_BUILTIN_VEC_EXT_V2SI): New.
	(ix86_init_mmx_sse_builtins): Create it.
	(ix86_expand_builtin): Expand it.
	(ix86_expand_vector_set): Handle V2SFmode and V2SImode.
	* config/i386/ (vec_extractv2sf_0, vec_extractv2sf_1): New.
	(vec_extractv2si_0, vec_extractv2si_1): New.

2005-01-20  Richard Henderson  <>

	PR target/16533
	* config/i386/i386.c (ix86_expand_push): New.
	* config/i386/ (push<MMXMODE>1): New.
	* config/i386/ (push<SSEMODE>1): New.
	* config/i386/i386-protos.h: Update.

2005-01-20  Kazu Hirata  <>

	* params.def, params.h, predict.c, tree-ssa-loop-im.c: Update

2005-01-20  Richard Henderson  <>

	* rtl.h (CONSTANT_P): Don't special case CONST_VECTOR.

2005-01-19  Richard Henderson  <>

	PR target/19350
	* config/i386/i386.c (ix86_expand_vector_move_misalign): Convert
	to V4SFmode in SSE1 fallback load path.

2005-01-19  Richard Henderson  <>

	* config/i386/i386.c (ix86_expand_vector_init_one_var): Fix typo
	in QImode expansion to ix86_expand_vector_set.
	(ix86_expand_vector_init_general): Fix typo in V8HImode recursive call.

2005-01-19  Richard Henderson  <>

	PR target/19511
	* config/i386/i386.c (ix86_preferred_reload_class): Return a proper
	subclass of the input class.
	(ix86_secondary_memory_needed): Always true for cross-MMX classes.
	Always true for cross-SSE1 classes.  Rationalize conditionals.
	* config/i386/i386.h (SSE_CLASS_P, MMX_CLASS_P): Use straight equality.
	* config/i386/ (movsi_1): Add MMX/SSE zeros.  Fix alternatives
	for SSE1.  Don't check TARGET_INTER_UNIT_MOVES.
	(movdi_2): Add MMX/SSE zeros.
	(movdi_1_rex64): Likewise.  Don't check TARGET_INTER_UNIT_MOVES.
	(movsf_1): Don't check TARGET_INTER_UNIT_MOVES.
	(zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
	(movsi_1_nointernunit, movdi_1_rex64_nointerunit): Remove.
	(movsf_1_nointerunit, zero_extendsidi2_32_1): Remove.
	(zero_extendsidi2_rex64_1): Remove.
	(MOV0 peephole): Check GENERAL_REG_P.

2005-01-19  Richard Henderson  <>

	PR target/19427
	* config/i386/i386.c (ix86_expand_vector_set): Fix third and fourth
	shufps elements.
	(ix86_expand_vector_extract): Likewise.

2005-01-19  Richard Henderson  <>

	PR middle-end/19304
	* expr.c (emit_move_change_mode): New argument force; use
	simplify_gen_subreg if true.
	(emit_move_via_alt_mode): Merge into ...
	(emit_move_via_integer): ... here.
	(emit_move_ccmode): Use emit_move_change_mode directly.

2005-01-19  Richard Henderson  <>

	PR target/19518
	* config/alpha/alpha.c (alpha_rtx_costs): Handle HIGH.
	(alpha_preferred_reload_class): Handle CONST_VECTOR.
	(alpha_emit_set_const_1): Add no_output parameter; don't emit
	rtl if true.
	(alpha_emit_set_const): Likewise.  Make static.
	(alpha_emit_set_long_const): Make static.
	(alpha_extract_integer): Split out from alpha_expand_mov.
	(alpha_split_const_mov): Likewise.
	(alpha_expand_mov): Use them.  Handle CONST_VECTOR.
	(alpha_legitimate_constant_p): New.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (REGISTER_MOVE_COST): Correct fp<->gp cost.
	(LEGITIMATE_CONSTANT_P): Re-implement with a function.
	* config/alpha/ (movsi): Add n alternative.
	(movsi_nt_vms, movdi_er_nofix, movdi_er_fix, movdi_fix): Likewise.
	(mov<VEC>_fix, mov<VEC>_nofix): Add i alternative.
	(splitters for all of the above): Use alpha_split_const_mov.
	* config/alpha/ (non_add_const_operand): New.
	(non_zero_const_operand): New.
	(input_operand): Use alpha_legitimate_constant_p after reload.

2005-01-19  Zdenek Dvorak  <>

	PR tree-optimization/19038
	* tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): New function.
	(add_candidate): Add ivs with increment in latch only if
	allow_ip_end_pos_p is true.
	(determine_iv_cost): Use empty_block_p.

2005-01-19  Daniel Berlin  <>

	* cfganal.c (compute_dominance_frontiers_1): Replace with new algorithm
	(compute_dominance_frontiers): Ditto.

2005-01-19  Ralf Corsepius  <>

	PR target/19529
	* config/sh/t-rtems: New.
	* config.gcc (sh-*-rtems*): Reflect having added config/sh/t-rtems.

2005-01-19  Zdenek Dvorak  <>

	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Always subtract
	the offset of the selected field.

2005-01-19  Kazu Hirata  <>

	* tree-cfg.c (remove_forwarder_block): Fix the check to
	prevent a nonlocal label from appearing in the middle of a
	basic block.

2005-01-19  Hans-Peter Nilsson  <>

	PR rtl-optimization/19462
	* reorg.c (find_end_label): Create return insn only if
	current_function_epilogue_delay_list is empty.

2005-01-19  Paolo Bonzini  <>

	* doc/passes.texi: Remove paragraph mentioning new-ra.

2005-01-19  Jakub Jelinek  <>

	PR rtl-optimization/15139
	* combine.c: Include params.h.
	(count_rtxs): New function.
	(record_value_for_reg): If replace_rtx would replace at least
	2 occurrences of REG in VALUE and TEM is really large, replace REG with
	(clobber (const_int 0)) instead of TEM.
	* params.def (PARAM_MAX_LAST_VALUE_RTL): New.
	* params.h (MAX_LAST_VALUE_RTL): New.
	* (combine.o): Depend on $(PARAMS_H).
	* doc/invoke.texi (--param max-last-value-rtl=N): Document.

	PR c/17297
	* c-typeck.c (digest_init): Only call build_vector if all constructor
	elements are *_CST nodes.
	* gimplify.c (gimplify_init_constructor): Likewise.

	PR middle-end/19164
	* c-typeck.c (digest_init): Only call build_vector if inside_init

2005-01-18  Tobias Schl"uter  <>

	* toplev.c (init_asm_output): Remove dead #ifdef.

2005-01-18  Kaz Kojima  <>

	* config/sh/linux.h (TARGET_C99_FUNCTIONS): Define.

2005-01-18  Eric Botcazou  <>

	* calls.c (expand_call): Check DECL_BUILT_IN_CLASS before
	* dojump.c (do_jump): Likewise.
	* gimplify.c (gimplify_call_expr): Likewise.
	* predict.c (expr_expected_value): Likewise.
	(strip_builtin_expect): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-ssa-loop-im.c (stmt_cost): Likewise
	* fold-const.c (fold): Test for BUILT_IN_NORMAL.
	(tree_expr_nonnegative_p): Likewise.

2005-01-18  Eric Botcazou  <>

	* config/sparc/sparc.c (load_pic_register): Emit the appropriate
	variant of the load_pcrel_sym pattern.
	* config/sparc/ (P macro): Move to the top.
	(load_pcrel_sym): Macroize using P.
	(save_register_window): Likewise.

2005-01-18  Aldy Hernandez  <>

	* config/rs6000/ ("sunordered"): Disable for e500.
	("sordered"): Same.

2005-01-18  Andrew Pinski  <>

	PR C/19472
	* c-typeck.c (build_asm_expr): Strip nops off
	input memory operands.

2005-01-18  David Edelsohn  <>

	* config/rs6000/aix43.h (CPLUSPLUS_CPP_SPEC): Delete
	* config/rs6000/aix51.h (CPLUSPLUS_CPP_SPEC): Same.
	* config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Same.

2005-01-18  Joel Sherrill <>

	PR target/19379
	* config/i386/i386.c (override_options): If the 80387 is disabled,
	then do not return FP values using FP registers.

2005-01-18  Kazu Hirata  <>

	* basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c,
	c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c,
	combine.c, config.gcc, coverage.h, cse.c, cselib.c,
	defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c,
	flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c,
	gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h,
	output.h, postreload-gcse.c, postreload.c, recog.c,
	resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c,
	targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c,
	tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c,
	tree-optimize.c, tree-outof-ssa.c, tree-pass.h,
	tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c,
	tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c,
	tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def,
	unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright.

	* config/darwin.c, config/darwin.h, config/freebsd-spec.h,
	config/alpha/alpha.c, config/arm/,
	config/i386/emmintrin.h, config/i386/i386-modes.def,
	config/i386/i386-protos.h, config/i386/i386.h,
	config/i386/pmmintrin.h, config/i386/,
	config/i386/, config/i386/xmmintrin.h,
	config/i860/i860.c, config/ia64/ia64-modes.def,
	config/ia64/ia64-protos.h, config/ia64/ia64.h,
	config/ia64/, config/ia64/,
	config/ia64/, config/ia64/,
	config/iq2000/iq2000.h, config/mips/linux64.h,
	config/rs6000/aix41.h, config/rs6000/aix43.h,
	config/rs6000/aix52.h, config/rs6000/darwin-fallback.c,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h,
	config/rs6000/, config/sh/, config/sparc/linux.h,
	config/sparc/linux64.h, config/sparc/litecoff.h,
	config/sparc/sp64-elf.h, config/sparc/sparc.c,
	config/sparc/sparc.h, config/sparc/,
	config/sparc/sysv4-only.h: Update copyright.

2005-01-18  Richard Henderson  <>

	PR target/19496
	* config/i386/i386.c (ix86_expand_fp_movcc): Fail for LTGT and UNEQ.

2005-01-18  Marc Espie  <>
	* config/i386/openbsdelf.h: Typo.

2005-01-18  Richard Henderson  <>

	* config/i386/i386.c (ix86_expand_fp_movcc): Remove TARGET_IEEE_FP
	special case for sse.
	* config/i386/ (sse_comparison_operator): Likewise.

2005-01-18  Dorit Naishlos  <>

	* tree-inline.c (estimate_num_insns_1): Added cases for

2005-01-18  Eric Botcazou  <>

	PR rtl-optimization/19296
	* combine.c (simplify_comparison): Rewrite the condition under
	which a non-paradoxical SUBREG of a PLUS can be lifted when
	compared against a constant.

2005-01-18  Andi Kleen <>

	* c-typeck.c: (convert_for_assignment): Check warn_pointer_sign.
	* c.opt (-Wpointer-sign): Add.
	* doc/invoke.texi: (-Wpointer-sign): Add.

2005-01-18  Uros Bizjak  <>

	* config/i386/i386.c (override_options): Revert 2004-11-24 change.
	* config/i386/ (fmodsf3, dremsf3, *sinsf2, *cossf2, sincossf3,
	*tansf3_1, tansf2, atan2sf3_1, atan2sf3, atansf2, asinsf2, acossf2,
	logsf2, log10sf2, log2sf2, log1psf2, logbsf2, ilogbsf2, expsf2,
	exp10sf2, exp2sf2, expm1sf2, rintsf2, floorsf2, ceilsf2, btruncsf2,
	nearbyintsf2): Disable for TARGET_SSE_MATH.  Leave patterns enabled
	(fmoddf3, dremdf3, *sindf2, *sinextendsfdf2, *cosdf2, *cosextendsfdf2,
	sincosdf3, *sincosextendsfdf3, *tandf3_1, tandf2, atan2df3_1,
	atan2df3, atandf2, asindf2, acosdf2, logdf2, log10df2, log2df2,
	log1pdf2, logbdf2, expdf2, exp10df2, exp2df2, expm1df2, rintdf2,
	floordf2, ceildf2, btruncdf2, nearbyintdf2): Disable for
	(TARGET_SSE2 && TARGET_SSE_MATH).  Leave patterns enabled for
	(atan2sf3, atan2df3, atan2xf3): Remove register constraints
	from expander.

2005-01-18  Uros Bizjak  <>

	PR target/19424
	* config/i386/ (*movv2sf_internal_rex64, *movv2sf_internal):
	Add movaps alternative for xmm reg->reg move.

2005-01-17  Jeff Law  <>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Clear SSA_NAME_VALUE
	at the end of the main DOM loop rather than just before DOM exits.

2005-01-17  Diego Novillo  <>

	PR tree-optimization/19121
	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): When
	adding aliases to a name tag, also add them to the pointer's
	type tag.
	* tree-ssa-copy.c (merge_alias_info): Do not merge flow
	sensitive alias info at all.  Only check that the two pointers
	have compatible pointed-to sets.
	* tree-ssa.c (verify_name_tags): Verify that the alias set of
	a pointer's type tag is a superset of the alias set of the
	pointer's name tag.

2005-01-17  James E Wilson  <>

	PR target/19357
	* config/ia64/ (movxf): Handle general register source.  Adjust
	comment to document why.

2005-01-17  Richard Henderson  <>

	* config/i386/ (smaxv4sf3_finite, sse_vmsmaxv4sf3_finite,
	sminv4sf3_finite, sse_vmsminv4sf3_finite, smaxv2df3_finite,
	sse2_vmsmaxv2df3_finite, sminv2df3_finite,
	sse2_vmsminv2df3_finite): New.
	(smaxv4sf3, sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, smaxv2df3,
	sse2_vmsmaxv2df3, sminv2df3, sse2_vmsminv2df3): Remove commutative.
	Force op1 into register.

2005-01-17  Kelley Cook  <>

	* (STAGEMOVESTUFF): Stage all the stamp files to prevent
	bubblestrap from always rebuilding build directory.

2005-01-17  Ulrich Weigand  <>

	* config/s390/ ("*clc"): Remove incorrect '='.
	("*cmpmem_short"): Likewise.

2005-01-17  Steven Bosscher  <>

	* basic-block.h: Document BB_* flags.
	* regrename.c (copyprop_hardreg_forward): Don't use BB_VISITED,
	use an sbitmap instead.
	* sched-rgn.c (compute_trg_info): Likewise.

2005-01-17  Richard Sandiford  <>

	* config.gcc (mips64*-*-linux*): Set the default abi to n32.  Remove
	redundant target_cpu_default and extra_parts lines.  Use the default
	"from-abi" ISA.
	* config/mips/linux64.h (DRIVER_DEFAULT_ABI_SELF_SPEC): Delete.
	(DRIVER_SELF_SPECS): Remove architecture lines.  Set the ABI directly.
	(SUBTARGET_ASM_SPEC): Remove -mabi=n32 and -mabi=64 mappings.
	* config/mips/t-linux64 (MULTILIB_DIRNAMES): Use "32" for -mabi=32
	and "n32" for -mabi=n32.

2005-01-17  Ian Lance Taylor  <>

	PR c/5675
	* c-typeck.c (build_c_cast): Revert patch of 2003-02-16: don't
	fold constant variables into initial values.

2005-01-17  Kazu Hirata  <>

	* tree-cfg.c (tree_can_merge_blocks_p): Reorder two checks.

	* tree-cfg.c (tree_forwarder_block_p): Speed up by walking
	through the statements backward.

2005-01-17  Ian Lance Taylor  <>

	PR middle-end/13127:
	* tree-inline.c (expand_call_inline): Set TREE_NO_WARNING on
	a variable set to the return value of the inlined function.

2005-01-17  Mark Dettinger  <>

	* rtlanal.c (rtx_cost): Assign cost of 0 to a SUBREG
	when modes are tieable.

2005-01-17  Ranjit Mathew  <>

	* gthr-posix.h (__gthread_active_p): Use pthread_cancel instead
	of pthread_create to find out if threads are enabled.
	* gthr-posix95.h (__gthread_active_p): Likewise.

2005-01-17  Paolo Bonzini  <>

	* common.opt (-fnew-ra): Remove.
	* ra*.*: Remove.
	* toplev.h (flag_new_regalloc): Remove.
	* (ra*.*): Don't mention.
	* passes.c (rest_of_handle_new_regalloc): Remove.
	(rest_of_handle_combine, rest_of_compilation): Always consider
	flag_new_regalloc as false.
	* doc/invoke.texi: Don't document -fnew-ra.

2005-01-17  Paolo Bonzini <>

	* bb-reorder.c (fix_edges_for_rarely_executed_code): Remove
	last parameter to reg_scan.
	* loop.c (loop_optimize): Likewise.
	* passes.c (rest_of_handle_tracer, rest_of_handle_if_conversion,
	rest_of_handle_web, rest_of_handle_cfg, rest_of_handle_jump_bypass,
	rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
	rest_of_handle_gcse, rest_of_handle_loop_optimize,
	rest_of_handle_loop2, rest_of_handle_jump2): Likewise.
	* regclass.c (reg_scan): Likewise, for the declaration.
	* rtl.h (reg_scan): Likewise, for the prototype.

2005-01-17  Kazu Hirata  <>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't call

2005-01-16  Daniel Berlin  <>

	* tree-ssa-pre.c (add_to_sets): s1 may be NULL.
	(compute_avail): Uses don't go in tmp_gen.

2005-01-16  Steven Bosscher  <>

	* ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a
	loop to look for a free slot in a page entry.

2005-01-16  John David Anglin  <>

	PR target/16304
	* defaults.h (TARGET_DEFERRED_OUTPUT_DEFS): Provide default.
	* toplev.c (compile_file): Call process_pending_assemble_output_defs
	just before targetm.asm_out.file_end.
	* tree.h (process_pending_assemble_output_defs): Declare.
	* varasm.c (assemble_output_def, process_pending_assemble_output_defs):
	New functions.
	(assemble_alias): Defer generation of assembly code for defines when
	* config/rs6000/aix41.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
	* config/rs6000/aix43.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
	* doc/tm.texi (TARGET_DEFERRED_OUTPUT_DEFS): document.

2005-01-15  John David Anglin  <>

	PR target/19336
	* pa.c (pa_scalar_mode_supported_p): New function.
	* pa.h (MIN_UNITS_PER_WORD): Add comment.

	* pa-protos.h (prefetch_operand): Delete.
	(prefetch_cc_operand, prefetch_nocc_operand): New declations.
	* pa.c (prefetch_operand): Delete.
	(prefetch_cc_operand, prefetch_nocc_operand): New functions.
	* pa.h (EXTRA_CONSTRAINT): Add `W' constraint.
	(PREDICATE_CODES): Delete prefetch_operand.  Add prefetch_cc_operand
	and prefetch_nocc_operand.
	* (prefetch): Rework to avoid reload problems handling short
	displacements when a cache control completer needs to be provided.
	(prefetch_32, prefetch_64): Delete.
	(prefetch_cc, prefetch_nocc): New patterns.

2005-01-15  David Edelsohn  <>

	* config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Revert previous change.

2005-01-15  John David Anglin  <>

	PR ada/19388
	* pa.c (pa_asm_output_aligned_common): Warn if specified alignment
	exceeds maximum alignment for global common data.
	* pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768.
	* som.h (MAX_OFILE_ALIGNMENT): Likewise.

2004-01-15  Roger Sayle  <>

	* tree-ssa-dom.c (extract_range_from_cond): Correct condition.

2004-01-15  Roger Sayle  <>

	* harg-reg-set.h (reg_class_names): Prototype global array.
	* regclass.c (reg_class_names): Declare here and initialize to
	(dump_regclass): Remove local declaration of reg_class_names.
	(regclass): Likewise.
	* cfg.c (dump_flow_info): Likewise.
	* ra-debug.c (reg_class_names): Likewise.
	* regrename.c (reg_class_names): Likewise.
	* reload.c (reg_class_names): Likewise.
	* reload1.c (spill_failure): Likewise.
	* config/m68hc11/m68hc11.c (reg_class_names): Likewise.

2005-01-15  Ulrich Weigand  <>

	* config/s390/ ("reload_outti"): Remove predicate for
	output operand.  Abort if operand is not a MEM.
	("reload_outdi", "reload_outdf"): Likewise.

2005-01-15  Marc Espie  <>

	* config.gcc (*-*-openbsd*): Set HAS_LIBC_R for OpenBSD <= 3.2.
	(i[34567]86-*-openbsd*): Switch to ELF for OpenBSD >= 3.4.
	* config/openbsd.h:  Fix C++ includes for native configurations.
	Add proper OS_CPP_BUILTINS.  Fix libspec for recent OpenBSD.
	Add trampoline support.
	* config/i386/openbsdelf.h: New.

2005-01-15  Marc Espie  <>

	* collect2.c (main): Explicitly parse -dynamic-linker option.

2005-01-15  Jakub Jelinek  <>

	PR tree-optimization/19060
	* tree-ssa-dom.c (extract_range_from_cond) <case LT_EXPR, GT_EXPR>:
	Return 0 if op1 <= TYPE_MIN_VALUE () resp. op1 >= TYPE_MAX_VALUE ().
	(simplify_cond_and_lookup_avail_expr): Add assert for dummy == 0
	and handle extract_range_from_cond returning false.
	* fold-const.c (fold): Optimize comparisons with min/max even for

2005-01-15  Ralf Corsepius  <>

	* config/mips/rtems.h (MIPS_DEFAULT_GVALUE): Set to 0.
	Remove little endian multilib variants.
	Add mips32 multilib variant.

2005-01-15  Kazu Hirata  <>

	* explow.c (copy_all_reg, stabilize): Remove.
	* expr.h: Remove the corresponding prototypes.

	* rtlanal.c (regs_set_between_p): Remove.
	* rtl.h: Remove the corresponding prototype.

2005-01-14  David Edelsohn  <>

	* config/rs6000/rs6000.c (rs6k_nonimmediate_operand): Rename
	to rs6000_nonimmediate_operand.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Rename
	rs6k_nonimmediate_operand to rs6000_nonimmediate_operand.
	* config/rs6000/ (movsi_internal1): Rename predicate to
	* config/rs6000/ (movdf_e500_double): Rename predicate to

2005-01-14  Andrew Pinski  <>

	* tree-ssa-alias.c (pass_may_alias): Add TODO_verify_stmts.

2005-01-14  Aldy Hernandez  <>

	* config/rs6000/rs6000.h (CLASS_MAX_NREGS): DF goes in 1 register
	on e500v2.
	(CANNOT_CHANGE_MODE_CLASS): Restrict DI mode changes on e500v2.
	(PREDICATE_CODES): Add rs6k_nonimmediate_operand.

	* config/rs6000/rs6000.c (invalid_e500_subreg): New.
	(rs6k_nonimmediate_operand): New.
	(rs6000_legitimate_offset_address_p): Handle DI modes on e500v2
	(legitimate_lo_sum_address_p): Same.
	(rs6000_legitimize_address): Same.
	(rs6000_legitimize_reload_address): Same.
	(rs6000_legitimate_address): Same.
	(spe_build_register_parallel): Pass DF and DC modes in a DI

	* config/rs6000/ ("*movsi_internal1"): Change predicate
	to rs6k_nonimmediate_operand.

	* config/rs6000/ ("*frob_df_di"): New.
	("*frob_di_df"): New.
	("*frob_di_df_2"): New.
	("*mov_sidf_e500_subreg0"): New.
	("*mov_sidf_e500_subreg4"): New.
	("*movdf_e500_double"): Change predicate to

2005-01-14  Aldy Hernandez  <>

	* postreload.c (move2add_note_store): Only call
	trunc_int_for_mode on scalar integers.

2005-01-14  Steven Bosscher  <>

	* tree-ssa-dce.c (visited_control_parents): New sbitmap to
	replace BB_VISITED uses.
	(find_obviously_necessary_stmts): Don't clear BB_VISITED.
	(propagate_necessity): Check the bitmap instead of BB_VISITED.
	(tree_dce_done): Free visited_control_parents.
	(perform_tree_ssa_dce): Allocate and clear it.
	* tree-ssa-pre.c (compute_antic_aux): Make non-recursive.
	(compute_antic): Iterate from here using a DFS.  Use an sbitmap
	instead of BB_VISITED.

2005-01-14  Kazu Hirata  <>

	* c-tree.h, coverage.h, langhooks-def.h, optabs.h, output.h,
	rtl.h, targhooks.h, tree-flow.h, tree-mudflap.h, tree.h:
	Remove unused prototypes.

2005-01-14  Aldy Hernandez  <>

	* config/rs6000/rs6000.c (rs6000_stack_info): Fix caching of SPE
	64-bit register usage.
	(spe_func_has_64bit_regs_p): Add FIXME note.

2005-01-14  Aldy Hernandez  <>

	* config/rs6000/rs6000.c (rs6000_generate_compare): Replace
	flag_finite_math_only with flag_unsafe_math_optimizations.

2005-01-14  J. D. Johnston  <>

	* config/s390/tpf-unwind.h (s390_fallback_frame_state): Correct
	end-of-stack check.
	(__tpf_eh_return): Copy TPF private stack area from the module
	boundary stack frame.  Add check for when module addresses are
	equal, but no stub address is found.

2005-01-14  Richard Earnshaw  <>

	PR target/7525
	* arm.h (struct machine_function): Add call_via field.
	(thumb_call_via_label): Declare.
	* arm.c (thumb_call_via_label): New variable.
	(thumb_call_reg_needed): New variable.
	(arm_output_function_epilogue): For Thumb code, output any per-function
	call-indirect trampolines.
	(thumb_call_via_reg): New function.
	(arm_file_end): New function.
	(TARGET_ASM_FILE_END): Call arm_file_end.
	(aof_file_end): Likewise.
	* arm-protos.h (thumb_call_via_reg): Declare.
	* (call_reg_thumb, call_value_reg_thumb): Call
	thumb_call_via_reg in normal case.

2005-01-14  Jakub Jelinek  <>

	PR middle-end/19084
	PR rtl-optimization/19348
	* recog.c (peephole2_optimize): Do global life update if some peephole
	decides it doesn't need at least one of its inputs and that change
	influences liveness at the start of the basic block.

	* basic-block.h (EXECUTE_IF_AND_COMPL_IN_REG_SET): Needs 2 REGSET
	arguments instead of 1.

2005-01-14  Eric Botcazou  <>

	PR middle-end/18820
	* varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Return
	zero for nested functions needing a static chain or functions
	with a non-constant address.

2005-01-13  Roger Sayle  <>

	* simplify-rtx.c (simplify_binary_operation) <AND>: Optimize
	(and (sign_extend X) C) into (zero_extend (and X C)).

2005-01-13  David O'Brien  <>

	* config/freebsd-spec.h:  Make KSE pthread lib logic the default.

2005-01-13  Richard Henderson  <>

	PR target/19009
	PR target/19250
	PR target/19252
	* config/i386/ (cmpdf, cmpsf, bunordered, bordered, buneq,
	bunge, bungt, bunle, bunlt, bltgt): Enable for TARGET_SSE_MATH,
	not just TARGET_SSE.
	(cmpfp_i_387): Rename from cmpfp_i.  Move after sse patterns.
	(cmpfp_i_mixed): Rename from cmpfp_i_sse; use for TARGET_MIX_SSE_I387.
	(cmpfp_i_sse): Rename from cmpfp_i_sse_only; use for TARGET_SSE_MATH.
	(cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387): Similarly.
	(fp_jcc_1_mixed, fp_jcc_1_sse, fp_jcc_1_387): Similarly.
	(fp_jcc_2_mixed, fp_jcc_2_sse, fp_jcc_2_387): Similarly.
	(fp_jcc_3_387, fp_jcc_4_387, fp_jcc_5_387, fp_jcc_6_387,
	fp_jcc_7_387, fp_jcc_8_387): Rename from fp_jcc_N.
	(movdicc_c_rex64): Rename with '*'.
	(movsfcc, movdfcc): Add checks for 387 and sse math to condition.
	(movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): New.
	(movsfcc_1_387): Rename from movsfcc_1.
	(movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): New.
	(movdfcc_1, movdfcc_1_rex64): Add check for 387.
	(sminsf3, smaxsf3, smindf3, smaxdf3): New.
	(minsf3, minsf, minsf_nonieee, minsf_sse, mindf3, mindf,
	mindf_nonieee, mindf_sse, maxsf3, maxsf, maxsf_nonieee, maxsf_sse,
	maxdf3, maxdf, maxdf_nonieee, maxdf_sse, sse_movsfcc, sse_movsfcc_eq,
	sse_movdfcc, sse_movdfcc_eq, sse_movsfcc_const0_1,
	sse_movsfcc_const0_2, sse_movsfcc_const0_3, sse_movsfcc_const0_4,
	sse_movdfcc_const0_1, sse_movdfcc_const0_2, sse_movdfcc_const0_3,
	sse_movdfcc_const0_4): Remove.
	* config/i386/i386.c (ix86_expand_fp_movcc): For TARGET_SSE_MATH,
	recognize min/max early.  Update for changed sse cmove patterns.
	(ix86_split_sse_movcc): New.
	* config/i386/i386-protos.h: Update.

2005-01-13  Steven Bosscher  <>

	* tree-ssa-dse.c (fix_phi_uses): Use SSA operand iterators.
	(fix_stmt_v_may_defs): Likewise.

2005-01-13  Richard Henderson  <>

	* config/i386/i386.c (ix86_expand_fp_absneg_operator): Use elt_mode
	for converting the mask.

2005-01-13  David Edelsohn  <>

	* config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Change _XOPEN_SOURCE
	definition to 600.

2005-01-13  Richard Henderson  <>

	* config/i386/i386.c (IX86_BUILTIN_MOVQ, IX86_BUILTIN_LOADD,
	(ix86_init_mmx_sse_builtins, ix86_expand_builtin): Update to match.
	(ix86_expand_vector_extract): For V4S[FI], extract element 0 after
	* config/i386/ (sse_concatv2sf): Accept zero operand 2.
	(sse2_pextrw): Fix immediate constraint.
	(sse2_loadq, sse2_loadq_rex64): Remove.
	* config/i386/emmintrin.h (_mm_cvtsi128_si32, _mm_cvtsi128_si64x):
	Use __builtin_ia32_vec_ext_<size>.
	(_mm_cvtsi32_si128, _mm_cvtsi64x_si128): Use _mm_set_epi<size>.

2005-01-13  Aldy Hernandez  <>

	* function.c (assign_parm_setup_block): Look inside original
	entry_parm when inspecting PARALLEL.

2005-01-13  Ralf Corsepius  <>
	    Joel Sherrill  <>

	PR target/19399
	* gthr-rtems.h (__gthread_recursive_mutex_t): New type.
	(__gthread_recursive_mutex_lock): New function.
	(__gthread_recursive_mutex_trylock): Likewise.
	(__gthread_recursive_mutex_unlock): Likewise.

2005-01-13  Ralf Corsepius <>

	* config/i386/t-rtems-i386: Multilib on -mtune instead of -mcpu.

2005-01-13  Jan Beulich  <>

	* config/ia64/ (ashlti3, ashlti3_internal): New.
	(ashrti3_internal): Indicate output is early clobber. Generate result
	into output rather than first input. Use move for low word of output
	if shift count is exactly 64.
	(lshrti3_internal): Likewise.

2005-01-13  Hans-Peter Nilsson  <>

	PR target/18329
	PR target/18330
	* reload1.c (delete_output_reload): Don't delete an output reload
	if the pseudo lives longer than a single basic block.  Adjust and
	improve wording of comment.

2005-01-12  Andrew Pinski  <>

	PR target/19334
	* config/darwin.c (machopic_select_section): Use TYPE_SIZE_UNIT instead
	of TYPE_SIZE where we mean the number of bytes.

2005-01-12  Aldy Hernandez  <>

	* function.c (assign_parm_setup_block): Relax condition on
	multi-register optimization.

2005-01-12  Nick Clifton  <>

	* config/sh/ (udivsi3_sh2a, divsi3_sh2a): Give these patterns
	an "in_delay_slot" attribute of "no" to prevent them being used in
	delay slots.  This is forbidden because they might generate

2005-01-12  Alan Modra  <>

	PR target/19389
	* config/rs6000/ (movtf_internal): Replace r->o and m->r
	with r->Y and Y->r.

2005-01-12  Nick Clifton  <>

	* config/iq2000/iq2000.h (ASM_SPEC): Undefine (to stop -Qy being
	passed on to GAS) but do not define, as GAS no longer supports or
	needs the -m2000 option.

2005-01-11  Roger Sayle  <>

	* builtins.c (fold_builtin_fabs): Convert argument to the appropriate
	type as args of unprototyped builtins aren't automatically promoted.
	(fold_builtin_abs): Likewise.

2005-01-11  Kaveh R. Ghazi  <>

	* Set a `build-warn' variable.

2005-01-11  Zdenek Dvorak  <>

	PR tree-optimization/17949
	* tree-ssa-loop-ivopts.c (may_be_unaligned_p): New function.
	(find_interesting_uses_address): Use it.

2005-01-11  Aldy Hernandez  <>

	* regrename.c (kill_value): Handle subreg's that won't simplify.

2005-01-11  Richard Henderson  <>

	PR target/13366
	* config/i386/i386.h (enum ix86_builtins): Move ...
	* config/i386/i386.c: ... here.
	(ix86_init_builtins): Make static.
	(ix86_init_mmx_sse_builtins): Update for changed builtins.
	(ix86_expand_binop_builtin): Only use ix86_fixup_binary_operands
	if all the modes match.  Otherwise, fake it.
	(get_element_number, ix86_expand_vec_init_builtin,
	ix86_expand_vec_ext_builtin, ix86_expand_vec_set_builtin): New.
	(ix86_expand_builtin): Make static.  Update for changed builtins.
	(ix86_expand_vector_move_misalign): Use sse2_loadlpd with zero
	operand instead of sse2_loadsd.  Cast sse1 fallback to V4SFmode.
	(ix86_expand_vector_init_duplicate): New.
	(ix86_expand_vector_init_low_nonzero): New.
	(ix86_expand_vector_init_one_var, ix86_expand_vector_init_general):
	Split out from ix86_expand_vector_init; handle integer modes.
	(ix86_expand_vector_init): Use them.
	(ix86_expand_vector_set, ix86_expand_vector_extract): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/ (reg_or_0_operand): New.
	* config/i386/ (mov<MMXMODEI>_internal): Add 'r' variants.
	(movv2sf_internal): Likewise.  And a splitter to match them all.
	(vec_dupv2sf, mmx_concatv2sf, vec_setv2sf, vec_extractv2sf,
	vec_initv2sf, vec_dupv4hi, vec_dupv2si, mmx_concatv2si, vec_setv2si,
	vec_extractv2si, vec_initv2si, vec_setv4hi, vec_extractv4hi,
	vec_initv4hi, vec_setv8qi, vec_extractv8qi, vec_initv8qi): New.
	(mmx_pinsrw): Fix operand ordering.
	* config/i386/ (movv4sf splitter): Use direct pattern,
	rather than sse_loadss expander.
	(movv2df splitter): Similarly.
	(sse_loadss, sse_loadlss): Remove.
	(vec_dupv4sf, sse_concatv2sf, sse_concatv4sf, vec_extractv4sf_0): New.
	(vec_setv4sf, vec_setv2df): Use ix86_expand_vector_set.
	(vec_extractv4sf, vec_extractv2df): Use ix86_expand_vector_extract.
	(sse3_movddup): Rename with '*'.
	(sse3_movddup splitter): Use gen_rtx_REG instead of gen_lowpart.
	(sse2_loadsd): Remove.
	(vec_dupv2df_sse3): Rename from sse3_loadddup.
	(vec_dupv2df, vec_concatv2df_sse3, vec_concatv2df): New.
	(sse2_pinsrw): Fix argument ordering.
	(sse2_loadld, sse2_loadq): Add sse1 alternatives.
	(sse2_stored): Remove 'r' destination.
	(vec_dupv4si, vec_dupv2di, sse2_concatv2si, sse1_concatv2si,
	vec_concatv4si_1, vec_concatv2di, vec_setv2di, vec_extractv2di,
	vec_initv2di, vec_setv4si, vec_extractv4si, vec_initv4si,
	vec_setv8hi, vec_extractv8hi, vec_initv8hi, vec_setv16qi,
	vec_extractv16qi, vec_initv16qi): New.

	* config/i386/emmintrin.h (__m128i, __m128d): Use typedef, not define.
	(_mm_set_sd, _mm_set1_pd, _mm_setzero_pd, _mm_set_epi64x,
	_mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128): Use
	constructor form.
	(_mm_load_pd, _mm_store_pd): Use plain dereference.
	(_mm_load_si128, _mm_store_si128): Likewise.
	(_mm_load1_pd): Use _mm_set1_pd.
	(_mm_load_sd): Use _mm_set_sd.
	(_mm_store_sd, _mm_storeh_pd): Use __builtin_ia32_vec_ext_v2df.
	(_mm_store1_pd, _mm_storer_pd): Use _mm_store_pd.
	(_mm_set_epi64): Use _mm_set_epi64x.
	(_mm_set1_epi64x, _mm_set1_epi64, _mm_set1_epi32, _mm_set_epi16,
	_mm_set1_epi8, _mm_setr_epi64, _mm_setr_epi32, _mm_setr_epi16,
	_mm_setr_epi8): Use _mm_set_foo form.
	(_mm_loadl_epi64, _mm_movpi64_epi64, _mm_move_epi64): Use _mm_set_epi64.
	(_mm_storel_epi64, _mm_movepi64_pi64): Use __builtin_ia32_vec_ext_v2di.
	(_mm_extract_epi16): Use __builtin_ia32_vec_ext_v8hi.
	(_mm_insert_epi16): Use __builtin_ia32_vec_set_v8hi.
	* config/i386/mmintrin.h (_mm_setzero_si64): Use plain cast.
	(_mm_set_pi32): Use __builtin_ia32_vec_init_v2si.
	(_mm_set_pi16): Use __builtin_ia32_vec_init_v4hi.
	(_mm_set_pi8): Use __builtin_ia32_vec_init_v8qi.
	(_mm_set1_pi16, _mm_set1_pi8): Use _mm_set_piN variant.
	* config/i386/pmmintrin.h (_mm_loaddup_pd): Use _mm_load1_pd.
	(_mm_movedup_pd): Use _mm_shuffle_pd.
	* config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss,
	_mm_set1_ps, _mm_set_ps, _mm_setr_ps): Use constructor form.
	(_mm_cvtpi16_ps, _mm_cvtpu16_ps, _mm_cvtpi8_ps, _mm_cvtpu8_ps,
	_mm_cvtps_pi8, _mm_cvtpi32x2_ps): Avoid __builtin_ia32_mmx_zero;
	Use _mm_setzero_ps.
	(_mm_load_ss, _mm_load1_ps): Use _mm_set* form.
	(_mm_load_ps, _mm_loadr_ps): Use raw dereference.
	(_mm_store_ss): Use __builtin_ia32_vec_ext_v4sf.
	(_mm_store_ps): Use raw dereference.
	(_mm_store1_ps): Use _mm_storeu_ps.
	(_mm_storer_ps): Use _mm_store_ps.
	(_mm_extract_pi16): Use __builtin_ia32_vec_ext_v4hi.
	(_mm_insert_pi16): Use __builtin_ia32_vec_set_v4hi.

2005-01-11  Stan Shebs  <>

	* config/rs6000/rs6000.c (machopic_output_stub): Issue
	ldu instead of lwzu if 64-bit -mdynamic-no-pic.

2005-01-11  Andrew Pinski  <>

	PR target/18761
	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	Skip all DECLs except for FIELD_DECLs.

2005-01-11  Andreas Krebbel  <>

	* config/s390/s390.c (override_options): Return error if
	-mbackchain, -mpacked-stack and -mhard-float are used together.
	(s390_va_start): Remove the backchain && packed-stack special case.
	(s390_gimplify_va_arg): Likewise.
	* doc/invoke.texi: Remove the ABI incompatibility note.

2005-01-11  Andreas Krebbel  <>

	* config/s390/s390.c (struct s390_frame_layout): Remove
	(s390_frame_info, s390_emit_prologue): Replace occurrences of
	save_backchain_p with TARGET_BACKCHAIN.

2005-01-11  Alan Modra  <>

	PR target/18916
	* builtins.c (std_gimplify_va_arg_expr): Adjust alignment of *ap.
	* expr.h (struct locate_and_pad_arg_data): Add "boundary".
	* function.c (locate_and_pad_parm): Set new field.
	(assign_parm_find_stack_rtl): Use it instead of FUNCTION_ARG_BOUNDARY.
	Tweak where_pad test to include "none".  Always set mem align for
	(assign_parm_adjust_stack_rtl): Discard stack_parm if alignment
	not sufficient for type.
	(assign_parm_setup_block): If stack_parm is zero on entry, always
	make a new stack local.  Block move old stack parm if necessary
	to new aligned stack local.
	(assign_parm_setup_stack): Use a block move to handle
	potentially misaligned entry_parm.
	(assign_parms_unsplit_complex): Specify required alignment when
	creating stack local.
	* calls.c (compute_argument_addresses): Override alignment of stack
	arg calculated from its type with the alignment given by
	(store_one_arg): Likewise.

2005-01-11  Jan Beulich  <>

	* config/ia64/ (zero_extendsidi2): Replace zxt4 by addp4.
	Change respective itanium_class attribute to ialu.
	(shladdp4_internal): New.
	* config/ia64/ (shladd_log2_operand): New.

2005-01-11  Richard Henderson  <>

	* expr.c (store_constructor): Use rtvec_alloc instead of
	alloca+gen_rtvec_v, and an incorrect number passed to alloca.

2005-01-11  Kazu Hirata  <>

	* config/alpha/alpha.c, config/i386/ Fix comment typos.

2005-01-11  Alan Modra  <>

	* varasm.c (default_section_type_flags_1): Don't set SECTION_SMALL.
	* config/ia64/ia64.c (TARGET_SECTION_TYPE_FLAGS): Define.
	(ia64_rwreloc_section_type_flags): Delete.
	(ia64_section_type_flags): New function.
	* config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): Don't define.

2005-01-10  David Mosberger  <>

	PR target/18987
	* config/ia64/ia64.c (process_set): For alloc insn, only call
	process_epilogue is !frame_pointer_needed.

2005-01-10  Roger Sayle  <>

	PR c++/19355
	* c-common.c (c_common_truthvalue_conversion): TRUTH_NOT_EXPR is a
	unary operator and can't be treated as a binary/comparison operator.

2005-01-10  Richard Henderson  <>

	* config/i386/i386.c (ix86_function_value): Use type_natural_mode.
	(ix86_return_in_memory): Likewise.
	(function_arg_advance):  Likewise.  Mirror structure in function_arg
	for choosing register to advance.

2005-01-10  Kazu Hirata  <>

	* tree-vectorizer.c, tree.def: Fix comment typos.

2005-01-10  Mark Dettinger  <>

	* config/s390/s390.c (struct processor_costs): 4 new fields:
	ddbr, ddr, debr, der.
	(s390_rtx_costs): More precise handling of divide instructions.

2005-01-10  David Edelsohn  <>

	* config/rs6000/t-aix43 (BOOT_LDFLAGS): Define.

2005-01-10  Jan Beulich  <>

	* config/ia64/ia64.c (ia64_in_small_data_p): Also handle the section
	names resulting from -ffunction-sections/-fdata-sections and linkonce
	* varasm.c (default_section_type_flags_1): Also set SECTION_SMALL
	based on the section name. Rearrange the section name comparison logic
	slightly so that each section name is compared against at most once.

2005-01-10  Ben Elliston  <>

	* doc/invoke.texi (Code Gen Options): Add PowerPC to the list of
	targets for which -fPIC reduces limitations on the GOT size.

2005-01-09  Falk Hueffner  <>

	* fold-const.c (fold): Also handle EXACT_DIV_EXPR when folding
	X/C1 cmpop C2.

2005-01-09  David Edelsohn  <>

	PR target/18720
	* collect2.c (main): Set aixrtl_flag for -brtl option.
	(resolve_lib_name): Search for .so file extension before .a
	if aixrtl_flag set.

2005-01-09  Dorit Naishlos  <>

	* tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.
	(vect_analyze_data_refs_alignment): Add dump prints.

2005-01-09  Ira Rosen  <>

	* tree-vectorizer.c (vect_analyze_offset_expr): Use
	Initialize outputs first thing in the function.
	(vect_update_ivs_after_vectorizer): Call initial_condition_in_loop_num.
	(vect_is_simple_iv_evolution): Call initial_condition_in_loop_num.
	(vect_analyze_pointer_ref_access): Check that the initial condition of
	the access function is loop invariant.

2005-01-09  Richard Henderson  <>

	* config/i386/i386.c (bdesc_2arg): Update names for mmx_ prefixes.
	(ix86_expand_builtin): Likewise.  Frob MASKMOVQ wrt the input mem
	just like MASKMOVDQU.  Return plain zero for MMX_ZERO.
	* config/i386/ (MMXMODEI, mov<MMXMODEI>,
	mov<MMXMODEI>_internal_rex64, mov<MMXMODEI>_internal, movv2sf,
	movv2sf_internal_rex64, movv2sf_internal, MMXMODE,
	movmisalign<MMXMODE>, mmx_pmovmskb, mmx_maskmovq, mmx_maskmovq_rex,
	sse_movntdi, addv8qi3, addv4hi3, addv2si3, mmx_adddi3, ssaddv8qi3,
	ssaddv4hi3, usaddv8qi3, usaddv4hi3, subv8qi3, subv4hi3, subv2si3,
	mmx_subdi3, sssubv8qi3, sssubv4hi3, ussubv8qi3, ussubv4hi3,
	mulv4hi3, smulv4hi3_highpart, umulv4hi3_highpart, mmx_pmaddwd,
	sse2_umulsidi3, mmx_iordi3, mmx_xordi3, mmx_anddi3, mmx_nanddi3,
	mmx_uavgv8qi3, mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pinsrw,
	mmx_pextrw, mmx_pshufw, eqv8qi3, eqv4hi3, eqv2si3, gtv8qi3, gtv4hi3,
	gtv2si3, umaxv8qi3, smaxv4hi3, uminv8qi3, sminv4hi3, ashrv4hi3,
	ashrv2si3, lshrv4hi3, lshrv2si3, mmx_lshrdi3, ashlv4hi3, ashlv2si3,
	mmx_ashldi3, mmx_packsswb, mmx_packssdw, mmx_packuswb, mmx_punpckhbw,
	mmx_punpckhwd, mmx_punpckhdq, mmx_punpcklbw, mmx_punpcklwd,
	mmx_punpckldq, emms, addv2sf3, subv2sf3, subrv2sf3, gtv2sf3, gev2sf3,
	eqv2sf3, pfmaxv2sf3, pfminv2sf3, mulv2sf3, femms, pf2id, pf2iw,
	pfacc, pfnacc, pfpnacc, pi2fw, floatv2si2, pfrcpv2sf2, pfrcpit1v2sf3,
	pfrcpit2v2sf3, pfrsqrtv2sf2, pfrsqit1v2sf3, pmulhrwv4hi3, pswapdv2si2,
	pswapdv2sf2): Move to; rename as necessary with leading
	mmx_ prefix.
	(mmx_clrdi, pavgusb): Remove.
	(ldmxcsr, stmxcsr, sfence, sfence_insn): Move to; rename
	with leading sse_ prefix.
	* config/i386/ Receive them.
	* config/i386/ New file.
	(MMXMODE12, MMXMODE24, mmxvecsize): New.
	(subrv2sf3): Turn into expander for normal subtraction.
	(mmx_addv2sf3, mmx_mulv2sf3, mmx_smaxv2sf3, mmx_sminv2sf3,
	mmx_eqv2sf3, mmx_mulv4hi3, mmx_smulv4hi3_highpart,
	mmx_umulv4hi3_highpart, mmx_pmaddwd, mmx_pmulhrwv4hi3, sse2_umulsidi3,
	mmx_umaxv8qi3, mmx_smaxv4hi3, mmx_uminv8qi3, mmx_sminv4hi3): Mark
	commutative; use ix86_binary_operator_ok.
	(mmx_add<MMXMODEI>3, mmx_ssadd<MMXMODE12>3, mmx_usadd<MMXMODE12>3,
	mmx_sub<MMXMODEI>3, mmx_sssub<MMXMODE12>3, mmx_ussub<MMXMODE12>3
	mmx_ashr<MMXMODE24>3, mmx_lshr<MMXMODE23>3, mmx_ashl<MMXMODE24>3
	mmx_eq<MMXMODEI>3, mmx_gt<MMXMODEI>3, mmx_and<MMXMODEI>3,
	mmx_nand<MMXMODEI>3, mmx_ior<MMXMODEI>3, mmx_xor<MMXMODEI>3):
	Macroize from existing patterns; use ix86_binary_operator_ok.
	(mmx_packsswb, mmx_packssdw, mmx_packuswb): Add memory alternative.
	(mmx_punpckhbw, mmx_punpcklbw, mmx_punpckhwd, mmx_punpcklwd,
	mmx_punpckhdq, mmx_punpckhdq, mmx_punpckldq): Likewise.  Model
	with vec_select+vec_concat.
	(mmx_pshufw, mmx_pshufw_1): Likewise.
	(mmx_uavgv8qi3): Merge pavgusb.  Model correcty.
	(mmx_uavgv4hi3): Model correctly.
	* config/i386/mmintrin.h (_mm_and_si64, _mm_andnot_si64, _mm_or_si64,
	_mm_xor_si64): Remove casts.

2005-01-09  Zdenek Dvorak  <>

	PR tree-optimization/19224
	* tree-scalar-evolution.c (get_instantiated_value,
	set_instantiated_value): New functions.
	(instantiate_parameters_1): Cache the results.
	(instantiate_parameters, resolve_mixers): Initialize and free
	the cache.

2005-01-08  David Edelsohn  <>

	* config/i386/ (addhi_4): Correct reference in comment.
	(addqi_4): Same.

2005-01-08  Richard Henderson  <>

	* config/i386/emmintrin.h (_mm_cvtsi128_si32): Move earlier.
	(_mm_cvtsi128_si64x): Likewise.
	(_mm_srl_epi64, _mm_srl_epi32, _mm_srl_epi16, _mm_sra_epi32,
	_mm_sra_epi16, _mm_sll_epi64, _mm_sll_epi32, _mm_sll_epi16): Use
	the _mm_{srl,sll}i_foo counterpart, and _mm_cvtsi128_si32.
	* config/i386/i386-modes.def: Add V16HI, V32QI, V4DF, V8SF.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.c (print_operand): Add 'H'.
	(ix86_fixup_binary_operands): Split out from ...
	(ix86_expand_binary_operator): ... here.
	(ix86_fixup_binary_operands_no_copy): New.
	(ix86_expand_fp_absneg_operator): Handle vector mode results.
	(bdesc_2arg): Update names for sse{,2,3}_ prefixes.
	(ix86_init_mmx_sse_builtins): Remove *maskncmp* special cases.
	(safe_vector_operand): Use CONST0_RTX.
	(ix86_expand_binop_builtin): Use ix86_fixup_binary_operands.
	(ix86_expand_builtin): Merge CODE_FOR_sse2_maskmovdqu_rex64 and
	CODE_FOR_sse2_maskmovdqu.  Special case SSE version of MASKMOVDQU
	expansion.  Update names for sse{,2,3}_ prefixes.  Remove *maskncmp*
	special cases.
	* config/i386/i386.h (IX86_BUILTIN_CMPNGTSS): New.
	* config/i386/ (UNSPEC_FIX_NOTRUNC): New.
	(attr type): Add sselog1.
	(attr unit, attr memory): Handle it.
	(movti, movti_internal, movti_rex64): Move near other integer moves.
	(movtf, movtf_internal): Move near other fp moves.
	(SSEMODE, SSEMODEI, vec_setv2df, vec_extractv2df, vec_initv2df,
	vec_setv4sf, vec_extractv4sf, vec_initv4sf, movv4sf, movv4sf_internal,
	movv2df, movv2df_internal, mov<SSEMODEI>, mov<SSEMODEI>_internal,
	movmisalign<SSEMODE>, sse_movups_1, sse_movmskps, sse_movntv4sf,
	sse_movhlps, sse_movlhps, sse_storehps, sse_loadhps, sse_storelps,
	sse_loadlps, sse_loadss, sse_loadss_1, sse_movss, sse_storess,
	sse_shufps, addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, negv4sf2,
	mulv4sf3, vmmulv4sf3, divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2,
	rsqrtv4sf2, vmrsqrtv4sf2, sqrtv4sf2, vmsqrtv4sf2, sse_andv4sf3,
	sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3, sse2_andv2df3,
	sse2_nandv2df3, sse2_iorv2df3, sse2_xorv2df3, sse2_andv2di3,
	sse2_nandv2di3, sse2_iorv2di3, sse2_xorv2di3, maskcmpv4sf3,
	vmmaskcmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps,
	smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi,
	cvttps2pi, cvtsi2ss, cvtsi2ssq, cvtss2si, cvtss2siq, cvttss2si,
	cvttss2siq, addv2df3, vmaddv2df3, subv2df3, vmsubv2df3, mulv2df3,
	vmmulv2df3, divv2df3, vmdivv2df3, smaxv2df3, vmsmaxv2df3, sminv2df3,
	vmsminv2df3, sqrtv2df2, vmsqrtv2df2, maskcmpv2df3, vmmaskcmpv2df3,
	sse2_comi, sse2_ucomi, sse2_movmskpd, sse2_pmovmskb, sse2_maskmovdqu,
	sse2_maskmovdqu_rex64, sse2_movntv2df, sse2_movntv2di, sse2_movntsi,
	cvtdq2ps, cvtps2dq, cvttps2dq, cvtdq2pd, cvtpd2dq, cvttpd2dq,
	cvtpd2pi, cvttpd2pi, cvtpi2pd, cvtsd2si, cvtsd2siq, cvttsd2si,
	cvttsd2siq, cvtsi2sd, cvtsi2sdq, cvtsd2ss, cvtss2sd, cvtpd2ps,
	cvtps2pd, addv16qi3, addv8hi3, addv4si3, addv2di3, ssaddv16qi3,
	ssaddv8hi3, usaddv16qi3, usaddv8hi3, subv16qi3, subv8hi3, subv4si3,
	subv2di3, sssubv16qi3, sssubv8hi3, ussubv16qi3, ussubv8hi3, mulv8hi3,
	smulv8hi3_highpart, umulv8hi3_highpart, sse2_umulsidi3,
	sse2_umulv2siv2di3, sse2_pmaddwd, sse2_uavgv16qi3, sse2_uavgv8hi3,
	sse2_psadbw, sse2_pinsrw, sse2_pextrw, sse2_pshufd, sse2_pshuflw,
	sse2_pshufhw, eqv16qi3, eqv8hi3, eqv4si3, gtv16qi3, gtv8hi3,
	gtv4si3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3, ashrv8hi3,
	ashrv4si3, lshrv8hi3, lshrv4si3, lshrv2di3, ashlv8hi3, ashlv4si3,
	ashlv2di3, sse2_ashlti3, sse2_lshrti3, sse2_unpckhpd, sse2_unpcklpd,
	sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw,
	sse2_punpckhwd, sse2_punpckhdq, sse2_punpcklbw, sse2_punpcklwd,
	sse2_punpckldq, sse2_punpcklqdq, sse2_punpckhqdq, sse2_movupd,
	sse2_movdqu, sse2_movdq2q, sse2_movdq2q_rex64, sse2_movq2dq,
	sse2_movq2dq_rex64, sse2_loadd, sse2_stored, sse2_storehpd,
	sse2_loadhpd, sse2_storelpd, sse2_loadlpd, sse2_movsd, sse2_loadsd,
	sse2_loadsd_1, sse2_storesd, sse2_shufpd, sse2_clflush, sse2_mfence,
	mfence_insn, sse2_lfence, lfence_insn, mwait, monitor, addsubv4sf3,
	addsubv2df3, haddv4sf3, haddv2df3, hsubv4sf3, hsubv2df3, movshdup,
	movsldup, lddqu, loadddup, movddup): Move to  Any with
	non-optabs meanings renamed with an "sse{,2,3}_" prefix at the
	same time.
	(SSEPUSH, push<SSEPUSH>): Remove.
	(MMXPUSH, push<MMXPUSH>): Remove.
	(sse_movaps, sse_movaps_1, sse_movups): Remove.
	(sse2_movapd, sse2_movdqa, sse2_movq): Remove.
	(sse2_andti3, sse2_nandti3, sse2_iorti3, sse2_xorti3): Remove.
	(sse_clrv4sf, sse_clrv2df, sse2_clrti): Remove.
	(maskncmpv4sf3, vmmaskncmpv4sf3): Remove.
	(maskncmpv2df3, vmmaskncmpv2df3): Remove.
	(ashrv8hi3_ti, ashrv4si3_ti, lshrv8hi3_ti, lshrv4si3_ti): Remove.
	(lshrv2di3_ti, ashlv8hi3_ti, ashlv4si3_ti, ashlv2di3_ti): Remove.
	* config/i386/ (athlon_sselog_load): Handle sselog1.
	(athlon_sselog_load_k8, athlon_sselog, athlon_sselog_k8): Likewise.
	* config/i386/ (ppro_sse_div_V4SF_load): Fix memory attr.
	(ppro_sse_log_V4SF_load): Similarly.  Handle sselog1.
	(ppro_sse_log_V4SF): Handle sselog1.
	* config/i386/ (const_0_to_1_operand): New.
	(const_0_to_255_mul_8_operand): New.
	(const_1_to_31_operand): Rename from const_int_1_31_operand.
	(const_2_to_3_operand, const_4_to_7_operand): New.
	* config/i386/ New file.
	(SSEMODE12, SSEMODE24, SSEMODE124, SSEMODE248, ssevecsize): New.
	(sse_movups): Rename from sse_movups_1.
	(sse_loadlss): Rename from sse_loadss_1.
	(andv4sf3, iorv4sf3, xorv4sf3, andv2df3): Remove the sse prefix
	from the name.
	(negv4sf2): Use ix86_expand_fp_absneg_operator.
	(absv4sf2, negv2df, absv2df): New.
	(addv4sf3): Add expander to call ix86_fixup_binary_operands_no_copy.
	(subv4sf3, mulv4sf3, divv4sf3, smaxv4sf3, sminv4sf3, andv4sf3,
	iorv4sf3, xorv4sf3, addv2df3, subv2df3, mulv2df3, divv2df3,
	smaxv2df3, sminv2df3, andv2df3, iorv2df3, xorv2df3, mulv8hi3,
	umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3): Likewise.
	(sse3_addsubv4sf3): Model correctly.
	sse3_haddv4sf3, sse3_hsubv4sf3, sse3_addsubv2df3, sse3_haddv2df3,
	sse3_hsubv2df3, sse2_ashlti3, sse2_lshrti3): Likewise.
	(sse_movhlps): Model with vec_select+vec_concat.
	(sse_movlhps, sse_unpckhps, sse_unpcklps, sse3_movshdup,
	sse3_movsldup, sse_shufps, sse_shufps_1, sse2_unpckhpd, sse3_movddup,
	sse2_unpcklpd, sse2_shufpd, sse2_shufpd_1, sse2_punpckhbw,
	sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq,
	sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq, sse2_pshufd,
	sse2_pshufd_1, sse2_pshuflw, sse2_pshuflw_1, sse2_pshufhw,
	sse2_pshufhw_1): Likewise.
	(neg<SSEMODEI>2, one_cmpl<SSEMODEI>2): New.
	(add<SSEMODEI>3, sse2_ssadd<SSEMODE12>3, sse2_usadd<SSEMODE12>3,
	sub<SSEMODEI>3, sse2_sssub<SSEMODE12>3, sse2_ussub<SSEMODE12>3,
	ashr<SSEMODE24>3, lshr<SSEMODE248>3, sse2_eq<SSEMODE124>3,
	sse2_gt<SSEMODDE124>3, and<SSEMODEI>3, sse_nand<SSEMODEI>3,
	ior<SSEMODEI>3, xor<SSEMODEI>3): Macroize from existing patterns.
	(addv4sf3, sse_vmaddv4sf3, mulv4sf3, sse_vmmulv4sf3, smaxv4sf3,
	sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, addv2df3, sse2_vmaddv2df3,
	mulv2df3, sse2_vmmulv2df3, smaxv2df3, sse2_vmsmaxv2df3, sminv2df3,
	sse2_vmsminv2df3, umaxv16qi3, smaxv8hi3, uminv16qi3
	sminv8hi3): Mark commutative
	operands.  Use ix86_binary_operator_ok.
	(sse_unpckhps, sse_unpcklps, sse2_packsswb, sse2_packssdw,
	sse2_packuswb, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd,
	sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq,
	sse2_punpcklqdq): Allow operand2 in memory.
	(sse_movhlps, sse_movlhps, sse2_unpckhpd, sse2_unpcklpd
	sse2_movsd): Add memory alternatives.
	(sse_storelps): Turn expander into an insn; split after reload.
	(sse_storess, sse2_loadhpd, sse2_loadlpd): Add non-xmm inputs.
	(sse2_storehpd, sse2_storelpd): Add non-xmm outputs.

2005-01-08  Eric Botcazou  <>

	* (DWARF-2 debug_line): Use objdump.
	* configure: Regenerate.

2005-01-08  Jeff Law  <>
	    Diego Novillo  <>

	PR tree-optimization/18241
	* tree-nrv.c (tree_nrv): Ignore volatile return values.
	* tree-ssa-dse.c (dse_optimize_stmt): Do not optimize
	statements with volatile operands.
	* tree-ssa-operands.c (add_stmt_operand): Do add volatile
	operands after marking a statement with has_volatile_ops.

2005-01-08  Roger Sayle  <>

	* tree.c (int_fits_type_p): Always honor integer constant
	TYPE_MIN_VALUE and TYPE_MAX_VALUE if they exist.

2005-01-08  Roger Sayle  <>

	* ifcvt.c (find_if_case_1): Reinstate 2005-01-04 change, now that
	the latent bug in rtl_delete_block has been resolved.

2005-01-08  Richard Sandiford  <>

	* config/mips/t-iris6 (MULTILIB_DIRNAMES): Use -mabi argument values.
	(MULTILIB_OSDIRNAMES): Use the standard lib, lib32 and lib64.

2005-01-08  Richard Sandiford  <>

	* config/mips/t-slibgcc-irix (SHLIB_LINK): Install a copy of the
	library as @multilib_dir@/$(SHLIB_SONAME).

2005-01-07  Eric Botcazou  <>

	* (HAVE_AS_OFFSETABLE_LO10): Fix typo.
	* configure: Regenerate.

2005-01-07  Jakub Jelinek  <>

	* c-common.c (handle_mode_attribute): For ENUMERAL_TYPE, also copy

2005-01-07  David Edelsohn  <>

	PR target/13674
	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
	Convert non-word aligned offset address using ld/std into
	indirect address.

2005-01-07  Richard Henderson  <>

	* config/i386/ (sse_loadhps splitter): Fix operand number typo.

2005-01-07  Richard SAndiford  <>

	* tree.h (IS_EXPR_CODE_CLASS): Use a straight-forward range check.

2005-01-07  Jakub Jelinek  <>

	PR tree-optimization/19283
	* fold-const.c (fold_widened_comparison): Return NULL if shorter_type
	is not shorter than the original type.

	PR rtl-optimization/19012
	* config/i386/ (addqi_1_slp): Set memory attribute.

	PR rtl-optimization/18861
	* cfgbuild.c (BLOCK_USED_BY_TABLEJUMP): Define.
	(FULL_STATE): Define.
	(mark_tablejump_edge): New function.
	(purge_dead_tablejump_edges): New function.
	(find_bb_boundaries): Use it.

	PR tree-optimization/18828
	* builtins.c (expand_builtin_next_arg): Remove argument and all
	the argument checking.
	(expand_builtin): Adjust caller.
	(expand_builtin_va_start): Likewise.  Remove error for too many
	(fold_builtin_next_arg): Issue error for too many arguments.
	After checking arguments, replace them with magic arguments that
	prevent further checking of the args.

2005-01-06  John David Anglin  <>

	* pa64-hpux.h (STARTFILE_SPEC): Fix typo in spec.

2005-01-06  Roger Sayle  <>

	PR target/6077
	* gcc.c (input_suffix_matches): Tweak the semantics of %{.s:...}
	and %{.S:...} (and their negative variants) to test whether the
	input file is assembler or pre-processed-assembler independent of
	the actual filename extension.

2005-01-06  Roger Sayle  <>

	* simplify-rtx.c (simplify_subreg): Simplify truncations of shifts
	of sign or zero extended values.

2005-01-06  Geoffrey Keating  <>

	* c-cppbuiltin.c (builtin_define_float_constants): Set __*_EPSILON__
	for IBM long double format correctly.

2005-01-06  Daniel Berlin <>

	Fix PR tree-optimization/18792

	* tree-data-ref.c (build_classic_dist_vector): Change first_loop
	to first_loop_depth, and use loop depth instead of loop number.
	(build_classic_dir_vector): Ditto.
	(compute_data_dependences_for_loop): Use depth, not loop number.
	* tree-loop-linear.c (try_interchange_loops): Use loop depth, not loop
	number. Pass in loops, instead of loop numbers.
	(gather_interchange_stats): Ditto.
	(linear_transform_loops): Ditto.

2005-01-06  Richard Sandiford  <>

	PR rtl-opt/13299
	* loop.c (get_monotonic_increment, biased_biv_fits_mode_p,
	biv_fits_mode_p, extension_within_bounds_p): New functions.
	(check_ext_dependent_givs): Use them.

2005-01-06  Roger Sayle  <>

	* cfgrtl.c (rtl_delete_block): A basic block may be followed by
	more than one barrier, in which case we should delete them all.

2005-01-06  Tobias Schlueter  <>

	* gcc.c (process_command): Change year in 'gcc --version' to 2005.

2005-01-05  Daniel Berlin  <>

	Fix PR middle-end/19286
	Fix PR debug/19267
	* dwarf2out.c (gen_subprogram_die): If we've already tried to
	output this subprogram, simply ignore this attempt to do it again.
	(add_abstract_origin_attribute): Don't abort trying to add the abstract
	origin attribute if it's not possible.
	(gen_block_die): Don't ignore subblocks of "unused" blocks.
	(decls_for_scope): Ditto.
	* gimple-low.c (mark_blocks_with_used_subblocks): Remove.
	(mark_used_blocks): Don't call mark_blocks_with_used_subblocks.

2005-01-05  Richard Henderson  <>

	PR target/11327
	* config/i386/i386.c (BUILTIN_DESC_SWAP_OPERANDS): New.
	(bdesc_2arg): Use it.
	(ix86_expand_binop_builtin): Force operands into registers
	when optimizing.
	(ix86_expand_unop_builtin, ix86_expand_unop1_builtin,
	ix86_expand_sse_compare, ix86_expand_sse_comi,
	ix86_expand_builtin): Likewise.

2005-01-05  Richard Henderson  <>

	* config/ia64/ia64.c (rtx_needs_barrier): Handle CONST_VECTOR
	* config/ia64/ (mulv8qi3): Re-implement with mix_[rl].
	(mulv4hi3): Set itanium_class mmmul.
	(fpack_sfxf, fpack_xfsf, fpack_xfxf): Remove.
	(fpack): Rename from fpack_sfsf.

2005-01-05  Richard Henderson  <>

	PR rtl-opt/10692
	* reload1.c (do_input_reload): Restrict the optimization deleteing
	a previous output reload to RELOAD_FOR_INPUT.

2005-01-05  Steven Bosscher  <>

	* combine.c (expand_compound_operation)  <ZERO_EXTRACT>: Add
	comment that we fall through after case.
	(mark_used_regs_combine): Don't expect a SIGN_EXTRACT in a SET_DEST.
	(distribute_links): Likewise.
	* cse.c (cse_insn): Likewise.
	* cselib.c (cselib_invalidate_mem): Likewise.
	* df.c: Update comments at the top of the file.
	(read_modify_subreg_p): Update comments here too.
	(df_def_record_1): Don't expect a SIGN_EXTRACT in a SET_DEST.
	* flow.c (mark_set_1): Likewise.
	(mark_used_regs): Likewise.
	* gcse.c (mems_conflict_for_gcse_p): Likewise.
	(canon_list_insert): Likewise.
	(mark_set): Likewise.
	(try_replace_reg): Likewise.
	(store_killed_in_insn): Likewise.
	* loop.c (count_one_set): Likewise.
	(basic_induction_var): Likewise.
	* postreload-gcse.c (find_mem_conflicts): Likewise.
	* postreload.c (reload_combine_note_store): Likewise.
	(move2add_note_store): Likewise.
	* reload.c (find_equiv_reg): Likewise.
	(mark_referenced_resources): Likewise.
	* rtlanal.c (set_noop_p): Likewise.
	(note_stores): Likewise.
	(note_uses): Likewise.
	* sched-deps.c (sched_analyze_1): Likewise.
	* sched-rgn.c (check_live_1): Likewise.
	(update_live_1): Likewise.
	* config/i860/i860.c: Likewise.

	* rtl.dec (SIGN_EXTRACT): Document that this cannot appear as
	an lvalue.
	(ZERO_EXTRACT): Mention that this one can be an lvalue.

	* doc/rtl.texi: Update documentation for bit-fields and SET.

2005-01-05  Roger Sayle  <>

	* ifcvt.c (find_if_case_1): Revert 2005-01-04 change.

2005-01-05  Jan Hubicka  <>
	    Richard Henderson  <>

	PR target/18910
	* config/i386/i386.c (ix86_expand_move): Handle tls symbols
	with an offset.

2005-01-05  Richard Henderson  <>

	PR target/12902
	* config/i386/ (sse_movhps, sse_movlps): Remove.
	(sse_shufps): Change operand 3 to const_int_operand.
	(sse2_storelps): Fix typo in template.
	(sse_storehps, sse_loadhps, sse_storelps, sse_loadlps): New.
	* config/i386/i386.c (ix86_expand_vector_move_misalign): Use them.
	(ix86_expand_builtin): Likewise.

2005-01-05  Julian Brown  <>

	* config/arm/arm.c (arm_return_in_memory): Treat complex types
	as aggregates for AAPCS ABIs.

2005-01-05  Stan Shebs  <>

	* unwind-dw2-fde-darwin.c (examine_objects): Use 64-bit
	Mach-O getters if ppc64.
	* config/darwin.c (darwin_asm_output_dwarf_delta): Obey
	size argument.
	* config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
	signed four-byte field for global code case.
	(STARTFILE_SPEC): Avoid crt2.o for 64-bit compilation.

2005-01-05  Roger Sayle  <>

	PR middle-end/19100
	* c-common.c: Include real.h.
	(c_common_truthvalue_conversion): Avoid destructively modifying expr.
	Correctly handle TREE_CONSTANT_OVERFLOW and NaNs for REAL_CST.
	* (c-common.o): Update dependencies.

2005-01-05  Joseph S. Myers  <>

	* (asm_string): Add trailing semicolon.

2005-01-05  Joseph S. Myers  <>

	* (asm_string): New.  Don't allow wide strings in
	(simple_asm_expr, asm_argument, asm_operand, asm_clobbers): Use
	asm_string instead of STRING.

2005-01-05  Joseph S. Myers  <>

	* c-typeck.c (constructor_no_implicit): Remove.
	(set_designator, process_init_element): Don't check

2005-01-05  J"orn Rennecke <>
	    Kaz Kojima  <>

	PR target/16482
	* lcm.c (create_pre_exit): New.
	(optimize_mode_switching): In MODE_ENTRY / MODE_EXIT case, set
	ENTRY_EXIT_EXTRA to 3.  Use create_pre_exit.

2004-01-05  Richard Earnshaw  <>

	* arm.h (TARGET_OPTIONS): Correctly record -mhard-float and
	-msoft-float in target_float_switch.
	* arm.c (arm_override_options): Fix processing of target_float_switch.

2004-01-05  Richard Earnshaw  <>

	* arm/ (arm_movsi_vfp): Hide VFP register classes from register

2004-01-05  Uros Bizjak  <>

	* doc/invoke.texi (Intel 386 and AMD x86-64 Options):
	Replace i387 with 'i386 compiler' in -mfpmath=sse option.

2005-01-04  Roger Sayle  <>

	* ifcvt.c (find_if_case_1): Avoid creating an empty forwarder block,
	if deleting the then-block allows the test-block to fallthru to the

2005-01-04  Andrew Pinski  <>

	PR c/19152
	* c-decl.c (diagnose_mismatched_decls): Accept "extern inline" declared
	after the full declaration if the are in two different TUs.

2005-01-04  Richard Henderson  <>

	PR tree-opt/19158
	* tree-sra.c (generate_one_element_init): Just
	call gimplify_and_add.
	(generate_element_init): Record the
	new referenced variables and mark them for renaming
	and split out to ...
	(generate_element_init_1): This.
	(scalarize_init): Don't call push_gimplify_context/

2005-01-04  Geoffrey Keating  <>

	* toplev.c (get_src_pwd): Handle failure of getpwd().

2005-01-04  Roger Sayle  <>

	* fold-const.c (fold_single_bit_test): Delete unreachable handling
	(fold): Don't call fold_single_bit_test with a TRUTH_NOT_EXPR, as
	all the cases handled by it are inverted by invert_truthvalue.

2005-01-04  Eric Botcazou  <>

	* config/sparc/ (save_register_windowdi): Add missing mode.
	(save_register_windowsi): Likewise.

2005-01-04  Richard Henderson  <>

	* tree-mudflap.c (mf_varname_tree): Fix thinko setting declname.

2005-01-04  Uros Bizjak  <>

	PR middle-end/17767
	* cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt
	any simplifications of vector mode comparison operators.
	* simplify-rtx.c (simplify_relational_operation): Fix variable name.

2005-01-04  Paolo Bonzini  <>
	    Devang Patel  <>

	PR tree-optimization/18308
	* tree-if-conv.c (add_to_dst_predicate_list): Gimplify
	the operands before creating a new expression.
	* dojump.c (do_jump): Make drop_through_label available
	for all cases.  Add expansion of COND_EXPR.

2005-01-04  Ira Rosen  <>

	* tree-vectorizer.c (vect_analyze_offset_expr): Test for
	(vect_gen_niters_for_prolog_loop): Test for INTEGER_CST
	instead of TREE_CONSTANT.
	(vect_analyze_pointer_ref_access): Test for INTEGER_CST
	instead of TREE_CONSTANT.

2005-01-04  Eric Botcazou  <>

	* tree-eh.c (replace_goto_queue): Return early if the queue is empty.

2005-01-04  Uros Bizjak  <>

	PR target/19240
	* config/i386/ (*fop_df_1_i387): Disable for TARGET_SSE_MATH.
	(*fop_df_1_i387): Disable for (TARGET_SSE2 && TARGET_SSE_MATH).

2005-01-03  Richard Henderson  <>

	* fold-const.c (force_fit_type): Cope with types larger than 2 HWI.
	(fold_convert_const_int_from_int, fold_convert_const_int_from_real,
	fold_convert_const_real_from_real): Split out from ...
	(fold_convert_const): ... here.

2005-01-03  Richard Henderson  <>

	PR target/19235
	* config/i386/ (movdi_2): Separate SSE1 and SSE2 alternatives.
	(mov<MMXMODEI>_internal): Likewise.
	(movdf_nointeger): Prefer Y while not preferring, but allowing, x.
	Add V2SF case; use it for SSE1; don't use TI.
	(movdf_integer): Likewise.
	(mov<SSEMODEI>_internal, movti_internal): Force V4SF for SSE1.

2005-01-03  Ira Rosen  <>

	* tree-vectorizer.c (vect_strip_conversions): New function.
	(vect_analyze_offset_expr): Call vect_strip_conversions. Add
	check for binary class.

2005-01-03  Daniel Berlin  <>

	Fix PR debug/17924
	Fix PR debug/19191
	* dwarf2out.c (block_ultimate_origin): Follow decl origin if origin
	is a decl.
	* gimple-low.c (mark_blocks_with_used_vars): New function.
	(mark_blocks_with_used_subblocks): Ditto.
	(mark_used_blocks): Ditto.
	(pass_mark_used_blocks): New pass.
	* tree-inline.c: Include debug.h.
	(expand_call_inline): Call outlining_inline_function here.
	* tree-optimize.c (init_tree_optimization_passes): Add
	* tree-pass.h (pass_mark_used_blocks): New.
	* (tree-inline.o): Add debug.h dependency.

2005-01-03  Geoffrey Keating  <>

	* config/darwin.c (darwin_handle_weak_import_attribute): Permit
	VAR_DECLs to have weak_import attribute.

	* config/rs6000/darwin-fallback.c: Use 'ucontext_t' rather than
	'struct ucontext'.

2004-01-03  Steven Bosscher  <>

	* passes.c (rest_of_compilation): Don't run regmove if only
	flag_expensive_optimizations, require flag_regmove instead.

2005-01-03  Eric Botcazou  <>

	* config/sparc/litecoff.h (TARGET_OS_CPP_BUILTINS): Do not
	register "sparc".
	* config/sparc/sysv4-only.h (TARGET_OS_CPP_BUILTINS): Likewise.
	* config/sparc/rtemself.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise.
	* config/sparc/sol2-64.h (TARGET_SUB_OS_CPP_BUILTINS): Delete.
	* config/sparc/sp64-elf.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise.

2005-01-03  Richard Henderson  <>

	* config/ia64/ia64.c (TARGET_VECTOR_MODE_SUPPORTED_P): New.
	(ia64_const_ok_for_letter_p): New.
	(ia64_const_double_ok_for_letter_p): New.
	(ia64_extra_constraint): New.
	(ia64_expand_vecint_compare): New.
	(ia64_expand_vcondu_v2si): New.
	(ia64_expand_vecint_cmov): New.
	(ia64_expand_vecint_minmax): New.
	(ia64_print_operand): Add 'v'.
	(ia64_preferred_reload_class): New.
	(ia64_vector_mode_supported_p): New.
	* config/ia64/ia64.h (UNITS_PER_SIMD_WORD): New.
	(PREFERRED_RELOAD_CLASS): Move to function.
	(CONST_OK_FOR_LETTER_P): Move to function.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Move to function.
	(EXTRA_CONSTRAINT): Move to function.
	* config/ia64/ Include
	(itanium_class): Add mmalua.
	(type): Handle it.
	* config/ia64/ (1_mmalua): New.  Add it to bypasses.
	(1b_mmalua): New.
	* config/ia64/ (2_mmalua, 2b_mmalua): Similarly.
	* config/ia64/ (gr_reg_or_0_operand): Accept any
	(const_int_2bit_operand): New.
	(fr_reg_or_0_operand): New.
	* config/ia64/ia64-modes.def: Add vector modes.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ New file.

2005-01-03  Richard Henderson  <>

	* simplify-rtx.c (simplify_binary_operation): Handle VEC_CONCAT.

2005-01-03  Uros Bizjak  <>

	PR target/19236
	* config/i386/i386.c (log1psf2): Change mode of operands[0,1]
	to SFmode.
	(log1pdf2): Change mode of operands[0,1] to DFmode.

2005-01-03  Eric Botcazou  <>

	* config/sparc/sparc.h (SPARC_RELAXED_ORDERING): Define to false.
	* config/sparc/linux.h (SPARC_RELAXED_ORDERING): Define to true.
	* config/sparc/linux64.h (SPARC_RELAXED_ORDERING): Likewise.
	* config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define to

2005-01-03  Richard Henderson  <>
	    Uros Bizjak  <>

	PR target/14631
	* config/i386/i386.c (ix86_expand_builtin): [IX86_BUILTIN_PINSRW,
	IX86_BUILTIN_PINSRW128]: Fix wrong selector range in error message.
	* config/i386/ (mmx_pinsrw, sse2_pinsrw): Fix selector
	(*mmx_pinsrw, *sse2_pinsrw): New patterns.
	* config/i386/i386/ (const_pow2_1_to_8_operand,
	const_pow2_1_to_128_operand): New predicates.

2005-01-02  Greg McGary  <>

	* tree-mudflap.c (mf_varname_tree): decl_printable_name handles
	anonymous decls.
	(mf_xform_derefs_1) [RESULT_DECL, STRING_CST]: Handle as innermost
	object.  [ptr_type]: Remove unused variable.
	Remember nearest addressable array-element or record-component
	when checking bitfield components.  Tolerate empty BIND_EXPR.

2005-01-01  Richard Henderson  <>

	* tree-vectorizer.c (vect_analyze_offset_expr): Strip conversions
	that don't narrow the value.  Fail for other conversions.

2005-01-01  Richard Henderson  <>

	PR c/19031
	* c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks.
	* c-lang.c (finish_file): Don't do it here.
	* objc/objc-act.c (objc_finish_file): Likewise.

	* cgraph.c (decl_assembler_name_equal): New.
	(cgraph_node_for_asm, cgraph_varpool_node_for_asm): New.
	(cgraph_varpool_node): Actually link up cgraph_varpool_nodes.
	* cgraph.h (struct cgraph_varpool_node): Add next.
	(cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare.
	* varasm.c (assemble_alias): Mark the target as needed.

2005-01-01  Andrew Pinski  <>

	PR middle-end/19221
	* function.c (get_arg_pointer_save_area): Use entry_of_function
	instead of get_insns.

2005-01-01  Roger Sayle  <>
	    Andrew Pinski  <>
	    James E. Wilson  <>

	PR rtl-optimization/12092
	* loop.c (emit_prefetch_instructions): Do nothing if PREFETCH_BLOCK
	is zero.

2005-01-01  Roger Sayle  <>
	    Olivier Hainque  <>

	* tree.c (int_fits_type_p): A narrower type always fits in a
	wider one, except for negative values into unsigned types.

2005-01-01  Roger Sayle  <>

	* tree.c (int_fits_type_p): Compare the result of force_fit_type
	with the original constant rather than require TREE_OVERFLOW.

2005-01-01  Steven Bosscher  <>

	PR middle-end/17544
	* c-decl.c (finish_function): If compiling C99, annotate the
	compiler generated return with the current file name and line 0.
	* tree-cfg.c (remove_useless_stmts_warn_notreached): Only warn if
	the source line is greater than 0.
	(remove_bb): Likewise.

See ChangeLog.12 for earlier changes.