re PR ipa/59918 (ICE in record_target_from_binfo, at ipa-devirt.c:693)

PR ipa/59918
	* ipa-devirt.c (record_target_from_binfo): Remove overactive sanity check.
	* g++.dg/torture/pr59918.C: New testcase.

From-SVN: r207592
This commit is contained in:
Jan Hubicka 2014-02-07 07:01:36 +01:00 committed by Jan Hubicka
parent ddb3e20aae
commit 6d6af79282
4 changed files with 29 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2014-02-06 Jan Hubicka <hubicka@ucw.cz>
PR ipa/59918
* ipa-devirt.c (record_target_from_binfo): Remove overactive sanity check.
2014-02-06 Jan Hubicka <hubicka@ucw.cz>
PR ipa/59469

View file

@ -689,10 +689,7 @@ record_target_from_binfo (vec <cgraph_node *> &nodes,
we may not have its associated vtable. This is not a problem, since
we will walk it on the other path. */
if (!type_binfo)
{
gcc_assert (BINFO_VIRTUAL_P (binfo));
return;
}
return;
tree inner_binfo = get_binfo_at_offset (type_binfo,
offset, otr_type);
/* For types in anonymous namespace first check if the respective vtable

View file

@ -1,3 +1,8 @@
2014-02-06 Jan Hubicka <hubicka@ucw.cz>
PR ipa/59918
* g++.dg/torture/pr59918.C: New testcase.
2014-02-06 Jakub Jelinek <jakub@redhat.com>
PR target/59575

View file

@ -0,0 +1,18 @@
/* { dg-do compile } */
struct E {
~E();
virtual void f() const;
};
struct B : E {};
struct G : virtual B {};
struct A {
virtual ~A();
};
struct J : E {
void f() const {
E *p = 0;
p->f();
}
};
J h;
struct I : A, G, virtual B {};