OSDN Git Service

* config.gcc (extra_options): New variable for listing option files.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index deaba06..fb182eb 100644 (file)
@@ -1,3 +1,432 @@
+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-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 
 
 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.