OSDN Git Service

PR target/42895
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 7928aa9..74b960b 100644 (file)
@@ -1,3 +1,330 @@
+2010-04-29  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR target/42895
+       * doc/tm.texi (ADJUST_REG_ALLOC_ORDER): Renamed from
+       ORDER_REGS_FOR_LOCAL_ALLOC.  All instances of this macro changed.
+       (HONOR_REG_ALLOC_ORDER): Describe new macro.
+       * ira.c (setup_alloc_regs): Use ADJUST_REG_ALLOC_ORDER if defined.
+       * ira-color.c (assign_hard_reg): Take prologue/epilogue costs into
+       account only if HONOR_REG_ALLOC_ORDER is not defined.
+       * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Define.
+       * system.h (ORDER_REGS_FOR_LOCAL_ALLOC): Poison.
+       
+2010-04-29  Jon Grant <04@jguk.org>
+       
+       * collect2.c (vflag): Change type from int to bool.
+       (debug): Likewise.
+       (helpflag): New global bool.
+       (main): Set vflag and debug with boolean, not integer truth
+       values.  Accept new "--help" option and output usage text if
+       found.
+       * collect2.h (vflag): Update prototype.
+       (debug): Likewise.
+       
+2010-04-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR bootstrap/43936
+       * plugin.h (flag_plugin_added): Moved out of
+       invoke_plugin_callbacks.
+
+2010-04-29  Richard Guenther  <rguenther@suse.de>
+
+       PR bootstrap/43935
+       * plugin.h (invoke_plugin_callbacks): Annotate arguments
+       with ATTRIBUTE_UNUSED.
+
+2010-04-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/43921
+       * config/i386/i386.c (get_some_local_dynamic_name): Replace
+       INSN_P with NONDEBUG_INSN_P.
+       (distance_non_agu_define): Likewise.
+       (distance_agu_use): Likewise.
+
+2010-04-29  Bernd Schmidt  <bernds@codesourcery.com>
+
+       From Dominique d'Humieres <dominiq@lps.ens.fr>
+       PR bootstrap/43858
+       * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs to compute
+       test_set.
+
+2010-04-29  Brian Hackett   <bhackett1024@gmail.com>
+
+       * plugin.h (invoke_plugin_callbacks): New inline function.
+       * plugin.c (flag_plugin_added): New global flag.
+       (add_new_plugin): Initialize above flag.
+       (invoke_plugin_callbacks): Rename to ...
+       (invoke_plugin_callbacks_full): ... this.
+
+2010-04-28  Jan Hubicka  <jh@suse.cz>
+
+       * lto-symtab.c (lto_symtab_entry_def) Add vnode.
+       (lto_varpool_replace_node): New.
+       (lto_symtab_resolve_symbols): Resolve varpool nodes.
+       (lto_symtab_merge_decls_1): Prefer decls with varpool node.
+       (lto_symtab_merge_cgraph_nodes_1): Merge varpools.
+       * cgraph.h (varpool_node_ptr): New type.
+       (varpool_node_ptr): New vector.
+       (varpool_node_set_def): New structure.
+       (varpool_node_set): New type.
+       (varpool_node_set): New vector.
+       (varpool_node_set_element_def): New structure.
+       (varpool_node_set_element, const_varpool_node_set_element): New types.
+       (varpool_node_set_iterator): New type.
+       (varpool_node): Add prev pointers, add used_from_other_partition,
+       in_other_partition.
+       (varpool_node_set_new, varpool_node_set_find, varpool_node_set_add,
+       varpool_node_set_remove, dump_varpool_node_set, debug_varpool_node_set,
+       varpool_get_node, varpool_remove_node): Declare.
+       (vsi_end_p, vsi_next, vsi_node, vsi_start, varpool_node_in_set_p,
+       varpool_node_set_size): New inlines.
+       * cgraph.c (dump_cgraph_node): Dump asm names of aliases.
+       * tree-pass.h (varpool_node_set_def): Forward declare.
+       (ipa_opt_pass_d): Summary writting takes vnode sets too.
+       (ipa_write_optimization_summaries): Update prototype.
+       * ipa-cp.c (ipcp_write_summary): Update.
+       * ipa-reference.c (ipa_reference_write_summary): Update.
+       * lto-cgraph.c (lto_output_varpool_node): New static function.
+       (output_varpool): New function.
+       (input_varpool_node): New static function.
+       (input_varpool_1): New function.
+       (input_cgraph): Input varpool.
+       * ipa-pure-const.c (pure_const_write_summary): Update.
+       * lto-streamer-out.c (lto_output): Update, output varpool too.
+       (write_global_stream): Kill WPA hack.
+       (produce_asm_for_decls): Update.
+       (output_alias_pair_p): Handle variables.
+       (output_unreferenced_globals): Output only needed partition of varpool.
+       * ipa-inline.c (inline_write_summary): Update.
+       * lto-streamer-in.c (lto_input_tree_ref, lto_input_tree): Do not build cgraph.
+       * lto-section-in.c (lto_section_name): Add varpool and jump funcs.
+       * ipa.c (hash_varpool_node_set_element, eq_varpool_node_set_element,
+       varpool_node_set_new, varpool_node_set_add,
+       varpool_node_set_remove, varpool_node_set_find, dump_varpool_node_set,
+       debug_varpool_node_set): New functions.
+       * passes.c (rest_of_decl_compilation): when in LTO do not finalize.
+       (execute_one_pass): Process new decls too.
+       (ipa_write_summaries_2): Pass around vsets.
+       (ipa_write_summaries_1): Likewise.
+       (ipa_write_summaries): Build vset; be more selective about cgraph nodes
+       to add.
+       (ipa_write_optimization_summaries_1): Pass around vsets.
+       (ipa_write_optimization_summaries): Likewise.
+       * varpool.c (varpool_get_node): New.
+       (varpool_node): Update doubly linked lists.
+       (varpool_remove_node): New.
+       (dump_varpool_node): More dumping.
+       (varpool_enqueue_needed_node): Update doubly linked lists.
+       (decide_is_variable_needed): Kill ltrans hack.
+       (varpool_finalize_decl): Kill lto hack.
+       (varpool_assemble_decl): Skip decls in other partitions.
+       (varpool_assemble_pending_decls): Update doubly linkes lists.
+       (varpool_empty_needed_queue): Likewise.
+       (varpool_extra_name_alias): Likewise.
+       * lto-streamer.c (lto_get_section_name): Add vars section.
+       * lto-streamer.h (lto_section_type): Update.
+       (output_varpool, input_varpool): Declare.
+
+2010-04-28  Mike Stump  <mikestump@comcast.net>
+
+       * config/i386/darwin.h (CC1_SPEC): Ignore -mdynamic-no-pic for now.
+
+2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * lto-streamer-in.c (unpack_ts_type_value_fields): Replace test for
+       record or union type with RECORD_OR_UNION_TYPE_P predicate.
+       (lto_input_ts_type_tree_pointers): Likewise.
+       * lto-streamer-out.c (pack_ts_type_value_fields): Likewise.
+       (lto_output_ts_type_tree_pointers): Likewise.
+
+2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Uniquization of constants at the Tree level
+       * tree.h (DECL_IN_CONSTANT_POOL): New macro.
+       (tree_decl_with_vis): Add in_constant_pool bit, move shadowed_for_var_p
+       bit to the end.
+       (tree_output_constant_def): Declare.
+       * gimplify.c (gimplify_init_constructor): When using block copy, first
+       uniquize the constant constructor on the RHS.
+       * lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Deal with
+       DECL_IN_CONSTANT_POOL flag.
+       * lto-streamer-out.c (pack_ts_decl_with_vis_value_fields): Likewise.
+       * varasm.c (make_decl_rtl): Deal with variables belonging to the global
+       constant pool.
+       (assemble_variable): Deal with symbols belonging to the tree constant
+       pool.
+       (get_constant_section): Add ALIGN parameter and simplify.
+       (build_constant_desc): Build a VAR_DECL and attach it to the symbol.
+       (assemble_constant_contents): Use the expression of the VAR_DECL.
+       (output_constant_def_contents): Use the alignment of the VAR_DECL.
+       (tree_output_constant_def): New global function.
+       (mark_constant): Use the expression of the VAR_DECL.
+       (place_block_symbol): Use the alignment of the VAR_DECL and the size of
+       its expression.
+       (output_object_block): Likewise and assemble the expression.
+
+2010-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * lto-streamer.c [LTO_STREAMER_DEBUG] (tree_htab, tree_hash_entry,
+       hash_tree, eq_tree): New tree hash table.
+       (lto_streamer_init) [LTO_STREAMER_DEBUG]: Initialize it.
+       [LTO_STREAMER_DEBUG] (lto_orig_address_map, lto_orig_address_get,
+       lto_orig_address_remove): Reimplement.
+
+2010-04-28  Xinliang David Li  <davidxl@google.com>
+
+       PR c/42643
+       * tree-ssa-uninit.c (can_skip_redundant_opnd): New function.
+       (compute_uninit_opnds_pos): New function.
+       (is_non_loop_exit_postdominating): New function.
+       (compute_control_dep_chain): New function.
+       (find_pdom): New function.
+       (convert_control_dep_chain_into_preds): New function.
+       (find_predicates): New function.
+       (find_control_equiv_block): New function.
+       (collect_phi_def_edges): New function.
+       (find_def_preds): New function.
+       (find_dom): New function.
+       (dump_predicates): New function.
+       (get_cmp_code): New function.
+       (is_value_included_in): New function.
+       (find_matching_predicate_in_rest_chains): New function.
+       (use_pred_not_overlap_with_undef_path_pred): New function.
+       (is_use_properly_guarded): New function.
+       (normalize_cond_1): New function.
+       (is_and_or_or): New function.
+       (normalize_cond): New function.
+       (is_gcond_subset_of): New function.
+       (is_subset_of_any): New function.
+       (is_or_set_subset_of): New function.
+       (is_and_set_subset_of): New function.
+       (is_norm_cond_subset_of): New function.
+       (is_pred_expr_subset_of): New function.
+       (is_pred_chain_subset_of): New function.
+       (is_included_in): New function.
+       (is_superset_of): New function.
+       (find_uninit_use): New function.
+       (warn_uninitialized_phi): New function.
+       (compute_possibly_undefined_names): New function.
+       (ssa_undefined_value_p): New function.
+       (execute_late_warn_uninitialized): New function.
+       * tree-ssa.c (ssa_undefined_value_p): Removed.
+       (warn_uninit): Changed to extern.
+       (warn_uninitialized_phi): Removed.
+       (warn_uninitialized_vars): Changed to extern.
+       (execute_late_warn_uninitialized): Removed
+       * tree-flow.h: Add new prototypes.
+       * timevar.def: Add new time variable.
+       * Makefile.in: Add new build file.
+
+2010-04-28  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
+       type if available.
+
+2010-04-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR target/22224
+       * config/alpha/osf5.h (ASM_OUTPUT_LOCAL): Redefine.
+
+2010-04-28  Martin Jambor  <mjambor@suse.cz>
+
+       * cgraph.h (struct cgraph_node): New field indirect_calls.
+       (struct cgraph_indirect_call_info): New type.
+       (struct cgraph_edge): Removed field indirect_call. New fields
+       indirect_info, indirect_inlining_edge and indirect_unknown_callee.
+       (cgraph_create_indirect_edge): Declare.
+       (cgraph_make_edge_direct): Likewise.
+       (enum LTO_cgraph_tags): New item LTO_cgraph_indirect_edge.
+       * ipa-prop.h (struct ipa_param_call_note): Removed.
+       (struct ipa_node_params): Removed field param_calls.
+       (ipa_create_all_structures_for_iinln): Declare.
+       * cgraph.c: Described indirect edges and uids in initial comment.
+       (cgraph_add_edge_to_call_site_hash): New function.
+       (cgraph_edge): Search also among the indirect edges, use
+       cgraph_add_edge_to_call_site_hash to add edges to the call site hash.
+       (cgraph_set_call_stmt): Possibly turn an indirect edge into a direct
+       one, use cgraph_add_edge_to_call_site_hash to add edges to the call
+       site hash.
+       (initialize_inline_failed): Assign a reason to indirect edges.
+       (cgraph_create_edge_1): New function.
+       (cgraph_create_edge): Moved some functionality to
+       cgraph_create_edge_1.
+       (cgraph_create_indirect_edge): New function.
+       (cgraph_edge_remove_callee): Add an assert checking for
+       non-indirectness.
+       (cgraph_edge_remove_caller): Special-case indirect edges.
+       (cgraph_remove_edge): Likewise.
+       (cgraph_set_edge_callee): New function.
+       (cgraph_redirect_edge_callee): Use cgraph_set_edge_callee.
+       (cgraph_make_edge_direct): New function.
+       (cgraph_update_edges_for_call_stmt_node): Do nothing only when also
+       the declaration of the call statement matches.
+       (cgraph_node_remove_callees): Special-case indirect edges.
+       (cgraph_clone_edge): Likewise.
+       (cgraph_clone_node): Clone also the indirect edges.
+       (dump_cgraph_node): Dump indirect_inlining_edge flag instead of
+       indirect_call, dump count of indirect_calls edges.
+       * ipa-prop.c (iinlining_processed_edges): New variable.
+       (ipa_note_param_call): Create indirect edges instead of
+       creating notes.  New parameter node.
+       (ipa_analyze_call_uses): New parameter node, pass it on to
+       ipa_note_param_call.
+       (ipa_analyze_stmt_uses): Likewise.
+       (ipa_analyze_params_uses): Pass node to ipa_analyze_stmt_uses.
+       (print_edge_addition_message): Work on edges rather than on notes.
+       (update_call_notes_after_inlining): Likewise, renamed to
+       update_indirect_edges_after_inlining.
+       (ipa_create_all_structures_for_iinln): New function.
+       (ipa_free_node_params_substructures): Do not free notes.
+       (ipa_edge_duplication_hook): Propagate bits within
+       iinlining_processed_edges bitmap.
+       (ipa_node_duplication_hook): Do not duplicate notes.
+       (free_all_ipa_structures_after_ipa_cp): Renamed to
+       ipa_free_all_structures_after_ipa_cp.
+       (free_all_ipa_structures_after_iinln): Renamed to
+       ipa_free_all_structures_after_iinln.g
+       (ipa_write_param_call_note): Removed.
+       (ipa_read_param_call_note): Removed.
+       (ipa_write_indirect_edge_info): New function.
+       (ipa_read_indirect_edge_info): Likewise.
+       (ipa_write_node_info): Do not stream notes, do stream information
+       in indirect edges.
+       (ipa_read_node_info): Likewise.
+       (lto_ipa_fixup_call_notes): Removed.
+       * ipa-cp.c (pass_ipa_cp): Set stmt_fixup to NULL.
+       * ipa-inline.c (pass_ipa_inline): Likewise.
+       * cgraphunit.c (verify_cgraph_node): Check also indirect edges.
+       * cif-code.def (INDIRECT_UNKNOWN_CALL): New reason.
+       * tree-inline.c (copy_bb): Removed an unnecessary double check for
+       is_gimple_call.
+       * tree-inline.c (get_indirect_callee_fndecl): Do not consider indirect
+       edges.
+       * lto-cgraph.c (output_outgoing_cgraph_edges): New function.
+       (output_cgraph): Stream also indirect edges.
+       (lto_output_edge): Added capability to stream indirect edges.
+       (input_edge): Likewise.
+       (input_cgraph_1): Likewise.
+       * lto-streamer-in.c (fixup_call_stmt_edges_1): Fixup also statements
+       of indirect edges.
+
+2010-04-28  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/43879
+       PR tree-optimization/43909
+       * tree-ssa-structalias.c (struct variable_info): Add
+       only_restrict_pointers flag.
+       (new_var_info): Initialize it.  Increment stats.total_vars here.
+       (create_function_info_for): Do not increment stats.total_vars
+       here.
+       (get_function_part_constraint): Fix build with C++.
+       (insert_into_field_list): Remove.
+       (push_fields_onto_fieldstack): Properly merge fields.
+       (create_variable_info_for): Split and simplify.
+       (create_variable_info_for_1): New piece.
+       (intra_create_variable_infos): Properly make restrict constraints
+       from parameters.
+
 2010-04-28  Richard Guenther  <rguenther@suse.de>
 
        PR c++/43880
        * config/i386/mingw-w64.h (SUB_LINK_ENTRY): New macro.
        (SUB_LINK_ENTRY32): New.
        (SUB_LINK_ENTRY64): New.
-       (LINK_SPEC): Replace entry point spec by
-       SUB_LINK_ENTRY.
+       (LINK_SPEC): Replace entry point spec by SUB_LINK_ENTRY.
        * config/i386/mingw32 (SUB_LINK_ENTRY32): New.
        (SUB_LINK_ENTRY64): New.
        (SUB_LINK_ENTRY): New.
        (estimate_num_insns): Special case more builtins.
 
 2010-04-27  Shujing Zhao  <pearly.zhao@oracle.com>
-       
+
        PR c/32207
        * c-typeck.c (build_binary_op): Move forward check for comparison
        pointer with null pointer constant and adjust the diagnostic message.
 
 2010-04-26  Ira Rosen  <irar@il.ibm.com>
 
-       * tree-vectorizer.h (struct _stmt_vec_info): Add new field to 
-       determine if the statement is vectorizable, and a macro to 
-       access it.
-       * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): 
-       Skip statements that can't be vectorized. If the analysis 
-       fails, mark the statement as unvectorizable if vectorizing 
-       basic block.
+       * tree-vectorizer.h (struct _stmt_vec_info): Add new field to
+       determine if the statement is vectorizable, and a macro to access it.
+       * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
+       Skip statements that can't be vectorized. If the analysis fails,
+       mark the statement as unvectorizable if vectorizing basic block.
        (vect_compute_data_refs_alignment): Likewise.
-       (vect_verify_datarefs_alignment): Skip statements marked as 
+       (vect_verify_datarefs_alignment): Skip statements marked as
        unvectorizable. Add print.
-       (vect_analyze_group_access): Skip statements that can't be 
-       vectorized. If the analysis fails, mark the statement as 
+       (vect_analyze_group_access): Skip statements that can't be
+       vectorized. If the analysis fails, mark the statement as
        unvectorizable if vectorizing basic block.
-       (vect_analyze_data_ref_accesses, vect_analyze_data_refs): 
-       Likewise.
-       * tree-vect-stmts.c (vectorizable_store): Fix the number of 
+       (vect_analyze_data_ref_accesses, vect_analyze_data_refs): Likewise.
+       * tree-vect-stmts.c (vectorizable_store): Fix the number of
        generated stmts for SLP.
        (new_stmt_vec_info): Initialize the new field.
-       * tree-vect-slp.c (vect_build_slp_tree): Fail to vectorize 
+       * tree-vect-slp.c (vect_build_slp_tree): Fail to vectorize
        statements marked as unvectorizable.
 
 2010-04-25  Joseph Myers  <joseph@codesourcery.com>
        (input_overwrite_node): Input new flags.
        * passes.c (ipa_write_summaries): Do not call
        lto_new_extern_inline_states.
-       * lto-section-out.c (forced_extern_inline, lto_new_extern_inline_states,
-       lto_delete_extern_inline_states, lto_force_functions_extern_inline,
-       lto_forced_extern_inline_p): Kill.
+       * lto-section-out.c (forced_extern_inline,
+       lto_new_extern_inline_states lto_delete_extern_inline_states,
+       lto_force_functions_extern_inline, lto_forced_extern_inline_p): Kill.
        * lto-streamer.h (lto_new_extern_inline_states,
        * lto_delete_extern_inline_states, lto_force_functions_extern_inline,
        lto_forced_extern_inline_p): Kill.
        * double-int.h (HOST_BITS_PER_DOUBLE_INT): Define.
        (double_int_not, double_int_lshift, double_int_rshift): Declare.
        (double_int_negative_p): Convert to static inline function.
-       * double-int.c (double_int_lshift, double_int_lshift): Add new function.
+       * double-int.c (double_int_lshift, double_int_lshift): New functions.
        (double_int_negative_p): Remove.
        * tree.h (lshift_double, rshift_double):
        * tree.c (build_low_bits_mask): Clean up, use double_int_* functions.