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

            Bug ID: 92560
           Summary: ICE using decltype(x < y) when that operator uses
                    operator<=>
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
                CC: jason at gcc dot gnu.org
  Target Milestone: ---

#include <compare>

struct X
{
  friend std::strong_ordering operator<=>(X, X);
} x;

using T = decltype(x < x);


Compiled with -std=gnu++2a:

less-ice.cc:8:24: internal compiler error: in build_over_call, at
cp/call.c:8835
    8 | using T = decltype(x < x);
      |                        ^
0x5be807 build_over_call
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:8829
0x8672d6 build_new_method_call_1
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:10193
0x8672d6 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:10268
0x867ed9 build_special_member_call(tree_node*, tree_node*, vec<tree_node*,
va_gc, vl_embed>**, tree_node*, int, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:9706
0x861b7a build_temp
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:7044
0x861b7a convert_like_real
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:7584
0x86346b build_over_call
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:8671
0x8692e9 build_new_op_1
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6224
0x86987f build_new_op(op_location_t const&, tree_code, int, tree_node*,
tree_node*, tree_node*, tree_node**, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6490
0x8695e4 build_new_op_1
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6311
0x86987f build_new_op(op_location_t const&, tree_code, int, tree_node*,
tree_node*, tree_node*, tree_node**, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6490
0xa38a66 build_x_binary_op(op_location_t const&, tree_code, tree_node*,
tree_code, tree_node*, tree_code, tree_node**, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/typeck.c:4221
0x9693ad cp_parser_binary_expression
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:9645
0x96a199 cp_parser_assignment_expression
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:9780
0x96a4bf cp_parser_expression
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:9948
0x98a745 cp_parser_decltype_expr
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:14727
0x98a745 cp_parser_decltype
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:14800
0x987c37 cp_parser_simple_type_specifier
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:17866
0x9761cd cp_parser_type_specifier
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:17642
0x98cc88 cp_parser_type_specifier_seq
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:22189
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to