From e49d321f033c35d907d9d3eb339efaa6a8ba1e52 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 19 Jan 2016 12:59:58 +0100 Subject: [PATCH] re PR lto/69136 (ICE in lto_symtab_prevailing_virtual_decl, at lto/lto-symtab.c:991) PR lto/69136 * lto-symtab.c (lto_symtab_prevailing_virtual_decl): Abstract decls have no assemblernames. * g++.dg/torture/pr69136.C: New testcase. From-SVN: r232553 --- gcc/lto/ChangeLog | 6 ++++++ gcc/lto/lto-symtab.c | 2 ++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/torture/pr69136.C | 6 ++++++ 4 files changed, 19 insertions(+) create mode 100644 gcc/testsuite/g++.dg/torture/pr69136.C diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 430dcfedb267..952ebd4090a5 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2016-01-19 Jan Hubicka + + PR lto/69136 + * lto-symtab.c (lto_symtab_prevailing_virtual_decl): Abstract + decls have no assemblernames. + 2016-01-19 Martin Liska Martin Jambor diff --git a/gcc/lto/lto-symtab.c b/gcc/lto/lto-symtab.c index b22dea873765..94b919b53e6e 100644 --- a/gcc/lto/lto-symtab.c +++ b/gcc/lto/lto-symtab.c @@ -990,6 +990,8 @@ lto_symtab_merge_symbols (void) tree lto_symtab_prevailing_virtual_decl (tree decl) { + if (DECL_ABSTRACT_P (decl)) + return decl; gcc_checking_assert (!type_in_anonymous_namespace_p (DECL_CONTEXT (decl)) && DECL_ASSEMBLER_NAME_SET_P (decl)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f9a2a64c1b9..d80aaa6e91ea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-01-19 Jan Hubicka + + PR lto/69136 + * g++.dg/torture/pr69136.C: New testcase. + 2016-01-19 Jan Hubicka PR lto/69133 diff --git a/gcc/testsuite/g++.dg/torture/pr69136.C b/gcc/testsuite/g++.dg/torture/pr69136.C new file mode 100644 index 000000000000..a9c6236ab273 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr69136.C @@ -0,0 +1,6 @@ +// { dg-do compile } +class GrBufferAllocPool { + virtual ~GrBufferAllocPool(); +}; +GrBufferAllocPool::~GrBufferAllocPool() { static long a; } +