diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-12-15 04:44:58 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-12-15 03:44:58 +0000 |
commit | 59b5b46686c45c803118ad4dee42d8919e305bc0 (patch) | |
tree | f143208f83496b098dd8ffd5779764b33414e977 /gcc/symtab.c | |
parent | 38c1b72fcb541aca26ad94f4e9a7d9c8261422ed (diff) | |
download | gcc-59b5b46686c45c803118ad4dee42d8919e305bc0.zip gcc-59b5b46686c45c803118ad4dee42d8919e305bc0.tar.gz gcc-59b5b46686c45c803118ad4dee42d8919e305bc0.tar.bz2 |
re PR middle-end/61558 (ICE: Segmentation fault)
PR ipa/61558
* symtab.c (symbol_table::insert_to_assembler_name_hash
symbol_table::unlink_from_assembler_name_hash): Do not ICE when
DECL_ASSEMBLER_NAME is NULL.
From-SVN: r218729
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r-- | gcc/symtab.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c index 101bc25..37e4a94 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -168,6 +168,11 @@ symbol_table::insert_to_assembler_name_hash (symtab_node *node, tree name = DECL_ASSEMBLER_NAME (node->decl); + /* C++ FE can produce decls without associated assembler name and insert + them to symtab to hold section or TLS information. */ + if (!name) + return; + hashval_t hash = decl_assembler_name_hash (name); aslot = assembler_name_hash->find_slot_with_hash (name, hash, INSERT); gcc_assert (*aslot != node); @@ -209,6 +214,10 @@ symbol_table::unlink_from_assembler_name_hash (symtab_node *node, { tree name = DECL_ASSEMBLER_NAME (node->decl); symtab_node **slot; + + if (!name) + return; + hashval_t hash = decl_assembler_name_hash (name); slot = assembler_name_hash->find_slot_with_hash (name, hash, NO_INSERT); |