OSDN Git Service

PR middle-end/44671
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 969a292..857bb1e 100644 (file)
@@ -1,7 +1,338 @@
+2010-06-26  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/44671
+       * cgraphunit.c (cgraph_function_versioning): Remove wrong cgraph_make_decl_local
+       call; fix typo copying RTL data.
+
+2010-06-25  DJ Delorie  <dj@redhat.com>
+
+       * config/m32c/m32c-protos.h (m32c_note_pragma_address): Declare.
+       (m32c_output_aligned_common): Likewise.
+       * config/m32c/m32c.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
+       (ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.
+       * config/m32c/m32c-pragma.c (m32c_pragma_address): New.
+       (m32c_register_pragmas): Register it.
+       * config/m32c/m32c.c (m32c_get_pragma_address): New.
+       (m32c_insert_attributes): Set #pragma address decls volatile.
+       (pragma_entry_eq): New.
+       (pragma_entry_hash): New.
+       (m32c_note_pragma_address): New.
+       (m32c_get_pragma_address): New.
+       (m32c_output_aligned_common): New.
+       * doc/extend.texi: Document the new pragma.
+
+       * config/m32c/m32c.c (m32c_illegal_subreg_p): Reject illegal MEMs
+       also.
+       * config/m32c/predicates.md (m32c_any_operand): Check the code
+       instead of memory_operand so as to allow matching volatile MEMs.
+       (m32c_nonimmediate_operand): Likewise.
+       (mra_operand): Allow volatiles.
+
+2010-06-25  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/44610
+       * simplify-rtx.c (delegitimize_mem_from_attrs): Don't use a base
+       address if the offset is unknown.
+
+2010-06-25  Douglas B Rupp  <rupp@gnat.com>
+
+       * dwarf2out.c (dwarf2out_vms_debug_main_pointer): New function.
+       * dwarf2out.h (dwarf2out_vms_debug_main_pointer): Declare new function.
+       * config/ia64/ia64-protos.h (ia64_start_function): Declare.
+       * config/ia64/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Move contents
+       to ia64_start_function. Invoke it.
+       * config/ia64/ia64.c (ia64_start_function): Call new function
+       dwarf2out_vms_debug_main_pointer.
+
+2010-06-25  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * tree-if-conv.c (insert_gimplified_predicates): Do not insert
+       statements computing the true predicate.
+
+2010-06-25  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * tree-if-conv.c (init_bb_predicate): Initialize the predicate
+       to boolean_true_node.
+       (reset_bb_predicate): New.
+       (predicate_bbs): Call reset_bb_predicate.
+
+2010-06-25  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * tree-if-conv.c (combine_blocks): Remove FIXME comment.
+       (tree_if_conversion): Returns true when something has been changed.
+       (main_tree_if_conversion): Return TODO_cleanup_cfg when if-conversion
+       changed something.
+
+2010-06-25  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * Makefile.in (tree-if-conv.o): Depends on DBGCNT_H.
+       * dbgcnt.def (if_conversion_tree): New DEBUG_COUNTER.
+       * tree-if-conv.c: Include dbgcnt.h.
+       (tree_if_conversion): Use if_conversion_tree to count the number of
+       if-convertible loops.
+
+2010-06-25  Changpeng Fang  <changpeng.fang@amd.com>
+
+       * common.opt (fprefetch-loop-arrays): Re-define
+       -fprefetch-loop-arrays as a tri-state option with the initial
+       value of -1.
+       * tree-ssa-loop.c (gate_tree_ssa_loop_prefetch): Invoke prefetch
+       pass only when flag_prefetch_loop_arrays > 0.
+       * toplev.c (process_options): Note that, with tri-states,
+       flag_prefetch_loop_arrays>0 means prefetching is enabled.
+       * config/i386/i386.c (override_options): Enable prefetching at -O3
+       for a set of CPUs that sw prefetching is helpful.
+       (software_prefetching_beneficial_p): New.  Return TRUE if software
+       prefetching is beneficial for the given CPU.
+
+2010-06-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR rtl-optimization/44326
+       * implicit-zee.c (find_removable_zero_extends): Replace
+       INSN_P with NONDEBUG_INSN_P.
+
+2010-06-25  Martin Jambor  <mjambor@suse.cz>
+
+       * ipa-prop.h (struct ipa_param_descriptor): Removed the modified flag.
+       (struct ipa_node_params): Removed the modification_analysis_done flag.
+       (ipa_is_param_modified): Removed.
+       (ipa_analyze_node): Declare.
+       (ipa_compute_jump_functions): Remove declaration.
+       (ipa_count_arguments): Likewise.
+       (ipa_detect_param_modifications): Likewise.
+       (ipa_analyze_params_uses): Likewise.
+       * ipa-prop.c (struct param_analysis_info): New type.
+       (visit_store_addr_for_mod_analysis): Removed.
+       (visit_load_for_mod_analysis): Renamed to visit_ref_for_mod_analysis,
+       moved down in the file.
+       (ipa_detect_param_modifications): Merged into ipa_analyze_params_uses.
+       (ipa_count_arguments): Made static.
+       (mark_modified): New function.
+       (is_parm_modified_before_call): New function.
+       (compute_pass_through_member_ptrs): New parameter parms_info, call
+       is_parm_modified_before_call instead of ipa_is_param_modified.
+       (ipa_compute_jump_functions_for_edge): New parameter parms_info, pass
+       it to compute_pass_through_member_ptrs.
+       (ipa_compute_jump_functions): New parameter parms_info, pass it to
+       ipa_compute_jump_functions_for_edge.  Call ipa_initialize_node_params
+       on the callee if it is analyzed.  Made static.
+       (ipa_analyze_indirect_call_uses): New parameter parms_info, call
+       is_parm_modified_before_call instead of ipa_is_param_modified.
+       (ipa_analyze_call_uses): New parameter parms_info, pass it to
+       ipa_analyze_indirect_call_uses.
+       (ipa_analyze_stmt_uses): New parameter parms_info, pass it to
+       ipa_analyze_call_uses.
+       (ipa_analyze_params_uses): New parameter parms_info, pass it to
+       ipa_analyze_stmt_uses.  Also perform the used analysis.  Made static.
+       (ipa_analyze_node): New function.
+       (ipa_print_node_params): Do not dump the modified flag.
+       (ipa_write_node_info): Assert uses_analysis_done rather than streaming
+       it.  Do not stream the modified parameter flag.
+       (ipa_read_node_info): Set uses_analysis_done to 1 instead of streaming
+       it.  Do not stream the modified parameter flag.
+       * ipa-cp.c (ipcp_analyze_node): Removed.
+       (ipcp_init_stage): Iterate only once over the nodes, analyze each one
+       with only a call to ipa_analyze_node.
+       * ipa-inline.c (inline_indirect_intraprocedural_analysis): Analyze the
+       node with only a call to ipa_analyze_node.
+
+2010-06-25  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * doc/invoke.texi (-Wsuggest-attribute): Add item for noreturn.
+
+2010-06-25  Jan Hubicka  <jh@suse.cz>
+
+       * tree-pass.h (pass_split_functions): Declare.
+       * opts.c (decode_options): Enable function splitting at -O2
+       * timevar.def (TV_IPA_FNSPLIT): New macro.
+       * ipa-split.c: New file.
+       * common.opt (-fpartial-inlining): New flag.
+       * Makefile.in (ipa-split.o): New object file.
+       * passes.c (init_optimization_passes): Add ipa-split.
+       * params.def (partial-inlining-entry-probability): New parameters.
+       * doc/invoke.texi (-fpartial-inlining): New.
+
+2010-06-25  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR 44665
+       * tree-inline.c (gimple_expand_calls_inline): Fix typo in comment.
+       * gimplify.c (is_gimple_reg_rhs_or_call): Likewise.
+       (gimplify_expr): Likewise.
+
+2010-06-25  Martin Jambor  <mjambor@suse.cz>
+
+       * ipa-prop.c (determine_cst_member_ptr): Ignore non-clobbering
+       statements instead of bailing out on them.
+       (ipa_analyze_indirect_call_uses): Do not require that loads from the
+       parameter are in the same BB as the condition.  Update comments.
+
+2010-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/43866
+       * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): If stmt is always
+       true or always false, return NULL_TREE.
+       (tree_unswitch_single_loop): Optimize conditions even when reaching
+       max-unswitch-level parameter.  If num > 0, optimize first all conditions
+       using entry checks, then do still reachable block discovery and consider
+       only conditions in still reachable basic blocks in the loop.
+
+       PR tree-optimization/44539
+       * tree-cfgcleanup.c (fixup_noreturn_call): Call update_stmt even when
+       the call doesn't have LHS, but has VDEF.
+
+2010-06-25  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/pa/pa.h (MODIFY_TARGET_NAME): Remove.
+       * doc/tm.texi (MODIFY_TARGET_NAME): Don't document.
+       * gcc.c (enum add_del, struct modify_target, modify_target):
+       Remove.
+       (process_command): Remove code conditional on MODIFY_TARGET_NAME.
+       * system.h (MODIFY_TARGET_NAME): Poison.
+
+2010-06-25  Alan Modra  <amodra@gmail.com>
+
+       * doc/invoke.texi: Delete mcmodel=medium from powerpc options.
+       * config/rs6000/rs6000.h (enum rs6000_cmodel): Delete CMODEL_MEDIUM.
+       * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
+       CMODEL_LARGE as default.
+       * config/rs6000/rs6000.c (rs6000_handle_option): Remove mcmodel=medium.
+       (offsettable_ok_by_alignment): Delete.
+       (rs6000_emit_move): Remove mcmodel=medium optimization.
+
+2010-06-25  Bernd Schmidt  <bernds@codesourcery.com>
+
+       With large parts from Jim Wilson:
+       PR target/43902
+       * tree-pretty-print.c (dump_generic_node, op_code_prio): Add
+       WIDEN_MULT_PLUS_EXPR and WIDEN_MULT_MINUS_EXPR.
+       * optabs.c (optab_for_tree_code): Likewise.
+       (expand_widen_pattern_expr): Likewise.
+       * tree-ssa-math-opts.c (convert_mult_to_widen): New function, broken
+       out of execute_optimize_widening_mul.
+       (convert_plusminus_to_widen): New function.
+       (execute_optimize_widening_mul): Use the two new functions.
+       * expr.c (expand_expr_real_2): Add support for GIMPLE_TERNARY_RHS.
+       Remove code to generate widening multiply-accumulate.  Add support
+       for WIDEN_MULT_PLUS_EXPR and WIDEN_MULT_MINUS_EXPR.
+       * gimple-pretty-print.c (dump_ternary_rhs): New function.
+       (dump_gimple_assign): Call it when appropriate.
+       * tree.def (WIDEN_MULT_PLUS_EXPR, WIDEN_MULT_MINUS_EXPR): New codes.
+       * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
+       (expand_gimple_stmt_1): Likewise.
+       (expand_debug_expr): Support WIDEN_MULT_PLUS_EXPR and
+       WIDEN_MULT_MINUS_EXPR.
+       * tree-ssa-operands.c (get_expr_operands): Likewise.
+       * tree-inline.c (estimate_operator_cost): Likewise.
+       * gimple.c (extract_ops_from_tree_1): Renamed from
+       extract_ops_from_tree.  Add new arg for a third operand; fill it.
+       (gimple_build_assign_stat): Support operations with three operands.
+       (gimple_build_assign_with_ops_stat): Likewise.
+       (gimple_assign_set_rhs_from_tree): Likewise.
+       (gimple_assign_set_rhs_with_ops_1): Renamed from
+       gimple_assign_set_rhs_with_ops.  Add new arg for a third operand.
+       (get_gimple_rhs_num_ops): Support GIMPLE_TERNARY_RHS.
+       (get_gimple_rhs_num_ops): Handle WIDEN_MULT_PLUS_EXPR and
+       WIDEN_MULT_MINUS_EXPR.
+       * gimple.h (enum gimple_rhs_class): Add GIMPLE_TERNARY_RHS.
+       (extract_ops_from_tree_1): Adjust declaration.
+       (gimple_assign_set_rhs_with_ops_1): Likewise.
+       (gimple_build_assign_with_ops): Pass NULL for last operand.
+       (gimple_build_assign_with_ops3): New macro.
+       (gimple_assign_rhs3, gimple_assign_rhs3_ptr, gimple_assign_set_rhs3,
+       gimple_assign_set_rhs_with_ops, extract_ops_from_tree): New inline
+       functions.
+       * tree-cfg.c (verify_gimple_assign_ternary): New static function.
+       (verify_gimple_assign): Call it.
+       * doc/gimple.texi (Manipulating operands): Document GIMPLE_TERNARY_RHS.
+       (Tuple specific accessors, subsection GIMPLE_ASSIGN): Document new
+       functions for dealing with three-operand statements.
+       * tree.c (commutative_ternary_tree_code): New function.
+       * tree.h (commutative_ternary_tree_code): Declare it.
+       * tree-vrp.c (gimple_assign_nonnegative_warnv_p): Return false for ternary
+       statements.
+       (gimple_assign_nonzero_warnv_p): Likewise.
+       * tree-ssa-sccvn.c (stmt_has_constants): Handle GIMPLE_TERNARY_RHS.
+       * tree-ssa-ccp.c (get_rhs_assign_op_for_ccp): New static function.
+       (ccp_fold): Use it.  Handle GIMPLE_TERNARY_RHS.
+       * tree-ssa-dom.c (enum expr_kind): Add EXPR_TERNARY.
+       (struct hashtable_expr): New member ternary in the union.
+       (initialize_hash_element): Handle GIMPLE_TERNARY_RHS.
+       (hashable_expr_equal_p): Fix indentation.  Handle EXPR_TERNARY.
+       (iterative_hash_hashable_expr): Likewise.
+       (print_expr_hash_elt): Handle EXPR_TERNARY.
+       * gimple-fold.c (fold_gimple_assign): Handle GIMPLE_TERNARY_RHS.
+       * tree-ssa-threadedge.c (fold_assignment_stmt): Remove useless break
+       statements.  Handle GIMPLE_TERNARY_RHS.
+
+2010-06-25  Jan Hubicka  <jh@suse.cz>
+
+       * doc/invoke.texi (-Wsuggest-attribute): Add noreturn.
+
+2010-06-25  Shujing Zhao  <pearly.zhao@oracle.com>
+
+       PR c/44517
+       * c-parser.c (c_parser_parms_list_declarator): Return NULL if one of
+       parameters are not good.
+       (c_parser_parameter_declaration): Error unknown type name if the type
+       name can't start declaration specifiers.
+
+2010-06-25  Joseph Myers  <joseph@codesourcery.com>
+
+       * gcc.c (translate_options): Don't mention +e in comment.
+       (process_command): Don't handle +e specially.
+
 2010-06-25  Bernd Schmidt  <bernds@codesourcery.com>
 
        * ira.c (allocno_pool, copy_pool, allocno_live_range_pool): Delete.
 
+       * ira-build.c (merge_hard_reg_conflicts): New function.
+       (create_cap_allocno, copy_info_to_removed_store_destinations,
+       propagate_some_info_from_allocno, propagate_allocno_info): Use it.
+       (move_allocno_live_ranges, copy_allocno_live_ranges): New functions.
+       (remove_unnecessary_allocnos, remove_low_level_allocnos)
+       copy_nifo_to_removed_store_destination): Use them.
+       * ira-lives.c (make_hard_regno_born): New function, split out of
+       make_regno_born.
+       (make_allocno_born): Likewise.
+       (make_hard_regno_dead): New function, split out of make_regno_dead.
+       (make_allocno_dead): Likewise.
+       (inc_register_pressure): New function, split out of set_allocno_live.
+       (dec_register_pressure): New function, split out of clear_allocno_live.
+       (mark_pseudo_regno_live): New function, split out of mark_reg_live.
+       (mark_hard_reg_live): Likewise.  Use inc_register_pressure.
+       (mark_pseudo_regno_dead): New function, split out of mark_reg_dead.
+       (mark_hard_reg_dead): Likewise.  Use dec_register_pressure.
+       (make_pseudo_conflict): Use mark_pseudo_regno_dead and
+       mark_pseudo_regno_live.
+       (process_bb_node_lives): Use mark_pseudo_regno_live,
+       make_hard_regno_born and make_allocno_dead.
+       (make_regno_born, make_regno_dead, mark_reg_live, mark_reg_dead,
+       set_allocno_live, clear_allocno_live): Delete functions.
+
+       * ira-int.h (ira_parent_allocno, ira_parent_or_cap_allocno): Declare.
+       * ira-build.c (ira_parent_allocno, ira_parent_or_cap_allocno): New
+       functions.
+       (ira_flattening): Use ira_parent_allocno.
+       * ira-conflicts.c (process_regs_for_copy, propagate_copies)
+       build_allocno_conflicts): Use ira_parent_or_cap_allocno.
+
+       * ira-color.c (assign_hard_reg): Improve formatting of multi-line for
+       statement.
+
+       * ira-int.h (SET_MINMAX_SET_BIT, CLEAR_MINMAX_SET_BIT,
+       TEST_MINMAX_SET_BIT, minmax_set_iterator, minmax_set_iter_init,
+       minmax_set_iter_cond, minmax_set_iter_next,
+       FOR_EACH_BIT_IN_MINMAX_SET): Renamed from SET_ALLOCNO_SET_BIT,
+       CLEAR_ALLOCNO_SET_BIT, TEST_ALLOCNO_SET_BIT, ira_allocno_set_iterator,
+       ira_allocno_set_iter_init, ira_allocno_set_iter_cond,
+       ira_allocno_set_iter_Next and FOR_EACH_ALLOCNO_IN_ALLOCNO_SET.  All
+       uses changed.
+
+       * ira-int.h (struct live_range, live_range_t): Renamed from struct
+       ira_allocno_live_range and allocno_live_range_t; all uses changed.
+       * ira-build.c (live_range_pool): Renamed from allocno_live_range_pool.
+       All uses changed.
+
 2010-06-24  Richard Earnshaw  <rearnsha@arm.com>
 
        * thumb2.md (thumb2_tlobits_cbranch): Delete.