OSDN Git Service

* tree-vectorizer.h (unknown_alignment_for_access_p): Replaced by
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index e708ebb..0d3e60f 100644 (file)
@@ -1,7 +1,346 @@
+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 *"
        (fold_binary): Optimize comparisons against widened operands if
        the extension is represented by a CONVERT_EXPR, same as a NOP_EXPR.
 
-2005-03-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
+2005-03-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * config/sparc/sparc.c (struct_value_alias_set): New global variable.
        (sparc_override_options): Initialize it.
        * configure.ac: Define GGC_ZONE for --with-gc=zone.
        * config.in: Regenerated.
        * configure: Regenerated.
-       * gentype.c (write_types_process_field, write_func_for_structure):
+       * 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.