OSDN Git Service

Improve AGU stalls avoidance optimization.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 0a59a05..a0a89bb 100644 (file)
@@ -1,3 +1,285 @@
+2011-09-08  Enkovich Ilya  <ilya.enkovich@intel.com>
+
+       * config/i386/i386-protos.h (ix86_lea_outperforms): New.
+       (ix86_avoid_lea_for_add): Likewise.
+       (ix86_avoid_lea_for_addr): Likewise.
+       (ix86_split_lea_for_addr): Likewise.
+
+       * config/i386/i386.c (LEA_MAX_STALL): New.
+       (increase_distance): Likewise.
+       (insn_defines_reg): Likewise.
+       (insn_uses_reg_mem): Likewise.
+       (distance_non_agu_define_in_bb): Likewise.
+       (distance_agu_use_in_bb): Likewise.
+       (ix86_lea_outperforms): Likewise.
+       (ix86_ok_to_clobber_flags): Likewise.
+       (ix86_avoid_lea_for_add): Likewise.
+       (ix86_avoid_lea_for_addr): Likewise.
+       (ix86_split_lea_for_addr): Likewise.
+       (distance_non_agu_define): Search in pred BBs added.
+       (distance_agu_use): Search in succ BBs added.
+       (IX86_LEA_PRIORITY): Value changed from 2 to 0.
+       (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
+       (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
+
+       * config/i386/i386.md: Split added to transform non destructive
+       add into move and add.
+       (lea_1): transformed into insn_and_split to avoid AGU stalls.
+       (lea<mode>_2): Likewise.
+
+2011-09-08  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/50287
+       * ipa-split.c (split_function): Do not create SSA names for
+       non-gimple-registers.
+
+2011-09-08  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/19831
+       * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
+       skip builtins with vdefs that do not really store something.
+       (propagate_necessity): For calls to free that we can associate
+       with an allocation function do not mark the freed pointer
+       definition necessary.
+       (eliminate_unnecessary_stmts): Remove a call to free if
+       the associated call to an allocation function is not necessary.
+
+2011-09-08  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/19831
+       * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
+       allocation functions as necessary.
+
+2011-09-08  Iain Sandoe  <iains@gcc.gnu.org>
+
+       *config/darwin-driver.c (darwin_find_version_from_kernel): New routine 
+       cut from ... (darwin_default_min_version): Amended to provide defaults
+       for the cross directory case.
+       (darwin_driver_init): call darwin_default_min_version unconditionally.
+       * config/darwin.h (DEF_MIN_OSX_VERSION): New.
+       * config/darwin9.h: Likewise.
+       * config/darwin10.h: Likewise.
+       * config/rs6000/darwin7.h: Likewise.
+
+2011-09-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/50310
+       * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
+       code early if TARGET_AVX.
+       (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
+
+2011-09-07  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
+       duplicates.
+
+       PR target/50310
+       * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
+       "mode" attribute computation.
+
+2011-09-07  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * regrename.c (struct du_head): Make nregs signed.
+       (closed_chains): Remove.
+       (create_new_chain): Return the new chain.
+       (chain_from_id): New static function.
+       (dump_def_use_chain): Change argument to be an int, indicating
+       the first ID to print.  All callers changed.
+       (merge_overlapping_regs): Use chain_from_id.  Assert that
+       chains don't conflict with themselves.
+       (rename_chains): Take no argument.  Iterate over id_to_chain
+       rather to find chains to rename.  Clear tick before the main
+       loop.
+       (struct incoming_reg_info): New struct.
+       (struct bb_rename_info): New struct.
+       (init_rename_info, set_incoming_from_chain, merge_chains): New
+       static functions.
+       (regrename_analyze): New static function, broken out of
+       regrename_optimize.  Record and make use of open chain information
+       at basic block boundaries, and merge chains where possible.
+       (scan_rtx_reg): Make this_nregs signed.  Don't update
+       closed_chains.
+       (build_def_use): Return a bool to indicate success.  All callers
+       changed.  Don't initialize global data here.
+       (regrename_optimize): Move most code out of here into
+       regrename_analyze.
+       * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
+       range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
+       static inline functions.
+       * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
+
+       * bb-reorder.c (insert_section_boundary_note): Don't check
+       optimize_function_for_speed_p.
+       (gate_handle_partition_blocks): Do it here instead.
+       (gate_handle_reorder_blocks): Move preliminary checks here ...
+       (rest_of_handle_reorder_blocks): ... from here.
+
+2011-09-07  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/50301
+       * ipa-cp.c (find_more_values_for_callers_subset): Check jump
+       function index bounds.
+       (perhaps_add_new_callers): Likewise.
+
+2011-09-07  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/49911
+       * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
+       enumerations to the corresponding plain integer type.
+
+2011-09-07  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/50319
+       * tree-if-conv.c (set_bb_predicate): Assert we only set
+       canonical predicates.
+       (add_to_predicate_list): Simplify.  Allow TRUTH_NOT_EXPR
+       around canonical predicates.
+       (predicate_bbs): Do not re-gimplify already canonical
+       predicates.  Properly unshare them though.
+       (find_phi_replacement_condition): Simplify.
+
+2011-09-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       PR target/49030
+       * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
+       * config/arm/arm.c (maybe_get_arm_condition_code): New function,
+       reusing the old code from get_arm_condition_code.  Return ARM_NV
+       for invalid comparison codes.
+       (get_arm_condition_code): Redefine in terms of
+       maybe_get_arm_condition_code.
+       * config/arm/predicates.md (arm_comparison_operator): Use
+       maybe_get_arm_condition_code.
+
+2011-09-07  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
+       Canonicalize negated predicates by swapping edges.
+       (forward_propagate_into_cond): Likewise.
+
+2011-09-07  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/50213
+       * tree-flow.h (simple_iv_increment_p): Declare.
+       * tree-ssa-dom.c (simple_iv_increment_p): Export.  Also handle
+       POINTER_PLUS_EXPR.
+       * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
+       not propagate simple IV counter increments.
+
+2011-09-07  Eric Botcazou  <ebotcazou@adacore.com>
+           Iain Sandoe  <iains@gcc.gnu.org>
+
+       * config/rs6000/rs6000.c (compute_save_world_info): Test
+       cfun->has_nonlocal_label to determine if the out-of-line save
+       world call may be used.
+
+2011-09-07  Nick Clifton  <nickc@redhat.com>
+
+       * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
+       label on the parallel part of the insn.
+
+2011-09-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/50191
+       * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
+       avoid_constant_pool_reference first instead of last.
+
+2011-09-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       * doc/configfiles.texi (Configuration Files): Update documentation
+       about tm_p.h and remove FIXME comment.
+
+2011-09-06  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
+       (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
+
+2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>
+
+       * config/darwin10.h Remove duplicate LIB_SPEC.
+
+2011-09-06  Enkovich Ilya  <ilya.enkovich@intel.com>
+
+       PR middle-end/44382
+       * target.def (reassociation_width): New hook.
+
+       * doc/tm.texi.in (reassociation_width): Likewise.
+
+       * doc/tm.texi (reassociation_width): Likewise.
+
+       * doc/invoke.texi (tree-reassoc-width): New param documented.
+
+       * hooks.h (hook_int_uint_mode_1): New default hook.
+
+       * hooks.c (hook_int_uint_mode_1): Likewise.
+
+       * config/i386/i386.h (ix86_tune_indices): Add
+       X86_TUNE_REASSOC_INT_TO_PARALLEL and
+       X86_TUNE_REASSOC_FP_TO_PARALLEL.
+
+       (TARGET_REASSOC_INT_TO_PARALLEL): New.
+       (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
+
+       * config/i386/i386.c (initial_ix86_tune_features): Add
+       X86_TUNE_REASSOC_INT_TO_PARALLEL and
+       X86_TUNE_REASSOC_FP_TO_PARALLEL.
+
+       (ix86_reassociation_width) implementation of
+       new hook for i386 target.
+
+       * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
+
+       * tree-ssa-reassoc.c (get_required_cycles): New function.
+       (get_reassociation_width): Likewise.
+       (swap_ops_for_binary_stmt): Likewise.
+       (rewrite_expr_tree_parallel): Likewise.
+
+       (rewrite_expr_tree): Refactored. Part of code moved into
+       swap_ops_for_binary_stmt.
+
+       (reassociate_bb): Now checks reassociation width to be used
+       and call rewrite_expr_tree_parallel instead of rewrite_expr_tree
+       if needed.
+
+2011-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/47025
+       * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
+       uses nothing.
+       (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
+       BUILT_IN_FREE.
+       (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
+       definitely points to.
+       * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
+       BUILT_IN_VA_START doesn't let its va_list argument escape.
+       * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
+       not make any previous stores necessary.
+
+2011-09-06  Martin Jambor  <mjambor@suse.cz>
+
+       * ipa-inline.h (struct inline_summary): Move versionable flag...
+       * cgraph.h (struct cgraph_local_info): ...here
+       * ipa-cp.c (determine_versionability): Use the new versionable flag.
+       (determine_versionability): Likewise.
+       (ipcp_versionable_function_p): Likewise.
+       (ipcp_generate_summary): Likewise.
+       * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
+       versionable flag.
+       (compute_inline_parameters): Do not clear the versionable flag.
+       (inline_read_section): Do not stream the versionable flag.
+       (inline_write_summary): Likewise.
+       * lto-cgraph.c (lto_output_node): Stream the versionable flag.
+       (input_overwrite_node): Likewise.
+
+2011-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/48149
+       * tree-ssa-sccvn.c (vn_get_expr_for): Simplify.  Fix tuplification bug.
+       (vn_valueize): Move earlier.
+       (valueize_expr): Use vn_valueize.
+       (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
+       operands.
+       (simplify_unary_expression): Simplify.
+
 2011-09-06  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/48317
 
 2011-09-02  Richard Guenther  <rguenther@suse.de>
 
-       * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not
-       fold alloca (0).
-       (ccp_fold_stmt): Continue replacing args when folding
-       alloca fails.
+       * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).
+       (ccp_fold_stmt): Continue replacing args when folding alloca fails.
 
 2011-08-31  Richard Guenther  <rguenther@suse.de>
 
        (collect_object_sizes_for): Likewise.
        * tree-scalar-evolution.c (interpret_expr): Don't handle
        ternary RHSs.
-       * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and
-       simplify.
+       * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify.
        (ssa_forward_propagate_and_combine): Adjust.
        * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
        as ternary.
        * gthr-posix.h (__gthread_active_p): Do not use preprocessor
        conditionals and comments inside macro arguments.
 
-20011-08-29  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
-            Richard Guenther  <rguenther@suse.de>
+2011-08-29  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
+           Richard Guenther  <rguenther@suse.de>
 
        * tree.h (constant_boolean_node): Adjust prototype.
        * fold-const.c (fold_convert_loc): Move aggregate conversion