[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