From: Jason Merrill Date: Wed, 20 Apr 2011 06:31:07 +0000 (-0400) Subject: re PR c++/46304 (g++ crashes with ICE in bitmap_first_set_bit, at bitmap.c:770) X-Git-Tag: releases/gcc-4.5.3~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc4f544a10369aa642e52597fbb225f7141d2dfc;p=thirdparty%2Fgcc.git re PR c++/46304 (g++ crashes with ICE in bitmap_first_set_bit, at bitmap.c:770) PR c++/46304 * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR. From-SVN: r172755 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d7cd00707ad0..2441d6522b2f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-04-19 Jason Merrill + + PR c++/46304 + * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR. + 2011-04-19 Jason Merrill PR c++/45267 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 9d4dc5a33bd5..8ccb32d93c51 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -4328,7 +4328,11 @@ cp_build_binary_op (location_t location, gcc_unreachable(); } } - return build2 (COMPLEX_EXPR, result_type, real, imag); + real = fold_if_not_in_template (real); + imag = fold_if_not_in_template (imag); + result = build2 (COMPLEX_EXPR, result_type, real, imag); + result = fold_if_not_in_template (result); + return result; } /* For certain operations (which identify themselves by shorten != 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7ac925410bfc..253c8321769a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-04-19 Jason Merrill + + * g++.dg/ext/complex7.C: New. + 2011-04-19 Jason Merrill * g++.dg/ext/attrib41.C: New. diff --git a/gcc/testsuite/g++.dg/ext/complex7.C b/gcc/testsuite/g++.dg/ext/complex7.C new file mode 100644 index 000000000000..9d5463f94dcd --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/complex7.C @@ -0,0 +1,6 @@ +// { dg-options "" } + +class A +{ + static const _Complex double x = 1.0 + 2.0i; +};