https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123575

            Bug ID: 123575
           Summary: internal compiler error: in prepare_cmp_insn, at
                    optabs.cc:4589
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mkretz at gcc dot gnu.org
  Target Milestone: ---

The preprocessed source is 5.1M. I'll let it run through cvise and will post a
reduced test case later.

# g++ -std=c++26 -Wall -Wextra -Werror -O2 -g0 -Wno-attributes
-fno-operator-names -D_GLIBCXX_ASSERTIONS=1
-D_GLIBCXX_SIMD_COND_EXPLICIT_MASK_CONVERSION -DVIR_NEXT_PATCH
-fconcepts-diagnostics-depth=2 -fconstexpr-ops-limit=67108864 -fmax-errors=6
-Wno-psabi -fdiagnostics-color=always -march=x86-64 -D
UNITTEST_TYPE=std::complex<float> -D UNITTEST_WIDTH=16 -include obj/x86-64.hpp
-o obj/mask.x86-64/complex-float.16.exe tests/mask.cpp

during RTL pass: expand
In file included from /tmp/mkretz/simd/tests/../include/simd:9,
                 from /tmp/mkretz/simd/tests/unittest_pch.h:34,
                 from obj/x86-64.hpp:1:
In member function ‘constexpr simd::basic_vec<_Tp, _A0> simd::basic_vec<_Tp,
_A0>::_M_abs() const requires  signed_integral<_Tp> [with _Tp = long long int;
_Ap = simd::_Abi<2, 1, 0>]’,
    inlined from ‘constexpr simd::basic_vec<_Tp, _A0> simd::__select_impl(const
basic_vec<_Tp, _A0>::mask_type&, const basic_vec<_Tp, _A0>&, const
basic_vec<_Tp, _A0>&) [with _TargetTraits _Traits =
_TargetTraits{_ArchTraits{7}, _OptTraits{5121}}; _Tp = long long int; _Ap =
_Abi<2, 1, 0>]’ at /tmp/mkretz/simd/tests/../include/bits/simd_vec.h:1982:51,
    inlined from ‘constexpr simd::basic_vec<long long int, simd::_Abi<4, 2, 0>
> simd::__select_impl(const basic_vec<long long int, _Abi<4, 2, 0>
>::mask_type&, const basic_vec<long long int, _Abi<4, 2, 0> >&, const
basic_vec<long long int, _Abi<4, 2, 0> >&)’ at
/tmp/mkretz/simd/tests/../include/bits/simd_vec.h:2587:37,
    inlined from ‘constexpr simd::basic_mask<_Bytes, _Ap>::operator
simd::basic_vec<_Up, _UAbi>() const [with _Up = long long int; _UAbi =
simd::_Abi<4, 2, 0>; long unsigned int _Bytes = 4; _Ap = simd::_Abi<4, 1, 0>]’
at /tmp/mkretz/simd/tests/../include/bits/simd_mask.h:976:35,
    inlined from ‘constexpr simd::basic_mask<_Bytes, _Ap>::operator
simd::basic_vec<_Up, _UAbi>() const [with _Up = long long int; _UAbi =
simd::_Abi<8, 4, 0>; long unsigned int _Bytes = 4; _Ap = simd::_Abi<8, 2, 0>]’
at /tmp/mkretz/simd/tests/../include/bits/simd_mask.h:1794:60,
    inlined from ‘constexpr simd::basic_mask<_Bytes, _Ap>::operator
simd::basic_vec<_Up, _UAbi>() const [with _Up = long long int; _UAbi =
simd::_Abi<16, 8, 0>; long unsigned int _Bytes = 4; _Ap = simd::_Abi<16, 4,
0>]’ at /tmp/mkretz/simd/tests/../include/bits/simd_mask.h:1794:60,
    inlined from ‘constexpr simd::basic_mask<_Bytes, _Ap>::_VecType
simd::basic_mask<_Bytes, _Ap>::operator+() const requires 
destructible<simd::basic_vec<decltype((<lambda>)()),
decltype((__abi_rebind<decltype((<lambda>)()), (int)simd::basic_mask<_Bytes,
_Ap>::_S_size, _Ap>)())> > [with long unsigned int _Bytes = 8; _Ap =
simd::_Abi<16, 4, 32>]’ at
/tmp/mkretz/simd/tests/../include/bits/simd_complex.h:1321:38,
    inlined from ‘Tests<simd::basic_vec<std::complex<float>, simd::_Abi<16, 4,
32> > >::<lambda(auto:94&, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M)> [with auto:94 = runtime_verifier]’ at
tests/mask.cpp:61:24,
    inlined from ‘void runtime_test(auto:86&&, auto:87&& ...) [with int ...is =
{}; auto:86 = const Tests<simd::basic_vec<std::complex<float>, simd::_Abi<16,
4, 32> > >::<lambda(auto:94&, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M, Tests<simd::basic_vec<std::complex<float>,
simd::_Abi<16, 4, 32> > >::M)>&; auto:87 = {const simd::basic_mask<8,
simd::_Abi<16, 4, 32> >&, const simd::basic_mask<8, simd::_Abi<16, 4, 32> >&,
const simd::basic_mask<8, simd::_Abi<16, 4, 32> >&, const simd::basic_mask<8,
simd::_Abi<16, 4, 32> >&}]’ at /tmp/mkretz/simd/tests/unittest_pch.h:698:35:
/tmp/mkretz/simd/tests/../include/bits/simd_vec.h:986:28: internal compiler
error: in prepare_cmp_insn, at optabs.cc:4589
  986 |       { return _M_data < 0 ? -_M_data : _M_data; }
      |                ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
0x2236cfa diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
        ???:0
0x22304cd internal_error(char const*, ...)
        ???:0
0x7f2ec5 fancy_abort(char const*, int, char const*)
        ???:0
0xf1d8d3 emit_cmp_and_jump_insns(rtx_def*, rtx_def*, rtx_code, rtx_def*,
machine_mode, int, tree_node*, rtx_def*, profile_probability)
        ???:0
0xbb3778 do_compare_rtx_and_jump(rtx_def*, rtx_def*, rtx_code, int, tree_node*,
machine_mode, rtx_def*, rtx_code_label*, rtx_code_label*, profile_probability)
        ???:0
0xbb4f4d do_compare_rtx_and_jump(rtx_def*, rtx_def*, rtx_code, int,
machine_mode, rtx_def*, rtx_code_label*, rtx_code_label*, profile_probability)
        ???:0
0xf2848a expand_abs(machine_mode, rtx_def*, rtx_def*, int, int)
        ???:0
0xc6bc02 expand_expr_real_gassign(gassign*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ???:0
0xc5777a expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ???:0
0xc68705 expand_expr_real_2(separate_ops const*, rtx_def*, machine_mode,
expand_modifier)
        ???:0
0xc6bc02 expand_expr_real_gassign(gassign*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to