+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