We use lto_file_data in 1to1 partitioning, so we need to not zero it
out. Nothing depends on lto_file_data being NULL.
gcc/ChangeLog:
* cgraph.cc (cgraph_node::release_body): Keep lto_file_data.
(cgraph_node::remove): likewise.
* lto-section-in.cc (lto_free_function_in_decl_state_for_node):
likewise.
* varpool.cc (varpool_node::remove): likewise.
gcc/lto/ChangeLog:
* lto-symtab.cc (lto_symtab_merge_symbols_1): likewise.
---
gcc/cgraph.cc | 11 ++---------
gcc/lto-section-in.cc | 1 -
gcc/lto/lto-symtab.cc | 6 +-----
gcc/varpool.cc | 6 +-----
4 files changed, 4 insertions(+), 20 deletions(-)
diff --git a/gcc/cgraph.cc b/gcc/cgraph.cc
index 32071a84bac..a83e3825dc3 100644
--- a/gcc/cgraph.cc
+++ b/gcc/cgraph.cc
@@ -2015,11 +2015,7 @@ cgraph_node::release_body (bool keep_arguments)
if (!used_as_abstract_origin && DECL_INITIAL (decl))
DECL_INITIAL (decl) = error_mark_node;
release_function_body (decl);
- if (lto_file_data)
- {
- lto_free_function_in_decl_state_for_node (this);
- lto_file_data = NULL;
- }
+ lto_free_function_in_decl_state_for_node (this);
if (flag_checking && clones)
{
/* It is invalid to release body before materializing clones except
@@ -2131,10 +2127,7 @@ cgraph_node::remove (void)
release_body ();
}
else
- {
- lto_free_function_in_decl_state_for_node (this);
- lto_file_data = NULL;
- }
+ lto_free_function_in_decl_state_for_node (this);
decl = NULL;
if (call_site_hash)
diff --git a/gcc/lto-section-in.cc b/gcc/lto-section-in.cc
index 1dd9520137a..bf8621925dc 100644
--- a/gcc/lto-section-in.cc
+++ b/gcc/lto-section-in.cc
@@ -448,7 +448,6 @@ lto_free_function_in_decl_state_for_node (symtab_node *node)
lto_free_function_in_decl_state (*slot);
node->lto_file_data->function_decl_states->clear_slot (slot);
}
- node->lto_file_data = NULL;
}
diff --git a/gcc/lto/lto-symtab.cc b/gcc/lto/lto-symtab.cc
index 66674a4415f..8d7fc6805e9 100644
--- a/gcc/lto/lto-symtab.cc
+++ b/gcc/lto/lto-symtab.cc
@@ -953,11 +953,7 @@ lto_symtab_merge_symbols_1 (symtab_node *prevailing)
else
{
DECL_INITIAL (e->decl) = error_mark_node;
- if (e->lto_file_data)
- {
- lto_free_function_in_decl_state_for_node (e);
- e->lto_file_data = NULL;
- }
+ lto_free_function_in_decl_state_for_node (e);
symtab->call_varpool_removal_hooks (dyn_cast<varpool_node *> (e));
}
e->remove_all_references ();
diff --git a/gcc/varpool.cc b/gcc/varpool.cc
index 976e0fa60aa..8dc5f986294 100644
--- a/gcc/varpool.cc
+++ b/gcc/varpool.cc
@@ -172,11 +172,7 @@ void
varpool_node::remove (void)
{
symtab->call_varpool_removal_hooks (this);
- if (lto_file_data)
- {
- lto_free_function_in_decl_state_for_node (this);
- lto_file_data = NULL;
- }
+ lto_free_function_in_decl_state_for_node (this);
/* When streaming we can have multiple nodes associated with decl. */
if (symtab->state == LTO_STREAMING)
--
2.50.0