PR c++/88830 - ICE with abstract class.

* decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
	Fix formatting.

	* g++.dg/other/abstract7.C: New test.

From-SVN: r267924
This commit is contained in:
Marek Polacek 2019-01-14 20:09:10 +00:00 committed by Marek Polacek
parent 2d91f79dc9
commit 345364cf7f
4 changed files with 28 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2019-01-14 Marek Polacek <polacek@redhat.com>
PR c++/88830 - ICE with abstract class.
* decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
Fix formatting.
2019-01-14 Tom Honermann <tom@honermann.net>
Implement P0482R5, char8_t: A type for UTF-8 characters and strings

View File

@ -2229,8 +2229,9 @@ maybe_emit_vtables (tree ctype)
never get generated. */
if (CLASSTYPE_PURE_VIRTUALS (ctype)
&& TYPE_HAS_NONTRIVIAL_DESTRUCTOR (ctype)
&& DECL_DEFAULTED_IN_CLASS_P(CLASSTYPE_DESTRUCTOR(ctype)))
note_vague_linkage_fn (CLASSTYPE_DESTRUCTOR(ctype));
&& !CLASSTYPE_LAZY_DESTRUCTOR (ctype)
&& DECL_DEFAULTED_IN_CLASS_P (CLASSTYPE_DESTRUCTOR (ctype)))
note_vague_linkage_fn (CLASSTYPE_DESTRUCTOR (ctype));
/* Since we're writing out the vtable here, also write the debug
info. */

View File

@ -1,3 +1,8 @@
2019-01-14 Marek Polacek <polacek@redhat.com>
PR c++/88830 - ICE with abstract class.
* g++.dg/other/abstract7.C: New test.
2019-01-14 Martin Sebor <msebor@redhat.com>
PR target/88638

View File

@ -0,0 +1,14 @@
// PR c++/88830
struct a {
~a();
};
class b {
virtual void c(int &);
};
class C : b {
void c(int &);
virtual int d() = 0;
a e;
};
void C::c(int &) {}