diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-02-07 07:01:36 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-02-07 06:01:36 +0000 |
commit | 6d6af792827fa779531662366b6dadad477a84dc (patch) | |
tree | b04bcbc6defcf373da9011696d9ea84277a6be31 /gcc | |
parent | ddb3e20aaecd26afbce0025e1fef1a3144c65ce7 (diff) | |
download | gcc-6d6af792827fa779531662366b6dadad477a84dc.zip gcc-6d6af792827fa779531662366b6dadad477a84dc.tar.gz gcc-6d6af792827fa779531662366b6dadad477a84dc.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ipa-devirt.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr59918.C | 18 |
4 files changed, 29 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43e9d9c..0a0674f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 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 * lto-cgraph.c (lto_output_node): Use symtab_get_symbol_partitioning_class. diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index c110a98..3341a5a 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2cac8d2..45f215e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/g++.dg/torture/pr59918.C b/gcc/testsuite/g++.dg/torture/pr59918.C new file mode 100644 index 0000000..b30d33e --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr59918.C @@ -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 {}; |