diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-10-06 17:28:13 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-10-06 17:28:13 +0000 |
commit | 7ad28d2a64ea66472357334d8da9957057480cd2 (patch) | |
tree | 647a3954144781838fdaa4adcdc62cbbe93e16c4 /gcc/lto | |
parent | 1032532303ae44256a7318389cd666c52e8e13d8 (diff) | |
download | gcc-7ad28d2a64ea66472357334d8da9957057480cd2.tar.gz |
* lto.c (partition_cgraph_node_p, partition_varpool_node_p): Handle
COMDATs required by the linker.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165058 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto')
-rw-r--r-- | gcc/lto/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lto/lto.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index a3f2fd8986f..0057fe39775 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +2010-10-06 Jan Hubicka <jh@suse.cz> + + * lto.c (partition_cgraph_node_p, partition_varpool_node_p): Handle + COMDATs required by the linker. + 2010-10-05 Ian Lance Taylor <iant@google.com> * lto.c (lto_section_with_id): Make s a const pointer. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 323b09a9855..ab90e85ed41 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; } |