From: Roger Sayle Date: Wed, 14 Jun 2006 04:35:29 +0000 (+0000) Subject: re PR c++/21210 (Trouble with __complex__ types default construction) X-Git-Tag: releases/gcc-4.0.4~613 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7797d87f9cbdf0681ccadf5708f3e198be8ae98;p=thirdparty%2Fgcc.git re PR c++/21210 (Trouble with __complex__ types default construction) PR c++/21210 * typeck2.c (build_functional_cast): Use cp_convert to construct non-aggregate initializers instead of the user-level build_c_cast. * g++.dg/init/complex1.C: New test case. From-SVN: r114634 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e31cec2f923b..e6604f7ff05b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-06-13 Roger Sayle + + PR c++/21210 + * typeck2.c (build_functional_cast): Use cp_convert to construct + non-aggregate initializers instead of the user-level build_c_cast. + 2006-06-12 Volker Reichelt PR c++/27601 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index e6c35edcdcfc..c0610171a8e2 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1386,12 +1386,11 @@ build_functional_cast (tree exp, tree parms) if (! IS_AGGR_TYPE (type)) { - /* This must build a C cast. */ if (parms == NULL_TREE) - parms = integer_zero_node; - else - parms = build_x_compound_expr_from_list (parms, "functional cast"); + return cp_convert (type, integer_zero_node); + /* This must build a C cast. */ + parms = build_x_compound_expr_from_list (parms, "functional cast"); return build_c_cast (type, parms); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2c0dec4dd202..d9f9b79a6fcc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-06-13 Roger Sayle + + PR c++/21210 + * g++.dg/init/complex1.C: New test case. + 2006-06-12 Volker Reichelt PR c++/27601 diff --git a/gcc/testsuite/g++.dg/init/complex1.C b/gcc/testsuite/g++.dg/init/complex1.C new file mode 100644 index 000000000000..3f88fd902c05 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/complex1.C @@ -0,0 +1,7 @@ +/* PR c++/21210 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +typedef float __complex__ fcomplex; +fcomplex cplx = fcomplex(); +