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

            Bug ID: 99201
           Summary: ICE in tsubst_copy, at cp/pt.c:16581
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kretz at kde dot org
  Target Milestone: ---

Testcase (reduced with C-Vise from valid code):

template <class, class... F> void test_values_2arg(int, int, F... fun_pack) {
  [] {}(fun_pack()...);
}
template <typename TestF, typename RefF> auto make_tester(TestF, RefF) {
  return [](auto...) {
    [](auto... vs) {
      if constexpr ([&] { reffun(vs...); })
        ;
    };
  };
}
void test() {
  auto __trans_tmp_1 = make_tester([] {}, [] {});
  test_values_2arg<int>({}, {}, __trans_tmp_1);
}


ice.cpp: In instantiation of 'make_tester<test()::<lambda()>,
test()::<lambda()> >::<lambda(auto:1 ...)> [with auto:1 = {}]':
ice.cpp:2:   required from 'void test_values_2arg(int, int, F ...) [with
<template-parameter-1-1> = int; F = {make_tester<test()::<lambda()>,
test()::<lambda()> >::<lambda(auto:1 ...)>}]'
ice.cpp:14:   required from here
ice.cpp:7: internal compiler error: in tsubst_copy, at cp/pt.c:16581
    7 |       if constexpr ([&] { reffun(vs...); })
      |                                  ^~
0x66f262 tsubst_copy
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:16581
0x804fae tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20719
0x804e6b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497
0x804e6b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20841
0x816cc4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497
0x816cc4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19107
0x815dec tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132
0x815dec tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:13148
0x806acd tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20148
0x816cc4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497
0x816cc4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19107
0x817cee tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132
0x817cee tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18177
0x818893 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132
0x818893 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18147
0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132
0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18498
0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132
0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18498
0x81f84b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132

Reply via email to