[Bug c++/107242] ICE: tree check: expected complex_cst, have plus_expr in output_constant, at varasm.cc:5284 with frounding-math
asolokha at gmx dot com
gcc-bugzilla@gcc.gnu.org
Thu Oct 13 05:17:19 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107242
--- Comment #3 from Arseny Solokha <asolokha at gmx dot com> ---
Testcase w/o dependency on libstdc++:
template <typename>
class complex;
template <>
struct complex<float> {
template <typename _Tp>
constexpr void
operator+= (_Tp __z)
{
_M_value += __z._M_value;
}
_Complex float _M_value;
};
constexpr complex<float>
operator+ (complex<float> __x, complex<float> __y)
{
complex __r = __x;
__r += __y;
return __r;
}
complex<float>
test_comparison ()
{
constexpr complex<float> a{2.2}, b{4.4};
return a + b;
}
% powerpc-e300c3-linux-gnu-g++-13 -Og -frounding-math -c micz0onj.cc
micz0onj.cc:32:1: internal compiler error: tree check: expected complex_cst,
have plus_expr in output_constant, at varasm.cc:5284
32 | }
| ^
0x803d1f tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/tree.cc:8827
0x819d94 tree_check(tree_node*, char const*, int, char const*, tree_code)
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/tree.h:3526
0x819d94 output_constant
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:5284
0x14b1c1a output_constructor_regular_field
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:5562
0x14b1c1a output_constructor
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:5829
0x14b3625 assemble_constant_contents
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:3638
0x14b3d34 output_object_block
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:8070
0x14b3d34 output_object_blocks()
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-13.0.0_p20221009/work/gcc-13-20221009/gcc/varasm.cc:8148
More information about the Gcc-bugs
mailing list