diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-02-25 15:41:26 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-02-25 15:41:26 +0100 |
commit | 5621a5d7b10710eb5dac52ee668c711bcc42fa72 (patch) | |
tree | 73c646adce94329f08ab3485e989febdbd2fc76b | |
parent | 6d65e8f1fca77a59a103d5e48cbdf57e706afc64 (diff) | |
download | gcc-5621a5d7b10710eb5dac52ee668c711bcc42fa72.zip gcc-5621a5d7b10710eb5dac52ee668c711bcc42fa72.tar.gz gcc-5621a5d7b10710eb5dac52ee668c711bcc42fa72.tar.bz2 |
re PR c++/56403 (internal compiler error: in build_zero_init_1, at cp/init.c:279)
PR c++/56403
* init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead
of CLASS_TYPE_P.
* g++.dg/torture/pr56403.C: New test.
From-SVN: r196260
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/init.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr56403.C | 12 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4a2baa0..eaa43e1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-02-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/56403 + * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead + of CLASS_TYPE_P. + 2013-02-22 Jason Merrill <jason@redhat.com> PR c++/40405 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 6f46404..697f11f 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -179,7 +179,7 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, init = convert (type, nullptr_node); else if (SCALAR_TYPE_P (type)) init = convert (type, integer_zero_node); - else if (CLASS_TYPE_P (type)) + else if (RECORD_OR_UNION_CODE_P (TREE_CODE (type))) { tree field; vec<constructor_elt, va_gc> *v = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4be79be..a33bed4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-24 Jakub Jelinek <jakub@redhat.com> + + PR c++/56403 + * g++.dg/torture/pr56403.C: New test. + 2013-02-25 Catherine Moore <clm@codesourcery.com> Revert: diff --git a/gcc/testsuite/g++.dg/torture/pr56403.C b/gcc/testsuite/g++.dg/torture/pr56403.C new file mode 100644 index 0000000..27b6eeb --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr56403.C @@ -0,0 +1,12 @@ +// PR c++/56403 +// { dg-do compile } + +#include <stdarg.h> + +struct S { va_list err_args; }; + +void * +foo () +{ + return new S (); +} |