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

            Bug ID: 122658
           Summary: [14/15/16 Regression] ICE in tsubst_expr since
                    r14-4796
           Product: gcc
           Version: 15.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

Starting with r14-4796-g3e3d73ed5e85e7f467c366e9ad219d558ef9cb79 we ICE on the
following testcase with -std=c++20 and higher:
struct S {
  consteval S (int x) noexcept : a {x} { }
  consteval S (const S &) = default;
  static consteval S bar () noexcept { return S { int {} }; }
  int a;
};

template <typename T>
void
foo ()
{
  constexpr auto s = S::bar ();
}
y.C: In function ‘void foo()’:
y.C:12:30: internal compiler error: in tsubst_copy_and_build, at cp/pt.cc:21552
   12 |   constexpr auto s = S::bar ();
      |                              ^
0x78ac8a tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*)
        ../../gcc/cp/pt.cc:21552
0x73c69c instantiate_non_dependent_expr_internal(tree_node*, int)
        ../../gcc/cp/pt.cc:6426
0x4a251a fold_non_dependent_expr_template
        ../../gcc/cp/constexpr.cc:9030
0x4a2883 fold_non_dependent_expr(tree_node*, int, bool, tree_node*)
        ../../gcc/cp/constexpr.cc:9095
0x42c900 build_over_call
        ../../gcc/cp/call.cc:9819
0x43463e build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
        ../../gcc/cp/call.cc:11674
0x432476 build_special_member_call(tree_node*, tree_node*, vec<tree_node*,
va_gc, vl_embed>**, tree_node*, int, int)
        ../../gcc/cp/call.cc:11159
0x4f90fb ocp_convert(tree_node*, tree_node*, int, int, int)
        ../../gcc/cp/cvt.cc:960
0x5ba80c expand_default_init
        ../../gcc/cp/init.cc:2136
0x5bb367 expand_aggr_init_1
        ../../gcc/cp/init.cc:2322
0x5b9f87 build_aggr_init(tree_node*, tree_node*, int, int)
        ../../gcc/cp/init.cc:2041
0x537ccc build_aggr_init_full_exprs
        ../../gcc/cp/decl.cc:7393
0x538a2d check_initializer
        ../../gcc/cp/decl.cc:7558
0x53e537 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int,
cp_decomp*)
        ../../gcc/cp/decl.cc:8518
0x6c56d9 cp_parser_init_declarator
        ../../gcc/cp/parser.cc:23277
0x6b6701 cp_parser_simple_declaration
        ../../gcc/cp/parser.cc:15621
0x6b6277 cp_parser_block_declaration
        ../../gcc/cp/parser.cc:15441
0x6b4950 cp_parser_declaration_statement
        ../../gcc/cp/parser.cc:14702
0x6af8c1 cp_parser_statement
        ../../gcc/cp/parser.cc:12658
0x6b0ab8 cp_parser_statement_seq_opt
        ../../gcc/cp/parser.cc:13182
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