OSDN Git Service

* emit-rtl.c (add_insn_before): Fix comment typo.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 6fb8428..8bc75ed 100644 (file)
@@ -1,3 +1,797 @@
+2005-01-01  Steven Bosscher  <stevenb@suse.de>
+
+       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.
+
+2004-12-31  Richard Henderson  <rth@redhat.com>
+
+       PR tree-opt/19042
+       * tree-sra.c (decide_block_copy): Force use_block_copy false
+       for complex values.
+
+2004-12-31  Richard Henderson  <rth@redhat.com>
+
+       PR middle-end/17799
+       * function.c (use_register_for_decl): Check DECL_IGNORED_P instead
+       of DECL_ARTIFICIAL.
+       (assign_parms_augmented_arg_list): Set DECL_IGNORED_P.
+       * c-decl.c (build_compound_literal): Likewise.
+       * dwarf2asm.c (dw2_force_const_mem): Likewise.
+       * gimplify.c (create_artificial_label): Likewise.
+       * tree-inline.c (expand_call_inline): Likewise.
+       * var-tracking.c (vt_initialize): Likewise.
+       * tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P.
+
+2004-12-31  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR target/19211
+       * config/darwin.c (machopic_legitimize_pic_address): If the orig
+       is subregister return orig.
+
+2004-12-31  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * tree-scalar-evolution.c (instantiate_parameters_1): Copy the
+       expression only if needed.
+
+2004-12-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * pa-hpux.h (HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Define.
+
+2004-12-31  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       PR target/18701
+       * combine.c (combine_simplify_rtx): Do not allow paradoxical
+       subregs of MEM.
+
+       PR target/18701
+       * combine.c (gen_lowpart_for_combine): When stripping SUBREG of
+       MEM, adjust imode and isize.
+
+2004-12-30  Richard Henderson  <rth@redhat.com>
+
+       * config/ia64/ia64.c (hfa_element_mode): Return false for 
+       zero-sized top-level aggregates.
+
+2004-12-30  Jan Hubicka  <jh@suse.cz>
+
+       PR target/18019
+       * i386.md (movqi_1): Fix -Os instruction choice.
+
+2004-12-30  Steven Bosscher  <stevenb@suse.de>
+
+       * global.c (regclass_intersect): Remove.
+       (mark_reg_use_for_earlyclobber): Use reg_classes_intersect_p instead.
+
+2004-12-30  Richard Henderson  <rth@redhat.com>
+
+       * config/ia64/ia64.c (ia64_function_value): Use PARALLEL for 
+       aggregates with XF/XCmode.
+
+2004-12-29  Richard Henderson  <rth@redhat.com>
+
+       * target.h (targetm.calls.arg_partial_bytes): New.
+       * target-def.h (TARGET_ARG_PARTIAL_BYTES): New.
+       * calls.c (store_unaligned_arguments_into_pseudos): Update for
+       partial in bytes.
+       (load_register_parameters): Likewise.
+       (store_one_arg): Likewise.
+       (initialize_argument_information): Use targetm.calls.arg_partial_bytes.
+       (emit_library_call_value_1): Likewise.
+       * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
+       (emit_push_insn): Update for partial in bytes.
+       * expr.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * function.c (assign_parm_find_entry_rtl): Use
+       targetm.calls.arg_partial_bytes.  Update for result in bytes.
+       (locate_and_pad_parm): Update for partial in bytes.
+       * system.h (FUNCTION_ARG_PARTIAL_NREGS): Poison.
+       * targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): New.
+       * targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Declare.
+       * doc/tm.texi (TARGET_ARG_PARTIAL_BYTES): Rename and update from
+       FUNCTION_ARG_PARTIAL_NREGS.
+
+       * config/arc/arc.h, config/c4x/c4x.h, config/i386/i386.h,
+       config/i860/i860.h, config/m68hc11/m68hc11.h, config/m68k/m68k.h,
+       config/pdp11/pdp11.h, config/s390/s390.h, config/stormy16/stormy16.h, 
+       config/xtensa/xtensa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+
+       * config/alpha/alpha.c (alpha_arg_partial_bytes): New.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/alpha/alpha.h, config/alpha/unicosmk.h,
+       config/alpha/vms.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+
+       * config/arm/arm.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
+       * config/arm/arm.c (arm_arg_partial_bytes): ... here.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+
+       * config/cris/cris.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
+       * config/cris/cris.c (cris_arg_partial_bytes): ... here.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+
+       * config/fr30/fr30.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/fr30/fr30.c (fr30_arg_partial_bytes): Rename from
+       fr30_function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/fr30/fr30-protos.h: Update.
+
+       * config/frv/frv.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/frv/frv.c (frv_arg_partial_bytes): Rename from 
+       frv_function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/frv/frv-protos.h: Update.
+
+       * config/ia64/ia64.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/ia64/ia64.c (ia64_arg_partial_bytes): Rename from
+       ia64_function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/ia64/ia64-protos.h: Update.
+
+       * config/iq2000/iq2000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Rename from
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/iq2000/iq2000-protos.h: Update.
+
+       * config/m32r/m32r.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/m32r/m32r.c (m32r_arg_partial_bytes): Rename from
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/m32r/m32r-protos.h: Update.
+
+       * config/mcore/mcore.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/mcore/mcore.c (mcore_arg_partial_bytes): Rename from
+       mcore_function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/mcore/mcore-protos.h: Update.
+
+       * config/mips/mips.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/mips/mips.c (mips_arg_partial_bytes): Rename from
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/mips/mips-protos.h: Update.
+
+       * config/mn10300/mn10300.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Rename from     
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/mn10300/mn10300-protos.h: Update.
+
+       * config/ns32k/ns32k.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
+       * config/ns32k/ns32k.c (ns32k_arg_partial_bytes): ... here.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+
+       * config/pa/pa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/pa/pa.c (pa_arg_partial_bytes): Rename from 
+       function_arg_partial_nregs.  Handle 32-bit.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/pa/pa-protos.h: Update.
+
+       * config/rs6000/rs6000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Rename from 
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/rs6000/rs6000-protos.h: Update.
+
+       * config/sh/sh.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
+       * config/sh/sh.c (sh_arg_partial_bytes): ... here.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+
+       * config/sparc/sparc.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/sparc/sparc.c (sparc_arg_partial_bytes): Rename from
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/sparc/sparc-protos.h: Update.
+
+       * config/v850/v850.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
+       * config/v850/v850.c (v850_arg_partial_bytes): Rename from
+       function_arg_partial_nregs.  Adjust to return bytes.
+       (TARGET_ARG_PARTIAL_BYTES): New.
+       * config/v850/v850-protos.h: Update.
+
+2004-12-30  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       * config/mmix/mmix.h (ASM_OUTPUT_INTERNAL_LABEL): Define.
+       * config/mmix/mmix.c (mmix_asm_output_internal_label): New
+       function.
+       * config/mmix/mmix-protos.h (mmix_asm_output_internal_label):
+       Prototype.
+
+2003-12-29  Richard Henderson  <rth@redhat.com>
+
+       * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): True.
+
+2004-12-29  Jeff Law  <law@redhat.com>
+
+       * tree-outof-ssa.c (insert_backedge_copies): New function.
+       (rewrite_out_of_ssa): Use it.
+
+2004-12-29  Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/18179
+       * tree-vectorizer.c (vect_get_base_and_offset): Call get_inner_reference
+       and vect_analyze_offset_expr.
+       (vect_create_addr_base_for_vector_ref): Build address_base by combining 
+       base and initial_offset fields of vect_stmt_info.
+       (vect_update_inits_of_dr): Update offset of data-ref instead of its
+       access-fn. Remove argument.
+       (vect_update_inits_of_drs): Call vect_update_inits_of_dr with new
+       arguments.
+       (vect_compute_data_ref_alignment): Check misalignment info in 
+       vect_stmt_info. Remove argument.
+       (vect_compute_data_refs_alignment): Call vect_compute_data_ref_alignment
+       with correct argument.
+       (vect_analyze_data_ref_access): Check access info in vect_stmt_info.
+       (vect_analyze_pointer_ref_access): Update step and initial_offset fields
+       of vect_stmt_info.
+       (vect_get_memtag_and_dr): Call vect_get_base_and_offset and set the 
+       fields of stmt_vec_info.
+       (vect_analyze_data_refs): Find vectype and pass it to 
+       vect_get_memtag_and_dr.
+       (vect_get_first_index): Remove.
+       (vect_compute_array_base_alignment): Remove.
+       (vect_compute_array_ref_alignment): Remove
+       (vect_create_data_ref_ptr): Use TYPE_SIZE_UNIT instead GET_MODE_SIZE.
+       (vect_gen_niters_for_prolog_loop): Use TREE_CONSTANT instead 
+       host_integerp.
+       (vectorizable_load): Use size arithmetics.
+
+2004-12-29  Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/18179
+       * tree-vectorizer.c (vect_get_base_and_offset): Rename (previous name
+       vect_get_base_and_bit_offset).
+       (vect_get_memtag_and_dr): Rename (previous name vect_get_symbl_and_dr).
+
+2004-12-29  Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/18179
+       * tree-vectorizer.h (struct _stmt_vec_info): Add new fields:
+       initial_offset, step, misalignment and base_aligned_p and macros
+       to access them.
+       * tree-vectorizer.c (vect_analyze_offset_expr): New function.
+       (new_stmt_vec_info): Initialize the new fields of stmt_vec_info.
+
+       (vect_create_data_ref_ptr): Fix printings.
+
+2004-12-29  Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/18179
+       * tree-vectorizer.c (vect_get_symbl_and_dr): Reorganize. Add memtag 
+       retrieval.
+       (vect_analyze_data_refs): Remove memtag retrieval.
+
+2004-12-28  Richard Henderson  <rth@redhat.com>
+
+       PR inline-asm/15740
+       * gimplify.c (gimplify_asm_expr): Move resolve asm names ...
+       * c-typeck.c (build_asm_expr): ... here.  Validate input
+       constraints.  Mark memory inputs addressable.
+
+2004-12-28  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       PR target/18321
+       * config/mmix/mmix.c (mmix_expand_epilogue): Change type of
+       variable offset to HOST_WIDE_INT.  Remove obsolete comment.  Fix
+       spacing.
+
+2004-12-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR,
+       we only need a cleanup point expression when the expression on the
+       left hand side of the MODIFIY_EXPR inside the return has side
+       effects.
+
+2004-12-28  Dorit Naishlos  <dorit@il.ibm.com>
+
+       * tree-vectorizer.c (vect_mark_relevant) First argument changed from
+       varray_type to varray_type*.
+       (vect_mark_stmts_to_be_vectorized): Pass &worklist instead of worklist
+       when calling vect_mark_relevant.
+
+2004-12-28  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't
+       generate non-offsettable DImode lo_sum addresses.
+
+2004-12-28  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR rtl-optimization/19103
+       * loop-iv.c (iv_number_of_iterations): Fix typo.
+
+2004-12-28  Andreas Jaeger  <aj@suse.de>
+
+       * genrecog.c (compute_predicate_codes): Avoid warning.
+
+2004-12-27 John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * vax.c (vax_address_cost, vax_rtx_cost): Correct casts.
+       (vax_rtx_cost): Handle small offsets for both PLUS and MINUS.
+
+2004-12-27  Jeff Law  <law@redhat.com>
+
+       * tree-ssa-dom.c (thread_across_edge): Remove broken code to
+       avoid threading into a loop.
+
+2004-12-27  Richard Henderson  <rth@redhat.com>
+
+       PR target/17406
+       * config/i386/i386.c (ix86_expand_prologue): Add REG_FRAME_RELATED_EXPR
+       note for allocate_stack_worker insn.
+
+2004-12-27  Jason Merrill  <jason@redhat.com>
+
+       * doc/tm.texi (TARGET_RELAXED_ORDERING): Document.
+       * target.h (struct gcc_target): Add relaxed_ordering field.
+       * target-def.h (TARGET_RELAXED_ORDERING): Define default.
+       (TARGET_INITIALIZER): Add it.
+       * config/alpha/alpha.c (TARGET_RELAXED_ORDERING): Define.
+       * config/ia64/ia64.c (TARGET_RELAXED_ORDERING): Define.
+       * config/rs6000/rs6000.c (TARGET_RELAXED_ORDERING): Define.
+       * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define.
+
+2004-12-27  Roger Sayle  <roger@eyesopen.com>
+
+       PR driver/16118
+       * doc/invoke.texi: Document the interaction between -save-temps
+       and -x.
+
+2004-12-27  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.c (rs6000_eliminate_indexed_memrefs):
+       Do not break apart constant pool addresses.
+       (rs6000_emit_move): Only force source into REG if target is MEM.
+
+2004-12-27  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/19148
+       * gimplify.c (gimplify_cond_expr): Add post_p parameter.
+       (gimplify_modify_expr_rhs): Adjust call to gimplify_cond_expr.
+       (gimplify_expr): Likewise.
+
+2004-12-27  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW.
+
+2004-12-26  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result
+       of type_natural_mode to examine_argument.
+
+       * config/i386/i386.md (mov<MMXMODEI>_internal_rex64): New.
+       (movv2sf_internal_rex64): New.
+       (mov<MMXMODEI>_internal): Use no register preferences at all.
+       (movv2sf_internal): Likewise.
+
+2004-12-26  Richard Henderson  <rth@redhat.com>
+
+       * simplify-rtx.c (simplify_relational_operation_1): Don't simplify
+       plus/minus across EQ for floating-point.
+
+2004-12-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/17643
+       * pa.c (pa_function_ok_for_sibcall): Sibcalls are not ok when
+       generating code for the portable runtime.
+
+2004-12-25  Richard Henderson  <rth@redhat.com>
+
+       * expr.c (clear_storage): Validate CONST0_RTX extant.  Special case
+       complex modes.
+
+2004-12-25  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR rtl-optimization/19078
+       * tree-ssa-loop-ivopts.c (determine_use_iv_cost_generic,
+       determine_use_iv_cost_outer): Fix computing of cost for the original
+       bivs.
+       (dump_use): Handle case related_cands == NULL.
+
+2004-12-25  Marek Michalkiewicz  <marekm@amelek.gda.pl>
+
+       PR target/19059
+       * config/avr/avr.c (avr_mcu_types): Move attiny{13,2313} from avr4
+       to avr2.
+       * config/avr/avr.h (LINK_SPEC): Ditto.
+       * config/avr/t-avr (MULTILIB_MATCHES): Ditto.
+
+2004-12-25  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/19137
+       * config/rs6000/rs6000.md (movti_power, movti_string): Relax
+       operand[1] predicate to input_operand, and add r<-n alternative.
+       Move TImode const_double_operand splitter to where it belongs.
+
+2004-12-25  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/19147
+       * config/rs6000/rs6000.md (andsi3_internal7, andsi3_internal8): Delete.
+
+2004-12-24  Uros Bizjak  <uros@kss-loka.si>
+
+       * config/i386/i386.md (*fix_trunc{d,s,h}i_1):
+       Rename to *fix_trunc{d,s,h}i_i387.
+       (fix_trunc{d,s}fdi2): Reorder tests.
+
+2004-12-24  Daniel Berlin  <dberlin@dberlin.org>
+
+       Fix PR debug/14638
+
+       * tree.h (DECL_DEBUG_ALIAS_OF): New macro.
+       * var-tracking.c (track_expr_p): Don't disqualify tracking of variables
+       that are aliases of variables we want to track, unless the
+       original variable is also ignored for debugging purposes.
+       (VARIABLE_HASH_VAL): Use DECL_UID, so that this is deterministic.
+       * tree-outof-ssa.c (create_temp): Note who we are a debug alias of.
+       * dwarf2out.c (dwarf2out_var_location): Add us to the location of
+       the decl we are an alias of.
+
+2004-12-24  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/19142
+       * config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow
+       DFmode for 32-bit again.
+
+2004-12-23  Roger Sayle  <roger@eyesopen.com>
+
+       * reload.c (regno_clobbered_p): Add a gcc_assert that regno
+       refers to a hard register.
+
+2004-12-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p.
+
+2004-12-23  DJ Delorie  <dj@redhat.com>
+
+       * genrecog.c (did_you_mean_codes): New.
+       (compute_predicate_codes): Fail unmatched codes.
+
+2004-12-23  Eric Christopher  <echristo@redhat.com>
+
+       * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add
+       assert for machine=mips for !TARGET_IRIX.
+       * config/mips/linux.h: Remove machine=mips assert.
+       * config/mips/netbsd.h: Ditto.
+       * config/mips/openbsd.h: Ditto.
+
+2004-12-23  Dale Johannesen  <dalej@apple.com>
+
+       * tree.c (iterative_hash_expr):  Canonicalize builtins.
+
+2004-12-23  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR target/16819
+       * calls.c (load_register_parameters): Don't call use_regs when
+       nregs is zero.
+
+2004-12-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR middle-end/17746
+       * expr.c (get_inner_reference): Add 'keep_aligning' parameter.
+       Break on aligning VIEW_CONVERT_EXPR nodes on STRICT_ALIGNMENT
+       platforms only if keep_aligning is true.
+       (expand_assignment): Adjust call to get_inner_reference.
+       (expand_expr_addr_expr_1): Likewise.
+       (expand_expr_real_1): Likewise.
+       * dojump.c (do_jump): Likewise.
+       * dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
+       * fold-const.c (optimize_bit_field_compare): Likewise.
+       (decode_field_reference): Likewise.
+       (split_address_to_core_and_offset): Likewise.
+       * tree-ssa-loop-ivopts.c (split_address_cost): Likewise.
+       * tree.h (get_inner_reference): Adjust prototype.
+
+2004-12-23  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.c (override_options): Revert last change
+       wrt fancy 387 math.
+
+2004-12-23  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.md (one_cmpl<mode>2, and<mode>3, andnot<mode>3,
+       ior<mode>3, iornot<mode>3, xor<mode>3, xornot<mode>3): New macroized
+       vector operate patterns.
+
+2004-12-23  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.c (ix86_expand_vector_move): Tidy.
+       (ix86_expand_vector_move_misalign): New.
+       (ix86_misaligned_mem_ok): Remove.
+       (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
+       * config/i386/i386-protos.h: Update.
+       * config/i386/i386.md (SSEMODEI): Rename from SSEINT16.
+       (MMXMODEI): Rename from MMXINT8.
+       (SSEMODE, MMXMODE, movmisalign<mode>): New.
+
+2004-12-23  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16405
+       * gimplify.c (gimplify_modify_expr_rhs): Handle
+       INDIRECT_REF/ADDR_EXPR combinations.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (alpha_expand_mov): Split out ...
+       (alpha_expand_movmisalign): ... misaligned vector support.
+       (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
+       * config/alpha/alpha-protos.h: Update.
+       * config/alpha/alpha.md (VEC): New macro.
+       (movv8qi, movv4hi, movv2si): Compress with VEC.
+       (movv8qi_fix, movv4hi_fix, movv2si_fix): Likewise.
+       (movv8qi_nofix, movv4hi_nofix, movv2si_nofix): Likewise.
+       (movmisalign<mode>): New.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * optabs.h (OTI_movmisalign, movmisalign_optab): New.
+       * optabs.c (init_optabs): Create it.
+       * genopinit.c (optabs): Initialize it.
+       * expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it.
+       * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
+       * target-def.h (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
+       * target.h (vectorize.misaligned_mem_ok): Remove.
+       * targhooks.c (default_vect_misaligned_mem_ok): Remove.
+       * doc/md.texi (movmisalign): New.
+       * doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/emmintrin.h (_mm_loadh_pd): Don't cast pointer arg
+       to __v2si.
+       (_mm_storeh_pd, _mm_loadl_pd, _mm_storel_pd): Likewise.
+       * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use double* or
+       const double* for __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
+       __builtin_ia32_storehpd, __builtin_ia32_storelpd.
+       (ix86_expand_builtin): Update to match.
+       (ix86_expand_vector_init): Use sse2_loadlpd.
+       * config/i386/i386.md (vec_setv2df): Use sse2_loadlpd, sse2_loadhpd.
+       (vec_extractv2df): Use sse2_storelpd, sse2_storehpd.
+       (sse2_storehpd, sse2_loadhpd, sse2_storelpd, sse2_loadlpd): New.
+       (sse2_movhpd): Remove.
+
+2004-12-23  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/18751
+       * config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Return
+       false for anything larger than 32 bits in 32-bit code.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.md (btsq, btrq, btcq): Fix modes.
+       (bt peepholes): Likewise.
+
+       * varasm.c (force_const_mem): Call set_mem_align.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/predicates.md (sse_comparison_operator): Fix
+       typo in ieee test.
+       (arith_or_logical_operator): Downcase codes.
+
+2004-12-23  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       PR target/18511
+       * reload1.c (emit_output_reload_insns): Check if OLD is a hard
+       register before calling regno_clobbered_p.
+       * reload.c: Update comment for regno_clobbered_p.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.c (override_options): Respect user disable of
+       fancy 387 math, sse, mmx.
+       (construct_container): Generate error if we need an sse regster
+       and sse has been disabled.
+       * config/i386/i386.h (TARGET_SWITCHES): Disabling sse also disables
+       later sse generations.  Disabling mmx also disables 3dnow.
+
+2004-12-22  Daniel Berlin  <dberlin@dberlin.org>
+
+       * tree-inline.c (struct inline_data): Remove inlined_fns.
+       (expand_call_inline): Remove dead code setting
+       inlined_fns.
+       (optimize_inline_calls): Remove dead code setting DECL_INLINED_FNS.
+       * tree.h (struct tree_decl): Remove inlined_fns.
+
+2004-12-22  Roger Sayle  <roger@eyesopen.com>
+
+       * tree-browser.c: Remove obsolete #ifdef HOST_EBCDIC code.
+
+2004-12-23  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/18896
+       * function.c (split_complex_args): Set DECL_ARTIFICIAL, DECL_IGNORED_P
+       for real and imaginary parts if the parm is addressable.
+       (assign_parms_unsplit_complex): If parm addressable, save real
+       and imaginary parts to a stack temp.  Pass assign_parm_data_all.
+       (assign_parms): Adjust assign_parms_unsplit_complex call.
+
+2004-12-22  Daniel Berlin  <dberlin@dberlin.org>
+
+       * tree.h (DECL_PTA_ALIASVAR): Dead.
+       (struct tree_decl): Remove alias_var field.
+
+2004-12-22  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * system.h (IN_RANGE): Restore HOST_WIDE_INT cast.
+       * tree.h (IS_EXPR_CODE_CLASS): Do not use IN_RANGE.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+           Uros Bizjak  <uros@kss-loka.si>
+
+       * config/i386/i386.md (truncdfsf2): Don't create stack temp when
+       using sse math only.  Use truncdfsf2_with_temp.
+       (truncdfsf2_with_temp): New.
+       (truncdfsf_fast_i387): Rename from truncdfsf2_noop.  Add memory
+       output alternative.
+       (truncdfsf_mixed): Rename from truncdfsf2_1_sse.  Compress duplicate
+       alternatives.
+       (truncdfsf_fast_sse): Rename from truncdfsf2_2.  Remove f alternative.
+       (truncdfsf2_3, truncdfsf2_sse_only): Remove.
+       (truncdfsf_i387): Rename from truncdfsf2_1.  Compress duplicates.
+       (truncdfsf_fast_mixed): New.
+       (truncdfsf splitters): Remove all except the 387 load/store split.
+       (truncxfsf2_1, truncxfdf2_1): Unify enable constraint with
+       respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH and
+       TARGET_MIX_SSE_I387.
+       (*truncxf{s,d}f2_1): Rename to *truncxf{s,d}f2_mixed.
+       (truncxf{s,d}f2_noop) Rename to truncxf{d,s}f2_i387_noop.
+       (*truncxf{s,d}f2_i387): New patterns.
+       (*truncxf{s,d}f2_2): Rename to *truncxf{s,d}f2_i387_1.
+       (truncxf{s,d}f2, fmod{s,d}f3, drem{s,d}f3, log1p{s,d}f2,
+       rint{s,d}f2, floor{s,d}f2, ceil{s,d}f2, btrunc{s,d}f2,
+       nearbyint{s,d}f2): Use renamed patterns.
+
+2004-12-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * tree.h (TYPE_SIZES_GIMPLIFIED): New.
+       * function.c (gimplify_parm_type): Don't gimplify type if already done.
+       * gimplify.c (gimplify_decl_expr): Likewise.
+       (gimplify_type_sizes): Set TYPE_SIZES_GIMPLIFIED.  Examine nested
+       array types.
+
+2004-12-22  Richard Henderson  <rth@redhat.com>
+
+       * gimplify.c (eval_save_expr): Remove.
+       (gimplify_one_sizepos): Unshare expr before gimplifying.
+       * stor-layout.c (variable_size): Revert 2004-12-19 change.
+       (layout_decl): Revert 2004-12-18 change.
+       (layout_type): Revert 2004-12-21 change.
+
+2004-12-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * tree-sra.c (type_can_be_decomposed_p): Reject variable sized types.
+
+2004-12-22  Mark Mitchell  <mark@codesourcery.com>
+
+       * Makefile.in (install-common): Remove special-case code for when
+       SPECS is defined.
+
+2004-12-22  Jan Beulich  <jbeulich@novell.com>
+
+       * config.gcc: Add dbxelf.h to NetWare's tm_file.
+       * config/i386/netware-crt0.c: Prototype __init_environment and
+       __deinit_environment prior to their definition.
+       (__init_environment): Correct invokation of constructor function.
+       * config/i386/netware.h (TARGET_OS_CPP_BUILTINS): Use
+       builtin_define_std rather than builtin_define on IAPX386.
+       * config/i386/nwld.h: Disable stabs debugging info with the linker
+       this file supports.
+       * config/i386/t-nwld (SHLIB_LINK): Do not use a temporary file for
+       the output. Add -posix to the options as that is the more compatible
+       mode.
+       * gthr-nks.h: Formatting.
+       (__gthread_mutex_init_function): Kill the dubious use of
+       NX_MUTEX_RECURSIVE as it is now clear that the traditional mutexes
+       were not meant to be recursive.
+       (__gthread_recursive_mutex_t, __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
+       __gthread_recursive_mutex_init_function,
+       __gthread_recursive_mutex_lock, __gthread_recursive_mutex_trylock,
+       __gthread_recursive_mutex_unlock): New.
+
+2004-12-22  Alexandre Oliva  <aoliva@redhat.com>
+
+       * config/mips/t-linux64: Remove code that messed with $(SPECS).
+       (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_OSDIRNAMES): Move
+       n32 to the front.
+       (MULTILIB_EXTRA_OPTS, CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S):
+       Removed.
+       * config/mips/linux64.h (DRIVER_SELF_SPECS): Don't handle
+       -mabi-fake-default.
+       (SUBTARGET_TARGET_SWITCHES): Likewise.
+
+2004-12-21  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/18984
+       * pointer-set.c (pointer_set_contains): Add back.
+       * pointer-set.h (pointer_set_contains): Add back.
+
+2004-12-21  Richard Henderson  <rth@redhat.com>
+
+       * gimplify.c (eval_save_expr): New.
+       (gimplify_one_sizepos): Use it.
+       * stor-layout.c (layout_type): Unshare TYPE_MIN/MAX_VALUE.
+
+2004-12-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * system.c (IN_RANGE): Use plain unsigned, not unsigned
+       HOST_WIDE_INT.
+       * tree.def (VOID_TYPE, INTEGER_TYPE, REAL_TYPE, COMPLEX_TYPE,
+       VECTOR_TYPE, OFFSET_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, CHAR_TYPE,
+       POINTER_TYPE, REFERENCE_TYPE, METHOD_TYPE, FUNCTION_TYPE,
+       FILE_TYPE, ARRAY_TYPE, RECORD_TYPE, UNION_TYPE,
+       QUAL_UNION_TYPE): Reorder for better code efficiency.
+       (CONST_DECL, TYPE_DECL, VAR_DECL, FIELD_DECL, PARM_DECL): Likewise.
+       (INDIRECT_REF, ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF): Likewise.
+       * tree.h (INDIRECT_REF_P): Reorder checks for better optimization.
+       (IS_EXPR_CODE_CLASS): Use IN_RANGE.
+       (INTEGRAL_TYPE_P, FLOAT_TYPE_P): Reorder checks for better
+       optimization.
+
+2004-12-21  David O'Brien  <obrien@FreeBSD.org>
+
+       * config/freebsd-spec.h:  Use KSE pthread lib for -pthread.
+
+2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
+
+       PR c/18963
+       * c-decl.c (pushdecl): Remove block trying to merge static function
+       declarations at block scope to file scope declarations.
+
+2004-12-21  James A. Morrison  <phython@gcc.gnu.org>
+
+       PR c/18596
+       * c-parse.in (initdcl): Don't process a declaration if start_decl fails.
+       (notype_initdcl):  Don't process a declaration if start_decl fails.
+       * c-decl.c (start_decl): Fail if grokdeclarator fails.
+       (grokdeclarator): Fail if a function definition has an invalid storage
+       class.
+       * c-typeck.c (start_init): Treat error_mark_node the same as 0.
+
+2004-12-21  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.c (x86_sse_split_regs): Rename from
+       x86_sse_partial_regs.
+       * config/i386/i386.h (x86_sse_split_regs): Likewise.
+       (TARGET_SSE_SPLIT_REGS): Rename from TARGET_SSE_PARTIAL_REGS.
+       * config/i386/i386.md (*): Update to match.  Remove two
+       floatsisf splitters that use it.
+
+       * config/i386/i386.h (x86_sse_partial_regs_for_cvtsd2ss): Remove.
+
+       * config/i386/i386.c (x86_sse_partial_regs_for_cvtsd2ss): Remove.
+       * config/i386/i386.h (TARGET_SSE_PARTIAL_REGS_FOR_CVTSD2SS): Remove.
+       * config/i386/i386.md (truncdfsf2_1_sse): Don't test it.
+       (truncdfsf2_2, truncdfsf2_sse_only): Likewise.
+       (truncdfsf2_1_sse_nooverlap, truncdfsf2_2_nooverlap): Remove.
+       (truncdfsf2_sse_only_nooverlap): Remove.
+
+       * config/i386/i386.h (TARGET_SSE_TYPELESS_LOAD0): Remove.
+
+2004-12-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       * expr.c (emit_group_load_1): Return the source if the move
+       is a regular move between complex values.
+
+2004-12-20  Roger Sayle  <roger@eyesopen.com>
+
+       PR middle-end/18683
+       * config/rs6000/rs6000.c (current_file_function_operand): Only check
+       current_function_decl's DECL_RTL if it has already been set.
+
+2004-12-20  Roger Sayle  <roger@eyesopen.com>
+
+       PR middle-end/18683
+       * function.c (pop_function_context_from): Don't reset reg_renumber.
+
+2004-12-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR middle-end/18776
+       * expr.c (write_complex_part): Use a subreg if the original object
+       is a hard reg that spans an even number of regs or a MEM.
+       (read_complex_part): Likewise.
+
 2004-12-20  Mark Mitchell  <mark@codesourcery.com>
 
        * Makefile.in (install-common): Do not install the specs file
        * c-common.c (set_builtin_user_assembler_name): New.
        * c-common.h (set_builtin_user_assembler_name): Declare.
        * c-decl.c (finish_decl): Use set_builtin_user_assembler_name
-       
+
 2004-12-20  Diego Novillo  <dnovillo@redhat.com>
 
        PR tree-optimization/19080
 
 2004-12-20  Richard Henderson  <rth@redhat.com>
 
-       * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use 
+       * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
        long_long_integer_type_node in building V2DI_type_node.
 
        * config/i386/emmintrin.h: Use __vector_size__ instead of vector_size.
        Change eflags_p parameter in call to output_fp_compare.
        (*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf): Remove.
        (*cmpfp_2_sf_1, *cmpfp_2_df_1, *cmpfp_2_xf_1): Rename to
-       *cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf.  Change eflags_p
+       *cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf.  Change eflags_p
        parameter in call to output_fp_compare.
        (*cmpfp_2_u): Remove.
        (*cmpfp_2_u_1): Rename to *cmpfp_2_u. Change eflags_p parameter