OSDN Git Service

PR rtl-optimization/20291
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index e6a7c4e..48e144d 100644 (file)
@@ -1,5 +1,823 @@
+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
+       var.
+
+       * tree-ssa-phiopt.c (tree_ssa_phiopt): Remove local variable
+       removed_phis.
+
+       * tree-ssa-pre.c (compute_avail): Remove local variable val.
+       (mark_operand_necessary): Remove local variable ver.
+
+       * tree-vect-transform.c (vect_get_new_vect_var): Remove local
+       variable prefix_len.
+
+       * value-prof.c (mod_subtract_transform): Remove local variable
+       value.
+
+       * builtins.c (fold_builtin_exponent): Take decomposed
+       arguments of CALL_EXPR.
+       (fold_builtin_1): Update a call to fold_builtin_exponent.
+
+       * builtins.c (fold_builtin_logarithm): Take decomposed
+       arguments of CALL_EXPR.
+       (fold_builtin_1): Update a call to fold_builtin_logarithm.
+
+       * c-decl.c (c_init_decl_processing): Remove local variables
+       ptr_ftype_void and ptr_ftype_ptr.
+
+       * gimplify.c (gimplify_expr): Remove local variables r0 and
+       r1.
+
+       * reg-stack.c (move_for_stack_reg): Remove local variable
+       push_insn.
+       (compare_for_stack_reg): Remove local variable flags_user.
+       (convert_regs_1): Remove local variable deleted.
+
+       * tree-if-conv.c (tree_if_convert_cond_expr): Remove local
+       variable new_cond.
+       (combine_blocks): Remove local variables exits and new_e.
+
+       * 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 
+       cpp_spell_token.
+
+2005-03-11  Per Bothner  <per@bothner.com>
+
+       * c-tree.h (struct c_declarator): New id_loc field.
+       * c-pragma.h (c_lex_with_flags): Take position reference.
+       * c-lex.c (c_lex_with_flags): Set passed-in location from cpp token,
+       iff USE_MAPPED_LOCATION. (Type doesn't match otherwise.)
+       (c_lex): Pass dummy location to c_lex_with_flags.
+       * c-parser.c (c_lex_one_token): Set c_token's location using
+       c_lex_with_flags, instead of input_location, which might be "ahead".
+       (c_parser_direct_declarator): Set declarator's id_loc from
+       c_token's id_loc.
+       * c-decl.c (grokdeclarator): Set DECL_SOURCE_LOCATION from
+       declarator's id_loc, rather than probably-imprecise input_location.
+       (build_id_declarator): Initialize c_declarator's id_loc field.
+
+2005-03-11  Roger Sayle  <roger@eyesopen.com>
+
+       PR middle-end/20419
+       * builtins.c (expand_builtin_signbit): Force the signbit's word
+       into an integer register to avoid SUBREGs of floating point modes.
+
+2005-03-12  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * cfglayout.c, loop-doloop.c, profile.c, target-def.h,
+       target.h, targhooks.c, tracer.c, tree-ssa-loop-ch.c,
+       tree-ssa-loop-unswitch.c, tree-ssa-loop.c, vec.c, vmsdbgout.c,
+       config/m32r/m32r.md, config/xtensa/xtensa.h: Update copyright.
+
+2005-03-11  David Edelsohn  <edelsohn@gnu.org>
+
+       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  <rth@redhat.com>
+
+       PR target/20415
+       * config/i386/mmx.md (vec_dupv4hi): Fix predicate.
+       * config/i386/i386.c (ix86_expand_vector_init_duplicate): Update
+       to match.
+
+2005-03-11  Richard Sandiford  <rsandifo@redhat.com>
+
+       * 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/mips.md (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-11  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/mips/mips.c (override_options): Only warn about -mint64
+       deprecation if TARGET_INT64.
+
+2005-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * builtin-attrs.def (ATTR_NONNULL_LIST, ATTR_NOTHROW_NONNULL,
+       ATTR_CONST_NOTHROW_NONNULL, ATTR_PURE_NOTHROW_NONNULL,
+       ATTR_MALLOC_NOTHROW_NONNULL): New "nonnull" attribute lists which
+       are non-specific regarding the nonnull parameter positions.
+       (ATTR_NONNULL_1_2, ATTR_NONNULL_1_4, ATTR_NOTHROW_NONNULL_1_2,
+       ATTR_NOTHROW_NONNULL_1_4, ATTR_CONST_NOTHROW_NONNULL_1,
+       ATTR_PURE_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1_2,
+       ATTR_MALLOC_NOTHROW_NONNULL_1): Delete.
+       
+       * builtins.def: Use the non-specific "nonnull" attibute lists.
+
+2005-03-11  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * basic-block.h (single_succ_p, single_pred_p, single_succ_edge,
+       single_pred_edge, single_succ, single_pred): Improve comments.
+
+2005-03-11  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * basic-block.h (single_succ_p, single_pred_p, single_succ_edge,
+       single_pred_edge, single_succ, single_pred): New inline functions.
+       * bb-reorder.c (rotate_loop, find_traces_1_round,
+       add_labels_and_missing_jumps, fix_up_fall_thru_edges,
+       duplicate_computed_gotos): Use the single_succ/pred functions.
+       * cfganal.c (forwarder_block_p): Ditto.
+       * cfgbuild.c (compute_outgoing_frequencies): Ditto.
+       * cfgcleanup.c (try_simplify_condjump, try_forward_edges,
+       outgoing_edges_match, try_crossjump_to_edge, try_optimize_cfg,
+       merge_seq_blocks): Ditto.
+       * cfghooks.c (split_edge, tidy_fallthru_edges): Ditto.
+       * cfglayout.c (fixup_reorder_chain): Ditto.
+       * cfgloop.c (mark_single_exit_loops, update_latch_info,
+       canonicalize_loop_headers, verify_loop_structure): Ditto.
+       * cfgloopmanip.c (remove_path, unloop, loop_delete_branch_edge,
+       mfb_update_loops, create_preheader, force_single_succ_latches,
+       create_loop_notes): Ditto.
+       * cfgrtl.c (rtl_can_merge_blocks, try_redirect_by_replacing_jump,
+       force_nonfallthru_and_redirect, rtl_tidy_fallthru_edge,
+       commit_one_edge_insertion, purge_dead_edges,
+       cfg_layout_can_merge_blocks_p): Ditto.
+       * except.c (sjlj_emit_function_enter): Ditto.
+       * flow.c (init_propagate_block_info): Ditto.
+       * function.c (thread_prologue_and_epilogue_insns): Ditto.
+       * gcse.c (find_implicit_sets, bypass_conditional_jumps,
+       insert_insn_end_bb): Ditto.
+       * ifcvt.c (merge_if_block, find_if_block, find_if_case_1,
+       find_if_case_2): Ditto.
+       * lambda-code.c (perfect_nestify): Ditto.
+       * lcm.c (optimize_mode_switching): Ditto.
+       * loop-doloop.c (doloop_modify): Ditto.
+       * loop-init.c (loop_optimizer_init): Ditto.
+       * loop-iv.c (simplify_using_initial_values): Ditto.
+       * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
+       * loop-unswitch.c (unswitch_loop): Ditto.
+       * modulo-sched.c (generate_prolog_epilog): Ditto.
+       * predict.c (combine_predictions_for_insn, estimate_probability,
+       tree_estimate_probability, last_basic_block_p,
+       estimate_bb_frequencies): Ditto.
+       * profile.c (branch_prob): Ditto.
+       * regrename.c (copyprop_hardreg_forward): Ditto.
+       * sched-rgn.c (is_cfg_nonregular, find_rgns, update_live): Ditto.
+       * tracer.c (layout_superblocks): Ditto.
+       * tree-cfg.c (tree_can_merge_blocks_p, tree_merge_blocks,
+       cfg_remove_useless_stmts_bb, cleanup_control_flow,
+       cleanup_control_expr_graph, disband_implicit_edges,
+       tree_find_edge_insert_loc, bsi_commit_edge_inserts,
+       tree_verify_flow_info, tree_make_forwarder_block,
+       tree_forwarder_block_p, remove_forwarder_block,
+       remove_forwarder_block_with_phi, merge_phi_nodes): Ditto.
+       * tree-if-conv.c (tree_if_conversion): Ditto.
+       * tree-mudflap.c (mf_build_check_statement_for): Ditto.
+       * tree-ssa-dce.c (remove_dead_stmt): Ditto.
+       * tree-ssa-dom.c (dom_opt_finalize_block): Ditto.
+       * tree-ssa-loop-ch.c (should_duplicate_loop_header_p,
+       copy_loop_headers): Ditto.
+       * tree-ssa-loop-im.c (loop_commit_inserts): Ditto.
+       * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Ditto.
+       * tree-ssa-loop-manip.c (split_loop_exit_edge, ip_normal_pos,
+       lv_adjust_loop_entry_edge, tree_ssa_loop_version): Ditto.
+       * tree-ssa-loop-niter.c (simplify_using_initial_conditions): Ditto.
+       * tree-ssa-loop-unswitch.c (simplify_using_entry_checks): Ditto.
+       * tree-ssa-phiopt.c (tree_ssa_phiopt, value_replacement): Ditto.
+       * tree-ssa-pre.c (compute_antic_aux, insert_aux, init_pre): Ditto.
+       * tree-ssa-threadupdate.c (redirect_edges): Ditto.
+       * tree-tailcall.c (independent_of_stmt_p, find_tail_calls,
+       eliminate_tail_call, tree_optimize_tail_calls_1): Ditto.
+       * tree-vect-analyze.c (vect_analyze_loop_form): Ditto.
+       * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
+       * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard,
+       slpeel_add_loop_guard): Ditto.
+
+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.
+
+       * 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.
+
+2005-03-11  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       PR rtl-optimization/20331
+       * rtlanal.c (modified_between_p): Check its address first for MEM.
+       (modified_in_p): Likewise.
+
+2005-03-11  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * config.gcc (hppa*64*-*-hpux11*): Use pa/t-hpux-shlib.
+
+2005-03-10  Steven Bosscher  <stevenb@suse.de>
+
+       * expr.c (expand_expr_real_1): If possible, use a conditional
+       move for expanding MIN_EXPR and MAX_EXPR.
+       Use temp for moving around rtx-en.
+
+2005-03-10  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR rtl-opt/20412
+       * simplify-rtx.c (simplify_relational_operation_1): Fix typo - check the
+       correct mode.
+
+2005-03-10  Roger Sayle  <roger@eyesopen.com>
+
+       * builtins.c (expand_builtin_signbit): Extend to handle floating
+       point modes wider than the largest integer type, using the
+       operand_subword_force function to obtain the signbit's word.
+
+2005-03-10  Jakub Jelinek  <jakub@redhat.com>
+
+       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  <aldyh@redhat.com>
+
+       * doc/invoke.texi: Add 8540 to list of cpus in rs6000 cpu section.
+
+2005-03-10  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * tree-outof-ssa.c (analyze_edges_for_bb): Make the return
+       type void.
+       (perform_edge_inserts): Unconditionally call
+       free_dominator_info.
+
+       * tree-outof-ssa.c (analyze_edges_for_bb): Update a comment.
+
+2005-03-10  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa/xtensa.h (MEMBER_TYPE_FORCES_BLK): Define.
+
 2005-03-10  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * bitmap.c (bitmap_copy): Remove manual loop unrolling.
+
+       * value-prof.c (rtl_find_values_to_profile): Use gcc_assert and
+       gcc_unreachable.
+       (rtl_register_value_prof_hooks,
+       tree_value_profile_transformations,
+       tree_register_value_prof_hooks): Likewise.
+       * var-tracking.c (stack_adjust_offset_pre_post,
+       variable_htab_free, variable_union, dataflow_set_different_2,
+       count_uses, variable_was_changed, set_frame_base_location,
+       set_variable_part, emit_note_insn_var_location, vt_emit_notes,
+       vt_add_function_parameters): Likewise.
+       * varasm.c (named_section_real, named_section, make_decl_rtl,
+       asm_emit_uninitialised, assemble_integer, decode_addr_const,
+       const_hash_1, compare_constant, copy_constant, force_const_mem,
+       output_constant_pool_2, output_constant_pool_1, output_constant,
+       output_constructor, make_decl_one_only, decl_tls_model,
+       default_no_named_section, default_elf_select_section_1,
+       default_unique_section_1): Likewise.
+       * vec.c (vec_gc_o_reserve, vec_heap_o_reserve): Likewise.
+       * vmsdbgout.c (addr_const_to_string): Likewise.
+
        PR c++/20375
        * function.c (struct assign_parm_data_one): Remove last_named
        field.
        Revert for now:
        2005-03-03  James A. Morrison  <phython@gcc.gnu.org>
        PR tree-optimization/15784
-       * fold-const.c (fold): Fold ~A + 1 to -1.  Fold -A - 1
+       * fold-const.c (fold): Fold ~A + 1 to -A.  Fold -A - 1
        and -1 - A to ~A.
 
 2005-03-04  Ben Elliston  <bje@au.ibm.com>
 2005-03-03  James A. Morrison  <phython@gcc.gnu.org>
 
        PR tree-optimization/15784
-       * fold-const.c (fold): Fold ~A + 1 to -1.  Fold -A - 1
+       * fold-const.c (fold): Fold ~A + 1 to -A.  Fold -A - 1
        and -1 - A to ~A.
 
 2005-03-03  David Edelsohn  <edelsohn@gnu.org>