From 06ed016f032b8f66740c85d75955e8ea65ee6ca2 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Wed, 6 Oct 2010 19:28:13 +0200 Subject: [PATCH] lto.c (partition_cgraph_node_p, [...]): Handle COMDATs required by the linker. * lto.c (partition_cgraph_node_p, partition_varpool_node_p): Handle COMDATs required by the linker. From-SVN: r165058 --- gcc/lto/ChangeLog | 5 +++++ gcc/lto/lto.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index a3f2fd8..0057fe3 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +2010-10-06 Jan Hubicka + + * lto.c (partition_cgraph_node_p, partition_varpool_node_p): Handle + COMDATs required by the linker. + 2010-10-05 Ian Lance Taylor * lto.c (lto_section_with_id): Make s a const pointer. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 323b09a..ab90e85 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -839,7 +839,8 @@ partition_cgraph_node_p (struct cgraph_node *node) return false; /* Extern inlines and comdat are always only in partitions they are needed. */ if (DECL_EXTERNAL (node->decl) - || DECL_COMDAT (node->decl)) + || (DECL_COMDAT (node->decl) + && !cgraph_used_from_object_file_p (node))) return false; return true; } @@ -854,7 +855,8 @@ partition_varpool_node_p (struct varpool_node *vnode) return false; /* Constant pool and comdat are always only in partitions they are needed. */ if (DECL_IN_CONSTANT_POOL (vnode->decl) - || DECL_COMDAT (vnode->decl)) + || (DECL_COMDAT (vnode->decl) + && !varpool_used_from_object_file_p (vnode))) return false; return true; } -- 2.7.4