1. 16 Oct, 2014 1 commit
  2. 14 Oct, 2014 1 commit
    • machmode.h (int_n_data_t): New. · 78a7c317
      	* machmode.h (int_n_data_t): New.
      	(int_n_enabled_p): New.
      	(int_n_data): New.
      	* tree.c (int_n_enabled_p): New.
      	(int_n_trees): New.
      	(make_or_reuse_type): Check for all __intN types, not just
      	__int128.
      	(build_common_tree_nodes): Likewise.  Also fill in integer_typs[]
      	entries.
      	* tree.h (int128_integer_type_node): Remove.
      	(int128_unsigned_type_node): Remove.
      	(int_n_trees_t): New.
      	(int_n_enabled_p): New.
      	(int_n_trees): New.
      	* toplev.c (standard_type_bitsize): New.
      	(do_compile): Check which __intN types are enabled for the current
      	run.
      	* builtin-types.def (BT_INT128): Remove.
      	(BT_UINT128): Remove.
      	* machmode.def: Add macro to create __int128 for all targets.
      	* stor-layout.c (mode_for_size): Support __intN types.
      	(smallest_mode_for_size): Likewise.
      	(initialize_sizetypes): Support __intN types.
      	* genmodes.c (struct mode_data): Add int_n field.
      	(blank_mode): Likewise.
      	(INT_N): New.
      	(make_int_n): New.
      	(emit_insn_modes_h): Count __intN entries and define
      	NUM_INT_N_ENTS.
      	(emit_mode_int_n): New.
      	(emit_insn_modes_c): Call it.
      	* gimple.c (gimple_signed_or_unsigned_type): Check for all __intN
      	types, not just __int128.
      	* tree-core.h (integer_type_kind): Remove __int128-specific
      	entries, reserve spots for __intN entries.
      
      libstdc++-v3/
      	* src/c++11/limits.cc: Add support for __intN types.
      	* include/std/type_traits: Likewise.
      	* include/std/limits: Likewise.
      	* include/c_std/cstdlib: Likewise.
      	* include/bits/cpp_type_traits.h: Likewise.
      	* include/c_global/cstdlib: Likewise.
      
      c-family/
      	* c-pretty-print.c (pp_c_integer_constant): Check for all __intN
      	types, not just __int128.
      	* c-cppbuiltin.c (c_cpp_builtins): Add builtins for all __intN
      	types, not just __int128.
      	(cpp_atomic_builtins): Round pointer sizes up.
      	(type_suffix): Use type precision, not specific types.
      	* c-common.c (c_common_reswords): Remove __int128 special case.
      	(c_common_type_for_size): Check for all __intN types, not just
      	__int128.
      	(c_common_type_for_mode): Likewise.
      	(c_common_signed_or_unsigned_type): Likewise.
      	(c_build_bitfield_integer_type): Likewise.
      	(c_common_nodes_and_builtins): Likewise.
      	(keyword_begins_type_specifier): Likewise.
      	* c-common.h (rid): Remove RID_INT128 and add RID_INT_N_* for all
      	__intN variants.
      
      c/
      	* c-parser.c (c_parse_init): Add RID entries for each __intN.
      	(c_token_starts_typename): Check all __intN, not just __int128.
      	(c_token_starts_declspecs): Likewise.
      	(c_parser_declspecs): Likewise.
      	(c_parser_attribute_any_word): Likewise.
      	(c_parser_objc_selector): Likewise.
      	* c-tree.h (c_typespec_keyword): cts_int128 -> cts_int_n.
      	(struct c_declspecs): Add int_n_idx field to record *which* __intN
      	is specified.
      	* c-decl.c (declspecs_add_type): Check for all __intN, not just
      	__int128.
      	(finish_declspecs): Likewise.
      
      testsuite/
      	* g++.dg/abi/mangle64.C: New.
      
      cp/
      	* typeck.c (cp_common_type): Check for all __intN types, not just
      	__int128.
      	* decl.c (grokdeclarator): Likewise.
      	* rtti.c (emit_support_tinfos): Check for all __intN types, not just
      	__int128.
      	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Check
      	for all __intN types, not just __int128.
      	(cp_parser_simple_type_specifier): Likewise.
      	* mangle.c (integer_type_codes): Remove int128-specific codes.
      	* cp-tree.h (cp_decl_specifier_seq): Add int_n_idx to store which
      	__intN was specified.
      	* lex.c (init_reswords): Reserve all __intN keywords.
      
      lto/
      	* lto-lang.c (lto_build_c_type_nodes): Check intN types for
      	size-type as well.
      	(lto_init): Initialize all intN types, not just int128.
      
      From-SVN: r216220
      DJ Delorie committed
  3. 06 Oct, 2014 1 commit
  4. 24 Sep, 2014 2 commits
    • cgraph.h, [...]: Rename all instances of DECL_ABSTRACT to DECL_ABSTRACT_P. · 00de328a
          	* cgraph.h, dbxout.c, dwarfout2.c, gimple-fold.c,
          	lto-streamer-out.c, print-tree.c, symtab.c, tree-inline.c,
          	tree-streamer-in.c, tree-streamer-out.c, tree.c, tree.h,
          	varpool.c: Rename all instances of DECL_ABSTRACT to
          	DECL_ABSTRACT_P.
      
          cp/
          	* class.c, decl.c, optimize.c: Rename all instances of
          	DECL_ABSTRACT to DECL_ABSTRACT_P.
      
          lto/
          	* lto-symtab.c, lto.c: Rename all instances of DECL_ABSTRACT to
          	DECL_ABSTRACT_P.
      
      From-SVN: r215567
      Aldy Hernandez committed
    • Add an no_reorder attribute for LTO · 7861b648
      Some projects need to prevent reordering of specific top level
      declarations with LTO, in particular declarations defining init calls.
      
      The only way to do that with LTO was to use -fno-toplevel-reorder,
      which stops reordering for all declarations and makes LTO partitioning
      less efficient.
      
      This patch adds a new no_reorder attribute that stops reordering only
      for the marked declaration. The program can then only mark e.g. the
      initcalls and leave all the other declarations alone.
      
      The patch does:
      
      - Adds the new no_reorder attribute for the C family.
      - Initializes a new no_reorder flag in the symtab_nodes in the
      function visibility flag.
      - Maintains the no_reorder flag when creating new nodes.
      - Changes the partition code to always keep a separate
      sorted queue of ordered nodes and flush them in order with the other
      nodes. This is used by all nodes with -fno-toplevel-reorder,
      and only the marked ones without it.
      Parts of the old -fno-toplevel-reorder code paths are reused.
      - Adds various checks throughout the tree to make no_reorder
      marked functions behave the same as with -fno-toplevel-reorder
      - Changes the LTO streamer to serialize the no_reorder attribute.
      
      gcc/c-family/:
      
      2014-09-23  Andi Kleen  <ak@linux.intel.com>
      
      	* c-common.c (handle_no_reorder_attribute): New function.
      	(c_common_attribute_table): Add no_reorder attribute.
      
      gcc/:
      
      2014-09-23  Andi Kleen  <ak@linux.intel.com>
      
      	* cgraph.h (symtab_node): Add no_reorder attribute.
      	(symbol_table::output_asm_statements): Remove.
      	* cgraphclones.c (cgraph_node::create_clone): Copy no_reorder.
      	(cgraph_node::create_version_clone): Dito.
      	(symbol_table::output_asm_statements): Remove.
      	* trans-mem.c (ipa_tm_create_version_alias): Dito.
      	* cgraphunit.c (varpool_node::finalize_decl): Check no_reorder.
      	(output_in_order): Add no_reorder flag. Only handle no_reorder
      	nodes when set.
      	(symbol_table::compile): Add separate pass for no_reorder nodes.
      	(process_common_attributes): Set no_reorder flag in symtab node.
      	Add node argument.
      	(process_function_and_variable_attributes): Pass symtab nodes to
      	process_common_attributes.
      	* doc/extend.texi (no_reorder): Document no_reorder attribute.
      	* lto-cgraph.c (lto_output_node): Serialize no_reorder.
      	(lto_output_varpool_node): Dito.
      	(input_overwrite_node): Dito.
      	(input_varpool_node): Dito.
      	* varpool.c (varpool_node::add): Set no_reorder attribute.
      	(symbol_table::remove_unreferenced_decls): Handle no_reorder.
      	(symbol_table::output_variables): Dito.
      	* symtab.c (symtab_node::dump_base): Print no_reorder.
      
      gcc/lto/:
      
      2014-09-23  Andi Kleen  <ak@linux.intel.com>
      
      	* lto-partition.c (node_cmp): Update comment.
      	(varpool_node_cmp): Use symtab_node for comparison.
      	(add_sorted_nodes): New function.
      	(lto_balanced_map): Change to keep ordered queue
      	of ordered node. Handle no_reorder attribute.
      
      From-SVN: r215537
      Andi Kleen committed
  5. 11 Sep, 2014 1 commit
    • common.opt (flto-odr-type-merging): New flag. · 1ee85ee1
      	* common.opt (flto-odr-type-merging): New flag.
      	* ipa-deivrt.c (hash_type_name): Use ODR names for hasing if availale.
      	(types_same_for_odr): Likewise.
      	(odr_subtypes_equivalent_p): Likewise.
      	(add_type_duplicate): Do not walk type variants.
      	(register_odr_type): New function.
      	* ipa-utils.h (register_odr_type): Declare.
      	(odr_type_p): New function.
      	* langhooks.c (lhd_set_decl_assembler_name): Do not compute
      	TYPE_DECLs
      	* doc/invoke.texi (-flto-odr-type-merging): Document.
      	* tree.c (need_assembler_name_p): Compute ODR names when asked
      	for it.
      	* tree.h (DECL_ASSEMBLER_NAME): Update comment.
      
      	* lto.c (lto_read_decls): Register ODR types.
      
      From-SVN: r215196
      Jan Hubicka committed
  6. 04 Sep, 2014 2 commits
    • Revert incorrect merging of debug-early branch. · 9de41e57
      From-SVN: r214914
      Aldy Hernandez committed
    • + * c/c-decl.c (write_global_declarations_1): Call global_decl() + with early=true. · 989f386c
      +       * c/c-decl.c (write_global_declarations_1): Call global_decl()
      +       with early=true.
      +       (write_global_declarations_2): Call global_decl() with
      +       early=false.
      +       * dbxout.c (dbxout_global_decl): New argument.
      +       * debug.c (do_nothing_debug_hooks): Use debug_nothing_tree_bool
      +       for global_decl hook.
      +       (debug_nothing_tree_bool): New.
      +       (struct gcc_debug_hooks): New argument to global_decl.
      +       * dwarf2out.c (output_die): Add misc debugging information.
      +       (gen_variable_die): Do not reparent children.
      +       (dwarf2out_global_decl): Add new documentation.  Add EARLY
      +       argument.
      +       (dwarf2out_decl): Make sure we don't generate new DIEs if we
      +       already have a DIE.
      +       * cp/name-lookup.c (do_namespace_alias): New argument to
      +       global_decl debug hook.
      +       * fortran/trans-decl.c (gfc_emit_parameter_debug_info): Same.
      +       * godump.c (go_global_decl): Same.
      +       * lto/lto-lang.c (lto_write_globals): Same.
      +       * sdbout.c (sdbout_global_decl): Same.
      +       * toplev.c (emit_debug_global_declarations): Same.
      +       * vmsdbgout.c (vmsdbgout_global_decl): Same.
      +       * tree.c (free_lang_data_in_decl): Do not call
      +       dwarf2out_early_decl from here.
      
      From-SVN: r214911
      Aldy Hernandez committed
  7. 25 Aug, 2014 1 commit
    • IPA C++ refactoring 4/N · 3dafb85c
      	* cgraph.h (symtab_node):
      	(bool needed_p (void)): created from decide_is_symbol_needed
      	(bool referred_to_p (void)): created from referred_to_p
      	(static cgraph_node *get_for_asmname (tree asmname)): created from symtab_node_for_asm
      	* cgraph.h (cgraph_node):
      	(void assemble_thunks_and_aliases (void)): created from assemble_thunks_and_aliases
      	(void expand (void)): created from expand_function
      	(static void finalize_function (tree, bool)): created from cgraph_finalize_function
      	(static cgraph_local_info *local_info (tree decl)): created from cgraph_local_info
      	(static cgraph_global_info *global_info (tree)): created from cgraph_global_info
      	(static cgraph_rtl_info *rtl_info (tree)): created from cgraph_rtl_info
      	* cgraph.h (varpool_node):
      	(static void add (tree decl): created from varpool_add_new_variable
      	* cgraph.h (cgraph_edge):
      	void remove (void);
      	(void remove_caller (void)): created from cgraph_edge_remove_caller
      	(void remove_callee (void)): created from cgraph_edge_remove_callee
      	(void set_call_stmt (gimple new_stmt, bool update_speculative = true)):
      	  created from cgraph_set_call_stmt	
      	(void redirect_callee (cgraph_node *n)): created from cgraph_redirect_edge_callee
      	(cgraph_edge *make_direct (cgraph_node *callee)): created from cgraph_make_edge_direct
      	(cgraph_edge *make_speculative (cgraph_node *n2, gcov_type direct_count,
      	  gimple redirect_call_stmt_to_callee (void)): created from cgraph_turn_edge_to_speculative
      	(void speculative_call_info (cgraph_edge *&direct, cgraph_edge *&indirect, ipa_ref *&reference)):
      	  created from cgraph_speculative_call_info
      	(cgraph_edge * clone (cgraph_node *n, gimple call_stmt, unsigned stmt_uid, gcov_type count_scale,
      	  int freq_scale, bool update_original)): created from cgraph_clone_edge
      	(cgraph_edge *resolve_speculation (tree callee_decl)): created from cgraph_resolve_speculation
      	(bool cannot_lead_to_return_p (void)): created from cannot_lead_to_return_p
      	(bool recursive_p (void)): created from cgraph_edge_recursive_p
      	(bool maybe_hot_p (void)): created from cgraph_maybe_hot_edge_p
      	(static unsigned int rebuild_edges (void)): created from rebuild_cgraph_edges 
      	(static void rebuild_references (void)): created from cgraph_rebuild_references
      	* cgraph.h (symbol_table):
      	(create_reference): renamed from add_reference
      	(maybe_create_reference): renamed from maybe_add_reference
      	(void register_symbol (symtab_node *node)): new function
      	(void clear_asm_symbols (void)): new function
      	(void unregister (symtab_node *node)): new function
      	(void release_symbol (cgraph_node *node, int uid)): new function
      	(cgraph_node * allocate_cgraph_symbol (void)): new function
      	(void initialize (void)): created from cgraph_init
      	(symtab_node *first_symbol (void)):new function
      	(asm_node *first_asm_symbol (void)):new function
      	(symtab_node *first_defined_symbol (void)):new function
      	(varpool_node *first_variable (void)):new function
      	(varpool_node *next_variable (varpool_node *node)):new function
      	(varpool_node *first_static_initializer (void)):new function
      	(varpool_node *next_static_initializer (varpool_node *node)):new function
      	(varpool_node *first_defined_variable (void)):new function
      	(varpool_node *next_defined_variable (varpool_node *node)):new function
      	(cgraph_node *first_defined_function (void)):new function
      	(cgraph_node *next_defined_function (cgraph_node *node)):new function
      	(cgraph_node *first_function (void)):new function
      	(cgraph_node *next_function (cgraph_node *node)):new function
      	(cgraph_node *first_function_with_gimple_body (void)):new function
      	(asm_node *finalize_toplevel_asm (tree asm_str)): created from add_asm_node
      	(bool remove_unreachable_nodes (bool before_inlining_p, FILE *file)):
      	  created from symtab_remove_unreachable_nodes
      	(void remove_unreferenced_decls (void)): created from varpool_remove_unreferenced_decls
      	(void process_new_functions (void)): created from cgraph_process_new_functions
      	(void process_same_body_aliases (void)): created from cgraph_process_same_body_aliases
      	(bool output_variables (void)): created from varpool_node::output_variables
      	(void output_asm_statements (void)): created from output_asm_statements
      	(void finalize_compilation_unit (void)): created from finalize_compilation_unit
      	(void compile (void)): created from compile
      	(void output_weakrefs (void)): created from output_weakrefs
      	(cgraph_node *create_empty (void)): created from cgraph_node::create_empty
      	(cgraph_edge *create_edge (cgraph_node *caller, cgraph_node *callee, gimple call_stmt,
      	  gcov_type count, int freq, bool indir_unknown_callee)): created from cgraph_node::create_edge
      	(void free_edge (cgraph_edge *e)): created from cgraph_free_edge
      	(cgraph_node *next_function_with_gimple_body (cgraph_node *node)):
      	  created from cgraph_next_function_with_gimple_body
      	(void remove_edge_removal_hook (cgraph_edge_hook_list *)):
      	  created from cgraph_remove_edge_removal_hook
      	(cgraph_node_hook_list *add_cgraph_removal_hook (cgraph_node_hook, void *)):
      	  created from cgraph_add_node_removal_hook
      	(void remove_cgraph_removal_hook (cgraph_node_hook_list *)):
      	  created from cgraph_remove_node_removal_hook
      	(varpool_node_hook_list *add_varpool_removal_hook (varpool_node_hook, void *)):
      	  created from varpool_add_node_removal_hook
      	(void remove_varpool_removal_hook (varpool_node_hook_list *)):
      	  created from varpool_remove_node_removal_hook
      	(cgraph_node_hook_list *add_cgraph_insertion_hook (cgraph_node_hook, void *)):
      	  created from cgraph_add_function_insertion_hook
      	(void remove_cgraph_insertion_hook (cgraph_node_hook_list *)):
      	  created from cgraph_remove_function_insertion_hook
      	(varpool_node_hook_list *add_varpool_insertion_hook (varpool_node_hook, void *)):
      	  created from varpool_add_variable_insertion_hook
      	(void remove_varpool_insertion_hook (varpool_node_hook_list *)):
      	  created from varpool_remove_variable_insertion_hook
      	(cgraph_2edge_hook_list *add_edge_duplication_hook (cgraph_2edge_hook, void *)):
      	  created from cgraph_add_edge_duplication_hook
      	(void remove_edge_duplication_hook (cgraph_2edge_hook_list *)):
      	  created from cgraph_remove_edge_duplication_hook
      	(cgraph_2node_hook_list *add_cgraph_duplication_hook (cgraph_2node_hook, void *)):
      	  created from cgraph_add_node_duplication_hook
      	(void remove_cgraph_duplication_hook (cgraph_2node_hook_list *)):
      	  created from cgraph_remove_node_duplication_hook
      	(void call_edge_removal_hooks (cgraph_edge *e)):
      	  created from cgraph_call_edge_removal_hooks
      	(void call_cgraph_insertion_hooks (cgraph_node *node)):
      	  created from call_function_insertion_hooks 
      	(void call_cgraph_removal_hooks (cgraph_node *node)):
      	  created from cgraph_call_node_removal_hooks 
      	(void call_cgraph_duplication_hooks (cgraph_node *node, cgraph_node *node2)):
      	  created from cgraph_node::call_duplication_hooks 
      	(void call_edge_duplication_hooks (cgraph_edge *cs1, cgraph_edge *cs2)):
      	  created from cgraph_call_edge_duplication_hooks
      	(void call_varpool_removal_hooks (varpool_node *node)):
      	  created from varpool_call_node_removal_hooks
      	(void call_varpool_insertion_hooks (varpool_node *node)):
      	  created from varpool_call_variable_insertion_hooks
      	(void insert_to_assembler_name_hash (symtab_node *node, bool with_clones)):
      	  created from insert_to_assembler_name_hash
      	(void unlink_from_assembler_name_hash (symtab_node *node, bool with_clones)):
      	  created from unlink_from_assembler_name_hash
      	(void symtab_prevail_in_asm_name_hash (symtab_node *node)):
      	  created from symtab_prevail_in_asm_name_hash
      	(void symtab_initialize_asm_name_hash (void)):
      	  created from symtab_initialize_asm_name_hash
      	(void change_decl_assembler_name (tree decl, tree name)):
      	  created from change_decl_assembler_name
      	(void materialize_all_clones (void)): created from cgraph_materialize_all_clones
      	(static hashval_t decl_assembler_name_hash (const_tree asmname)):
      	  created from decl_assembler_name_hash
      	(static bool decl_assembler_name_equal (tree decl, const_tree asmname)):
      	  created from decl_assembler_name_equal
      	(static hashval_t hash_node_by_assembler_name (const void *p)):
      	  created from hash_node_by_assembler_name
      	(static int eq_assembler_name (const void *p1, const void *p2)):
      	  created from eq_assembler_name
      
      From-SVN: r214422
      Martin Liska committed
  8. 21 Aug, 2014 1 commit
    • re PR tree-optimization/62091 (ice in before_dom_children) · a336b719
      	PR tree-optimization/62091
      	* g++.dg/ipa/devirt-37.C: Update template.
      	* g++.dg/ipa/devirt-40.C: New testcase.
      	* ipa-devirt.c (ipa_polymorphic_call_context::restrict_to_inner_type):
      	handle correctly arrays.
      	(extr_type_from_vtbl_ptr_store): Add debug output; handle multiple
      	inheritance binfos.
      	(record_known_type): Walk into inner type.
      	(ipa_polymorphic_call_context::get_dynamic_type): Likewise; strenghten
      	condition on no type changes.
      
      From-SVN: r214271
      Jan Hubicka committed
  9. 20 Aug, 2014 1 commit
    • cgraphunit.c (ipa_passes, compile): Reshedule symtab_remove_unreachable_nodes… · 8605403e
      cgraphunit.c (ipa_passes, compile): Reshedule symtab_remove_unreachable_nodes passes; update comments.
      
      	* cgraphunit.c (ipa_passes, compile): Reshedule
      	symtab_remove_unreachable_nodes passes; update comments.
      	* ipa-inline.c (pass_data_ipa_inline): Do not schedule
      	TODO_remove_functions before the pass; the functions ought to be
      	already removed.
      	* ipa.c (pass_data_ipa_free_inline_summary): Enable dump; schedule
      	TODO_remove_functions.
      	* passes.c (pass_data_early_local_passes): Do not schedule function
      	removal.
      	(execute_one_pass): Fix call of symtab_remove_unreachable_nodes.
      
      	* lto.c (read_cgraph_and_symbols): Fix symtab_remove_unreachable_nodes
      	call.
      	(do_whole_program_analysis): Only sanity check that IPA passes cleans up.
      
      	* testsuite/g++.dg/ipa/devirt-17.C: Update template.
      	* testsuite/g++.dg/ipa/devirt-16.C: Update template.
      
      From-SVN: r214224
      Jan Hubicka committed
  10. 14 Aug, 2014 2 commits
  11. 08 Aug, 2014 2 commits
    • lto-streamer.h (struct lto_input_block): Make it a class with a constructor. · 207c68cd
      2014-08-08  Richard Biener  <rguenther@suse.de>
      
      	* lto-streamer.h (struct lto_input_block): Make it a class
      	with a constructor.
      	(LTO_INIT_INPUT_BLOCK, LTO_INIT_INPUT_BLOCK_PTR): Remove.
      	(struct lto_function_header, struct lto_simple_header,
      	struct lto_simple_header_with_strings,
      	struct lto_decl_header, struct lto_function_header): Make
      	a simple inheritance hieararchy.  Remove unused fields.
      	(struct lto_asm_header): Remove.
      	* lto-streamer-out.c (produce_asm): Adjust.
      	(lto_output_toplevel_asms): Likewise.
      	(produce_asm_for_decls): Likewise.
      	* lto-section-out.c (lto_destroy_simple_output_block): Likewise.
      	* data-streamer-in.c (string_for_index): Likewise.
      	* ipa-inline-analysis.c (inline_read_section): Likewise.
      	* ipa-prop.c (ipa_prop_read_section): Likewise.
      	(read_replacements_section): Likewise.
      	* lto-cgraph.c (input_cgraph_opt_section): Likewise.
      	* lto-section-in.c (lto_create_simple_input_block): Likewise.
      	(lto_destroy_simple_input_block): Likewise.
      	* lto-streamer-in.c (lto_read_body_or_constructor): Likewise.
      	(lto_input_toplevel_asms): Likewise.
      
      	lto/
      	* lto.c (lto_read_decls): Adjust for lto_input_block changes.
      
      From-SVN: r213759
      Richard Biener committed
    • re PR lto/62032 (FAIL: vsnprintf-chk.c execution, -O2 -flto… · 7c581d61
      re PR lto/62032 (FAIL: vsnprintf-chk.c execution,  -O2 -flto -fno-use-linker-plugin -flto-partition=none)
      
      
      	PR lto/62032
      	* lto/lto-lang.c (lto_init): Switch mis-matched arguments.
      
      From-SVN: r213755
      Bin Cheng committed
  12. 07 Aug, 2014 1 commit
    • convert the rest of the users of pointer_map to hash_map · 39c8aaa4
      gcc/
      
      	* hash-map.h (default_hashmap_traits): Adjust overloads of hash
      	function to not conflict.
      	* alias.c, cfgexpand.c, dse.c, except.h, gimple-expr.c,
      	gimple-ssa-strength-reduction.c, gimple-ssa.h, ifcvt.c,
      	lto-streamer-out.c, lto-streamer.h, tree-affine.c, tree-affine.h,
      	tree-predcom.c, tree-scalar-evolution.c, tree-ssa-loop-im.c,
      	tree-ssa-loop-niter.c, tree-ssa.c, value-prof.c: Use hash_map instead
      	of pointer_map.
      
      gcc/cp/
      
      	* cp-tree.h, pt.c: Use hash_map instead of pointer_map.
      
      gcc/lto/
      
      	* lto-partition.c, lto.c: Use hash_map instead of pointer_map.
      
      From-SVN: r213703
      Trevor Saunders committed
  13. 02 Aug, 2014 1 commit
    • add a hash_set based on hash_table · 6e2830c3
      This allows us to replace the usage of pointer_set outside of
      pointer_map with a nicer interface.
      
      gcc/ada/
      
      	* gcc-interface/trans.c: Use hash_set instead of pointer_set.
      
      gcc/c-family/
      
      	* c-gimplify.c: Use hash_set instead of pointer_set.
      
      gcc/c/
      
      	* c-decl.c: Use hash_set instead of pointer_set.
      
      gcc/cp/
      
      	* class.c, cp-gimplify.c, cp-tree.h, decl.c, decl2.c, error.c,
      	method.c, name-lookup.c, pt.c, semantics.c, tree.c: Use hash_set
      	instead of pointer_set.
      
      gcc/fortran/
      
      	* openmp.c, trans-decl.c: Use hash_set instead of pointer_set.
      
      gcc/
      
      	* hash-set.h: new File.
      	* cfgexpand.c, cfgloop.c, cgraph.c, cgraphbuild.c, cgraphunit.c,
      	cprop.c, cse.c, gimple-walk.c, gimple-walk.h, gimplify.c, godump.c,
      	ipa-devirt.c, ipa-pure-const.c, ipa-visibility.c, ipa.c, lto-cgraph.c,
      	lto-streamer-out.c, stmt.c, tree-cfg.c, tree-core.h, tree-eh.c,
      	tree-inline.c, tree-inline.h, tree-nested.c, tree-pretty-print.c,
      	tree-ssa-loop-niter.c, tree-ssa-phiopt.c, tree-ssa-threadedge.c,
      	tree-ssa-uninit.c, tree.c, tree.h, value-prof.c, varasm.c,
      	varpool.c: Use hash_set instead of pointer_set.
      
      gcc/lto/
      
      	* lto-partition.c, lto-partition.h: Use hash_set instead of
      	pointer_set.
      
      From-SVN: r213516
      Trevor Saunders committed
  14. 01 Aug, 2014 1 commit
    • Change inchash to name space. · 50de5793
      Change class inchash to move into a inchash namespace as requested.
      The class is now inchash::hash
      
      Rename iterative_hstate_expr to inchash::add_expr
      ... and convert existing users. It wasn't possible to use hash::,
      because that lead to name space conflicts with cp and objc.
      
      So class inchash is now inchash::hash and iterative_hstate_expr
      is now inchash::add_expr.
      
      gcc/:
      
      2014-07-31  Andi Kleen  <ak@linux.intel.com>
      
      	* inchash.h (inchash): Change inchash class to namespace.
      	(class hash): ... Rename from inchash.
      	(add_object): Move from macro to class template.
      	* lto-streamer-out.c (hash_tree): Change inchash
      	to inchash::hash.
      	* tree.c (build_type_attribute_qual_variant): Dito.
      	(type_hash_list): Dito.
      	(attribute_hash_list): Dito.
      	(iterative_hstate_expr): Rename to inchash::add_expr
      	(build_range_type_1): Change inchash to inchash::hash
      	and use hash::add_expr.
      	(build_array_type_1): Dito.
      	(build_function_type): Dito
      	(build_method_type_directly): Dito.
      	(build_offset_type): Dito.
      	(build_complex_type): Dito.
      	(make_vector_type): Dito.
      	* tree.h (iterative_hash_expr): Dito.
      
      gcc/lto/:
      
      2014-07-31  Andi Kleen  <ak@linux.intel.com>
      
      	* lto.c (hash_canonical_type): Use inchash::hash
      	and use inchash::add_expr.
      	(iterative_hash_canonical_type): Dito.
      
      From-SVN: r213394
      Andi Kleen committed
  15. 30 Jul, 2014 1 commit
    • lto-streamer.h (lto_write_data): New function. · f6bcdb5e
      2014-07-30  Richard Biener  <rguenther@suse.de>
      
      	* lto-streamer.h (lto_write_data): New function.
      	* langhooks.c (lhd_append_data): Do not free block.
      	* lto-section-out.c (lto_write_data): New function writing
      	raw data to the current section.
      	(lto_write_stream): Adjust for langhook semantic change.
      	(lto_destroy_simple_output_block): Write header directly.
      	* lto-opts.c (lto_write_options): Write options directly.
      	* lto-streamer-out.c (produce_asm): Write heaeder directly.
      	(lto_output_toplevel_asms): Likewise.
      	(copy_function_or_variable): Copy data directly.
      	(write_global_references): Output index table directly.
      	(lto_output_decl_state_refs): Likewise.
      	(write_symbol): Write data directly.
      	(produce_symtab): Adjust.
      	(produce_asm_for_decls): Output header and refs directly.
      
      	lto/
      	* lto-object.c (lto_obj_append_data): Do not free block.
      
      From-SVN: r213253
      Richard Biener committed
  16. 25 Jul, 2014 3 commits
    • Convert the tree.c type hashing over to inchash · 56fdfd3e
      v2: Use commutative interface. Be much nearer to the old
      code.
      
      gcc/:
      
      2014-07-25  Andi Kleen  <ak@linux.intel.com>
      
      	* tree.c (build_type_attribute_qual_variant): Use inchash.
      	(type_hash_list): Dito.
      	(attribute_hash_list): Dito
      	(iterative_hstate_expr): Dito.
      	(iterative_hash_expr): Dito.
      	(build_range_type_1): Dito.
      	(build_array_type_1): Dito.
      	(build_function_type): Dito.
      	(build_method_type_directly): Dito.
      	(build_offset_type): Dito.
      	(build_complex_type): Dito.
      	(make_vector_type): Dito.
      	* tree.h (iterative_hash_expr): Add compat wrapper.
      	(iterative_hstate_expr): Add.
      
      gcc/lto/:
      
      2014-07-25  Andi Kleen  <ak@linux.intel.com>
      
      	* lto.c (hash_canonical_type): Call iterative_hstate_expr.
      
      From-SVN: r213056
      Andi Kleen committed
    • Convert LTO type hashing to the new inchash interface · 0bd8bb04
      Should not really change any behavior, it's just a more abstract
      interface, but uses the same underlying hash functions.
      
      gcc/lto/:
      
      2014-07-25  Andi Kleen  <ak@linux.intel.com>
      
      	* lto.c (hash_canonical_type): Convert to inchash.
      	(iterative_hash_canonical_type): Dito.
      
      From-SVN: r213055
      Andi Kleen committed
    • Add an abstract incremental hash data type · 6d8eb96b
      Some files in gcc, like lto or tree, do large scale incremential hashing.
      The current jhash implementation of this could be likely improved
      by using an incremential hash that does not do a full rehashing
      for every new value added.
      
      This patch adds a new "inchash" class that abstracts the internal
      state of the hash. This makes it easier to plug in new hashes
      and also cleans up the code a bit.
      
      Right now it is just implemented in the same way as the old
      iterative hash in tree.c. The previous iterative hash code
      from tree.c moved into a new separate file. Also I fixed up all
      users to include the new header.
      
      It should not really significantly change any hashing by itself,
      it's mostly a cleanup at this point.
      
      v2: Remove begin. Add commutative interface.
      Add merge hash interface.  Add add_flag.
      
      gcc/:
      
      2014-07-25  Andi Kleen  <ak@linux.intel.com>
      
      	* Makefile.in (OBJS): Add inchash.o.
      	(PLUGIN_HEADERS): Add inchash.h.
      	* ipa-devirt.c: Include inchash.h.
      	* lto-streamer-out.c: Dito.
      	* tree-ssa-dom.c: Dito.
      	* tree-ssa-pre.c: Dito.
      	* tree-ssa-sccvn.c: Dito.
      	* tree-ssa-tail-merge.c: Dito.
      	* asan.c: Dito.
      	* tree.c (iterative_hash_hashval_t): Move to ...
      	(iterative_hash_host_wide_int): Move to ...
      	* inchash.c: Here. New file.
      	* tree.h (iterative_hash_hashval_t): Move to ...
      	(iterative_hash_host_wide_int): Move to ...
      	* inchash.h: Here. New file.
      
      gcc/lto/:
      
      2014-07-25  Andi Kleen  <ak@linux.intel.com>
      
      	* lto.c: Include inchash.h
      
      From-SVN: r213054
      Andi Kleen committed
  17. 24 Jul, 2014 2 commits
    • IPA C++ refactoring 2/N · 9041d2e6
        * cgraph.h (varpool_node):
        (availability get_availability (void)):
          created from cgraph_variable_initializer_availability
        (inline varpool_node *ultimate_alias_target (availability *availability = NULL)
          creted from: cgraph_variable_initializer_availability
        (inline varpool_node *get_alias_target (void)): created from varpool_alias_target
        (void finalize_named_section_flags (void)):
          created from varpool_finalize_named_section_flags
        (bool assemble_decl (void)): created from varpool_assemble_decl
        (void analyze (void)): created from varpool_analyze_node
        (bool call_for_node_and_aliases (bool (*callback) (varpool_node *, void *),
          void *data, bool include_overwritable)): created fromvarpool_for_node_and_aliases
        (void remove_initializer (void)): created from varpool_remove_initializer
        (tree get_constructor (void)): created from varpool_get_constructor
        (bool externally_visible_p (void)): created from varpool_externally_visible_p
        (bool ctor_useable_for_folding_p (void)): created from varpool_ctor_useable_for_folding_p
        (inline bool all_refs_explicit_p ()): created from varpool_all_refs_explicit_p
        (inline bool can_remove_if_no_refs_p (void)): created from varpool_can_remove_if_no_refs
        (static inline varpool_node *get (const_tree decl)): created from varpool_get_node
        (static void finalize_decl (tree decl)): created from varpool_finalize_decl
        (static bool output_variables (void)): created from varpool_output_variables
        (static varpool_node * create_extra_name_alias (tree alias, tree decl)):
          created from varpool_extra_name_alias
        (static varpool_node * create_alias (tree, tree)): created from varpool_create_variable_alias
        (static void dump_varpool (FILE *f)): created from dump_varpool
        (static void DEBUG_FUNCTION debug_varpool (void)): created from debug_varpool
        (static varpool_node *create_empty (void)): created from varpool_create_empty_node
        (static varpool_node *get_create (tree decl)): created from varpool_node_for_decl
        (static varpool_node *get_for_asmname (tree asmname)): created from varpool_node_for_asm
        (void assemble_aliases (void)): created from assemble_aliases
      
      From-SVN: r212984
      Martin Liska committed
    • IPA C++ refactoring 1/N · d52f5295
        * cgraph.h (symtab_node):
        (void register_symbol (void)): created from symtab_register_node
        (void remove (void)): created from symtab_remove_node
        (void dump (FILE *f)): created from dump_symtab_node
        (void DEBUG_FUNCTION debug (void)): created from debug_symtab_node
        (void DEBUG_FUNCTION verify (void)): created from verify_symtab_node
        (struct ipa_ref *add_reference (symtab_node *referred_node,
          enum ipa_ref_use use_type)): created from add_reference 
        (struct ipa_ref *add_reference (symtab_node *referred_node,
          enum ipa_ref_use use_type, gimple stmt)): created from add_reference
        (struct ipa_ref *maybe_add_reference (tree val, enum ipa_ref_use use_type,
          gimple stmt)): created from maybe_add_reference
        (bool semantically_equivalent_p (symtab_node *target)): created from
          symtab_semantically_equivalent_p
        (void remove_from_same_comdat_group (void)): created from
          remove_from_same_comdat_group
        (void add_to_same_comdat_group (symtab_node *old_node)): created from
          symtab_add_to_same_comdat_group
        (void dissolve_same_comdat_group_list (void)): created from
          symtab_dissolve_same_comdat_group_list
        (bool used_from_object_file_p (void)): created from symtab_used_from_object_file_p
        (symtab_node *ultimate_alias_target (enum availability *avail = NULL)):
          created from symtab_alias_ultimate_target
        (inline symtab_node *next_defined_symbol (void)): created from
          symtab_next_defined_symbol
        (bool resolve_alias (symtab_node *target)): created from
          symtab_resolve_alias
        (bool call_for_symbol_and_aliases (bool (*callback) (symtab_node *, void *),
          void *data, bool include_overwrite)): created from symtab_for_node_and_aliases
        (symtab_node *noninterposable_alias (void)): created from symtab_nonoverwritable_alias
        (inline symtab_node *get_alias_target (void)): created from symtab_alias_target
        (void set_section (const char *section)): created from set_section_1 
        (enum availability get_availability (void)): created from symtab_node_availability
        (void make_decl_local (void)): created from symtab_make_decl_local
        (bool real_symbol_p (void)): created from symtab_read_node
        (can_be_discarded_p (void)): created from symtab_can_be_discarded
        (inline bool comdat_local_p (void)): created from symtab_comdat_local_p
        (inline bool in_same_comdat_group_p (symtab_node *target)): created from
          symtab_in_same_comdat_p;
        (bool address_taken_from_non_vtable_p (void)): created from
          address_taken_from_non_vtable_p
        (static inline symtab_node *get (const_tree decl)): created from symtab_get_node
        (static void dump_table (FILE *)): created from dump_symtab
        (static inline DEBUG_FUNCTION void debug_symtab (void)): created from debug_symtab
        (static DEBUG_FUNCTION void verify_symtab_nodes (void)): created from verify_symtab
        (static bool used_from_object_file_p_worker (symtab_node *node)): created from
          symtab_used_from_object_file_p 
        (void dump_base (FILE *)): created from dump_symtab_base
        (bool DEBUG_FUNCTION verify_base (void)): created from verify_symtab_base
        (void unregister (void)): created from symtab_unregister_node
        (struct symbol_priority_map *priority_info (void)): created from symtab_priority_info
        (static bool set_implicit_section (symtab_node *n, void *)): created from set_implicit_section
        (static bool noninterposable_alias (symtab_node *node, void *data)): created from
          symtab_nonoverwritable_alias_1
        * cgraph.h (cgraph_node):
        (bool remove_symbol_and_inline_clones (cgraph_node *forbidden_node = NULL)):
          created from cgraph_remove_node_and_inline_clones
        (void record_stmt_references (gimple stmt)): created from ipa_record_stmt_references
        (void set_call_stmt_including_clones (gimple old_stmt, gimple new_stmt,
          bool update_speculative = true)): created from cgraph_set_call_stmt_including_clones
        (cgraph_node *function_symbol (enum availability *avail = NULL)):
          created from cgraph_function_node
        (cgraph_node *create_clone (tree decl, gcov_type count, int freq, bool update_original,
          vec<cgraph_edge *> redirect_callers, bool call_duplication_hook,
          struct cgraph_node *new_inlined_to, bitmap args_to_skip)):
          created from cgraph_create_clone 
        (cgraph_node *create_virtual_clone (vec<cgraph_edge *> redirect_callers,
          vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip, const char * suffix)):
          created from cgraph_create_virtual_clone
        (cgraph_node *find_replacement (void)): created from cgraph_find_replacement_node
        (cgraph_node *create_version_clone (tree new_decl, vec<cgraph_edge *> redirect_callers,
          bitmap bbs_to_copy)): created from cgraph_copy_node_for_versioning
        (cgraph_node *create_version_clone_with_body (vec<cgraph_edge *> redirect_callers,
          vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip, bool skip_return,
          bitmap bbs_to_copy, basic_block new_entry_block, const char *clone_name)):
          created from cgraph_function_version_info
        (struct cgraph_function_version_info *insert_new_function_version (void)):
          created from insert_new_cgraph_node_version
        (struct cgraph_function_version_info *function_version (void)): created from
          get_cgraph_node_version
        (void analyze (void)): created from analyze_function
        (cgraph_node * create_thunk (tree alias, tree, bool this_adjusting,
          HOST_WIDE_INT fixed_offset, HOST_WIDE_INT virtual_value, tree virtual_offset,
          tree real_alias) cgraph_add_thunk
        (inline cgraph_node *get_alias_target (void)): created from cgraph_alias_target
        (cgraph_node *ultimate_alias_target (availability *availability = NULL)):
          created from cgraph_function_or_thunk_node
        (bool expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)):
          created from expand_thunk
        (void reset (void)): created from cgraph_reset_node
        (void create_wrapper (cgraph_node *target)): created from cgraph_make_wrapper
        (void DEBUG_FUNCTION verify_node (void)): created from verify_cgraph_node
        (void remove (void)): created from cgraph_remove_node
        (void dump (FILE *f)): created from dump_cgraph_node
        (void DEBUG_FUNCTION debug (void)): created from debug_cgraph_node
        (bool get_body (void)): created from cgraph_get_body
        (void release_body (void)): created from cgraph_release_function_body
        (void unnest (void)): created from cgraph_unnest_node
        (void make_local (void)): created from cgraph_make_node_local
        (void mark_address_taken (void)): created from cgraph_mark_address_taken_node
        (struct cgraph_edge *create_edge (cgraph_node *callee, gimple call_stmt,
          gcov_type count, int freq)): created from cgraph_create_edge
        (struct cgraph_edge *create_indirect_edge (gimple call_stmt, int ecf_flags,
          gcov_type count, int freq)): created from cgraph_create_indirect_edge
        (void create_edge_including_clones (struct cgraph_node *callee, gimple old_stmt,
          gimple stmt, gcov_type count, int freq, cgraph_inline_failed_t reason)):
          created from cgraph_create_edge_including_clones
        (cgraph_edge *get_edge (gimple call_stmt)): created from cgraph_edge
        (vec<cgraph_edge *> collect_callers (void)): created from collect_callers_of_node
        (void remove_callers (void)): created from cgraph_node_remove_callers
        (void remove_callees (void)): created from cgraph_node_remove_callees
        (enum availability get_availability (void)): created from cgraph_function_body_availability
        (void set_nothrow_flag (bool nothrow)): created from cgraph_set_nothrow_flag
        (void set_const_flag (bool readonly, bool looping)): created from cgraph_set_const_flag
        (void set_pure_flag (bool pure, bool looping)): created from cgraph_set_pure_flag
        (void call_duplication_hooks (cgraph_node *node2)): created from
          cgraph_call_node_duplication_hooks
        (bool call_for_symbol_and_aliases (bool (*callback) (cgraph_node *, void *),
          void *data, bool include_overwritable)): created from cgraph_for_node_and_aliases
        (bool call_for_symbol_thunks_and_aliases (bool (*callback) (cgraph_node *node, void *data),
          void *data, bool include_overwritable)): created from cgraph_for_node_thunks_and_aliases
        (void call_function_insertion_hooks (void)):
          created from cgraph_call_function_insertion_hooks
        (inline void mark_force_output (void)): created from cgraph_mark_force_output_node
        (bool local_p (void)): created from cgraph_local_node
        (bool can_be_local_p (void)): created from cgraph_node_can_be_local_p
        (bool cannot_return_p (void)): created from cgraph_node_cannot_return
        (bool only_called_directly_p (void)): created from cgraph_only_called_directly_p
        (inline bool only_called_directly_or_aliased_p (void)):
          created from cgraph_only_called_directly_or_aliased_p
        (bool will_be_removed_from_program_if_no_direct_calls_p (void)):
          created from cgraph_will_be_removed_from_program_if_no_direct_calls
        (bool can_remove_if_no_direct_calls_and_refs_p (void)):
          created from cgraph_can_remove_if_no_direct_calls_and_refs_p
        (bool can_remove_if_no_direct_calls_p (void)):
          created from cgraph_can_remove_if_no_direct_calls_p
        (inline bool has_gimple_body_p (void)):
          created from cgraph_function_with_gimple_body_p
        (bool optimize_for_size_p (void)): created from cgraph_optimize_for_size_p
        (static void dump_cgraph (FILE *f)): created from dump_cgraph
        (static inline void debug_cgraph (void)): created from debug_cgraph
        (static void record_function_versions (tree decl1, tree decl2)):
          created from record_function_versions
        (static void delete_function_version (tree decl)):
          created from delete_function_version
        (static void add_new_function (tree fndecl, bool lowered)):
          created from cgraph_add_new_function
        (static inline cgraph_node *get (const_tree decl)): created from cgraph_get_node
        (static cgraph_node * create (tree decl)): created from cgraph_create_node
        (static cgraph_node * create_empty (void)): created from cgraph_create_empty_node
        (static cgraph_node * get_create (tree)): created from cgraph_get_create_node
        (static cgraph_node *get_for_asmname (tree asmname)):
          created from cgraph_node_for_asm
        (static cgraph_node * create_same_body_alias (tree alias, tree decl)):
          created from cgraph_same_body_alias 
        (static bool used_from_object_file_p_worker (cgraph_node *node,
          void *): new function
        (static bool non_local_p (cgraph_node *node, void *)):
          created from cgraph_non_local_node_p_1
        (static void DEBUG_FUNCTION verify_cgraph_nodes (void)):
          created from verify_cgraph
        (static bool make_local (cgraph_node *node, void *)):
          created from cgraph_make_node_local
        (static cgraph_node *create_alias (tree alias, tree target)):
          created from cgraph_create_function_alias
        (static cgraph_edge * create_edge (cgraph_node *caller, cgraph_node *callee,
          gimple call_stmt, gcov_type count, int freq, bool indir_unknown_callee)):
          created from cgraph_create_edge_1
        * cgraph.h (varpool_node):
        (void remove (void)): created from varpool_remove_node
        (void dump (FILE *f)): created from dump_varpool_node
      
      From-SVN: r212982
      Martin Liska committed
  18. 15 Jul, 2014 1 commit
    • tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL, NAMESPACE_DECL,… · ad115a3c
      tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL, NAMESPACE_DECL, IMPORTED_DECL and NAMELIST_DECL...
      
      	* tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL,
      	NAMESPACE_DECL, IMPORTED_DECL and NAMELIST_DECL;
      	call langhook for unknown declaration.
      	(find_decls_types_r): Do not walk DECL_ARGUMENT_FLD.
      	* tree.h (DECL_ARGUMENTS): Update.
      	* print-tree.c (print_node): Update.
      	* tree-core.h (tree_decl_non_common): Remove arguments.
      	(tree_function_decl): Add arguments.
      
      	* class.c (build_clone): Do not clear assembler names of
      	templates.
      	* decl.c (cp_tree_node_structure): Add TEMPLATE_DECL.
      	* cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL
      	as a special case return sizeof (struct tree_decl_non_common)
      	for other decls.
      	(cp_common_init_ts): Do not initialize NAMESPACE_DECL;
      	initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON.
      	* cp/cp-tree.h (tree_template_decl): New structure.
      	(cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL.
      	(union cp_lang_tree_node): Add template_decl.
      	(DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update.
      
      	* lto/lto.c (mentions_vars_p_decl_non_common): Skip
      	DECL_ARGUMENT_FLD.
      	mentions_vars_p_function): Do DECL_ARGUMENTS.
      	(lto_fixup_prevailing_decls): Update.
      
      	* objc-act.c (objc_common_tree_size): New function.
      	* objc-act.h (KEYWORD_KEY_NAME, KEYWORD_ARG_NAME): Add type
      	checking.
      	(INSTANCE_METHOD_OR_CLASS_METHOD_DECL_CHECK): New macro.
      	(METHOD_SEL_NAME, METHOD_SEL_ARGS, METHOD_ADD_ARGS,
       	METHOD_ADD_ARGS_ELLIPSIS_P, METHOD_DEFINITION, METHOD_ENCODING,
      	METHOD_TYPE_ATTRIBUTES, METHOD_PROPERTY_CONTEXT): Add type checking.
      	(METHOD_SEL_ARGS): Use decl_common.size instead of
      	decl_non_common.result.
      	(PROPERTY_NAME, PROPERTY_GETTER_NAME, PROPERTY_SETTER_NAME,
      	PROPERTY_READONLY, PROPERTY_NONATOMIC, PROPERTY_ASSIGN_SEMANTICS,
      	PROPERTY_IVAR_NAME, PROPERTY_DYNAMIC, PROPERTY_HAS_NO_GETTER,
      	PROPERTY_HAS_NO_SETTER, PROPERTY_OPTIONAL): Add type checking.
      	(objc_common_tree_size): Declare.
      	* objc/objc-lang.c (LANG_HOOKS_TREE_SIZE): New macro.
      
      From-SVN: r212549
      Jan Hubicka committed
  19. 12 Jul, 2014 1 commit
    • lto.c (read_cgraph_and_symbols): Do not push DECL_INIT_IO timevar · 917dd9bf
      	* lto.c (read_cgraph_and_symbols): Do not push DECL_INIT_IO
      	timevar
      	(materialize_cgraph): Do not push GIMPLE_IN timevar.
      
      	* timevar.def (TV_IPA_LTO_DECL_INIT_IO): Remove.
      	(TV_IPA_LTO_CTORS_IN, TV_IPA_LTO_CTORS_OUT): New timevar.
      	* cgraph.c (cgraph_get_body): Push GIMPLE_IN timevar.
      	(varpool_get_constructor): Push CTORS_IN timevar.
      	* lto-streamer-out.c (lto_output): Push TV_IPA_LTO_CTORS_OUT
      	timevar.
      
      From-SVN: r212479
      Jan Hubicka committed
  20. 11 Jul, 2014 1 commit
    • vapool.c: Include tree-ssa-alias.h, gimple.h and lto-streamer.h · 0b83e688
      	* vapool.c: Include tree-ssa-alias.h, gimple.h and lto-streamer.h
      	(varpool_get_constructor): New function.
      	(varpool_ctor_useable_for_folding_p): Break out from ...
      	(ctor_for_folding): ... here; use varpool_get_constructor.
      	(varpool_assemble_decl): Likewise.
      	* lto-streamer.h (struct output_block): Turn cgraph_node
      	to symbol filed.
      	(lto_input_variable_constructor): Declare.
      	* ipa-visibility.c (function_and_variable_visibility): Use
      	varpool_get_constructor.
      	* cgraph.h (varpool_get_constructor): Declare.
      	(varpool_ctor_useable_for_folding_p): New function.
      	* lto-streamer-out.c (get_symbol_initial_value): Take encoder
      	parameter; return error_mark_node for non-trivial constructors.
      	(lto_write_tree_1, DFS_write_tree): UPdate use of
      	get_symbol_initial_value.
      	(output_function): Update initialization of symbol.
      	(output_constructor): New function.
      	(copy_function): Rename to ..
      	(copy_function_or_variable): ... this one; handle vars too.
      	(lto_output): Output variable sections.
      	* lto-streamer-in.c (input_constructor): New function.
      	(lto_read_body): Rename from ...
      	(lto_read_body_or_constructor): ... this one; handle vars
      	too.
      	(lto_input_variable_constructor): New function.
      	* ipa-prop.c (ipa_prop_write_jump_functions,
      	ipa_prop_write_all_agg_replacement): Update.
      	* lto-cgraph.c (compute_ltrans_boundary): Use it.
      	(output_cgraph_opt_summary): Set symbol to NULL.
      
      	* lto-partition.c (add_references_to_partition): Use 
      	varpool_ctor_useable_for_folding_p.
      	* lto.c (lto_read_in_decl_state): Update sanity check.
      
      From-SVN: r212467
      Jan Hubicka committed
  21. 01 Jul, 2014 1 commit
    • IPA REF alias refactoring · e55637b7
      	* cgraph.h (iterate_direct_aliases): New function.
      	(FOR_EACH_ALIAS): New macro iterates all direct aliases for a node.
      	* cgraph.c (cgraph_for_node_thunks_and_aliases): Usage of
      	FOR_EACH_ALIAS added.
      	(cgraph_for_node_and_aliases): Likewise.
      	* cgraphunit.c (assemble_thunks_and_aliases): Likewise.
      	* ipa-inline.c (reset_edge_caches): Likewise.
      	(update_caller_keys): Likewise.
      	* trans-mem.c (ipa_tm_execute): Likewise.
      	*varpool.c (varpool_analyze_node): Likewise.
      	(varpool_for_node_and_aliases): Likewise.
      	* ipa-ref.h (first_alias): New function.
      	(last_alias): Likewise.
      	(has_aliases_p): Likewise.
      	* ipa-ref.c (ipa_ref::remove_reference): Removal function
      	is sensitive to IPA_REF_ALIASes.
      	* symtab.c (symtab_node::add_reference): Node of IPA_REF_ALIAS type
      	are put at the beginning of the list.
      	(symtab_node::iterate_direct_aliases): New function.
      
      	* lto-partition.c (add_symbol_to_partition_1): Usage of
      	FOR_EACH_ALIAS added.
      
      From-SVN: r212191
      Martin Liska committed
  22. 30 Jun, 2014 1 commit
    • revert: tree-streamer-out.c (pack_ts_type_common_value_fields): Stream if type is complete. · 010f4e27
      	Revert:
      	* tree-streamer-out.c (pack_ts_type_common_value_fields): Stream if type
      	is complete.
      	(write_ts_type_common_tree_pointers): Do not stream fields not set for incomplete
      	types; do not stream duplicated fields for variants; sanity check that variant
      	and type match.
      	(write_ts_type_non_common_tree_pointers): Likewise.
      	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Mark in TYPE_SIZE whether
      	type is complete.
      	(lto_input_ts_type_common_tree_pointers): Do same changes as in
      	write_ts_type_common_tree_pointers
      	(lto_input_ts_type_non_common_tree_pointers): Likewise.
      
      	* lto.c (lto_copy_fields_not_streamed): New function.
      	(compare_tree_sccs_1): Do not compare fields shared in between type
      	and variant.
      	(lto_read_decls): Fixup types first before inserting into hash.
      
      From-SVN: r212179
      Jan Hubicka committed
  23. 29 Jun, 2014 1 commit
  24. 28 Jun, 2014 1 commit
    • tree-streamer-out.c (pack_ts_type_common_value_fields): Stream if type is complete. · 288eeff7
      	* tree-streamer-out.c (pack_ts_type_common_value_fields): Stream if type
      	is complete.
      	(write_ts_type_common_tree_pointers): Do not stream fields not set for incomplete
      	types; do not stream duplicated fields for variants; sanity check that variant
      	and type match.
      	(write_ts_type_non_common_tree_pointers): Likewise.
      	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Mark in TYPE_SIZE whether
      	type is complete.
      	(lto_input_ts_type_common_tree_pointers): Do same changes as in
      	write_ts_type_common_tree_pointers
      	(lto_input_ts_type_non_common_tree_pointers): Likewise.
      
      	* lto.c (lto_copy_fields_not_streamed): New function.
      	(compare_tree_sccs_1): Do not compare fields shared in between type
      	and variant.
      	(lto_read_decls): Fixup types first before inserting into hash.
      
      From-SVN: r212114
      Jan Hubicka committed
  25. 26 Jun, 2014 1 commit
  26. 25 Jun, 2014 1 commit
    • IPA REF refactoring · d122681a
      	* Makefile.in: Removed header file (ipa-ref-inline.h).
      	* cgraph.c (cgraph_turn_edge_to_speculative): New IPA REF function
      	called.
      	(cgraph_speculative_call_info): Likewise.
      	(cgraph_for_node_thunks_and_aliases): Likewise.
      	(cgraph_for_node_and_aliases): Likewise.
      	(verify_cgraph_node): Likewise.
      	* cgraph.h: Batch of IPA REF functions become member functions of
      	symtab_node: add_reference, maybe_add_reference, clone_references,
      	clone_referring, clone_reference, find_reference,
      	remove_stmt_references, remove_all_references,
      	remove_all_referring, dump_references, dump_referring,
      	has_alias_p, iterate_reference, iterate_referring.
      	* cgraphbuild.c (record_reference): New IPA REF function used.
      	(record_type_list): Likewise.
      	(record_eh_tables): Likewise.
      	(mark_address): Likewise.
      	(mark_load): Likewise.
      	(mark_store): Likewise.
      	(pass_build_cgraph_edges): Likewise.
      	(rebuild_cgraph_edge): Likewise.
      	(cgraph_rebuild_references): Likewise.
      	(pass_remove_cgraph_callee_edges): Likewise.
      	* cgraphclones.c (cgraph_clone_node): Likewise.
      	(cgraph_create_virtual_clone): Likewise.
      	(cgraph_materialize_clone): Likewise.
      	(cgraph_materialize_all_clones): Likewise.
      	* cgraphunit.c (cgraph_reset_node): Likewise.
      	(cgraph_reset_node): Likewise.
      	(analyze_function): Likewise.
      	(assemble_thunks_and_aliases): Likewise.
      	(expand_function): Likewise.
      	* ipa-comdats.c (propagate_comdat_group): Likewise.
      	(enqueue_references): Likewise.
      	* ipa-cp.c (ipcp_discover_new_direct_edges): Likewise.
      	(create_specialized_node): Likewise.
      	* ipa-devirt.c (referenced_from_vtable_p): Likewise.
      	* ipa-inline-transform.c (can_remove_node_now_p_1): Likewise.
      	* ipa-inline.c (reset_edge_caches): Likewise.
      	(update_caller_keys): Likewise.
      	(execute): Likewise.
      	* ipa-prop.c (remove_described_reference): Likewise.
      	(propagate_controlled_uses): Likewise.
      	(ipa_edge_duplication_hook): Likewise.
      	(ipa_modify_call_arguments): Likewise.
      	* ipa-pure-const.c (propagate_pure_const): Likewise.
      	* ipa-ref-inline.h: Header file removed, functions moved
      	to symtab_node class.
      	* ipa-ref.c (remove_reference): New class member function.
      	(cannot_lead_to_return): New class member function.
      	(referring_ref_list): Likewise.
      	(referred_ref_list): Likewise.
      	Rest of functions moved to symtab_node class.
      	* ipa-ref.h: New member functions remove_reference,
      	cannot_lead_to_return, referring_ref_list, referred_ref_list added
      	to ipa_ref class.
      	ipa_ref_list class has new member functions: first_reference,
      	first_referring, clear, nreferences.
      	* ipa-reference.c (analyze_function): New IPA REF function used.
      	(write_node_summary_p): Likewise.
      	(ipa_reference_write_optimization_summary): Likewise.
      	* ipa-split.c (split_function): Likewise.
      	* ipa-utils.c (ipa_reverse_postorder): Likewise.
      	* ipa-visibility.c (cgraph_non_local_node_p_1): Likewise.
      	(function_and_variable_visibility): Likewise.
      	* ipa.c (has_addr_references_p): Likewise.
      	(process_references): Argument type changed.
      	(symtab_remove_unreachable_nodes): New IPA REF function used.
      	(process_references): Likewise.
      	(set_writeonly_bit): Likewise.
      	* lto-cgraph.c: Implementation of new symtab_node member functions
      	that uses new IPA REF functions.
      	* lto-streamer-in.c (fixup_call_stmt_edges_1): New IPA REF function used.
      	* lto-streamer-out.c (output_symbol_p): Likewise.
      	* lto-streamer.h (referenced_from_this_partition_p): Argument type
      	changed.
      	* lto/lto-partition.c (add_references_to_partition): New IPA REF function
      	used.
      	(add_symbol_to_partition_1): Likewise.
      	(lto_balanced_map): Likewise.
      	* lto/lto-symtab.c (lto_cgraph_replace_node): Likewise.
      	* symtab.c: Implementation of new IPA REF API.
      	* trans-mem.c (ipa_tm_create_version_alias): New IPA REF function used.
      	(ipa_tm_create_version): Likewise.
      	(ipa_tm_execute): Likewise.
      	* tree-emutls.c (gen_emutls_addr): Likewise.
      	* tree-inline.c (copy_bb): Likewise.
      	(delete_unreachable_blocks_update_callgraph): Likewise.
      	* varpool.c (varpool_remove_unreferenced_decls): Likewise.
      	(varpool_for_node_and_aliases): Likewise.
      
      From-SVN: r211987
      Martin Liska committed
  27. 24 Jun, 2014 3 commits
    • class.c (check_methods, [...]): Guard VINDEX checks by FUNCTION_DECL check. · aaf8a23e
      	* class.c (check_methods, create_vtable_ptr, determine_key_method,
      	add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by FUNCTION_DECL check.
      	* cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
      	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
      	(DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
      	(DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.
      	* tree.c (find_decls_types_r): Do not check DECL_VINDEX for TYPE_DECL.
      	* tree.h (DECL_VINDEX, DECL_SAVED_TREE): Restrict to DECL_FUNCTION.
      	* tree-core.h (tree_decl_non_common): Move saved_tree and vindex...
      	(tree_function_decl): ... here.
      	* tree-streamer-out.c (write_ts_decl_non_common_tree_pointers): Move
      	streaming of vindex to ...
      	(write_ts_function_decl_tree_pointers): ... here.
      
      	* tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
      	Do not stream DECL_VINDEX.
      	(lto_input_ts_function_decl_tree_pointers): Stream it here.
      
      	* lto.c (mentions_vars_p_decl_non_common): Move DECL_VINDEX check to ..
      	(mentions_vars_p_function): ... here.
      	(compare_tree_sccs_1): Update VINDEX checks.
      	(lto_fixup_prevailing_decls): Likewise.
      
      From-SVN: r211960
      Jan Hubicka committed
    • add hash_map class · 1eb68d2d
      gcc/
      
      	* alloc-pool.c (alloc_pool_hash): Use hash_map instead of hash_table.
      	* dominance.c (iterate_fix_dominators): Use hash_map instead of
      	pointer_map.
      	* hash-map.h: New file.
      	* ipa-comdats.c: Use hash_map instead of pointer_map.
      	* ipa.c: Likewise.
      	* lto-section-out.c: Adjust.
      	* lto-streamer.h: Replace pointer_map with hash_map.
      	* symtab.c (verify_symtab): Likewise.
      	* tree-ssa-strlen.c (decl_to_stridxlist_htab): Likewise.
      	* tree-ssa-uncprop.c (val_ssa_equiv): Likewise.
      	* tree-streamer.h: Likewise.
      	* tree-streamer.c: Adjust.
      	* pointer-set.h: Remove pointer_map.
      
      gcc/lto/
      
      	* lto.c (canonical_type_hash_cache): Use hash_map instead of
      	pointer_map.
      
      From-SVN: r211938
      Trevor Saunders committed
    • Remove a layer of indirection from hash_table · c203e8a7
      gcc/
      
      	* hash-table.h: Remove a layer of indirection from hash_table so that
      	it contains the hash table's data instead of a pointer to the data.
      	* alloc-pool.c, asan.c, attribs.c, bitmap.c, cfg.c,
      	config/arm/arm.c, config/i386/winnt.c, config/ia64/ia64.c,
      	config/mips/mips.c, config/sol2.c, coverage.c, cselib.c,
      	data-streamer-out.c, dse.c, dwarf2cfi.c, dwarf2out.c, except.c,
      	fold-const.c, gcse.c, ggc-common.c,
      	gimple-ssa-strength-reduction.c, gimplify.c,
      	graphite-clast-to-gimple.c, graphite-dependences.c,
      	graphite-htab.h, graphite.c, haifa-sched.c, ipa-devirt.c,
      	ipa-profile.c, ira-color.c, ira-costs.c, loop-invariant.c,
      	loop-iv.c, loop-unroll.c, lto-streamer-in.c, lto-streamer-out.c,
      	lto-streamer.c, lto-streamer.h, passes.c, plugin.c,
      	postreload-gcse.c, sese.c, statistics.c, store-motion.c,
      	trans-mem.c, tree-browser.c, tree-cfg.c, tree-complex.c,
      	tree-eh.c, tree-into-ssa.c, tree-parloops.c, tree-sra.c,
      	tree-ssa-ccp.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-strlen.c,
      	tree-ssa-structalias.c, tree-ssa-tail-merge.c,
      	tree-ssa-threadupdate.c, tree-ssa-uncprop.c,
      tree-vect-data-refs.c, tree-vect-loop.c, tree-vectorizer.c,
      tree-vectorizer.h, valtrack.c, valtrack.h, var-tracking.c,
      vtable-verify.c, vtable-verify.h: Adjust.
      
      gcc/c/
      
      	* c-decl.c: Adjust.
      
      gcc/cp/
      
      	* class.c, semantics.c, tree.c, vtable-class-hierarchy.c:
      	Adjust.
      
      gcc/java/
      
      	* jcf-io.c: Adjust.
      
      gcc/lto/
      
      	* lto.c: Adjust.
      
      gcc/objc/
      
      	* objc-act.c: Adjust.
      
      From-SVN: r211936
      Trevor Saunders committed
  28. 21 Jun, 2014 1 commit
  29. 20 Jun, 2014 1 commit
    • cgraph.h (struct symtab_node): Add field in_init_priority_hash (set_init_priority... · 569b1784
      	* cgraph.h (struct symtab_node): Add field in_init_priority_hash
      	(set_init_priority, get_init_priority, set_fini_priority,
      	get_fini_priority): New methods.
      	* tree.c (init_priority_for_decl): Remove.
      	(init_ttree): Do not initialize init priority.
      	(decl_init_priority_lookup, decl_fini_priority_lookup): Rewrite.
      	(decl_priority_info): Remove.
      	(decl_init_priority_insert): Rewrite.
      	(decl_fini_priority_insert): Rewrite.
      	* tree.h (tree_priority_map_eq, tree_priority_map_hash,
      	tree_priority_map_marked_p): Remove.
      	* lto-cgraph.c (lto_output_node, input_node): Stream init priorities.
      	* lto-streamer-out.c (hash_tree): Do not hash priorities.
      	* tree-streamer-out.c (pack_ts_decl_with_vis_value_fields): Do
      	not output priorities.
      	(pack_ts_function_decl_value_fields): Likewise.
      	* tree-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Do
      	not input priorities.
      	(unpack_ts_function_decl_value_fields): Likewise.
      	* symtab.c (symbol_priority_map): Declare.
      	(init_priority_hash): Declare.
      	(symtab_unregister_node): Unregister from priority hash, too.
      	(symtab_node::get_init_priority, cgraph_node::get_fini_priority):
      	New methods.
      	(symbol_priority_map_eq, symbol_priority_map_hash): New functions.
      	(symbol_priority_info): New function.
      	(symtab_node::set_init_priority, cgraph_node::set_fini_priority):
      	New methods.
      	* tree-core.h (tree_priority_map): Remove.
      
      	* lto.c (compare_tree_sccs_1): Do not compare priorities.
      
      From-SVN: r211838
      Jan Hubicka committed
  30. 15 Jun, 2014 1 commit
    • c-common.c (handle_tls_model_attribute): Use set_decl_tls_model. · 56363ffd
      	* c-family/c-common.c (handle_tls_model_attribute): Use set_decl_tls_model.
      	* cgraph.h (struct varpool_node): Add tls_model.
      	* tree.c (decl_tls_model, set_decl_tls_model): New functions.
      	* tree.h (DECL_TLS_MODEL): Update.
      	(DECL_THREAD_LOCAL_P): Check that variable is static.
      	(decl_tls_model): Declare.
      	(set_decl_tls_model): Declare.
      	* tree-emutls.c (get_emutls_init_templ_addr): First build decl and then
      	set symbol prorperties.
      	(get_emutls_init_templ_addr): Cleanup.
      	(new_emutls_decl): Update.
      	* lto-cgraph.c (lto_output_varpool_node): Stream TLS model
      	(lto_input_varpool_node): Likewise.
      	* lto-streamer-out.c (hash_tree): Likewise.
      	* tree-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Do
      	not stream DECL_TLS_MODEL.
      	* tree-profile.c (init_ic_make_global_vars): Use
      	set_decl_tls_model.
      	* tree-core.h (tree_decl_with_vis): Remove tls_model;
      	update comments.
      
      	* c-parser.c (c_parser_omp_threadprivate): Likewise.
      	* c-decl.c (merge_decls): Likewise.
      
      	* decl.c (duplicate_decls): Use set_decl_tls_model.
      	(grokdeclarator): Likewise.
      	* semantics.c (finish_id_expression): Check TLS only for
      	static variables.
      	(finish_omp_threadprivate): Use decl_default_tls_model.
      	* decl2.c (get_guard): Likewise.
      	* call.c (make_temporary_var_for_ref_to_temp): Likewise.
      
      	* gcc-interface/utils.c (process_attributes): Use
      	set_decl_tls_model.
      
      	* trans-common.c (build_common_decl): Use
      	set_decl_tls_model.
      	* trans-decl.c (gfc_finish_var_decl): Likewise.
      	(get_proc_pointer_decl): Likewise.
      
      	* lto.c (compare_tree_sccs_1): Do not compare DECL_TLS_MODEL.
      
      From-SVN: r211689
      Jan Hubicka committed
  31. 11 Jun, 2014 1 commit
    • varasm.c (set_implicit_section): New function. · e257a17c
      	* varasm.c (set_implicit_section): New function.
      	(resolve_unique_section): Use it to set implicit section
      	for aliases, too.
      	(get_named_text_section): Use symtab_get_node (decl)->implicit_section
      	(default_function_section): Likewise.
      	(decl_binds_to_current_def_p): Constify argument.
      	* varasm.h (decl_binds_to_current_def_p): Update prototype.
      	* asan.c (asan_protect_global): Use symtab_get_node (decl)->implicit_section.
      	* symtab.c (dump_symtab_base): Dump implicit sections.
      	(verify_symtab_base): Verify sanity of sectoins and comdats.
      	(symtab_resolve_alias): Alias share the section of its target.
      	(set_section_1): New function.
      	(symtab_node::set_section): Move here, recurse to aliases.
      	(verify_symtab): Check for duplicated symtab lists.
      	* tree-core.h (implicit_section_name_p): Remove.
      	* tree-vect-data-refs.c: Include varasm.h.
      	(vect_can_force_dr_alignment_p): Fix conditional on when
      	decl bints to current definition; use
      	symtab_get_node (decl)->implicit_section.
      	* cgraph.c (cgraph_make_node_local_1): Fix section set.
      	* cgraph.h (struct symtab_node): Add implicit_section.
      	(set_section): Rename to ...
      	(set_section_for_node): ... this one.
      	(set_section): Declare.
      	* tree.h (DECL_HAS_IMPLICIT_SECTION_NAME_P): Remove.
      	* lto-cgraph.c (lto_output_node, lto_output_varpool_node,
      	input_overwrite_node, input_varpool_node): Stream implicit_section.
      	* ipa.c (symtab_remove_unreachable_nodes): Do not check symtab before
      	removal; it will fail in LTO.
      	
      	* vtable-class-hierarchy.c: Use symtab_get_node (var_decl)->implicit_section.
      	* optimize.c (cdtor_comdat_group): Fix handling of aliases.
      	(maybe_clone_body): Move symbol across comdat groups.
      	* method.c (use_thunk): Copy implicit section flag.
      
      	* go/go-gcc.cc (Gcc_backend::global_variable_set_init): Use
      	symtab_get_node(var_decl)->implicit_section.
      
      	* lto.c (read_cgraph_and_symbols): Remove unreachable symbols.
      	(do_whole_program_analysis): Use verify_symtab.
      
      From-SVN: r211434
      Jan Hubicka committed