[Bug c++/50957] [C++0x][constexpr] complex<T> ctor drops sign of zero (sometimes)
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Nov 2 09:37:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50957
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Keywords| |wrong-code
Last reconfirmed| |2011-11-02
Component|libstdc++ |c++
CC| |jason at gcc dot gnu.org
Ever Confirmed|0 |1
Summary|complex<T> ctor drops sign |[C++0x][constexpr]
|of zero (sometimes) |complex<T> ctor drops sign
| |of zero (sometimes)
Known to fail| |4.6.2
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-11-02 09:36:44 UTC ---
Confirmed. Looks like a frontend issue (probably related to constexpr?).
In .initial we have
{
struct mock_complex z1 = {._M_real=-0.0, ._M_imag=1.0e+0};
struct complex z2 = {._M_value=__complex__ (0.0, 1.0e+0)};
<<cleanup_point struct mock_complex z1 = {._M_real=-0.0,
._M_imag=1.0e+0};>>;
thus z2 is already initialized from a bogus value. Without -std=c++0x we have
struct complex z2;
<<cleanup_point <<< Unknown tree: expr_stmt
std::complex<double>::complex (&z2, -0.0, 1.0e+0) >>>>>;
which is correct.
More information about the Gcc-bugs
mailing list