From: Jason Merrill Date: Mon, 18 Apr 2011 23:54:47 +0000 (-0400) Subject: re PR c++/48569 (internal compiler error: in build_zero_init_1, at cp/init.c:278) X-Git-Tag: releases/gcc-4.7.0~7380 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5dda97187022d04613b9976398cf4996ddbec79;p=thirdparty%2Fgcc.git re PR c++/48569 (internal compiler error: in build_zero_init_1, at cp/init.c:278) PR c++/48569 * typeck2.c (build_functional_cast): Handle VOID_TYPE. From-SVN: r172680 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cf21fd64a55e..ec683a2fc147 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2011-04-18 Jason Merrill + PR c++/48569 + * typeck2.c (build_functional_cast): Handle VOID_TYPE. + PR c++/48537 * init.c (build_value_init): Handle UNION_TYPE the same. diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index f0b67f73e21a..49f4e7e78267 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1566,7 +1566,11 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain) if (! MAYBE_CLASS_TYPE_P (type)) { if (parms == NULL_TREE) - return build_value_init (type, complain); + { + if (VOID_TYPE_P (type)) + return void_zero_node; + return build_value_init (type, complain); + } /* This must build a C cast. */ parms = build_x_compound_expr_from_list (parms, ELK_FUNC_CAST, complain); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b8e890944526..497fd4dadaee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2011-04-18 Jason Merrill + * g++.dg/init/void1.C: New. + * g++.dg/cpp0x/union4.C: New. 2011-04-18 Jakub Jelinek diff --git a/gcc/testsuite/g++.dg/init/void1.C b/gcc/testsuite/g++.dg/init/void1.C new file mode 100644 index 000000000000..ed41a90dea38 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/void1.C @@ -0,0 +1,6 @@ +// PR c++/48569 + +int main() +{ + void(); +}