From: Jakub Jelinek Date: Thu, 14 Mar 2013 16:11:37 +0000 (+0100) Subject: re PR c++/56403 (internal compiler error: in build_zero_init_1, at cp/init.c:279) X-Git-Tag: releases/gcc-4.6.4~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3195a2fce04829754e35286c463d265eb3ec162;p=thirdparty%2Fgcc.git 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: r196660 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5ddfb2f33fb8..5a4d95fea8b2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-03-14 Jakub Jelinek + + PR c++/56403 + * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead + of CLASS_TYPE_P. + 2013-02-09 Jason Merrill PR c++/56247 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 091ac73ae1e1..e3e74b19e386 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -181,7 +181,7 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, ; 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,gc) *v = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 401c1ed54a63..46e3bd2ccee1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-03-14 Jakub Jelinek + + PR c++/56403 + * g++.dg/torture/pr56403.C: New test. + 2013-03-13 Paul Thomas PR fortran/56575 diff --git a/gcc/testsuite/g++.dg/torture/pr56403.C b/gcc/testsuite/g++.dg/torture/pr56403.C new file mode 100644 index 000000000000..27b6eeb88882 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr56403.C @@ -0,0 +1,12 @@ +// PR c++/56403 +// { dg-do compile } + +#include + +struct S { va_list err_args; }; + +void * +foo () +{ + return new S (); +}