diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-06-12 06:03:49 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-06-12 04:03:49 +0000 |
commit | f961457f887a965ecca2f35b81e33c077759c347 (patch) | |
tree | 40360d8b10e6d2d13c2b1ae77545f00bc6f2121b /gcc/cgraph.h | |
parent | e35889871c9e5e6f8ea0d8c10f3d6d9fe2d9c854 (diff) | |
download | gcc-f961457f887a965ecca2f35b81e33c077759c347.zip gcc-f961457f887a965ecca2f35b81e33c077759c347.tar.gz gcc-f961457f887a965ecca2f35b81e33c077759c347.tar.bz2 |
symtab.c (section_hash): New hash.
* symtab.c (section_hash): New hash.
(symtab_unregister_node): Clear section before freeing.
(hash_section_hash_entry): New haser.
(eq_sections): New function.
(symtab_node::set_section_for_node): New method.
(set_section_1): Update.
(symtab_node::set_section): Take string instead of tree as parameter.
(symtab_resolve_alias): Update.
* cgraph.h (section_hash_entry_d): New structure.
(section_hash_entry): New typedef.
(cgraph_node): Change comdat_group_ to x_comdat_group,
change section_ to x_section and turn into section_hash_entry;
update accestors; put set_section_for_node offline.
* tree.c (decl_section_name): Turn into string.
(set_decl_section_name): Change parameter to be string.
* tree.h (decl_section_name, set_decl_section_name): Update prototypes.
* sdbout.c (sdbout_one_type): Update.
* tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Update.
* varasm.c (IN_NAMED_SECTION, get_named_section, resolve_unique_section,
hot_function_section, get_named_text_section, USE_SELECT_SECTION_FOR_FUNCTIONS,
default_function_rodata_section, make_decl_rtl, default_unique_section):
Update.
* config/c6x/c6x.c (c6x_in_small_data_p): Update.
(c6x_elf_unique_section): Update.
* config/nios2/nios2.c (nios2_in_small_data_p): Update.
* config/pa/pa.c (pa_function_section): Update.
* config/pa/pa.h (IN_NAMED_SECTION_P): Update.
* config/ia64/ia64.c (ia64_in_small_data_p): Update.
* config/arc/arc.c (arc_in_small_data_p): Update.
* config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Update.
* config/mcore/mcore.c (mcore_unique_section): Update.
* config/mips/mips.c (mips16_build_function_stub): Update.
(mips16_build_call_stub): Update.
(mips_function_rodata_section): Update.
(mips_in_small_data_p): Update.
* config/score/score.c (score_in_small_data_p): Update.
* config/rx/rx.c (rx_in_small_data): Update.
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Update.
(rs6000_xcoff_asm_named_section): Update.
(rs6000_xcoff_unique_section): Update.
* config/frv/frv.c (frv_string_begins_with): Update.
(frv_in_small_data_p): Update.
* config/v850/v850.c (v850_encode_data_area): Update.
* config/bfin/bfin.c (DECL_SECTION_NAME): Update.
(bfin_handle_l1_data_attribute): Update.
(bfin_handle_l2_attribute): Update.
* config/mep/mep.c (mep_unique_section): Update.
* config/microblaze/microblaze.c (microblaze_elf_in_small_data_p): Update.
* config/h8300/h8300.c (h8300_handle_eightbit_data_attribute): Update.
(h8300_handle_tiny_data_attribute): Update.
* config/m32r/m32r.c (m32r_in_small_data_p): Update.
(m32r_in_small_data_p): Update.
* config/alpha/alpha.c (alpha_in_small_data_p): Update.
* config/i386/i386.c (ix86_in_large_data_p): Update.
* config/i386/winnt.c (i386_pe_unique_section): Update.
* config/darwin.c (darwin_function_section): Update.
* config/lm32/lm32.c (lm32_in_small_data_p): Update.
* tree-emutls.c (get_emutls_init_templ_addr): Update.
(new_emutls_decl): Update.
* lto-cgraph.c (lto_output_node, input_node, input_varpool_node,
input_varpool_node): Update.
(ead_string_cst): Turn to ...
(read_string): ... this one.
* dwarf2out.c (secname_for_decl): Update.
* asan.c (asan_protect_global): Update.
* c-family/c-common.c (handle_section_attribute): Update handling for
section names that are no longer trees.
* java/class.c (build_utf8_ref): Update handling for section names
that are no longer trees.
(emit_register_classes_in_jcr_section): Update.
* vtable-class-hierarchy.c: Update handling for section names
that are no longer trees.
* decl.c (duplicate_decls): Likewise.
* gcc-interface/utils.c: Update handling for section names
that are no longer trees.
From-SVN: r211489
Diffstat (limited to 'gcc/cgraph.h')
-rw-r--r-- | gcc/cgraph.h | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/gcc/cgraph.h b/gcc/cgraph.h index dc286d9..1a5e85e 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -37,6 +37,19 @@ enum symtab_type SYMTAB_VARIABLE }; +/* Section names are stored as reference counted strings in GGC safe hashtable + (to make them survive through PCH). */ + +struct GTY(()) section_hash_entry_d +{ + int ref_count; + char *name; /* As long as this datastructure stays in GGC, we can not put + string at the tail of structure of GGC dies in horrible + way */ +}; + +typedef struct section_hash_entry_d section_hash_entry; + /* Base of all entries in the symbol table. The symtab_node is inherited by cgraph and varpol nodes. */ class GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"), @@ -147,14 +160,14 @@ public: /* Return comdat group. */ tree get_comdat_group () { - return comdat_group_; + return x_comdat_group; } tree get_comdat_group_id () { - if (comdat_group_ && TREE_CODE (comdat_group_) != IDENTIFIER_NODE) - comdat_group_ = DECL_ASSEMBLER_NAME (comdat_group_); - return comdat_group_; + if (x_comdat_group && TREE_CODE (x_comdat_group) != IDENTIFIER_NODE) + x_comdat_group = DECL_ASSEMBLER_NAME (x_comdat_group); + return x_comdat_group; } /* Set comdat group. */ @@ -162,32 +175,15 @@ public: { gcc_checking_assert (!group || TREE_CODE (group) == IDENTIFIER_NODE || DECL_P (group)); - comdat_group_ = group; - } - - /* Return section as STRING_CST. */ - tree get_section_name () - { - return section_; + x_comdat_group = group; } /* Return section as string. */ const char * get_section () { - if (!section_) + if (!x_section) return NULL; - return TREE_STRING_POINTER (section_); - } - - /* Set section, do not recurse into aliases. - When one wants to change section of symbol and its aliases, - use set_section */ - void set_section_for_node (tree section) - { - gcc_checking_assert (!section || TREE_CODE (section) == STRING_CST); - section_ = section; - if (!section) - implicit_section = false; + return x_section->name; } /* Vectors of referring and referenced entities. */ @@ -204,13 +200,14 @@ public: PTR GTY ((skip)) aux; /* Comdat group the symbol is in. Can be private if GGC allowed that. */ - tree comdat_group_; + tree x_comdat_group; /* Section name. Again can be private, if allowed. */ - tree section_; + section_hash_entry *x_section; /* Set section for symbol and its aliases. */ - void set_section (tree section); + void set_section (const char *section); + void set_section_for_node (const char *section); }; enum availability |