+2005-03-15 Dorit Naishlos <dorit@il.ibm.com>
+
+ * tree-vectorizer.h (unknown_alignment_for_access_p): Replaced by
+ known_alignment_for_access_p.
+ (known_alignment_for_access_p): New.
+ (do_peeling_for_alignment): Field made int instead of bool and renamed
+ to peeling_for_alignment.
+ (LOOP_DO_PEELING_FOR_ALIGNMENT): Renamed to LOOP_PEELING_FOR_ALIGNMENT.
+ * tree-vect-analyze.c (vect_determine_vectorization_factor): New. This
+ functionality used to be in vect_analyze_operations.
+ (vect_analyze_operations): Code to determine vectorization factor was
+ moved to vect_determine_vectorization_factor.
+ (vect_enhance_data_refs_alignment): Update to correct alignment when it
+ is known instead of -1. Set LOOP_PEELING_FOR_ALIGNMENT to peeling
+ factor.
+ (vect_analyze_loop): Call vect_determine_vectorization_factor (used to
+ be part of vect_analyze_operations).
+ * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Use fold when
+ creating the guard condition, as the number of iterations may be
+ constant.
+ (slpeel_tree_peel_loop_to_edge): Use new name of
+ LOOP_DO_PEELING_FOR_ALIGNMENT. Set it to 0 instead of false.
+ * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Handle known
+ alignment case more efficiently. Use LOOP_PEELING_FOR_ALIGNMENT.
+ (vect_do_peeling_for_alignment): Use fold.
+ (vect_transform_loop): Use new name of LOOP_DO_PEELING_FOR_ALIGNMENT.
+
+ (vect_update_inits_of_dr): Renamed to
+ vect_update_init_of_dr.
+ (vect_update_inits_of_drs): Use new name of vect_update_inits_of_dr.
+ (vectorizable_store): Fix assertion to use == instead of =.
+
+2005-03-15 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't clear
+ call_used_regs for wCG registers.
+
+2005-03-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * 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-15 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/18668
+ * config/i386/i386.h (x86_fisttp): New.
+ (TARGET_FISTTP): New macro.
+ * config/i386/i386.c (x86_fisttp): Set for NOCONA.
+ (output_fix_trunc): Add fisttp parameter. Generate fisttp x87
+ instruction when fisttp flag is set.
+ * config/i386/i386-protos.h (output_fix_trunc): Change declaration.
+
+ * config/i386/i386.md (type attribute): Add fisttp.
+ (unit attribute): Set to i387 for fisttp type.
+ (X87MODEF, X87MODEI, SSEMODEF, SSEMODEI24): New mode macros.
+ (fix_truncxfdi2, fix_truncxfsi2): Generate fisttp patterns for
+ TARGET_FISTTP.
+ (fix_truncdfdi2, fix_truncsfdi2, fix_truncdfsi2, fix_truncsfsi2):
+ Generate fisttp patterns for TARGET_FISTTP. Implement using mode
+ macros.
+ (fix_truncxfhi2, fix_truncdfhi2, fix_truncsfhi2): Generate fisttp
+ patterns for TARGET_FISTTP. Enable patterns for
+ (TARGET_FISTTP && !TARGET_SSE_MATH). Implement using mode macros.
+ (fix_trunc<mode>_i387_fisttp_1, fix_trunc<mode>_i387_fisttp,
+ fix_trunc<mode>_i387_fisttp_with_temp): New instruction patterns to
+ implement fisttp x87 insn.
+ (fix_trunc*_i387_fisttp splitters): New patterns.
+ (*fix_truncdi_i387, *fix_truncsi_i387, *fix_trunchi_i387):
+ Rename to *fix_trunc<mode>_i387_1. Implement using mode macros.
+ Disable patterns for TARGET_FISTTP. Add comment about FLAGS_REG
+ clobber.
+ (fix_truncdi_memory, fix_truncdi_nomemory, fix_trunchi_nomemory):
+ Rename to fix_trunc<mode>_i387 and fix_trunc<mode>_i387_with_temp.
+ Implement using mode macros. Disable patterns for TARGET_FISTTP.
+ (fix_truncsi_memory, fix_truncsi_nomemory, fix_trunchi_memory,
+ fix_trunchi_nomemory): Rename to fix_trunc<mode>_i387 and
+ fix_trunc<mode>_i387_with_temp. Implement using mode macros.
+ Disable patterns for TARGET_FISTTP.
+ (fix_trunc*_i387 splitters): Implement usign mode macros.
+ (fix_truncdfdi_sse, fix_truncsfdi_sse, fix_truncdfsi_sse,
+ fix_truncsfsi_sse): Disable for (TARGET_FISTTP && !TARGET_SSE_MATH).
+ (fix_trunx*_sse peephole2s): Implement using mode macros.
+
+2005-03-15 J"orn Rennecke <joern.rennecke@st.com>
+
+ PR rtl-optimization/20291
+ * combine.c (try_combine): If splitting fails, re-try with
+ original combined pattern, i.e. before clobber stripping.
+
+2005-03-14 Eric Christopher <echristo@redhat.com>
+
+ * config/mips/mips.h (DWARF_CIE_DATA_ALIGNMENT): Change for
+ STACK_GROWS_DOWNWARD.
+
+2005-03-14 Roger Sayle <roger@eyesopen.com>
+
+ * real.h (struct real_format): Split the signbit field into two
+ two fields, signbit_ro and signbit_rw.
+ * real.c (ieee_single_format, mips_single_format, ieee_double_format,
+ mips_double_format, ieee_extended_motorola_format,
+ ieee_extended_intel_96_format, ieee_extended_intel_96_round_53_format,
+ ieee_extended_intel_128_format, ibm_extended_format,
+ mips_extended_format, ieee_quad_format, mips_quad_format,
+ vax_f_format, vax_d_format, vax_g_format, i370_single_format,
+ i370_double_format, c4x_single_format, c4x_extended_format,
+ real_internal_format): Update initializers for new field.
+ * builtins.c (expand_builtin_signbit): Use signbit_ro field of the
+ real_format structure.
+ * optabs.c (expand_absneg_bit, expand_copysign): Use signbit_rw
+ field of the real_format structure.
+
+2005-03-14 Daniel Berlin <dberlin@dberlin.org>
+
+ Fix PR tree-optimization/20458
+
+ * tree-flow-inline.h (mark_call_clobbered): Don't fiddle
+ DECL_EXTERNAL on STRUCT_FIELD tags.
+ (clear_call_clobbered): Ditto.
+ * tree-ssa-operands.c (note_addressable): Make sure the original
+ variable doesn't slip into the addressable list if we have
+ subvars.
+ * tree-tailcall.c (suitable_for_tail_opt_p): Look at STRUCT_FIELD
+ tags too.
+
+2005-03-14 Geoffrey Keating <geoffk@apple.com>
+
+ * doc/cppopts.texi (-fexec-charset): Add concept index entry.
+ (-fwide-exec-charset): Likewise.
+ (-finput-charset): Likewise.
+ * doc/invoke.texi (Warning Options): Document -Wnormalized=.
+ * c-opts.c (c_common_handle_option): Handle -Wnormalized=.
+ * c.opt (Wnormalized): New.
+
+2005-03-14 Devang Patel <dpatel@apple.com>
+
+ * doc/invoke.texi: Add reference to Visibility document.
+
+2005-03-14 Richard Sandiford <rsandifo@redhat.com>
+
+ * config.gcc (mips*-*-*): Rename MASK_SPLIT_ADDRS to
+ MASK_SPLIT_ADDRESSES.
+ * config/mips/mips.h (target_flags, mips_fix_vr4130_string): Delete.
+ (MASK_INT64, MASK_LONG64, MASK_SPLIT_ADDR, MASK_NO_FUSED_MADD)
+ (MASK_EXPLICIT_RELOCS, MASK_MEMCPY, MASK_SOFT_FLOAT)
+ (MASK_FLOAT64, MASK_ABICALLS, MASK_XGOT, MASK_LONG_CALLS)
+ (MASK_64BIT, MASK_EMBEDDED_DATA, MASK_BIG_ENDIAN)
+ (MASK_SINGLE_FLOAT, MASK_MAD, MASK_4300_MUL_FIX, MASK_MIPS16)
+ (MASK_NO_CHECK_ZERO_DIV, MASK_BRANCHLIKELY)
+ (MASK_UNINIT_CONST_IN_RODATA, MASK_FIX_R4000, MASK_FIX_R4400)
+ (MASK_FIX_SB1, MASK_FIX_VR4120, MASK_VR4130_ALIGN)
+ (MASK_FP_EXCEPTIONS, MASK_DIVIDE_BREAKS, MASK_PAIRED_SINGLE)
+ (MASK_MIPS3D, MASK_SYM32, MASK_DEBUG, MASK_DEBUG_D)
+ (MASK_MIPS_TFILE, TARGET_INT64, TARGET_LONG64, TARGET_FLOAT64)
+ (TARGET_64BIT, TARGET_SPLIT_ADDRESSES, TARGET_DEBUG_MODE)
+ (TARGET_DEBUG_D_MODE, TARGET_MEMCPY, TARGET_ABICALLS)
+ (TARGET_XGOT, TARGET_SOFT_FLOAT, TARGET_HARD_FLOAT)
+ (TARGET_LONG_CALLS, TARGET_EMBEDDED_DATA)
+ (TARGET_UNINIT_CONST_IN_RODATA, TARGET_BIG_ENDIAN)
+ (TARGET_SINGLE_FLOAT, TARGET_DOUBLE_FLOAT, TARGET_MAD)
+ (TARGET_FUSED_MADD, TARGET_4300_MUL_FIX, TARGET_CHECK_ZERO_DIV)
+ (TARGET_DIVIDE_TRAPS, TARGET_BRANCHLIKELY, TARGET_FIX_SB1)
+ (TARGET_FIX_R4000, TARGET_FIX_R4400, TARGET_FIX_VR4120)
+ (TARGET_FIX_VR4130, TARGET_VR4130_ALIGN, TARGET_FP_EXCEPTIONS)
+ (TARGET_PAIRED_SINGLE_FLOAT, TARGET_MIPS3D, TARGET_SYM32)
+ (TARGET_EXPLICIT_RELOCS): Delete.
+ (TARGET_SWITCHES, SUBTARGET_TARGET_SWITCHES): Delete.
+ (TARGET_OPTIONS): Remove entry for -mfix-vr4130.
+ * config/mips/mips.c (TARGET_DEFAULT_TARGET_FLAGS): Define.
+ (override_options): Set MASK_LONG64 if -mint64 is given and no
+ -mlongXX option is. Complain about -mint64 -mlong32.
+ (override_options, CMP_BUILTINS, mips_bdesc, sb1_desc): Rename
+ MASK_PAIRED_SINGLE to MASK_PAIRED_SINGLE_FLOAT.
+ * config/mips/mips.opt: New file.
+
+2005-03-14 Richard Sandiford <rsandifo@redhat.com>
+
+ * config.gcc (extra_options): New variable for listing option files.
+ Add ${cpu_type}/${cpu_type}.opt to it if that file exists.
+ * configure.ac (extra_opt_files): New AC_SUBST variable.
+ (tm_file_list, tm_include_list): Include options.h first.
+ * configure: Regenerate.
+ * Makefile.in (extra_opt_files, ALL_OPT_FILES): New variables.
+ (s-options): Use $(ALL_OPT_FILES) instead of $(lang_opt_files)
+ (s-options-h): New rule.
+ (options.h): Depend on it.
+ (TEXI_GCCINT_FILES): Add options.texi.
+ * hooks.h (hook_bool_size_t_constcharptr_int_true): Declare.
+ * hooks.c (hook_bool_size_t_constcharptr_int_true): New function.
+ * target.h (gcc_target): Add default_target_flags and handle_option.
+ * target-def.h (TARGET_DEFAULT_TARGET_FLAGS)
+ (TARGET_HANDLE_OPTION): New macros.
+ (TARGET_INITIALIZER): Include them.
+ * opt-functions.awk (opt_args, nth_arg): New functions.
+ (switch_flags): Handle the "Target" flag.
+ (var_args): Delete.
+ (var_name): Use opt_args and nth_arg.
+ (var_set, var_ref): Likewise. Handle "Mask" and "InverseMask".
+ * opth-gen.awk: Declare target_flags. Declare MASK_* and TARGET_*
+ macros for the "Mask" and "InverseMask" options.
+ * opts.h (cl_var_cond): New enum.
+ (cl_option): Replace the "has_set_value" and "set_value" fields with
+ "var_cond" and "var_value".
+ (CL_TARGET): New macro.
+ (option_enabled, print_filtered_help): Declare.
+ (decode_options): Move definition.
+ * opts.c (handle_option): Search for the original option before
+ removing any "no-" prefix. Handle CL_TARGET. Adjust for the new
+ var_cond and var_value fields. Use targetm.handle_option to handle
+ target options.
+ (decode_options): Set target_flags to targetm.default_target_flags.
+ (print_filtered_help): Make global. Handle CL_TARGET.
+ (option_enabled): New function.
+ * toplev.c (target_switches): Guard with #ifdef TARGET_SWITCHES.
+ (display_target_options, set_target_switch, print_switch_values)
+ (default_pch_valid_p): Guard uses of target_switches with
+ #ifdef TARGET_SWITCHES. Also...
+ (display_target_options): Display the CL_TARGET entries in cl_options.
+ (set_target_option): Don't complain about the "" option when
+ TARGET_SWITCHES is undefined.
+ (print_switch_values): Use option_enabled.
+ (default_pch_valid_p): Check cl_options[] when looking for something
+ that has changed the value of target_flags.
+ * c.opt: Remove documentation from top of file.
+ * doc/gccint.texi: Add an "Options" chapter. Include options.texi.
+ * doc/sourecebuild.texi: Refer to the new options documentation
+ instead of c.opt. Document machine-specific .opt files.
+ * doc/tm.texi (target_flags): Say that this variable is declared
+ by options.h.
+ (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Document.
+ (TARGET_SWITCHES, TARGET_OPTIONS): Refer to the option files as
+ an alternative.
+ * doc/options.texi: New file.
+
+2005-03-14 Alexandre Oliva <aoliva@redhat.com>
+
+ PR middle-end/18628
+ * cse.c (fold_rtx_mem): Don't fold a load from a jumptable into a
+ register.
+
+2005-03-14 Alexandre Oliva <aoliva@redhat.com>
+
+ 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 Kazu Hirata <kazu@cs.umass.edu>
+
+ * cfgbuild.c: Update comments.
+
+2005-03-14 Roger Sayle <roger@eyesopen.com>
+
+ PR rtl-optimization/17236
+ * optabs.c (expand_doubleword_mult): New helper function split out
+ from expand_binop. Permute the order in which instructions are
+ emitted to minimize the number of simultaneously live registers.
+ (expand_binop): Call expand_doubleword_mult to synthesize a double
+ word multiplication.
+
+2005-03-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ * basic-block.h: Update the prototypes of cached_make_edge and
+ rtl_make_eh_edge.
+ * cfg.c (cached_make_edge): Take edge_cache representing one
+ row of the adjacency matrix of edges.
+ * cfgbuild.c (make_label_edge, rtl_make_eh_edge): Likewise.
+ (make_edges): Initialize edge_cache to represent one row of
+ the adjacency matrix of edges.
+
+2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * tree-ssa-phiopt.c (minmax_replacement, blocks_in_phiopt_order):
+ New functions.
+ (tree_ssa_phiopt): Use blocks_in_phiopt_order and minmax_replacement.
+ Remove unused removed_phis variable.
+ (conditional_replacement): Use build1/build2.
+ (abs_replacement): Use last_and_only_stmt and build1/build2.
+
+2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * builtin-attrs.def (ATTR_NOVOPS, ATTR_NOVOPS_LIST,
+ ATTR_PURE_NOTHROW_NOVOPS_LIST): New.
+ * builtins.def (ATTR_MATHFN_FPROUNDING): Use NOVOPS.
+ (BUILT_IN_PREFETCH): Set the NOVOPS attribute.
+ * c-common.c (handle_novops_attribute): New function.
+ (c_common_attribute_table): Add "no vops" entry.
+ * c-decl.c (merge_decls): Copy DECL_IS_NOVOPS.
+ * calls.c (flags_from_decl_or_type): Set ECF_NOVOPS.
+ * tree-ssa-operands.c (get_call_expr_operands): Do not
+ create virtual operands for calls with ECF_NOVOPS flag.
+ * tree.h (DECL_IS_NOVOPS): New macro.
+ (struct tree_decl): Add novops_flag.
+ (ECF_NOVOPS): New constant.
+
+2005-03-14 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/17688
+ * config/i386/i386.c (x86_use_himode_fiop): New.
+ (x86_use_simode_fiop): Rename from x86_use_fiop.
+ * config/i386/i386.h (x86_use_himode_fiop): Declare.
+ (TARGET_USE_HIMODE_FIOP): New.
+ (x86_use_simode_fiop): Rename from x86_use_fiop.
+ (TARGET_USE_SIMODE_FIOP): Rename from TARGET_USE_FIOP.
+
+ * config/i386/i386.md (X87MODEI12): New mode macro define.
+ (*cmpfp_<mode>): Rename from *cmpfp_si. Use X87MODEI12 mode macro
+ to implement x87 FP compare with HImode input operands.
+ (*fp_jcc_8<mode>_387, splitter): Rename from *fp_jcc_8_387.
+ Use X87MODEI12 mode macro to handle HImode input operands.
+ (*fop_sf_2<mode>_i387, *fop_sf_3<mode>_i387, *fop_df_2<mode>_i387,
+ *fop_df_3<mode>_i387, *fop_xf_2<mode>_i387, *fop_xf_3<mode>_i387):
+ Renamed from *fop_sf_2_i387, *fop_sf_3_i387, *fop_df_2_i387,
+ *fop_df_3_i387, *fop_xf_2_i387, *fop_xf_3_i387. Use X87MODEI12 mode
+ macro to implement x87 operators with HImode input operands.
+ (fop splitters): Use X87MODEI12 mode macro to handle HImode
+ input operands.
+
+2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
+ integer_zerop.
+ * tree-gimple.c (is_gimple_min_invariant): Consider overflowed
+ constants invariant.
+
+2005-03-14 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * basic-block.h (BB_VISITED): Removed.
+ * cfganal.c (dfs_enumerate_from): Do not use BB_VISITED flag.
+
+2005-03-14 Falk Hueffner <falk@debian.org>
+
+ PR bootstrap/20424
+ * config/alpha/alpha.c (alpha_fold_builtin_cmpbge): Fix typo.
+
+2005-03-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ * ggc-zone.c: Fix comment typos.
+
+ * alloc-pool.c, except.h, ggc-common.c, ggc-zone.c, ggc.h,
+ stringpool.c, config/mips/mips-protos.h: Update copyright.
+
+2005-03-14 Alan Modra <amodra@bigpond.net.au>
+
+ * config/rs6000/rs6000-protos.h: Replace "struct rtx_def *"
+ throughout with its typedef, "rtx".
+ * config/rs6000/rs6000.c: Likewise. Formatting fixes.
+ (rs6000_tls_symbol_ref_1): Remove inline keyword.
+ * config/rs6000/rs6000.h (REG_ALLOC_ORDER): Formatting. Reorder
+ regs in comment to match code.
+
+2005-03-14 Kazu Hirata <kazu@cs.umass.edu>
+
+ * except.c (check_handled): Make it static.
+ * except.h: Remove the corresponding prototype.
+
+ * function.c (get_func_frame_size): Make it static.
+ * function.h: Remove the corresponding type.
+
+ * regclass.c (reg_class_superclasses, reg_class_subclasses):
+ Make them static.
+ * hard-reg-set.h: Remove the corresponding declarations.
+
+ * tree-cfg.c (verify_stmts): Check that
+ bb_for_stmt (stmt) == bb for every PHI node and statement.
+
+2005-03-14 Alan Modra <amodra@bigpond.net.au>
+
+ * config.gcc: Remove excess indentation.
+ (powerpc*-*-*, rs6000-*-*): Accept --with-cpu/tune power5 and 8548.
+
+2005-03-13 Roger Sayle <roger@eyesopen.com>
+
+ 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-13 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (struct_value_alias_set): New global variable.
+ (sparc_override_options): Initialize it.
+ (sparc_struct_value_rtx): Set it on the MEM to be returned.
+
+2005-03-13 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/predicates.md (mem_or_easy_const_operand): Delete.
+ (reg_or_none500mem_operand): New predicate.
+ (zero_reg_mem_operand): New predicate.
+ * config/rs6000/rs6000.md (extendsfdf2): Change operand1 predicate
+ to reg_or_none500mem_operand.
+ (extendsfdf2_fpr): Add MEM alternative.
+ (extenddftf2_internal): Change operand2 predicate to
+ zero_reg_mem_operand.
+
+2005-03-13 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * ggc-zone.c: Rewritten.
+
+ * alloc-pool.c (dump_alloc_pool_statistics): Don't print statistics
+ if there are none.
+ * configure.ac: Define GGC_ZONE for --with-gc=zone.
+ * config.in: Regenerated.
+ * configure: Regenerated.
+ * gengtype.c (write_types_process_field, write_func_for_structure):
+ Pass new argument to gt_pch_note_object.
+ * ggc-common.c (struct ptr_data): Add TYPE.
+ (gt_pch_note_object): Take TYPE argument and save it.
+ (call_count): Update call to ggc_pch_count_object.
+ (call_alloc): Update call to ggc_pch_alloc_object.
+ (gt_pch_save): Call ggc_pch_prepare_write after paddng the PCH
+ file.
+ * ggc-none.c (rtl_zone, garbage_zone, ggc_alloc_zone_stat): Delete.
+ * ggc-page.c (rtl_zone, tree_zone, garbage_zone)
+ (ggc_alloc_zone_stat): Delete.
+ (ggc_pch_count_object, ggc_pch_alloc_object): Add TYPE argument.
+ * ggc.h (gt_pch_note_object, ggc_pch_count_object)
+ (ggc_pch_alloc_object): Update prototypes.
+ (garbage_zone): Delete.
+ (tree_zone, rtl_zone, ggc_alloc_zone_stat, ggc_alloc_zone): Move to
+ GGC_ZONE conditional. Update. Change tree_zone and rtl_zone into
+ pointers.
+ (tree_id_zone): New variable.
+ (ggc_alloc_cleared_zone): Remove unused.
+ (ggc_alloc_zone): Define.
+ (ggc_alloc_rtvec, ggc_alloc_tree): Update to use ggc_alloc_zone.
+ * rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Use
+ ggc_alloc_zone_stat.
+ * stringpool.c (gt_pch_n_S): Update call to gt_pch_note_object.
+ * tree.c (copy_node_stat, make_tree_binfo_stat, make_tree_vec_stat)
+ (tree_cons_stat, build1_stat): Update call to ggc_alloc_zone_stat.
+ (make_node_stat): Likewise. Use tree_id_zone.
+
+2005-03-13 Daniel Jacobowitz <dan@codesourcery.com>
+ Joseph S. Myers <joseph@codesourcery.com>
+
+ * configure.ac: Check for MIPS TLS.
+ * configure: Regenerated.
+ * config/mips/mips-protos.h (enum mips_symbol_type): Add
+ SYMBOL_TLS, SYMBOL_TLSGD, SYMBOL_TLSLDM, SYMBOL_DTPREL,
+ SYMBOL_GOTTPREL, and SYMBOL_TPREL.
+ * config/mips/mips.c (mips_regno_to_class): Handle V1_REG.
+ (TARGET_HAVE_TLS, TARGET_CANNOT_FORCE_CONST_MEM): Define.
+ (mips_classify_symbol, mips_symbolic_constant_p)
+ (mips_symbolic_address_p, mips_symbol_insns): Handle TLS symbols.
+ (mips_tls_operand_p, mips_call_tls_get_addr)
+ (mips_legitimize_tls_address, mips_cannot_force_const_mem)
+ (mips_tls_symbol_ref_1): New functions.
+ (mips_legitimize_address, mips_legitimize_const_move): Call
+ mips_legitimize_tls_address.
+ (override_options): Handle V1_REG and TLS symbols. Disable TLS
+ for MIPS16.
+ * config/mips/mips.h (enum reg_class, REG_CLASS_NAMES)
+ (REG_CLASS_CONTENTS, GR_REG_CLASS_P): Include V1_REG.
+ (mips_char_to_class): Document V1_REG.
+ (HAVE_AS_TLS): Provide default.
+ * config/mips/mips.md (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): New
+ constants.
+ (load_got<mode>): Renamed from *load_got<mode>. Allow when
+ !TARGET_ABICALLS.
+ (tls_get_tp_<mode>): New instruction.
+
+2005-03-13 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * configure.ac: Update checks for target tools.
+ * configure: Regenerated.
+
+2005-03-13 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * varasm.c (decl_tls_model): Check flag_shlib instead of flag_pic.
+
+2005-03-13 Roger Sayle <roger@eyesopen.com>
+
+ * expmed.c (expand_mult): Use synthetic multiplication sequences for
+ more classes of DImode multiplication by constant. Allow both
+ multiplication by small negative constants (by performing a
+ multiplication by a positive constant and negating the result) and
+ multiplications by large powers of two, by using a left shift.
+
+2005-03-13 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-into-ssa.c (find_idf): Speed up by putting the indexes
+ of basic blocks into work_stack.
+
+ * builtin-attrs.def, c-lex.c, c-pragma.h, reg-stack.c,
+ config/mips/vr.h: Update copyright.
+
+ * c-decl.c (c_init_decl_processing): Remove useless calls to
+ build_function_type.
+
+ * builtins.c (fold_trunc_transparent_mathfn,
+ fold_fixed_mathfn, fold_builtin_atan, fold_builtin_trunc,
+ fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
+ fold_builtin_lround, fold_builtin_bitop, fold_builtin_memcpy,
+ fold_builtin_strcpy, fold_builtin_strncpy,
+ fold_builtin_signbit): Use TYPE (TYPE (fndecl)) instead of
+ TREE_TYPE (exp).
+
+ * builtins.c (expand_builtin_mathfn_3): Remove local variable
+ before_call.
+
+ * lambda-code.c (lambda_compute_auxillary_space): Remove local
+ variable determinant.
+
+ * tree-cfg.c (group_case_labels): Remove local variable type.
+
+ * tree-ssa-live.c (build_tree_conflict_graph): Remove local
+ variable ann.
+
+ * tree-ssa-phiopt.c (value_replacement): Remove local variable
+ result.
+
+2005-03-13 Andy Hutchinson <HutchinsonAndy@netscape.net>
+
+ PR target/18251
+ * config/avr/avr.md (movmemhi): Rewrite as RTL loop.
+ (*movmemqi_insn): Delete.
+ (*movmemhi): Delete.
+
+2005-03-13 Kazu Hirata <kazu@cs.umass.edu>
+
+ * builtins.c (fold_builtin_classify): Take decomposed
+ arguments of CALL_EXPR.
+ (fold_builtin_1): Update a call to fold_builtin_classify.
+
+2005-03-13 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR c/20402
+ * c-parser.c (c_parser_struct_or_union_specifier): Don't fall
+ through into call to parser_xref_tag after parse error.
+ (c_parser_struct_declaration): Consistently return NULL_TREE on
+ error.
+
+2005-03-12 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-flow-inline.h (ref_contains_array_ref): New function.
+ (lookup_subvars_for_var): Ditto.
+ (get_subvars_for_var): Ditto.
+ (var_can_have_subvars): Ditto.
+
+ * tree-flow.h (mem_tag_kind): Add STRUCT_FIELD.
+ (struct subvar): New type.
+
+ * tree-dfa.c (okay_component_ref_for_subvars): New function.
+
+ * tree-optimize.c (init_tree_optimization_passes): Call
+ pass_create_structure_vars.
+
+ * tree-ssa-alias.c: Include vec.h.
+ (init_alias_info): Don't auto-clear call clobbered on struct-field
+ tags.
+ (compute_flow_insensitive_aliasing): Handle subvars.
+ (group_aliases): Handle STRUCT_FIELD aliases.
+ (setup_pointers_and_addressables): Ditto.
+ Don't mark variables non-addressable if they still have
+ addressable subvars.
+ Also mark subvars addressable when the real variable is marked
+ addressable.
+ (add_pointed_to_var): Try to prune the pointed-to set by only
+ pointing to subvars when possible.
+ Otherwise, make sure we set addresses_needed and pt_vars to
+ properly include subvars.
+ (bitpos_of_field): New function.
+ (push_fields_onto_fieldstack): Ditto.
+ (get_or_create_used_part_for): Ditto.
+ (create_overlap_variables_for): Ditto.
+ (find_used_portions): Ditto.
+ (create_structure_vars): Ditto.
+ (pass_create_structure_vars): New structure.
+
+ * tree-ssa-operands.c (finalize_ssa_v_must_defs): Remove assert.
+ (get_expr_operands): Handle subvars. Also try to turn
+ COMPONENT_REF accesses into must-defs now that we can accurately
+ portray it.
+ (note_addressable): Try to only mark as addressable those subvars
+ we know a COMPONENT_REF touches.
+ (overlap_subvar): New function.
+
+ * tree-vect-analyze.c (vect_object_analysis): Add new parameter.
+ Handle subvar storing.
+ (vect_address_analysis): Update caller of vect_object_analysis.
+
+ * tree-vect-transform.c (vect_create_data_ref_ptr): Copy subvars.
+
+ * tree-vectorizer.h (struct _stmt_vec_info): Add subvars member.
+ (STMT_VINFO_SUBVARS): New macro.
+
+ * common.opts: add flag_tree_salias.
+
+ * opts.c (decode_options): flag_tree_salias defaults to on.
+
+ * doc/invoke.texi: Document fdump-tree-svars and -ftree-salias.
+
+ * doc/tree-ssa.texi: Document structural alias analysis.
+
+2005-03-12 Steven Bosscher <stevenb@suse.de>
+
+ * tree-cfg.c (make_goto_expr_edges): Don't use error_mark_node.
+ * tree-ssa-dce.c (mark_stmt_necessary): Don't check for it.
+ * tree-ssa-operands.c (get_expr_operands): Likewise.
+ (get_expr_operands): Likewise for ERROR_MARK.
+
2005-03-12 Kazu Hirata <kazu@cs.umass.edu>
* tree-ssa.c (kill_redundant_phi_nodes): Remove local variable
* tree-inline.c (expand_call_inline): Remove local variable
decl.
+ * tree-ssa-live.c (create_ssa_var_map,
+ calculate_live_on_entry): Remove local variable snn.
+
2005-03-12 Geoffrey Keating <geoffk@apple.com>
* c-lex.c (c_lex_with_flags): Add parameter to call to
2005-03-11 James A. Morrison <phython@gcc.gnu.org>
- PR tree-optimization/15784
- * fold-const.c (fold): Fold ~A + 1 to -A. Fold -A - 1
- and -1 - A to ~A.
+ PR tree-optimization/15784
+ * fold-const.c (fold): Fold ~A + 1 to -A. Fold -A - 1
+ and -1 - A to ~A.
- * stmt.c (expand_case): Don't change index_type. Convert minval
- to the proper type.
+ * stmt.c (expand_case): Don't change index_type. Convert minval
+ to the proper type.
PR tree-optimization/20130
* fold-const.c (fold): Fold x * -1 into -x.