aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-icf.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ipa-icf.cc')
-rw-r--r--gcc/ipa-icf.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/gcc/ipa-icf.cc b/gcc/ipa-icf.cc
index b354fb1..c7596f9 100644
--- a/gcc/ipa-icf.cc
+++ b/gcc/ipa-icf.cc
@@ -2166,7 +2166,9 @@ sem_item_optimizer::write_summary (void)
!lsei_end_p (lsei);
lsei_next_in_partition (&lsei))
{
- symtab_node *node = lsei_node (lsei);
+ symtab_node *node = dyn_cast <symtab_node *> (lsei_node (lsei));
+ if (!node)
+ continue;
if (m_symtab_node_map.get (node))
count++;
@@ -2179,7 +2181,9 @@ sem_item_optimizer::write_summary (void)
!lsei_end_p (lsei);
lsei_next_in_partition (&lsei))
{
- symtab_node *node = lsei_node (lsei);
+ symtab_node *node = dyn_cast <symtab_node *> (lsei_node (lsei));
+ if (!node)
+ continue;
sem_item **item = m_symtab_node_map.get (node);
@@ -2233,7 +2237,7 @@ sem_item_optimizer::read_section (lto_file_decl_data *file_data,
for (i = 0; i < count; i++)
{
unsigned int index;
- symtab_node *node;
+ toplevel_node *node;
lto_symtab_encoder_t encoder;
index = streamer_read_uhwi (&ib_main);
@@ -2241,12 +2245,11 @@ sem_item_optimizer::read_section (lto_file_decl_data *file_data,
node = lto_symtab_encoder_deref (encoder, index);
hashval_t hash = streamer_read_uhwi (&ib_main);
- gcc_assert (node->definition);
+ if (symtab_node *snode = dyn_cast <symtab_node *> (node))
+ gcc_assert (snode->definition);
- if (is_a<cgraph_node *> (node))
+ if (cgraph_node *cnode = dyn_cast <cgraph_node *> (node))
{
- cgraph_node *cnode = dyn_cast <cgraph_node *> (node);
-
sem_function *fn = new sem_function (cnode, &m_bmstack);
unsigned count = streamer_read_uhwi (&ib_main);
inchash::hash hstate (0);
@@ -2263,10 +2266,8 @@ sem_item_optimizer::read_section (lto_file_decl_data *file_data,
fn->set_hash (hash);
m_items.safe_push (fn);
}
- else
+ else if (varpool_node *vnode = dyn_cast <varpool_node *> (node))
{
- varpool_node *vnode = dyn_cast <varpool_node *> (node);
-
sem_variable *var = new sem_variable (vnode, &m_bmstack);
var->set_hash (hash);
m_items.safe_push (var);