aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa.c
AgeCommit message (Collapse)AuthorFilesLines
2012-04-18cgraph.h (verify_symtab, [...]): Declare.Jan Hubicka1-7/+9
* cgraph.h (verify_symtab, verify_symtab_node, verify_symtab_base): Declare. * cgraphunit.c (verify_cgraph_node): Verify symtab base; do not verify cgraph hash and same comdat groups. (cgraph_optimize); Verify symbol table. * ipa.c (cgraph_remove_unreachable_nodes): Verify symbol table. (dissolve_same_comdat_group_list): Work on symtab nodes. (function_and_variable_visibility): Dissolve variable same comdat group lists, too. * symtab.c: Include timevar.h (verify_symtab_base, verify_symtab_node, verify_symtab): New functions. From-SVN: r186578
2012-04-18lto-symtab.c (lto_cgraph_replace_node): Update.Jan Hubicka1-11/+11
* lto-symtab.c (lto_cgraph_replace_node): Update. * cgraphbuild.c (record_reference, record_type_list, record_eh_tables, mark_address, mark_load, mark_store): Update. * cgraph.c (cgraph_same_body_alias, dump_cgraph_node, cgraph_create_virtual_clone, cgraph_for_node_thunks_and_aliases): Update. * cgraph.h (symtab_node_def, symtab_node, const_symtab_node): Remove. (cgraph_alias_aliased_node, varpool_alias_aliased_node): Update. * reload.c: Fix typo in comment. * rtlanal.c: Likewise. * tree-emultls.c (gen_emutls_addr): Update. * ipa-reference.c (analyze_function): Update. * cgraphunit.c (cgraph_analyze_function, cgraph_process_same_body_aliases, assemble_thunks_and_aliases): Update. * ipa-ref.c (ipa_record_reference): Reorg to avoid reference types. (ipa_remove_reference): Likewise. (ipa_remove_all_refering): Rename to ... (ipa_remove_all_referring): ... this one; update. (ipa_dump_references): Update. (ipa_dump_referring): Update. (ipa_clone_references): Update. (ipa_clone_refering): Rename to ... (ipa_clone_referring): ... this one; update. (ipa_ref_cannot_lead_to_return): Update. (ipa_ref_has_aliases_p): Update. * ipa-ref.h (symtab_node_def, symtab_node, const_symtab_node): New forward typedefs. (ipa_ref_type): Remove. (ipa_ref_ptr_u): Remove. (ipa_ref): Remove referencing, refered, refered_index, refering_type and refered_type; add referring, referred and referred_index. (ipa_ref_list): Rename refering to referring. (ipa_record_reference, ipa_remove_all_referring, ipa_dump_referring, ipa_clone_references, ipa_clone_referring): Update prototypes. * lto-cgraph.c (referenced_from_other_partition_p): Update. (lto_output_ref): Update. (add_references): Update. (input_varpool_node): Update. (input_refs): Update. * ipa-ref-inline.h (ipa_ref_node): Update. (ipa_ref_varpool_node): Update. (ipa_ref_referring_node); Update. (ipa_ref_referring_varpool_node): Update. (ipa_ref_referring_ref_list); Update. (ipa_ref_referred_ref_list): Update. (ipa_ref_list_first_referring): Update. (ipa_empty_ref_list): Update. (ipa_ref_list_refering_iterate): Rename to ... (ipa_ref_list_referring_iterate): ... this one. * cse.c: Update comment. * ipa-utils.c (ipa_reverse_postorder): Update. * tree-ssa-alias.c: Update. * ipa-inline.c (reset_edge_caches): Update. (update_caller_keys): Update. * ipa-inline.h: Update comments. * jump.c: Update comment. * alias.c: Likewise. * ipa.c (process_references): Update. (cgraph_remove_unreachable_nodes): Likewise. (ipa_discover_readonly_nonaddressable_var): Likewise. (cgraph_address_taken_from_non_vtable_p): Likewise. * trans-mem.c (ipa_tm_execute): Update. * simplify-rtx.c: Fix comment. * rtl.c: Fix comment. * symtab.c (symtab_unregister_node): Update. * varpool.c (dump_varpool_node): Update. (varpool_analyze_pending_decls): Update. (assemble_aliases): Update. (varpool_for_node_and_aliases): Update. From-SVN: r186564
2012-04-18cgraph.c (cgraph_node_name): Remove.Jan Hubicka1-2/+2
* cgraph.c (cgraph_node_name): Remove. (dump_cgraph_node): Use dump_symtab_base; reformat. * cgraph.h (symtab_node_asm_name, symtab_node_name, dump_symtab, debug_symtab, dump_symtab_node, debug_symtab_node, dump_symtab_base): Declare. (cgraph_node_name, varpool_node_name): Remove. (cgraph_node_asm_name, varpool_node_asm_name, cgraph_node_name, varpool_node_name): New. * tree-pass.h (TODO_dump_cgraph): Rename to ... (TODO_dump_symtab): ... this one. * ipa-cp (pass_ipa_cp): Update. * ia-reference.c (generate_summary, read_write_all_from_decl, propagate, ipa_reference_read_optimization_summary): Update. * cgraphunit.c (cgraph_analyze_functions): Update. (cgraph_optimize): Update. * ipa-ref.c (ipa_dump_references): Update. (ipa_dump_refering): Update. * ipa-inline.c (pass_ipa_inline): Update. * matrix-reorg.c (pass_ipa_matrix_reorg): Update. * ipa.c (pass_ipa_function_visibility, pass_ipa_whole_program_visibility): Update. * tree-sra.c (pass_early_ipa_sra): Update. * symtab.c: Include langhooks.h (symtab_node_asm_name): New. (symtab_node_name): New. (symtab_type_names): New static var. (dump_symtab_base): New. (dump_symtab_node, dump_symtab): New. (debug_symtab_node, debug_symtab): New. * tree-ssa-structalias.c: Dump symbol table. * pases.c (execute_todo): Handle TODO_dump_symtab instead of TODO_dump_cgraph. * varpoo.c (varpool_node_name): Remove. (dump_varpool_node): Use dump_symtab_base; reformat. From-SVN: r186559
2012-04-16cgraph.h (symtab_node_base): Add next and previous pointers.Jan Hubicka1-4/+4
* cgraph.h (symtab_node_base): Add next and previous pointers. (cgraph_node): Remove next and preivous pointers. (varpool_node): Likewise; remove next/previous GTY marker; it is not type safe. (symtab_node_def): Update GTY marker (x_cgraph_nodes, cgraph_nodes): Remove. (symtab_nodes): New function. (cgraph_order): Rename to ... (symtab_order): ... this one. (symtab_register_node, symtab_unregister_node, symtab_remove_node): Declare. (x_varpool_nodes, varpool_nodes): Remove. (FOR_EACH_STATIC_VARIABLE): Update. (symtab_function_p, symtab_variable_p): New function. (FOR_EACH_VARIABLE): Update. (varpool_first_variable, varpool_next_variable): New functions. (FOR_EACH_VARIABLE): Update. (cgraph_first_defined_function): Update. (cgraph_next_defined_function, cgraph_next_defined_function): Update. (FOR_EACH_DEFINED_FUNCTION, FOR_EACH_FUNCTION): Update. (cgraph_first_function, cgraph_next_function): New. (FOR_EACH_FUNCTION): Update. (cgraph_first_function_with_gimple_body, cgraph_next_function_with_gimple_body): Update. * symtab.c: New file. * cgraph.c: Update copyright dates. (x_cgraph_nodes, cgraph_order): Remove. (NEXT_FREE_NODE): Update. (SET_NEXT_FREE_NODE): New. (cgraph_create_node_1): Remove common code. (cgraph_create_node); Remove common code; call symtab_register_node. (cgraph_remove_node): Remove common code; call symtab_unregister-node. (cgraph_add_asm_node); update. (cgraph_clone_node): Register new node. * cgraphunit.c (process_function_and_variable_attributes): Update. (cgraph_analyze_functions): Update. (cgraph_analyze_functions): Update. (cgraph_output_in_order): Update. * lto-cgraph.c (input_node, input_varpool_node, input_cgraph_1): Update. * ipa-inline.c (recursive_inlining); update. * lto-streamer-in.c (lto_input_toplevel_asms); Update. * ipa.c (cgraph_remove_unreachable_nodes): Update. * Makefile.in: Add symtab.o * varpool.c (x_varpool_nodes): Remove (varpool_node): Remove common code; call symtab_register_node. (varpool_remove_node); Remove common code; call symtab_unregister_node. From-SVN: r186496
2012-04-16cgraph.h (FOR_EACH_VARIABLE, [...]): New macros.Jan Hubicka1-21/+20
* cgraph.h (FOR_EACH_VARIABLE, FOR_EACH_VARIABLE, FOR_EACH_FUNCTION): New macros. * lto-symtab.c (lto_symtab_merge_cgraph_nodes): Use FOR_EACH walkers to walk cgraph and varpool. * cgraph.c (cgraph_node_for_asm): Likewise. (dump_cgraph): Likewise. * value-prof.c (init_node_map): Likewise. * tree.c (free_lang_data_in_cgraph): Likewise. * tree-emutls.c: (ipa_lower_emutls): Likewise. * ipa-reference.c (generate_summary, propagate): Likewise. * cgraphunit.c (verify_cgraph, cgraph_process_same_body_aliases, cgraph_mark_functions_to_output, cgraph_output_in_order, output_weakrefs, cgraph_materialize_all_clones, cgraph_optimize): Likewise. * lto-cgraph.c (merge_profile_summaries): Likewise. (input_cgraph): Likewise. * ipa-pure-const.c (generate_summary): Likewise. (propagate): Likwise. * ipa-utils.c (ipa_reduced_postorder): Likewise. (ipa_free_postorder_info): Likewise. (ipa_reverse_postorder): Likewise. * ipa-inline.c (ipa_inline): Likewise. * matrix-reorg.c (find_matrices_decl): Likewise. (matrix_reorg): Likewise. * tree-vectorizer.c (increase_alignment): Likewise. * ipa.c (cgraph_remove_unreachable_nodes): Likewise. (function_and_variable_visibility): Likewise. (whole_program_function_and_variable_visibility): Likewise. (ipa_cdtor_merge): Likewise. * trans-mem.c (ipa_tm_execute): Likewise. * ipa-inline-analysis.c (dump_inline_summaries): Likewise. * ipa-prop.c (ipa_print_all_jump_functions): Likewise. (ipa_print_all_params): Likewise. (ipa_update_after_lto_read): Likewise. * tree-profie.c (tree_profiling): Likewise. * tree-ssa-structalias.c (ipa_pta_execute): Likewise. * passes.c (dump_passes): Likewise. (do_per_function): Likewise. (ipa_write_summaries): Likewise. * varpool.c (dump_varpool): Likewise. (varpool_node_for_asm): Likewise. (varpool_assemble_pending_decls): Likewise. * decl2.c (collect_candidates_for_java_method_alias): Use FOR_EACH walkers to walk cgraph and varpool. * lto.c (read_cgraph_and_symbols): Use FOR_EACH walkers to walk cgraph and varpool. (materialize_cgraph): Likewise. * lto-partition.c (lto_1_to_1_map): Likewise. (lto_balanced_map): Likewise. (lto_promote_cross_file_statics): Likewise. From-SVN: r186492
2012-04-14cgraph.h: Update copyrights;Jan Hubicka1-151/+166
* cgraph.h: Update copyrights; (symtab_node): Turn to union typedef. (symtab_node_base): New structure. (symtab_type): Add SYMTAB_SYMBOL tag. * cgraph.c: Update references to fields (cgraph_hash, assembler_name_hash): Turn into symtab_node. (cgraph_local_info): Remove lto_file_data and externally_visible. (cgraph_node): Remove decl; same_comdat_group list; aux; ref_list; order; address_taken; reachable_from_other_parittion, in_other_partition; resolution. (varpool_node): Remove decl; same_comdat_group; ref_list; lto_file_data; aux; order; resolution; externally_visible; used_from_other_partition; in_other_partition. (symtab_node_def); New union. (cgraph, varpool): Update. (varpool_first_static_initializer, varpool_next_static_initializer, cgraph_only_called_directly_or_aliased_p, varpool_can_remove_if_no_refs, varpool_can_remove_if_no_refs, varpool_all_refs_explicit_p, cgraph_alias_aliased_node, varpool_alias_aliased_node, cgraph_edge_recursive_p): Update field references. * cgraph.c: Likewise. * cgraphbuild.c: Likewise. * lto-symtab.c: Likewise. * c-gimplify.c: Likewise. * value-prof.c: Likewise. * tree.c: Likewise. * ipa-cp.c: Likewise. * tree-emutls.c: Likewise. * ipa-inline-transform.c: Likwise. * ipa-reference.c: Likewise. * cgraphunit.c: Likewise. * ipa-ref.c: Likewise. * lto-cgraph.c: Likewise. * ipa-ref-inline.h: Likewise. * ipa-pure-const.c: Likewise. * lto-streamer-out.c: Likewise. * ipa-utils.c: Likewise. * ipa-inline.c: Likewise. * matrix-reorg.c: Likewise. * tree-eh.c: Likewise. * tree-vectorizer.c: Likewise. * ipa-split.c: Likewise. * ipa.c: Likewise. * trans-mem.c: Likewise. * ipa-inline-analysis.c: Likewise. * gimplify.c: Likewise. * cfgexpand.c: Likewise. * tree-sra.c: Likewise. * ipa-prop.c: Likewise. * varasm.c: Likewise. * tree-nested.c: Likewise. * tree-inline.c: Likewise. * tree-profile.c: Likewise. * tree-ssa-structalias.c: Likewise. * passes.c: Likewise. * varpool.c: Likewise. * tree.c: Update field referenced for new cgraph/varpool layout. * decl2.c: Likewise. * gcc-interface/trans.c (finalize_nrv): Update field referenced for new cgraph/varpool layout. * lto.c: Update field referenced for new cgraph/varpool layout. * lto-partition.c: Likewise. From-SVN: r186450
2012-03-25re PR middle-end/51663 (Desirable/undesirable elimination of unused ↵Jan Hubicka1-5/+4
variables & functions at -O0, -O0 -flto and -O0 -fwhole-program) PR lto/51663 * varpool.c (varpool_finalize_decl): Handle toplevel_reorder here. (decide_is_variable_needed): Do not handle toplevel reorder here. * cgraph.h (varpool_can_remove_if_no_refs): Likewise. * ipa.c (cgraph_remove_unreachable_nodes): Remove unreachable vars even at -O0. From-SVN: r185777
2011-12-02re PR lto/47259 (LTO and global register variable)Richard Guenther1-0/+2
2011-12-02 Richard Guenther <rguenther@suse.de> PR lto/47259 * ipa.c (varpool_externally_visible_p): Register variables are always externally visible. From-SVN: r181927
2011-11-14sw-1.c: Force rep;movsb.Zolotukhin Michael1-1/+1
* gcc.target/i386/sw-1.c: Force rep;movsb. * config/i386/i386.h (processor_costs): Add second dimension to stringop_algs array. * config/i386/i386.c (cost models): Initialize second dimension of stringop_algs arrays. (core_cost): New costs based on generic64 costs with updated stringop values. (promote_duplicated_reg): Add support for vector modes, add declaration. (promote_duplicated_reg_to_size): Likewise. (processor_target): Set core costs for core variants. (expand_set_or_movmem_via_loop_with_iter): New function. (expand_set_or_movmem_via_loop): Enable reuse of the same iters in different loops, produced by this function. (emit_strset): New function. (expand_movmem_epilogue): Add epilogue generation for bigger sizes, use SSE-moves where possible. (expand_setmem_epilogue): Likewise. (expand_movmem_prologue): Likewise for prologue. (expand_setmem_prologue): Likewise. (expand_constant_movmem_prologue): Likewise. (expand_constant_setmem_prologue): Likewise. (decide_alg): Add new argument align_unknown. Fix algorithm of strategy selection if TARGET_INLINE_ALL_STRINGOPS is set; Skip sse_loop (decide_alignment): Update desired alignment according to chosen move mode. (ix86_expand_movmem): Change unrolled_loop strategy to use SSE-moves. (ix86_expand_setmem): Likewise. (ix86_slow_unaligned_access): Implementation of new hook slow_unaligned_access. * config/i386/i386.md (strset): Enable half-SSE moves. * config/i386/sse.md (vec_dupv4si): Add expand for vec_dupv4si. (vec_dupv2di): Add expand for vec_dupv2di. Co-Authored-By: Jan Hubicka <jh@suse.cz> From-SVN: r181357
2011-10-02cgraphunit.c (ipa_passes): Remove unrechable nodes.Jan Hubicka1-6/+1
* cgraphunit.c (ipa_passes): Remove unrechable nodes. * lto-streamer-out.c (produce_symtab): Skip unused extern declarations. * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external functions are reachable when address is taken. * ipa-inline-analysis.c (reset_inline_edge_summary): New * gcc.dg/ipa/ctor-empty-1.c: Update dump file. From-SVN: r179429
2011-10-02re PR lto/47247 (Linker plugin specification makes it difficult to handle ↵Jan Hubicka1-0/+2
COMDATs) PR lto/47247 * lto-plugin.c (get_symbols_v2): New variable. (write_resolution): Use V2 API when available. (onload): Handle LDPT_GET_SYMBOLS_V2. * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve when resolution is already availbale from plugin. (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP. * cgraph.c (ld_plugin_symbol_resolution): Add prevailing_def_ironly_exp. * lto-cgraph.c (LDPR_NUM_KNOWN): Update. * ipa.c (varpool_externally_visible_p): IRONLY variables are never externally visible. * varasm.c (resolution_to_local_definition_p): Add LDPR_PREVAILING_DEF_IRONLY_EXP. (resolution_local_p): Likewise. * common.c (lto_resolution_str): Add new resolution. * common.h (lto_resolution_str): Likewise. From-SVN: r179424
2011-07-08cgraph.c (cgraph_add_to_same_comdat_group): New.Jason Merrill1-23/+6
gcc/ * cgraph.c (cgraph_add_to_same_comdat_group): New. * cgraph.h: Declare it. * ipa.c (function_and_variable_visibility): Make sure thunks have the right visibility. gcc/cp/ * method.c (use_thunk): Use cgraph_add_to_same_comdat_group. * optimize.c (maybe_clone_body): Likewise. * semantics.c (maybe_add_lambda_conv_op): Likewise. From-SVN: r176071
2011-06-27ipa.c (cgraph_address_taken_from_non_vtable_p): Walk references of node ↵Jan Hubicka1-3/+3
instead of references in node. * ipa.c (cgraph_address_taken_from_non_vtable_p): Walk references of node instead of references in node. From-SVN: r175555
2011-06-18lto-symtab.c (lto_varpool_replace_node): Remove code handling extra name ↵Jan Hubicka1-28/+2
aliases. * lto-symtab.c (lto_varpool_replace_node): Remove code handling extra name aliases. (lto_symtab_resolve_can_prevail_p): Likewise. (lto_symtab_merge_cgraph_nodes): Update alias_of pointers. * cgraphbuild.c (record_reference): Remove extra body alias code. (mark_load): Likewise. (mark_store): Likewise. * cgraph.h (varpool_node): Remove extra_name filed; add alias_of and extraname_alias. (varpool_create_variable_alias, varpool_for_node_and_aliases): Declare. (varpool_alias_aliased_node): New inline function. (varpool_variable_node): New function. * cgraphunit.c (handle_alias_pairs): Handle also variable aliases. * ipa-ref.c (ipa_record_reference): Allow aliases on variables. * lto-cgraph.c (lto_output_varpool_node): Update streaming. (input_varpool_node): Likewise. * lto-streamer-out.c (produce_symtab): Remove extra name aliases. (varpool_externally_visible_p): Remove extra body alias code. (function_and_variable_visibility): Likewise. * tree-ssa-structalias.c (associate_varinfo_to_alias_1): New function. (ipa_pta_execute): Use it. * varpool.c (varpool_remove_node): Remove extra name alias code. (varpool_mark_needed_node): Likewise. (varpool_analyze_pending_decls): Analyze aliases. (assemble_aliases): New functoin. (varpool_assemble_decl): Use it. (varpool_create_variable_alias): New function. (varpool_extra_name_alias): Rewrite. (varpool_for_node_and_aliases): New function. From-SVN: r175169
2011-06-15cgraphunit.c (handle_alias_pairs): New function.Jan Hubicka1-8/+0
* cgraphunit.c (handle_alias_pairs): New function. (cgraph_finalize_compilation_unit): Use it. * ipa.c (cgraph_externally_visible_p): Remove hack marking asm names as externally visible. From-SVN: r175079
2011-06-14* ipa.c (cgraph_address_taken_from_non_vtable_p): Check the ref type.Jan Hubicka1-8/+9
From-SVN: r175021
2011-06-14cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY similarly to ↵Jan Hubicka1-2/+2
DECL_COMDAT. * cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY similarly to DECL_COMDAT. * cgraphunit.c (cgraph_analyze_function): Likewise. * ipa.c (function_and_variable_visibility): Likewise. From-SVN: r175015
2011-06-12re PR middle-end/49373 (Many testcase failures)Jan Hubicka1-0/+2
PR middle-end/49373 * ipa.c (cgraph_externally_visible_p): Check resolution info. From-SVN: r174972
2011-06-12re PR middle-end/49378 (C++ is broken)Jan Hubicka1-1/+9
PR middle-end/49378 * ipa.c (cgraph_non_local_node_p_1, cgraph_local_node_p): Rule out aliases and thunks. From-SVN: r174969
2011-06-11* ipa.c (cgraph_comdat_can_be_unshared_p): Fix pasto.Jan Hubicka1-1/+1
From-SVN: r174954
2011-06-11lto-symtab.c (lto_cgraph_replace_node): Kill same body alias code.Jan Hubicka1-21/+5
* lto-symtab.c (lto_cgraph_replace_node): Kill same body alias code. (lto_symtab_resolve_can_prevail_p): Likewise. (lto_symtab_merge_cgraph_nodes): Update merging of aliases. * cgraph.c (same_body_aliases_done): New global var. (cgraph_same_body_alias_1): Rename to ... (cgraph_create_function_alias): ... this one; reorg to new representation. (cgraph_same_body_alias): Use cgraph_create_function_alias; record references when asked to. (cgraph_add_thunk): Fix formating. (cgraph_get_node): Kill same body alias code. (cgraph_node_for_asm): Likewise. (cgraph_remove_same_body_alias): Remove. (cgraph_remove_node): Kill same body alias code. (cgraph_mark_address_taken_node): Mark also the aliased function as having address taken. (dump_cgraph_node): Dump same body aliases. (cgraph_for_node_thunks_and_aliases): Update for new alias representation. (cgraph_for_node_and_aliases): Likewise. * cgraph.h (same_body): Kll pointer. (same_body_alias): Update comment. (same_body_aliases_done): Declare. (cgraph_remove_same_body_alias): Remove declaration. (cgraph_create_function_alias): Declare. (cgraph_process_same_body_aliases): Declare. (cgraph_function_with_gimple_body_p): Check for alias. (cgraph_can_remove_if_no_direct_calls_p): Look for aliases. (cgraph_alias_aliased_node): New function. (cgraph_function_node): Update for new aliases. (cgraph_function_or_thunk_node): Likewise. * ipa-inline-transform.c (can_remove_node_now_p): Look for aliases. (inline_call): Remove dead aliases. * cgraphunit.c (cgraph_decide_is_function_needed): Disable assembler name hack for same body aliases. (clone_of_p): Look through aliases. (verify_cgraph_node): Verify aliases. (cgraph_analyze_function): Analyze aliases; fixup C++ bugs. (cgraph_process_same_body_aliases): New function. (process_function_and_variable_attributes): Disable weakref warning on alias. (cgraph_analyze_functions): Handle aliases. (cgraph_mark_functions_to_output): Handle aliases same way as thunks. (assemble_thunks): Rename to ... (assemble_thunks_and_aliases): ... this one; handle aliases, too. (cgraph_expand_function): Remove alias output code. (cgraph_output_in_order): Skip aliases. (cgraph_preserve_function_body_p): Aliases don't need preserving. * ipa-ref.c (ipa_ref_use_name): Add alias reference. (ipa_record_reference): Do not assert on alias references. (ipa_ref_has_aliases_p): New function. * ipa-ref.h (enum ipa_ref_use): Add IPA_REF_ALIAS. (ipa_ref_has_aliases_p): Declare. * lto-cgraph.c (lto_output_node): Handle aliases. (input_node): Likewise. * lto-streamer-out.c (lto_output): Skip aliases. (produce_symtab): Kill same_body_alias code. * ipa-utils.c (ipa_reverse_postorder): Add FIXME. (ipa_reverse_postorder): Use cgraph_only_called_directly_or_aliased_p. * ipa-inline.c (update_caller_keys): Walk aliases. (inline_small_functions): Fix thinko in previous patch. * ipa.c (cgraph_externally_visible_p): Do not walk aliases. (function_and_variable_visibility): Do not walk same body aliases. * tree-ssa-structalias.c (associate_varinfo_to_alias): New function. (ipa_pta_execute): Use it. * lto.c (add_cgraph_node_to_partition_1): Break out from ... (add_cgraph_node_to_partition) ... here; walk aliases. (lto_1_to_1_map): Remove same body alias code. (promote_fn): Likewise. (lto_promote_cross_file_statics): Update comment. * decl2.c (cp_write_global_declarations): Process aliases; look trhough same body aliases. From-SVN: r174952
2011-06-10ipa.c (cgraph_non_local_node_p_1): Break out from ...;Jan Hubicka1-16/+33
* ipa.c (cgraph_non_local_node_p_1): Break out from ...; (cgraph_local_node_p): ... here; handle aliases. (has_addr_references_p): Break out from ...; (cgraph_remove_unreachable_nodes) ... here. From-SVN: r174925
2011-06-01Pass name cleanupsDavid Li1-1/+1
From-SVN: r174537
2011-05-25re PR middle-end/49062 (Many C++ tests ICE on Tru64 UNIX: non-DECL_ONE_ONLY ↵Jan Hubicka1-1/+1
node in a same_comdat_group list) 2011-05-25 Jan Hubicka <jh@suse.cz> PR middle-end/49062 * ipa.c (function_and_variable_visibility): Only add to same comdat group list if DECL_ONE_ONLY. From-SVN: r174180
2011-05-06cgraph.c (cgraph_add_thunk): Create real function node instead of alias node...Jan Hubicka1-0/+40
* cgraph.c (cgraph_add_thunk): Create real function node instead of alias node; finalize it and mark needed/reachale; arrange visibility to be right and add it into the corresponding same comdat group list. (dump_cgraph_node): Dump thunks. * cgraph.h (cgraph_first_defined_function, cgraph_next_defined_function, cgraph_function_with_gimple_body_p, cgraph_first_function_with_gimple_body, cgraph_next_function_with_gimple_body): New functions. (FOR_EACH_FUNCTION_WITH_GIMPLE_BODY, FOR_EACH_DEFINED_FUNCTION): New macros. * ipa-cp.c (ipcp_need_redirect_p): Thunks can't be redirected. (ipcp_generate_summary): Use FOR_EACH_FUNCTION_WITH_GIMPLE_BODY. * cgraphunit.c (cgraph_finalize_function): Only look into possible devirtualization when optimizing. (verify_cgraph_node): Verify thunks. (cgraph_analyze_function): Analyze thunks. (cgraph_mark_functions_to_output): Output thunks only in combination with function they are assigned to. (assemble_thunk): Turn thunk into non-thunk; don't try to turn alias into normal node. (assemble_thunks): New functoin. (cgraph_expand_function): Use it. * lto-cgraph.c (lto_output_node): Stream thunks. (input_overwrite_node): Stream in thunks. * ipa-pure-const.c (analyze_function): Thunks do nothing interesting. * lto-streamer-out.c (lto_output): Do not try to output thunk's body. * ipa-inline.c (inline_small_functions): Use FOR_EACH_DEFINED_FUNCTION. * ipa-inline-analysis.c (compute_inline_parameters): "Analyze" thunks. (inline_analyze_function): Do not care about thunk jump functions. (inline_generate_summary):Use FOR_EACH_DEFINED_FUNCTION. * ipa-prop.c (ipa_prop_write_jump_functions): Use cgraph_function_with_gimple_body_p. * passes.c (do_per_function_toporder): Use cgraph_function_with_gimple_body_p. (execute_one_pass);Use FOR_EACH_FUNCTION_WITH_GIMPLE_BODY. (ipa_write_summaries): Use cgraph_function_with_gimple_body_p. (function_called_by_processed_nodes_p): Likewise. * lto.c (lto_materialize_function): Use cgraph_function_with_gimple_body_p. (add_cgraph_node_to_partition): Do not re-add items to partition; handle thunks. (add_varpool_node_to_partition): Do not re-add items to partition. From-SVN: r173517
2011-05-03cgraph.h (cgraph_node_set_def, [...]): Move out of GTY; replace hash by ↵Jan Hubicka1-314/+0
pointer map. * cgraph.h (cgraph_node_set_def, varpool_node_set_def): Move out of GTY; replace hash by pointer map. (cgraph_node_set_element_def, cgraph_node_set_element, const_cgraph_node_set_element, varpool_node_set_element_def, varpool_node_set_element, const_varpool_node_set_element): Remove. (free_cgraph_node_set, free_varpool_node_set): New function. (cgraph_node_set_size, varpool_node_set_size): Use vector size. * tree-emutls.c: Free varpool node set. * ipa-utils.c (cgraph_node_set_new, cgraph_node_set_add, cgraph_node_set_remove, cgraph_node_set_find, dump_cgraph_node_set, debug_cgraph_node_set, free_cgraph_node_set, varpool_node_set_new, varpool_node_set_add, varpool_node_set_remove, varpool_node_set_find, dump_varpool_node_set, free_varpool_node_set, debug_varpool_node_set): Move here from ipa.c; implement using pointer_map * ipa.c (cgraph_node_set_new, cgraph_node_set_add, cgraph_node_set_remove, cgraph_node_set_find, dump_cgraph_node_set, debug_cgraph_node_set, varpool_node_set_new, varpool_node_set_add, varpool_node_set_remove, varpool_node_set_find, dump_varpool_node_set, debug_varpool_node_set): Move to ipa-uitls.c. * lto/lto.c (ltrans_partition_def): Remove GTY annotations. (ltrans_partitions): Move to heap. (new_partition): Update. (free_ltrans_partitions): New function. (lto_wpa_write_files): Use it. * passes.c (ipa_write_summaries): Update. From-SVN: r173334
2011-04-30cgraph.h (cgraph_postorder): Remove declaration.Martin Jambor1-77/+2
2011-04-29 Martin Jambor <mjambor@suse.cz> * cgraph.h (cgraph_postorder): Remove declaration. * ipa-utils.h (ipa_free_postorder_info): Declare. (ipa_reverse_postorder): Likewise. * cgraphunit.c: Include ipa-utils.h. (cgraph_expand_all_functions): Update call to ipa_reverse_postorder. * ipa-inline.c: Include ipa-utils.h. (ipa_inline): Update call to ipa_reverse_postorder. * ipa-pure-const.c (propagate_pure_const): Update call to ipa_reduced_postorder and ipa_print_order. Call ipa_free_postorder_info to clean up. (propagate_nothrow): Likewise. * ipa-reference.c (propagate): Removed a useless call to ipa_utils_reduced_inorder, updated a call to ipa_reduced_postorder and ipa_print_order. Call ipa_free_postorder_info to clean up. * ipa.c: Include ipa-utils.h. (ipa_profile): Update call to ipa_reverse_postorder. (cgraph_postorder): Moved to... * ipa-utils.c (ipa_reverse_postorder): ...here and renamed. (ipa_utils_print_order): Renamed to ipa_print_order. (ipa_utils_reduced_inorder): Renamed to ipa_reduced_postorder. Updated comments. (ipa_free_postorder_info): New function. * passes.c: Include ipa-utils.h. (do_per_function_toporder): Update call to ipa_reverse_postorder. (ipa_write_summaries): Likewise. * Makefile.in (passes.o): Add IPA_UTILS_H to dependencies. (cgraphunit.o): Likewise. (ipa.o): Likewise. (ipa-inline.o): Likewise. lto/ * lto.c: Include ipa-utils.h. (lto_balanced_map): Update call to ipa_reverse_postorder. * Make-lang.in (lto/lto.o): Add IPA_UTILS_H to dependencies. From-SVN: r173197
2011-04-16cgraphbuild.c: Include ipa-inline.h.Jan Hubicka1-5/+3
* cgraphbuild.c: Include ipa-inline.h. (reset_inline_failed): Use initialize_inline_failed. * cgraph.c: Include ipa-inline.h. (cgraph_create_node_1): Do not initialize estimated_growth. (initialize_inline_failed): More to ipa-inline-analysis.c (dump_cgraph_node): Do not dump inline flags. * cgraph.h (cgraph_local_info): Remove inlineable, versionable and disregard_inline_limits flags. (cgrpah_global_info): Remove estimated_stack_size, stack_frame_offset, time, size, estimated_growth. * ipa-cp.c (ipcp_versionable_function_p, ipcp_generate_summary): Update. * cgraphunit.c (cgraph_decide_is_function_needed): Use DECL_DISREGARD_INLINE_LIMITS. (cgraph_analyze_function): Do not initialize node->local.disregard_inline_limits. * lto-cgraph.c (lto_output_node, input_overwrite_node): Do not stream inlinable, versionable and disregard_inline_limits. * ipa-inline.c (cgraph_clone_inlined_nodes, cgraph_mark_inline_edge, cgraph_check_inline_limits, cgraph_default_inline_p, cgraph_edge_badness, update_caller_keys, update_callee_keys, add_new_edges_to_heap): Update. (cgraph_decide_inlining_of_small_function): Update; set CIF_FUNCTION_NOT_INLINABLE for uninlinable functions. (cgraph_decide_inlining, cgraph_edge_early_inlinable_p, cgraph_decide_inlining_incrementally): Update. * ipa-inline.h (inline_summary): Add inlinable, versionable, disregard_inline_limits, estimated_stack_size, stack_frame_offset, time, size and estimated_growth parameters. (estimate_edge_growth): Update. (initialize_inline_failed): Declare. * ipa-split.c: Include ipa-inline.h (execute_split_functions): Update. * ipa.c (cgraph_postorder): Use DECL_DISREGARD_INLINE_LIMITS. (cgraph_remove_unreachable_nodes): Do not clear inlinable flag. (record_cdtor_fn): Use DECL_DISREGARD_INLINE_LIMITS. * ipa-inline-analysis.c (inline_node_removal_hook): Update; set estimated_growth to INT_MIN. (inline_node_duplication_hook): Likewise. (dump_inline_summary): Dump new fields. (compute_inline_parameters): Update. (estimate_edge_time, estimate_time_after_inlining, estimate_size_after_inlining, estimate_growth, inline_read_summary, inline_write_summary): (initialize_inline_failed): Move here from cgraph.c. * tree-sra.c: Include ipa-inline.h. (ipa_sra_preliminary_function_checks): Update. * lto/lto.c (lto_balanced_map): Update. Update. * Makefile.in: (cgraph.o, cgraphbuild.o): Add dependency on ipa-inline.h From-SVN: r172581
2011-04-14cgraph.c (dump_cgraph_node): Do not dump inline summaries.Jan Hubicka1-0/+2
* cgraph.c (dump_cgraph_node): Do not dump inline summaries. * cgraph.h (struct inline_summary): Move to ipa-inline.h (cgraph_local_info): Remove inline_summary. * ipa-cp.c: Include ipa-inline.h. (ipcp_cloning_candidate_p, ipcp_estimate_growth, ipcp_estimate_cloning_cost, ipcp_insert_stage): Use inline_summary accesor. * lto-cgraph.c (lto_output_node): Do not stream inline summary. (input_overwrite_node): Do not set inline summary. (input_node): Do not stream inline summary. * ipa-inline.c (cgraph_decide_inlining): Dump inline summaries. (cgraph_decide_inlining_incrementally): Do not try to estimate overall growth; we do not have inline parameters computed for that anyway. (cgraph_early_inlining): After inlining compute call_stmt_sizes. * ipa-inline.h (struct inline_summary): Move here from ipa-inline.h (inline_summary_t): New type and VECtor. (debug_inline_summary, dump_inline_summaries): Declare. (inline_summary): Use VOCtor. (estimate_edge_growth): Kill hack computing call stmt size directly. * lto-section-in.c (lto_section_name): Add inline section. * ipa-inline-analysis.c: Include lto-streamer.h (node_removal_hook_holder, node_duplication_hook_holder): New holders (inline_node_removal_hook, inline_node_duplication_hook): New functions. (inline_summary_vec): Define. (inline_summary_alloc, dump_inline_summary, debug_inline_summary, dump_inline_summaries): New functions. (estimate_function_body_sizes): Properly compute size/time of outgoing calls. (compute_inline_parameters): Alloc inline_summary; do not compute size/time of incomming calls. (estimate_edge_time): Avoid missing time summary hack. (inline_read_summary): Read inline summary info. (inline_write_summary): Write inline summary info. (inline_free_summary): Free all hooks and inline summary vector. * lto-streamer.h: Add LTO_section_inline_summary section. * Makefile.in (ipa-cp.o, ipa-inline-analysis.o): Update dependencies. * ipa.c (cgraph_remove_unreachable_nodes): Fix dump file formating. * lto.c: Include ipa-inline.h (add_cgraph_node_to_partition, undo_partition): Use inline_summary accessor. (ipa_node_duplication_hook): Fix declaration. * Make-lang.in (lto.o): Update dependencies. From-SVN: r172430
2011-04-11except.c (set_nothrow_function_flags): Call cgraph_get_node instead of ↵Martin Jambor1-1/+1
cgraph_node. 2011-04-11 Martin Jambor <mjambor@suse.cz> * except.c (set_nothrow_function_flags): Call cgraph_get_node instead of cgraph_node. * final.c (rest_of_clean_state): Likewise. * gimple-iterator.c (update_call_edge_frequencies): Likewise. * passes.c (pass_init_dump_file): Likewise. (execute_all_ipa_transforms): Likewise. (function_called_by_processed_nodes_p): Likewise. * predict.c (maybe_hot_frequency_p): Likewise. (probably_never_executed_bb_p): Likewise. (compute_function_frequency): Likewise. * tree-nested.c (check_for_nested_with_variably_modified): Likewise. (unnest_nesting_tree_1): Likewise. (lower_nested_functions): Likewise. * tree-optimize.c (execute_fixup_cfg): Likewise. (tree_rest_of_compilation): Likewise. * tree-profile.c (gimple_gen_ic_func_profiler): Likewise. * tree-sra.c (ipa_early_sra): Likewise. * tree-ssa-loop-ivopts.c (computation_cost): Likewise. * config/i386/i386.c (ix86_compute_frame_layout): Likewise. * ipa.c (record_cdtor_fn): Likewise. * ipa-inline.c (cgraph_early_inlining): Likewise. (compute_inline_parameters_for_current): Likewise. * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. * ipa-pure-const.c (local_pure_const): Likewise. * ipa-split.c (split_function): Likewise. (execute_split_functions): Likewise. * cgraphbuild.c (build_cgraph_edges): Likewise. (rebuild_cgraph_edges): Likewise. (cgraph_rebuild_references): Likewise. (remove_cgraph_callee_edges): Likewise. * cgraphunit.c (cgraph_mark_if_needed): Likewise. (verify_cgraph_node): Likewise. (cgraph_analyze_functions): Likewise. (cgraph_preserve_function_body_p): Likewise. (save_inline_function_body): Likewise. (save_inline_function_body): Likewise. * tree-inline.c (copy_bb): Likewise. (optimize_inline_calls): Likewise. From-SVN: r172257
2011-03-11re PR middle-end/48044 (ICE in function_and_variable_visibility, at ipa.c:875)Jakub Jelinek1-2/+2
PR middle-end/48044 * ipa.c (cgraph_remove_unreachable_nodes): Enqueue all vnode->force_output nodes as needed. * gcc.dg/torture/pr48044.c: New test. From-SVN: r170873
2011-01-15re PR tree-optimization/47276 (ICE in function_and_variable_visibility, at ↵Jan Hubicka1-0/+2
ipa.c:857 during compiling glibc.) PR tree-optimization/47276 * ipa.c (function_and_variable_visibility): Do not try to mark alias declarations as needed. * gcc.dg/pr47276.c: New testcase. From-SVN: r168844
2011-01-08re PR tree-optimization/46469 (ICE: verify_cgraph_node failed: inline clone ↵Jan Hubicka1-2/+27
is needed at -O) PR tree-optmization/46469 * ipa.c (function_and_variable_visibility): Clear needed flags on nodes with external decls; handle weakrefs merging correctly. * g++.dg/torture/pr46469.C: New testcase. From-SVN: r168598
2010-12-23ipa.c (cgraph_remove_unreachable_nodes): Update former_clone_of even when ↵Martin Jambor1-2/+0
not checking. 2010-12-23 Martin Jambor <mjambor@suse.cz> * ipa.c (cgraph_remove_unreachable_nodes): Update former_clone_of even when not checking. From-SVN: r168209
2010-12-14This time really commit PR middle-end/45388Jan Hubicka1-6/+24
This time really commit PR middle-end/45388 * decl2.c (start_objects): Do not generate collect2 recognicable name for static ctor. * ipa.c (cgraph_build_static_cdtor_1): Break out from ... ; add FINAL parameter. (cgraph_build_static_cdtor): ... here. (build_cdtor): Use cgraph_build_static_cdtor_1. From-SVN: r167781
2010-12-05ipa.c (cgraph_externally_visible_p): Do not localize builtins and functions ↵Jan Hubicka1-0/+24
with user asm defined names. * ipa.c (cgraph_externally_visible_p): Do not localize builtins and functions with user asm defined names. (varpool_externally_visible_p): Do not localize vars with user asm defined names. From-SVN: r167465
2010-11-25cgraphunit.c (process_function_and_variable_attributes): Mark dllexport-ed ↵Kai Tietz1-1/+7
function/variables as needed. 2010-11-25 Kai Tietz <kai.tietz@onevision.com> * cgraphunit.c (process_function_and_variable_attributes): Mark dllexport-ed function/variables as needed. * ipa.c (cgraph_externally_visible_p): Make dllexport-ed as externally visible. 2010-11-25 Kai Tietz <kai.tietz@onevision.com> * gcc.dg/dll-8.c: New. From-SVN: r167144
2010-11-20cgraph.c (ld_plugin_symbol_resolution_names): New.Jan Hubicka1-21/+69
* cgraph.c (ld_plugin_symbol_resolution_names): New. (dump_cgraph_node): Dump resolution. * cgraph.h (ld_plugin_symbol_resolution_names): Declare. (cgraph_comdat_can_be_unshared_p): Dclare. * lto-streamer-out.c (produce_symtab): Use cgraph_comdat_can_be_unshared_p. * ipa.c (cgraph_address_taken_from_non_vtable_p): New function. (cgraph_comdat_can_be_unshared_p): New function based on logic in cgraph_externally_visible_p. (cgraph_externally_visible_p): Use it. (varpool_externally_visible_p): Virtual tables can be unshared. * varpool.c (dump_varpool_node): Dump resolution. From-SVN: r166985
2010-11-16cgraph.h (+varpool_can_remove_if_no_refs): Move here from ......Jan Hubicka1-11/+2
* cgraph.h (+varpool_can_remove_if_no_refs): Move here from ...; when !flag_toplevel_reorder do not remove unless variable is COMDAT or ARTIFICIAL. * ipa.c (varpool_can_remove_if_no_refs): ... here. (cgraph_remove_unreachable_nodes): Only analyzed nodes needs to stay. * cgraphunit.c (cgraph_analyze_functions): Dump varpool, too. * varpool.c (decide_is_variable_needed): Do not handle visibility issues. (varpool_finalize_decl): Likewise. (varpool_remove_unreferenced_decls): Use varpool_mark_needed_node; update outdated comment on DECL_RTL_SET_P check. From-SVN: r166812
2010-11-11invoke.texi (-fwhopr): Merge into -flto section.Jan Hubicka1-1/+1
* doc/invoke.texi (-fwhopr): Merge into -flto section. (-flto-partition): Document none. * gcc.c (LINK_COMMAND_SPEC): Remove -fwhopr. * lto-wrapper.c: Update comment. (run_gcc): Update LTO option parsing. * opts.c (finish_options): add support -flto-partition=none (common_handle_option): Remove fwhopr. * common.opt: Turn fwhopr into flto. * collect2.c (main): Update option handling. * cgraphunit.c (cgraph_decide_is_function_needed): Remove flag_whopr. * ipa-split.c (execute_split_functions): Remove flag_whopr. * ipa.c (function_and_variable_visibility): Remove flag_whopr. * ipa-prop.c (ipa_compute_jump_functions): Remove flag_whopr. * varpool.c (decide_is_variable_needed): Remove flag_whopr. * gcc.dg/20081223-1.c: Update LTO options. * gcc.dg/lto/20090206-1_0.c: Update LTO options. * gcc.dg/lto/20081118_0.c: Update LTO options. * gcc.dg/lto/ipareference_0.c: Update LTO options. * gcc.dg/lto/20100423-2_0.c: Update LTO options. * gcc.dg/lto/20081201-1_0.c: Update LTO options. * gcc.dg/lto/ipacp_0.c: Update LTO options. * gcc.dg/lto/20090116_0.c: Update LTO options. * gcc.dg/lto/20091015-1_0.c: Update LTO options. * gcc.dg/lto/20090126-2_0.c: Update LTO options. * gcc.dg/lto/20081202-2_0.c: Update LTO options. * gcc.dg/lto/20081204-1_0.c: Update LTO options. * gcc.dg/lto/const-uniq_0.c: Update LTO options. * gcc.dg/lto/20081224_0.c: Update LTO options. * gcc.dg/lto/20090219_0.c: Update LTO options. * gcc.dg/lto/ipareference2_0.c: Update LTO options. * gcc.dg/lto/20090206-2_0.c: Update LTO options. * gcc.dg/lto/20081115_0.c: Update LTO options. * gcc.dg/lto/20081201-2_0.c: Update LTO options. * gcc.dg/lto/20081120-2_0.c: Update LTO options. * gcc.dg/lto/materialize-1_0.c: Update LTO options. * gcc.dg/lto/20090126-1_0.c: Update LTO options. * gcc.dg/lto/20081202-1_0.c: Update LTO options. * gcc.dg/lto/noreturn-1_0.c: Update LTO options. * g++.dg/20090107-1.C: Update LTO options. * g++.dg/lto/pr45679-2_0.C: Update LTO options. * g++.dg/lto/20081123_0.C: Update LTO options. * g++.dg/lto/20090313_0.C: Update LTO options. * g++.dg/lto/20081125_0.C: Update LTO options. * g++.dg/lto/20081109-1_0.C: Update LTO options. * g++.dg/lto/20081219_0.C: Update LTO options. * g++.dg/lto/20100724-1_0.C: Update LTO options. * g++.dg/lto/20081204-1_0.C: Update LTO options. * g++.dg/lto/20090303_0.C: Update LTO options. * g++.dg/lto/20100723-1_0.C: Update LTO options. * g++.dg/lto/pr45679-1_0.C: Update LTO options. * g++.dg/lto/20090128_0.C: Update LTO options. * g++.dg/lto/20081204-2_0.C: Update LTO options. * g++.dg/lto/20090302_0.C: Update LTO options. * g++.dg/lto/20081119-1_0.C: Update LTO options. * g++.dg/lto/20081118_0.C: Update LTO options. * g++.dg/20090121-1.C: Update LTO options. * objc.dg/lto/lto.exp: Update LTO options. * lib/lto.exp: Update LTO options. * lib/gcc-dg.exp: Update LTO options. * lib/c-torture.exp: Update LTO options. * obj-c++.dg/lto/lto.exp: Update LTO options. From-SVN: r166625
2010-10-26ipa.c (process_references): Enqueue all referenced nodes; mark as reachable ↵Jan Hubicka1-13/+12
only non-external nodes. * ipa.c (process_references): Enqueue all referenced nodes; mark as reachable only non-external nodes. (cgraph_remove_unreachable_nodes): All referenced nodes should be enqueued; remove bogues node->needed check. From-SVN: r165990
2010-10-26ipa.c (cgraph_externally_visible_p, [...]): Use info provided by linker plugin.Jan Hubicka1-0/+19
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): Use info provided by linker plugin. From-SVN: r165978
2010-10-26re PR lto/45736 (ICE: in cgraph_remove_unreachable_nodes, at ipa.c:245 with ↵Jan Hubicka1-12/+31
-flto and attribute((constructor))) PR middle-end/45736 * cgraph.c (cgraph_set_readonly_flag): Rename to... (cgraph_set_const_flags) ... this one; get also looping argument; clear constructor/destructor flags. (cgraph_set_pure_flag): Likewise. (cgraph_set_looping_const_or_pure_flag): Remove. (cgraph_can_remove_if_no_direct_calls_and_refs): Do not try to optimize away static ctors/dtors; it does not work on inline clones; external functions can always be rmeoved. (cgraph_will_be_removed_from_program_if_no_direct_calls): Assert on inline clones; in LTO external functions always can go. (cgraph_used_from_object_file_p): Handle EXTERNAL functions correctly. (cgraph_mark_address_taken_node): Assert that we are not taking address of inline clone. (cgraph_can_remove_if_no_direct_calls_p): We always eventually remove external functions. * ipa-cp.c (ipcp_cloning_candidate_p): Do not clone functions with address taken. (ipcp_initialize_node_lattices): Only local functions can be handled without cloning. * cgraph.h (cgraph_set_readonly_flag, cgraph_set_looping_const_or_pure_flag): Remove. (cgraph_set_const_flag): Declare. (cgraph_set_pure_flag): Update. * ipa-pure-const (propagate_pure_const, local_pure_const): Update flags setting code. * ipa.c (cgraph_remove_unreachable_nodes): Fix formating; do not look at inline clones; fix handling of external definitions. (cgraph_postorder): Do not look at inline clones in the first pass. (function_and_variable_visibility): Drop constructors/destructor flags at pure and const functions. * tree-profile.c (tree_profiling): Update. * ipa-inline.c (cgraph_clone_inlined_nodes): Always clone functions with address taken; external functions do not account to whole program size. (cgraph_decide_inlining): Likewise; do not try to inline functions already inlined. * testsuite/gcc.dg/lto/pr45736_0.c: New function. From-SVN: r165972
2010-10-19ipa.c (cgraph_externally_visible_p): Handle externally visible and preserve ↵Jan Hubicka1-24/+64
flags before trying to guess on visibility. * ipa.c (cgraph_externally_visible_p): Handle externally visible and preserve flags before trying to guess on visibility. (varpool_externally_visible_p): New function. (function_and_variable_visibility): Use it. From-SVN: r165669
2010-10-18ipa.c (cgraph_externally_visible_p, [...]): Revert accidental commit.Jan Hubicka1-83/+24
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p, function_and_variable_visibility): Revert accidental commit. From-SVN: r165655
2010-10-16re PR middle-end/44206 (ICE: Inline clone with address taken)Jan Hubicka1-41/+112
PR middle-end/44206 * g++.dg/torture/pr44206.C: New. * ipa.c (cgraph_remove_unreachable_nodes): Cleanup; check existence of refrences before removing the function. From-SVN: r165569
2010-10-11vec.h (VEC_qsort): Define.Nathan Froyd1-8/+2
gcc/ * vec.h (VEC_qsort): Define. * dbxout.c (output_used_types): Use it. * df-scan.c (df_sort_and_compress_refs): Likewise. (df_sort_and_compress_mws): Likewise. * genautomata.c (uniq_sort_alt_states): Likewise. (evaluate_equiv_classes): Likewise. (output_trans_table): Likewise. (output_state): Likewise. * gimplify.c (compare_case_labels): Likewise. * graphite-sese-to-poly.c (graphite_sort_dominated_info): Likewise. * ipa.c (build_cdtor_fns): Likewise. * lto.c (lto_wpa_write_files): Likewise. * sel-sched.c (fill_vec_av_set): Likewise. * tree-predcom.c (determine_roots_comp): Likewise. * tree-sra.c (sort_and_spliace_var_accesses): Likewise. (splice_param_accesses): Likewise. * tree-ssa-live.c (dump_enumerated_decls): Likewise. * tree-ssa-reassoc.c (undistribute_ops_list): Likewise. (reassociate_bb): Likewise. * tree-ssa-sccvn.c (sort_scc): Likewise. * tree-ssa-structalias.c (sort_fieldstack): Likewise. gcc/ada/ * gcc-interface/utils2.c (gnat_build_constructor): Use VEC_qsort. From-SVN: r165314
2010-10-11re PR middle-end/45955 (FAIL: gcc.dg/initpri1.c (test for excess errors))John David Anglin1-1/+0
PR middle-end/45955 * ipa.c (build_cdtor): Delete endless loop. From-SVN: r165308
2010-10-07re PR middle-end/45926 (Revision 165057 breaks GOMP)Jan Hubicka1-13/+8
PR middle-end/45926 * ipa.c (cgraph_remove_unreachable_nodes): Revert my previous patch. From-SVN: r165090
2010-10-06ipa.c (cgraph_remove_unreachable_nodes): External references can always be ↵Jan Hubicka1-12/+21
removed. * ipa.c (cgraph_remove_unreachable_nodes): External references can always be removed. (cgraph_externally_visible_p): We can not bring local comdats that are known to linker; fix handling of internal visibility. (function_and_variable_visibility): Likewise. From-SVN: r165057