aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto/lto-symtab.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-08-15 01:30:46 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-08-14 23:30:46 +0000
commit56b1f114de93c27600b9b295ff7efcf9caedfc72 (patch)
tree4aece5efbbebf94d2b39aa6940862dedbf57f883 /gcc/lto/lto-symtab.c
parentaa0a659ca69cf092fcfb6ebb58a749b63a04be48 (diff)
downloadgcc-56b1f114de93c27600b9b295ff7efcf9caedfc72.zip
gcc-56b1f114de93c27600b9b295ff7efcf9caedfc72.tar.gz
gcc-56b1f114de93c27600b9b295ff7efcf9caedfc72.tar.bz2
ipa-utils.h (compare_virtual_tables): Declare.
* ipa-utils.h (compare_virtual_tables): Declare. * ipa-devirt.c (odr_subtypes_equivalent_p): New function * lto-symtab.c (lto_varpool_replace_node): Call compare_virtual_tables. From-SVN: r213990
Diffstat (limited to 'gcc/lto/lto-symtab.c')
-rw-r--r--gcc/lto/lto-symtab.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/lto/lto-symtab.c b/gcc/lto/lto-symtab.c
index 2332225..aae865a 100644
--- a/gcc/lto/lto-symtab.c
+++ b/gcc/lto/lto-symtab.c
@@ -117,6 +117,10 @@ lto_varpool_replace_node (varpool_node *vnode,
&& vnode->decl != prevailing_node->decl)
DECL_INITIAL (vnode->decl) = error_mark_node;
+ /* Check and report ODR violations on virtual tables. */
+ if (DECL_VIRTUAL_P (vnode->decl) || DECL_VIRTUAL_P (prevailing_node->decl))
+ compare_virtual_tables (prevailing_node, vnode);
+
if (vnode->tls_model != prevailing_node->tls_model)
{
error_at (DECL_SOURCE_LOCATION (vnode->decl),