Again for completeness for building the kernel.
-----
ICF assumes that all nodes in summaries are defined.
lto_symtab_merge_symbols can set node's definition flag to false.
remove_unreachable_nodes then releases its body without setting
body_removed. This results in SegFault in ICF.
It might be better to solve it in those other places, this patch is here
for completeness to be able to compile 6.15+ linux kernel.
gcc/ChangeLog:
* ipa-icf.cc (sem_item_optimizer::filter_removed_items): Check
for definition flag.
---
gcc/ipa-icf.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gcc/ipa-icf.cc b/gcc/ipa-icf.cc
index d420b173af4..466a08f2dcc 100644
--- a/gcc/ipa-icf.cc
+++ b/gcc/ipa-icf.cc
@@ -2423,7 +2423,8 @@ sem_item_optimizer::filter_removed_items (void)
{
cgraph_node *cnode = static_cast <sem_function *>(item)->get_node ();
- if (in_lto_p && (cnode->alias || cnode->body_removed))
+ if (in_lto_p && (cnode->alias || cnode->body_removed
+ || !cnode->definition))
remove_item (item);
else
filtered.safe_push (item);
--
2.51.1