1. 13 Mar, 2018 1 commit
    • Fix PTA info in IPA ICF (PR ipa/84658). · 0dbacfcf
      2018-03-13  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/84658.
      	* (sem_item_optimizer::sem_item_optimizer): Initialize new
      	vector.
      	(sem_item_optimizer::~sem_item_optimizer): Release it.
      	(sem_item_optimizer::merge_classes): Register variable aliases.
      	(sem_item_optimizer::fixup_pt_set): New function.
      	(sem_item_optimizer::fixup_points_to_sets): Likewise.
      	* ipa-icf.h: Declare new variables and functions.
      2018-03-13  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/84658.
      	* g++.dg/ipa/pr84658.C: New test.
      
      From-SVN: r258480
      Martin Liska committed
  2. 03 Jan, 2018 1 commit
  3. 10 Jan, 2017 1 commit
    • Revert m_classes_vec introduction. · 3746a4b2
      2017-01-10  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
      	usage of m_classes_vec.
      	(sem_item_optimizer::~sem_item_optimizer):  Likewise.
      	(sem_item_optimizer::get_group_by_hash): Likewise.
      	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
      	(sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
      	(sem_item_optimizer::verify_classes): Likewise.
      	(sem_item_optimizer::process_cong_reduction): Likewise.
      	(sem_item_optimizer::dump_cong_classes): Likewise.
      	(sem_item_optimizer::merge_classes): Likewise.
      	* ipa-icf.h (congruence_class_hash): Rename from
      	congruence_class_group_hash.  Remove declaration of
      	m_classes_vec.
      
      From-SVN: r244272
      Martin Liska committed
  4. 01 Jan, 2017 1 commit
  5. 28 Nov, 2016 1 commit
    • re PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin) · df8391b4
      	PR lto/78211
      	* ipa-icf.h (sem_item_optimizer): Add m_classes_vec member.
      	* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Initialize
      	it.
      	(sem_item_optimizer::~sem_item_optimizer): Traverse m_classes_vec
      	vector instead of traversing m_classes hash table.  Release
      	m_classes_vec.
      	(sem_item_optimizer::read_section, sem_item_optimizer::add_class):
      	Formatting fixes.
      	(sem_item_optimizer::get_group_by_hash): When inserting a new group,
      	add it also to m_classes_vec vector.
      	(sem_item_optimizer::remove_symtab_node,
      	sem_item_optimizer::build_hash_based_classes,
      	sem_item_optimizer::parse_nonsingleton_classes): Formatting fixes.
      	(sem_item_optimizer::subdivide_classes_by_equality,
      	sem_item_optimizer::subdivide_classes_by_sensitive_refs,
      	sem_item_optimizer::verify_classes): Traverse m_classes_vec vector
      	instead of traversing m_classes hash table.  Formatting fixes.
      	(sem_item_optimizer::traverse_congruence_split,
      	sem_item_optimizer::do_congruence_step_for_index,
      	sem_item_optimizer::do_congruence_step): Formatting fixes.
      	(sem_item_optimizer::process_cong_reduction): Traverse m_classes_vec
      	vector instead of traversing m_classes hash table.
      	(sem_item_optimizer::dump_cong_classes): Likewise.  Formatting fixes.
      	(sem_item_optimizer::merge_classes): Traverse m_classes_vec vector
      	instead of traversing m_classes hash table.
      
      	* g++.dg/ipa/pr78211.C: New test.
      
      From-SVN: r242910
      Jakub Jelinek committed
  6. 22 Nov, 2016 1 commit
    • Add sem_item::m_hash_set (PR ipa/78309) · fedf2718
      	PR ipa/78309
      	* ipa-icf.c (void sem_item::set_hash): Update m_hash_set.
      	(sem_function::get_hash): Use the new field.
      	(sem_function::parse): Remove an argument from ctor.
      	(sem_variable::parse): Likewise.
      	(sem_variable::get_hash): Use the new field.
      	(sem_item_optimizer::read_section): Use new ctor and set hash.
      	* ipa-icf.h: _hash is removed from sem_item::sem_item,
      	sem_variable::sem_variable, sem_function::sem_function.
      
      From-SVN: r242687
      Martin Liska committed
  7. 04 Jan, 2016 1 commit
  8. 12 Nov, 2015 1 commit
    • re PR ipa/68035 (ipa performance issue when no procedures are present) · 808b6bb7
      Fix PR ipa/68035
      
      	PR ipa/68035
      	* ipa-icf.c (void sem_item::set_hash): New function.
      	(sem_function::get_hash): Use renamed m_hash member variable.
      	(sem_item::update_hash_by_addr_refs): Utilize get_hash.
      	(sem_item::update_hash_by_local_refs): Likewise.
      	(sem_variable::get_hash): Use renamed m_hash member variable.
      	(sem_item_optimizer::update_hash_by_addr_refs): Utilize get_hash.
      	(sem_item_optimizer::build_hash_based_classes): Utilize set_hash.
      	(sem_item_optimizer::build_graph): As the hash value of an item
      	is lazy initialized, force the calculation.
      	* ipa-icf.h (set_hash): Declare new function and rename hash member
      	variable to m_hash.
      	* gcc.dg/ipa/pr68035.c: New test.
      
      From-SVN: r230263
      Martin Liska committed
  9. 28 Oct, 2015 1 commit
    • [PATCH 7/9] ENABLE_CHECKING refactoring: middle-end, LTO FE · b2b29377
      [PATCH 7/9] ENABLE_CHECKING refactoring: middle-end, LTO FE
      gcc/lto/ChangeLog:
      2015-10-27  Mikhail Maltsev  <maltsevm@gmail.com>
      
      	* lto.c (unify_scc): Use flag_checking and remove ENABLE_CHECKING
      	conditionals.
      	(lto_fixup_state): Likewise.
      	(do_whole_program_analysis): Use
      	symtab_node::checking_verify_symtab_nodes and remove ENABLE_CHECKING
      	conditionals.
      
      gcc/ChangeLog:
      
      2015-10-27  Mikhail Maltsev  <maltsevm@gmail.com>
      
      	* attribs.c (check_attribute_tables): New function, broken out from...
      	(init_attributes): Use it.
      	* cfgcleanup.c (try_optimize_cfg): Use flag_checking, CHECKING_P
      	gcc_checking_assert and checking_* functions to eliminate
      	ENABLE_CHECKING conditionals.
      	* cfgexpand.c (expand_goto, expand_debug_expr): Likewise.
      	(pass_expand::execute): Likewise.
      	* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
      	* cgraphunit.c (mark_functions_to_output): Likewise.
      	(cgraph_node::expand_thunk): Likewise.
      	(symbol_table::compile): Likewise.
      	* ddg.c (add_cross_iteration_register_deps): Likewise.
      	(create_ddg_all_sccs): Likewise.
      	* df-core.c (df_finish_pass, df_analyze): Likewise.
      	* diagnostic-core.h: Likewise.
      	* diagnostic.c (diagnostic_report_diagnostic): Likewise.
      	* dominance.c (calculate_dominance_info): Likewise.
      	* dwarf2out.c (add_AT_die_ref): Likewise.
      	(const_ok_for_output_1, mem_loc_descriptor): Likewise.
      	(loc_list_from_tree, gen_lexical_block_die): Likewise.
      	gen_type_die_with_usage, gen_type_die): Likewise.
      	(dwarf2out_decl): Likewise.
      	* emit-rtl.c (verify_rtx_sharing, reorder_insns_nobb): Likewise.
      	* except.c (duplicate_eh_regions): Likewise.
      	* fwprop.c (register_active_defs, update_df_init): Likewise.
      	(fwprop_init, fwprop_done): Likewise.
      	(update_uses): Likewise.
      	* ggc-page.c (ggc_grow): Likewise.
      	* gimplify.c (gimplify_body): Likewise.
      	(gimplify_hasher::equal): Likewise.
      	* graphite-isl-ast-to-gimple.c (graphite_verify): Likewise.
      	* graphite-scop-detection.c (canonicalize_loop_closed_ssa_form):
      	Likewise.
      	* graphite-sese-to-poly.c (rewrite_reductions_out_of_ssa): Likewise.
      	(rewrite_cross_bb_scalar_deps_out_of_ssa): Likwise.
      	* hash-table.h (::find_empty_slot_for_expand): Likewise.
      	* ifcvt.c (if_convert): Likewise.
      	* ipa-cp.c (ipcp_propagate_stage): Likewise.
      	* ipa-devirt.c (type_in_anonymous_namespace_p): Likewise.
      	(odr_type_p, odr_types_equivalent_p): Likewise.
      	(add_type_duplicate, get_odr_type): Likewise.
      	* ipa-icf.c (sem_item_optimizer::execute): Likewise.
      	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
      	(sem_item_optimizer::verify_classes): Likewise.
      	(sem_item_optimizer::traverse_congruence_split): Likewise.
      	(sem_item_optimizer::checking_verify_classes): New.
      	* ipa-icf.h (sem_item_optimizer::checking_verify_classes): Add new
      	method.
      	* cfgrtl.c (commit_edge_insertions): Likewise.
      	(fixup_reorder_chain, cfg_layout_finalize): Likewise.
      	(rtl_flow_call_edges_add): Likewise.
      	* cgraph.c (symbol_table::create_edge): Likewise.
      	(cgraph_edge::redirect_call_stmt_to_callee): Likewise.
      	* cgraph.h (symtab_node): Likewise.
      	(symtab_node::checking_verify_symtab_nodes): Define.
      	(cgraph_node::checking_verify_cgraph_nodes): Define.
      	* cfghooks.h (checking_verify_flow_info): Define.
      	* cfgloop.h (checking_verify_loop_structure): Define.
      	* dominance.h (checking_verify_dominators): Define.
      	* et-forest.c: Fix comment.
      	* ipa-inline-analysis.c (compute_inline_parameters): Use flag_checking,
      	CHECKING_P gcc_checking_assert and checking_* functions to eliminate
      	ENABLE_CHECKING conditionals.
      	* ipa-inline-transform.c (save_inline_function_body): Likewise.
      	* ipa-inline.c (inline_small_functions): Likewise.
      	(early_inliner): Likewise.
      	* ipa-inline.h (estimate_edge_growth): Likewise.
      	* ipa-visibility.c (function_and_variable_visibility): Likewise.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
      	(ipa_single_use): Likewise.
      	* ira-int.h: Likewise.
      	* ira.c (ira): Likewise.
      	* loop-doloop.c (doloop_optimize_loops): Likewise.
      	* loop-init.c (loop_optimizer_init, fix_loop_structure): Likewise.
      	* loop-invariant.c (move_loop_invariants): Likewise.
      	* lra-assigns.c (lra_assign): Likewise.
      	* lra-constraints.c (lra_constraints): Likewise.
      	* lra-eliminations.c (lra_eliminate): Likewise.
      	* lra-int.h (struct lra_reg): Likewise.
      	* lra-lives.c (check_pseudos_live_through_calls): Likewise.
      	(lra_create_live_ranges_1): Likewise.
      	* lra-remat.c (create_remat_bb_data): Likewise.
      	* lra.c (lra_update_insn_recog_data, restore_scratches): Likewise.
      	(lra): Likewise.
      	(check_rtl): Always define. Remove incorrect guard around
      	extract_constrain_insn call.
      	* lto-cgraph.c (input_cgraph_1: Use flag_checking,
      	CHECKING_P gcc_checking_assert and checking_* functions to eliminate
      	ENABLE_CHECKING conditionals.
      	* lto-streamer-out.c (DFS::DFS): Likewise.
      	(lto_output): Likewise.
      	* lto-streamer.c (lto_streamer_init): Likewise.
      	* omp-low.c (scan_omp_target, expand_omp_taskreg): Likewise.
      	expand_omp_target, execute_expand_omp): Likewise.
      	(lower_omp_target): Likewise.
      	* passes.c (execute_function_todo): Likewise.
      	(execute_todo, execute_one_pass): Likewise.
      	(verify_curr_properties): Always define.
      	* predict.c (tree_estimate_probability: Use flag_checking,
      	CHECKING_P gcc_checking_assert and checking_* functions to eliminate
      	ENABLE_CHECKING conditionals.
      	(propagate_freq): Likewise.
      	* pretty-print.c (pp_format): Likewise.
      	* real.c (real_to_decimal_for_mode): Likewise.
      	* recog.c (split_all_insns): Likewise.
      	* regcprop.c (kill_value_one_regno): Likewise.
      	(copy_value): Likewise.
      	(validate_value_data): Define unconditionally.
      	* reload.c: Fix comment.
      	* timevar.c: Include options.h
      	* tree-ssa.h (checking_verify_ssa): Define.
      	* tree-ssa-loop-manip.h (checking_verify_loop_closed_ssa): Define.
      	* sched-deps.c (CHECK): Remove unused macro.
      	(add_or_update_dep_1, sd_add_dep: Use flag_checking, CHECKING_P
      	gcc_checking_assert and checking_* functions to eliminate
      	ENABLE_CHECKING conditionals.
      	* sel-sched-ir.c (free_regset_pool, tidy_control_flow): Likewise.
      	* sel-sched.c (struct moveop_static_params): Likewise.
      	(find_best_reg_for_expr, move_cond_jump): Likewise.
      	(move_op_orig_expr_not_found): Likewise.
      	(code_motion_process_successors, move_op): Likewise.
      	* ssa-iterators.h (first_readonly_imm_use): Likewise.
      	(next_readonly_imm_use): Likewise.
      	* store-motion.c (compute_store_table): Likewise.
      	* symbol-summary.h (function_summary::function_summary): Likewise.
      	* target.h (cumulative_args_t): Likewise.
      	(get_cumulative_args, pack_cumulative_args): Likewise.
      	* timevar.c: (timer::print): Likewise.
      	* trans-mem.c (ipa_tm_execute): Likewise.
      	* tree-cfg.c (move_stmt_op): Likewise.
      	(move_sese_region_to_fn): Likewise.
      	(gimple_flow_call_edges_add): Likewise.
      	* tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
      	Likewise.
      	* tree-eh.c (remove_unreachable_handlers): Likewise.
      	* tree-if-conv.c (pass_if_conversion::execute): Likewise.
      	* tree-inline.c (expand_call_inline, optimize_inline_calls): Likewise.
      	* tree-into-ssa.c (update_ssa): Likewise.
      	* tree-loop-distribution.c (pass_loop_distribution::execute): Likewise.
      	* tree-outof-ssa.c (eliminate_useless_phis, rewrite_trees): Likewise.
      	* tree-parloops.c (pass_parallelize_loops::execute): Likewise.
      	* tree-predcom.c (suitable_component_p): Likewise.
      	* tree-profile.c (gimple_gen_const_delta_profiler): Likewise.
      	* tree-ssa-alias.c (refs_may_alias_p_1): Likewise.
      	* tree-ssa-live.c (verify_live_on_entry): Likewise.
      	* tree-ssa-live.h (register_ssa_partition): Likewise.
      	* tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Likewise.
      	* tree-ssa-loop-manip.c (add_exit_phi): Likewise.
      	(tree_transform_and_unroll_loop): Likewise.
      	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
      	* tree-ssa-operands.c (get_expr_operands): Likewise.
      	* tree-ssa-propagate.c (replace_exp_1): Likewise.
      	* tree-ssa-structalias.c (rewrite_constraints): Likewise.
      	* tree-ssa-ter.c (free_temp_expr_table): Likewise.
      	* tree-ssa-threadupdate.c (duplicate_thread_path): Likewise.
      	* tree-ssanames.c (release_ssa_name_fn): Likewise.
      	* tree-stdarg.c (expand_ifn_va_arg): Likewise.
      	* tree-vect-loop-manip.c
      	(slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
      	(slpeel_checking_verify_cfg_after_peeling): Likewise.
      	(vect_do_peeling_for_loop_bound): Likewise.
      	(vect_do_peeling_for_alignment): Likewise.
      	* tree-vrp.c (supports_overflow_infinity): Likewise.
      	(set_value_range): Likewise.
      	* tree.c (free_lang_data_in_cgraph): Likewise.
      	* value-prof.c (gimple_remove_histogram_value): Likewise.
      	(free_hist): Likewise.
      	* var-tracking.c (canonicalize_values_star): Likewise.
      	(compute_bb_dataflow, vt_find_locations, vt_emit_notes): Likewise.
      
      From-SVN: r229470
      Mikhail Maltsev committed
  10. 20 Sep, 2015 1 commit
    • switch from gimple to gimple* · 355fe088
      This renames the gimple_statement_base struct to gimple removes the
      typedef of gimple_statement_base * to gimple, and then adjusts all of
      the places that use the type.
      
      gcc/ChangeLog:
      
      2015-09-19  Trevor Saunders  <tbsaunde@tbsaunde.org>
      
      	* coretypes.h (gimple): Change typedef to be a forward
      	declaration.
      	* gimple.h (gimple_statement_base): rename to gimple.
      	* (all functions and types using gimple): Adjust.
      	* *.[ch]: Likewise.
      
      gcc/cp/ChangeLog:
      
      2015-09-19  Trevor Saunders  <tbsaunde@tbsaunde.org>
      
      	* cp-gimplify.c (gimplify_must_not_throw_expr): Adjust.
      
      From-SVN: r227941
      Trevor Saunders committed
  11. 13 Jul, 2015 1 commit
  12. 25 Jun, 2015 3 commits
    • hash-map-traits.h (simple_hashmap_traits::key_type): New typedef. · fb5c464a
      gcc/
      	* hash-map-traits.h (simple_hashmap_traits::key_type): New typedef.
      	(unbounded_int_hashmap_traits::key_type): Likewise.
      	* hash-map.h (hash_map): Get the key type from the traits.
      	* hash-traits.h (default_hash_traits): By default, inherit from the
      	template parameter.
      	* alias.c (alias_set_traits): Delete.
      	(alias_set_entry_d::children): Use alias_set_hash as the first
      	template parameter.
      	(record_alias_subset): Update accordingly.
      	* except.c (tree_hash_traits): Delete.
      	(type_to_runtime_map): Use tree_hash as the first template parameter.
      	(init_eh): Update accordingly.
      	* genmatch.c (capture_id_map_hasher): Delete.
      	(cid_map_t): Use nofree_string_hash as first template parameter.
      	* ipa-icf.h (symbol_compare_hashmap_traits): Delete.
      	* ipa-icf.c (sem_item_optimizer::subdivide_classes_by_sensitive_refs):
      	Use symbol_compare_hash as the first template parameter in
      	subdivide_hash_map.
      	* mem-stats.h (mem_usage_pair::mem_alloc_hashmap_traits): Delete.
      	(mem_usage_pair::mem_map_t): Use mem_location_hash as the first
      	template parameter.
      	* passes.c (pass_registry_hasher): Delete.
      	(name_to_pass_map): Use nofree_string_hash as the first template
      	parameter.
      	(register_pass_name): Update accordingly.
      	* sanopt.c (sanopt_tree_map_traits): Delete.
      	(sanopt_tree_triplet_map_traits): Delete.
      	(sanopt_ctx::asan_check_map): Use tree_operand_hash as the first
      	template parameter.
      	(sanopt_ctx::vptr_check_map): Use sanopt_tree_triplet_hash as
      	the first template parameter.
      	* sese.c (rename_map_hasher): Delete.
      	(rename_map_type): Use tree_ssa_name_hash as the first template
      	parameter.
      	* symbol-summary.h (function_summary::summary_hashmap_traits): Delete.
      	(function_summary::m_map): Use map_hash as the first template
      	parameter.
      	(function_summary::release): Update accordingly.
      	* tree-if-conv.c (phi_args_hash_traits): Delete.
      	(predicate_scalar_phi): Use tree_operand_hash as the first template
      	parameter to phi_arg_map.
      	* tree-inline.h (dependence_hasher): Delete.
      	(copy_body_data::dependence_map): Use dependence_hash as the first
      	template parameter.
      	* tree-inline.c (remap_dependence_clique): Update accordingly.
      	* tree-ssa-strlen.c (stridxlist_hash_traits): Delete.
      	(decl_to_stridxlist_htab): Use tree_decl_hash as the first template
      	parameter.
      	(addr_stridxptr): Update accordingly.
      	* value-prof.c (profile_id_traits): Delete.
      	(cgraph_node_map): Use profile_id_hash as the first template
      	parameter.
      	(init_node_map): Update accordingly.
      	* config/alpha/alpha.c (string_traits): Delete.
      	(machine_function::links): Use nofree_string_hash as the first
      	template parameter.
      	(alpha_use_linkage, alpha_write_linkage): Update accordingly.
      	* config/m32c/m32c.c (pragma_traits): Delete.
      	(pragma_htab): Use nofree_string_hash as the first template parameter.
      	(m32c_note_pragma_address): Update accordingly.
      	* config/mep/mep.c (pragma_traits): Delete.
      	(pragma_htab): Use nofree_string_hash as the first template parameter.
      	(mep_note_pragma_flag): Update accordingly.
      	* config/mips/mips.c (mips16_flip_traits): Delete.
      	(mflip_mips16_htab): Use nofree_string_hash as the first template
      	parameter.
      	(mflip_mips16_use_mips16_p): Update accordingly.
      	(local_alias_traits): Delete.
      	(mips16_local_aliases): Use nofree_string_hash as the first template
      	parameter.
      	(mips16_local_alias): Update accordingly.
      
      From-SVN: r224977
      Richard Sandiford committed
    • ipa-icf.h (symbol_compare_hash): New class. · 9654754b
      gcc/
      	* ipa-icf.h (symbol_compare_hash): New class.
      	(symbol_compare_hashmap_traits): Use it.
      	* mem-stats.h (mem_alloc_description::mem_location_hash): New class.
      	(mem_alloc_description::mem_alloc_hashmap_traits): Use it.
      	(mem_alloc_description::reverse_mem_map_t): Remove redundant
      	default_hashmap_traits.
      	* sanopt.c (sanopt_tree_triplet_hash): New class.
      	(sanopt_tree_triplet_map_traits): Use it.
      
      From-SVN: r224974
      Richard Sandiford committed
    • hash-table.h: Update comments. · 8d67ee55
      gcc/
      	* hash-table.h: Update comments.
      	* hash-traits.h (pointer_hash): Don't inherit from typed_noop_remove.
      	(nofree_ptr_hash): New class.
      	* asan.c (asan_mem_ref_hasher): Inherit from nofree_ptr_hash rather
      	than typed_noop_remove.  Remove redudant typedefs.
      	* attribs.c (attribute_hasher): Likewise.
      	* cfg.c (bb_copy_hasher): Likewise.
      	* cselib.c (cselib_hasher): Likewise.
      	* dse.c (invariant_group_base_hasher): Likewise.
      	* dwarf2cfi.c (trace_info_hasher): Likewise.
      	* dwarf2out.c (macinfo_entry_hasher): Likewise.
      	(comdat_type_hasher, loc_list_hasher): Likewise.
      	* gcse.c (pre_ldst_expr_hasher): Likewise.
      	* genmatch.c (id_base): Likewise.
      	* genrecog.c (test_pattern_hasher): Likewise.
      	* gimple-ssa-strength-reduction.c (cand_chain_hasher): Likewise.
      	* haifa-sched.c (delay_i1_hasher): Likewise.
      	* hard-reg-set.h (simplifiable_subregs_hasher): Likewise.
      	* ipa-icf.h (congruence_class_group_hash): Likewise.
      	* ipa-profile.c (histogram_hash): Likewise.
      	* ira-color.c (allocno_hard_regs_hasher): Likewise.
      	* lto-streamer.h (string_slot_hasher): Likewise.
      	* lto-streamer.c (tree_entry_hasher): Likewise.
      	* plugin.c (event_hasher): Likewise.
      	* postreload-gcse.c (expr_hasher): Likewise.
      	* store-motion.c (st_expr_hasher): Likewise.
      	* tree-sra.c (uid_decl_hasher): Likewise.
      	* tree-ssa-coalesce.c (coalesce_pair_hasher): Likewise.
      	(ssa_name_var_hash): Likewise.
      	* tree-ssa-live.c (tree_int_map_hasher): Likewise.
      	* tree-ssa-loop-im.c (mem_ref_hasher): Likewise.
      	* tree-ssa-pre.c (pre_expr_d): Likewise.
      	* tree-ssa-sccvn.c (vn_nary_op_hasher): Likewise.
      	* vtable-verify.h (registration_hasher): Likewise.
      	* vtable-verify.c (vtbl_map_hasher): Likewise.
      	* config/arm/arm.c (libcall_hasher): Likewise.
      	* config/i386/winnt.c (wrapped_symbol_hasher): Likewise.
      	* config/ia64/ia64.c (bundle_state_hasher): Likewise.
      	* config/sol2.c (comdat_entry_hasher): Likewise.
      	* fold-const.c (fold): Use nofree_ptr_hash instead of pointer_hash.
      	(print_fold_checksum, fold_checksum_tree): Likewise.
      	(debug_fold_checksum, fold_build1_stat_loc): Likewise.
      	(fold_build2_stat_loc, fold_build3_stat_loc): Likewise.
      	(fold_build_call_array_loc): Likewise.
      	* tree-ssa-ccp.c (gimple_htab): Likewise.
      	* tree-browser.c (tree_upper_hasher): Inherit from nofree_ptr_hash
      	rather than pointer_type.
      
      gcc/c/
      	* c-decl.c (detect_field_duplicates_hash): Use nofree_ptr_hash
      	instead of pointer_hash.
      	(detect_field_duplicates): Likewise.
      
      gcc/cp/
      	* class.c (fixed_type_or_null_ref_ht): Inherit from nofree_ptr_hash
      	rather than pointer_hash.
      	(fixed_type_or_null): Use nofree_ptr_hash instead of pointer_hash.
      	* semantics.c (nrv_data): Likewise.
      	* tree.c (verify_stmt_tree_r, verify_stmt_tree): Likewise.
      
      gcc/java/
      	* jcf-io.c (charstar_hash): Inherit from nofree_ptr_hash rather
      	than typed_noop_remove.  Remove redudant typedefs.
      
      gcc/lto/
      	* lto.c (tree_scc_hasher): Inherit from nofree_ptr_hash rather
      	than typed_noop_remove.  Remove redudant typedefs.
      
      gcc/objc/
      	* objc-act.c (decl_name_hash): Inherit from nofree_ptr_hash rather
      	than typed_noop_remove.  Remove redudant typedefs.
      
      libcc1/
      	* plugin.cc (string_hasher): Inherit from nofree_ptr_hash rather
      	than typed_noop_remove.  Remove redudant typedefs.
      	(plugin_context): Use nofree_ptr_hash rather than pointer_hash.
      	(plugin_context::mark): Likewise.
      
      From-SVN: r224957
      Richard Sandiford committed
  13. 22 Jun, 2015 1 commit
    • re PR ipa/65908 (ICE: in expand_thunk, at cgraphunit.c:1700) · 1628e36b
      	PR ipa/65908
      	* ipa-icf.c (sem_item::target_supports_symbol_aliases): Remove
      	construction of arg_types.
      	(sem_function::sem_function): Likewise.
      	(sem_function::~sem_function): Remove destruction of arg_types.
      	(sem_function::compatible_parm_types_p): New function.
      	(sem_function::equals_wpa): Reorg matching of return values
      	and parameter types.
      	(sem_function::equals_private): Reorg mathcing of argument types.
      	(sem_function::parse_tree_args): Remove.
      	* ipa-icf.h (init_wpa): Do not call it.
      	(parse_tree_args): Remove.
      	(compatible_parm_types_p): Declare.
      	(result_type): Remove.
      	(arg_types): Remove.
      	* testsuite/g++.dg/ipa/pr65908.C: New testcase.
      
      Co-Authored-By: Martin Liska <mliska@suse.cz>
      
      From-SVN: r224720
      Jan Hubicka committed
  14. 24 Apr, 2015 1 commit
    • ipa-icf.c (sem_function::equals_wpa): Compare thunk info. · fb5c322e
      	* ipa-icf.c (sem_function::equals_wpa): Compare thunk info.
      	(sem_function::equals): IGNORED_NODES parameter is now unused;
      	update call of equals_private.
      	(sem_function::equals_private): Do not call equals_wpa; skip
      	gimple body matching if there is no body.
      	(sem_function::init): Add logic to hash tthunk info.
      	(sem_function::parse): Also parse thunks.
      	* ipa-icf.h (equals_private): Update declaration.
      
      From-SVN: r222392
      Jan Hubicka committed
  15. 23 Apr, 2015 2 commits
    • ipa-icf.c (sem_item::compare_attributes): New function. · b3587b99
      	* ipa-icf.c (sem_item::compare_attributes): New function.
      	(sem_item::compare_referenced_symbol_properties): Compare variable
      	attributes.
      	(sem_item::hash_referenced_symbol_properties): Record DECL_ALIGN.
      	(sem_function::param_used_p): New function.
      	(sem_function::equals_wpa): Fix attribute comparsion; match
      	parameter type codes; do not compare paremter flags when
      	they are not used; compare edge flags; compare indirect calls.
      	(sem_item::update_hash_by_addr_refs): Hash reference type.
      	(sem_function::equals_private): Do not match DECL_ATTRIBUTES.
      	(sem_variable::equals_wpa): Do not match DECL_ALIGN; match
      	reference use type.
      	(sem_item_optimizer::update_hash_by_addr_refs): Use param_used_p.
      	* ipa-icf.h (compare_attributes, param_used_p): Declare.
      
      From-SVN: r222374
      Jan Hubicka committed
    • ipa-icf.c (symbol_compare_collection::symbol_compare_collection): cleanup. · 977b01e3
      	* ipa-icf.c (symbol_compare_collection::symbol_compare_collection):
      	cleanup.
      	(sem_function::get_hash): Do not hash DECL_DISREGARD_INLINE_LIMITS,
      	DECL_DECLARED_INLINE_P and DECL_IS_OPERATOR_NEW.
      	(sem_item::compare_referenced_symbol_properties): New.
      	(sem_item::hash_referenced_symbol_properties): New.
      	(sem_item::compare_cgraph_references): Rename to ...
      	(sem_item::compare_symbol_references): ... this one; use
      	compare_referenced_symbol_properties.
      	(sem_function::equals_wpa): Do not compare
      	DECL_DISREGARD_INLINE_LIMITS, DECL_DECLARED_INLINE_P,
      	DECL_IS_OPERATOR_NEW; compare pointer sizes.
      	(sem_item::update_hash_by_addr_refs): Call
      	hash_referenced_symbol_properties.
      	(sem_item::update_hash_by_local_refs): Cleanup.
      	(sem_function::merge): Do not mix up symbol properties.
      	(sem_variable::equals_wpa): Use compare_symbol_references.
      	* ipa-icf.h (sem_item::compare_referenced_symbol_properties): New.
      	(sem_item::hash_referenced_symbol_properties): New.
      	(sem_item::compare_symbol_references): New.
      	(sem_item::compare_cgraph_references): Remove.
      
      From-SVN: r222372
      Jan Hubicka committed
  16. 18 Apr, 2015 1 commit
    • remove need for store_values_directly · 67f58944
      This switches all hash_table users to use the layout that stores
      elements of type value_type in the hash table instead of the one storing
      value_type *.  Since it becomes unused support for the value_type *
      layout is removed.
      
      gcc/
      
      	* hash-table.h: Remove version of hash_table that stored value_type *.
      	* asan.c, attribs.c, bitmap.c, cfg.c, cgraph.h, config/arm/arm.c,
      	config/i386/winnt.c, config/ia64/ia64.c, config/mips/mips.c,
      	config/sol2.c, coverage.c, cselib.c, dse.c, dwarf2cfi.c,
      	dwarf2out.c, except.c, gcse.c, genmatch.c, ggc-common.c,
      	gimple-ssa-strength-reduction.c, gimplify.c, haifa-sched.c,
      	hard-reg-set.h, hash-map.h, hash-set.h, ipa-devirt.c, ipa-icf.h,
      	ipa-profile.c, ira-color.c, ira-costs.c, loop-invariant.c,
      	loop-iv.c, loop-unroll.c, lto-streamer.h, plugin.c, postreload-gcse.c,
      	reginfo.c, statistics.c, store-motion.c, trans-mem.c, tree-cfg.c,
      	tree-eh.c, tree-hasher.h, tree-into-ssa.c, tree-parloops.c,
      	tree-sra.c, tree-ssa-coalesce.c, tree-ssa-dom.c, tree-ssa-live.c,
      	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-phiopt.c,
      	tree-ssa-pre.c, tree-ssa-reassoc.c, tree-ssa-sccvn.c,
      	tree-ssa-structalias.c, tree-ssa-tail-merge.c,
      	tree-ssa-threadupdate.c, tree-vectorizer.c, tree-vectorizer.h,
      	valtrack.h, var-tracking.c, vtable-verify.c, vtable-verify.h: Adjust.
      
      libcc1/
      
      	* plugin.cc: Adjust for hash_table changes.
      
      gcc/java/
      
      	* jcf-io.c: Adjust for hash_table changes.
      
      gcc/lto/
      
      	* lto.c: Adjust for hash_table changes.
      
      gcc/objc/
      
      	* objc-act.c: Adjust for hash_table changes.
      
      From-SVN: r222213
      Trevor Saunders committed
  17. 24 Mar, 2015 1 commit
    • IPA ICF: enhance hash value calculated in TU · 69f6b1f4
      	* ipa-icf-gimple.h (return_with_result): Add missing colon to dump.
      	* ipa-icf.c (sem_function::get_hash): Hash new declaration properties.
      	(sem_item::add_type): New function.
      	(sem_function::hash_stmt): Add TREE_TYPE of gimple_op.
      	(sem_function::compare_polymorphic_p): Do not consider indirect calls.
      	(sem_item_optimizer::update_hash_by_addr_refs): Add ODR type to hash.
      	(sem_function::equals_wpa): Fix typo.
      	* ipa-icf.h (sem_item::add_type): New function.
      	(symbol_compare_hashmap_traits): Replace hashing of pointer with symbol
      	order.
      
      
      Co-Authored-By: Martin Liska <mliska@suse.cz>
      
      From-SVN: r221645
      Jan Hubicka committed
  18. 22 Mar, 2015 1 commit
    • IPA ICF: include hash values of references. · 3ab93359
      	* ipa-icf.c (sem_item::update_hash_by_addr_refs): New function.
      	(sem_item::update_hash_by_local_refs): Likewise.
      	(sem_variable::get_hash): Empty line is fixed.
      	(sem_item_optimizer::execute): Include adding of hash references.
      	(sem_item_optimizer::update_hash_by_addr_refs): New function.
      	(sem_item_optimizer::build_hash_based_classes): Use local hash.
      	* ipa-icf.h (sem_item::update_hash_by_addr_refs): New function.
      	(sem_item::update_hash_by_local_refs): Likewise.
      
      From-SVN: r221576
      Martin Liska committed
  19. 18 Mar, 2015 1 commit
    • re PR ipa/65432 (Invalid read of size 1:… · 1aec2ecc
      re PR ipa/65432 (Invalid read of size 1: ipa_icf::sem_item_optimizer::merge_classes(unsigned int) (ipa-icf.c:2958))
      
      Fix PR ipa/65432
      
      	PR ipa/65432
      	* cgraph.c (cgraph_node::get_create): Remove unnecessary
      	xstrdup_for_dump wrapper.
      	* ipa-icf.c (sem_item::dump): Use symtab_node::name instead of
      	sem_item::name.
      	(sem_function::equals): Wrap symtab_node::name and symtab_node::asm_name
      	with xstrdup_for_dump.
      	(sem_variable::equals): Likewise.
      	(sem_item_optimizer::read_section): Use symtab_node::name instead of
      	sem_item::name.
      	(sem_item_optimizer::parse_funcs_and_vars): Likewise.
      	(sem_item_optimizer::merge_classes): Wrap symtab_node::name and
      	symtab_node::asm_name with xstrdup_for_dump.
      	(congruence_class::dump): Use symtab_node::name instead of
      	sem_item::name.
      	* ipa-icf.h (symtab_node::name): Remove.
      	(symtab_node::asm_name): Likewise.
      
      From-SVN: r221491
      Martin Liska committed
  20. 13 Mar, 2015 1 commit
    • ipa-icf.c (sem_function::equals_wpa): Match CXX_CONSTRUCTOR_P and CXX_DESTURCTOR_P. · 060cfff4
      	* ipa-icf.c (sem_function::equals_wpa): Match CXX_CONSTRUCTOR_P
      	and CXX_DESTURCTOR_P. For consutrctors match ODR type of class they
      	are building; for methods check ODR type of class they belong to if
      	they may lead to a polymorphic call.
      	(sem_function::compare_polymorphic_p): Be bit smarter about testing
      	when function may lead to a polymorphic call.
      	(sem_function::compare_type_list): Remove.
      	(sem_variable::equals): Update use of compatible_types_p.
      	(sem_variable::parse_tree_refs): Remove.
      	(sem_item_optimizer::filter_removed_items): Do not filter out CXX
      	cdtor.
      	* ipa-icf-gimple.c (func_checker::compare_decl): Do polymorphic
      	matching here.
      	(func_checker::compatible_polymorphic_types_p): Break out from ...
      	(unc_checker::compatible_types_p): ... here.
      	* ipa-icf-gimple.h (func_checker::compatible_polymorphic_types_p):
      	Declare.
      	(unc_checker::compatible_types_p): Update.
      	* ipa-icf.h (compare_type_list, parse_tree_refs, compare_sections):
      	Remove.
      
      From-SVN: r221406
      Jan Hubicka committed
  21. 03 Mar, 2015 1 commit
  22. 02 Mar, 2015 2 commits
    • ipa-icf.c (sem_variable::equals): Improve debug output; get variable constructor. · c4c0f336
      2015-02-28  Martin Liska  <mliska@suse.cz>
      	    Jan Hubicka   <hubicka@ucw.cz>
      
      	* ipa-icf.c (sem_variable::equals): Improve debug output;
      	get variable constructor.
      	(sem_variable::parse): Do not filter out too early; give up on
      	volatile and register vars.
      	(sem_item_optimizer::filter_removed_items): Filter out nonreadonly
      	variables.
      	* ipa-icf.h (sem_variable::init): Do not set ctor.
      	(sem_variable::ctor): Remove.
      
      gcc/testsuite/ChangeLog:
      
      2015-02-28  Martin Liska  <mliska@suse.cz>
      	    Jan Hubicka   <hubicka@ucw.cz>
      
      	* gcc.dg/ipa/ipa-icf-35.c: New test.
      	* gcc.dg/ipa/ipa-icf-36.c: New test.
      	* gcc.dg/ipa/ipa-icf-37.c: New test.
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      
      From-SVN: r221099
      Martin Liska committed
    • ipa-icf.c: Include stor-layout.h · 46305737
      	* ipa-icf.c: Include stor-layout.h
      	(sem_function::compare_cgraph_references): Rename to ...
      	(sem_item::compare_cgraph_references): ... this one.
      	(sem_variable::equals_wpa): New function
      	(sem_variable::equals): Do not check stuff already verified by
      	equals_wpa.
      	(sem_variable::equals): Reorg based on varasm.c:compare_constant.
      	* ipa-icf.h (sem_item): Add compare_cgraph_references.
      	(sem_function): Remove compare_cgraph_references.
      	(sem_variable): Turns equals_wpa into non-inline.
      
      From-SVN: r221096
      Jan Hubicka committed
  23. 01 Mar, 2015 2 commits
    • ipa-icf.c (sem_function::init): Fix formating; skip GIMPLE_PREDICT. · a8d93817
      	* ipa-icf.c (sem_function::init): Fix formating; skip GIMPLE_PREDICT.
      	(sem_item::add_expr): New function.
      	(sem_function::hash_stmt): Handle operands of most statements.
      	(sem_variable::get_hash): Hash the actual constructor.
      	* ipa-icf.h (sem_item): Add add_expr.
      	(sem_function): Update prototype of hash_stmt
      
      From-SVN: r221092
      Jan Hubicka committed
    • re PR ipa/65245 (internal compiler error: in address_matters_p, at symtab.c:1908) · b6cddc7f
      2015-02-28  Martin Liska  <mliska@suse.cz>
      	    Jan Hubicka   <hubicka@ucw.cz>
      
      	PR ipa/65245
      	* ipa-icf-gimple.c (func_checker::compare_function_decl):
      	Remove.
      	(func_checker::compare_variable_decl): Skip symtab vars.
      	(func_checker::compare_cst_or_decl): Update.
      	* ipa-icf.c (sem_function::parse): Do not consider aliases.
      	(sem_function::compare_cgraph_references): Add ADDRESS parameter;
      	use correct symtab predicates.
      	(sem_function::equals_wpa): Update uses of compare_cgraph_references.
      	(sem_variable::parse):  Update comment.
      	(sem_item_optimizer::build_graph): Consider ultimate aliases
      	for references.
      
      	* gcc.dg/ipa/ipa-icf-34.c: New test.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      
      From-SVN: r221090
      Martin Liska committed
  24. 27 Feb, 2015 1 commit
  25. 26 Feb, 2015 1 commit
    • re PR lto/64693 (PCH failed with --with-build-config=bootstrap-lto) · 5ebd0e61
      Fix PR ipa/64693
      
      	PR ipa/64693
      	* ipa-icf.c (symbol_compare_collection::symbol_compare_collection): New.
      	(sem_item_optimizer::subdivide_classes_by_sensitive_refs): New function.
      	(sem_item_optimizer::process_cong_reduction): Include division by
      	sensitive references.
      	* ipa-icf.h (struct symbol_compare_hashmap_traits): New class.
      	* ipa-ref.c (ipa_ref::address_matters_p): New function.
      	* ipa-ref.h (ipa_ref::address_matters_p): Likewise.
      	* g++.dg/ipa/pr64146.C: Update expected results.
      	* gcc.dg/ipa/ipa-icf-26.c: Update test.
      	* gcc.dg/ipa/ipa-icf-33.c: Remove redundant line.
      	* gcc.dg/ipa/ipa-icf-34.c: New test.
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      
      From-SVN: r221031
      Martin Liska committed
  26. 19 Feb, 2015 1 commit
    • sem_function::bb_dict_test should take a vec<int> * · 1216ea72
      bb_dict_test () ment to operate on the callers vector, not a copy of it.
      
      gcc/ChangeLog:
      
      2015-02-18  Trevor Saunders  <tsaunders@mozilla.com>
      
      	* ipa-icf.c (sem_function::equals_private): Adjust.
      	(sem_function::bb_dict_test): Take a vec<int> * instead of
      	auto_vec<int>.
      	* ipa-icf.h (bb_dict_test): Likewise.
      
      From-SVN: r220806
      Trevor Saunders committed
  27. 05 Jan, 2015 1 commit
  28. 27 Nov, 2014 1 commit
    • IPA ICF: fix memory leak. · c190efcc
      	* ipa-icf.c (sem_function::equals_private): int* is replaced with
      	auto_vec.
      	(sem_function::bb_dict_test): Likewise.
      	* ipa-icf.h: Likewise.
      
      
      Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
      
      From-SVN: r218129
      Martin Liska committed
  29. 11 Nov, 2014 1 commit
  30. 16 Oct, 2014 1 commit
    • IPA ICF pass, part 3/5 · b84d4347
      	* Makefile.in: New object files included.
      	* cgraph.c (cgraph_node::dump): New cgraph_node flag icf_merged
      	is printed.
      	(verify_edge_corresponds_to_fndecl): More sensitive verification
      	of nodes that are merged by IPA ICF.
      	* cgraph.h (cgraph_node::num_references): New function.
      	* cgraphunit.c (cgraph_node::expand_thunk): White space fixed.
      	* common.opt: New options ipa-icf, ipa-icf-functions and
      	ipa-icf-variables introduced.
      	* doc/invoke.texi: Documentation of new options introduced.
      	* ipa-icf-gimple.c: New file.
      	* ipa-icf-gimple.h: New file.
      	* ipa-icf.c: New file.
      	* ipa-icf.h: New file.
      	* lto-cgraph.c (lto_output_node): Streaming of icf_merged flag added.
      	(input_overwrite_node): Likewise.
      	* lto-section-in.c: New icf section added.
      	* lto-streamer.h (enum lto_section_type): Likewise.
      	* opts.c (common_handle_option): New option added.
      	* passes.def: New pass included.
      	* timevar.def: Time variable for IPA ICF added.
      	* tree-pass.h: New IPA ICF pass entry point added.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      
      From-SVN: r216305
      Martin Liska committed