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

            Bug ID: 104527
           Summary: [11/12 Regression] ICE: tree check: accessed elt 1 of
                    'tree_vec' with 0 elts in hash, at
                    cp/constraint.cc:2486
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
                CC: ppalka at gcc dot gnu.org
  Target Milestone: ---

gcc 12.0.1 20220213 snapshot (g:58aeb75d4097010ad9bb72b964265b18ab284f93) ICEs
when compiling the following testcase, reduced from
test/SemaTemplate/instantiate-requires-expr.cpp from the clang 13.0.0 test
suite, w/ -std=c++20 (or -fconcepts):

template<typename T, typename U>
constexpr bool is_same_v = false;

namespace expr_requirement {
  template<typename T, typename U = int>
  concept C1 = is_same_v<T, U>;

  template<typename T>
  struct b {
      template<typename U>
        requires (requires { { 0 } -> C1<typename T::a>; }, false)
      struct r {};
  };

  using bri = b<int>::r<short>;
}

% g++-12.0.1 -fconcepts -c s6aywpah.cpp
s6aywpah.cpp: In substitution of 'template<class T> template<class U>  requires
(requires{{0} -> decltype(auto) [requires expr_requirement::C1<<placeholder>,
typename T::a>];}, false) struct expr_requirement::b<T>::r [with U = short int;
T = int]':
s6aywpah.cpp:15:30:   required from here
s6aywpah.cpp:11:32: internal compiler error: tree check: accessed elt 1 of
'tree_vec' with 0 elts in hash, at cp/constraint.cc:2486
   11 |         requires (requires { { 0 } -> C1<typename T::a>; }, false)
      |                              ~~^~~~~~~~~~~~~~~~~~~~~~~~
0x8768fa tree_vec_elt_check_failed(int, int, char const*, int, char const*)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/tree.cc:8889
0x9a55e3 tree_vec_elt_check(tree_node*, int, char const*, int, char const*)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/tree.h:3666
0x9a55e3 sat_hasher::hash(sat_entry*)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2486
0x9a13a3 hash_table<sat_hasher, false, xcallocator>::find_slot(sat_entry*
const&, insert_option)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/hash-table.h:435
0x9a13a3 satisfaction_cache::satisfaction_cache(tree_node*, tree_node*,
sat_info)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2580
0x9a442e satisfy_atom
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2897
0x9a442e satisfy_constraint_r
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:3006
0x9a4d14 satisfy_normalized_constraints
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:3031
0x9a2bc8 satisfy_nondeclaration_constraints
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:3113
0x9a2bc8 constraint_satisfaction_value
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:3268
0x9a4dd4 constraints_satisfied_p(tree_node*, tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:3300
0xb20299 do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context, tree_node*, int)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/pt.cc:30234
0x9a3610 type_deducible_p
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2010
0x9a3610 tsubst_compound_requirement
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2075
0x9a3610 tsubst_requirement
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2155
0x9a3610 tsubst_requires_expr
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2278
0x9a4d7b tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/constraint.cc:2297
0xb27141 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/pt.cc:21288
0xb3e921 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/pt.cc:19413
0xb3fc67 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.1_p20220213/work/gcc-12-20220213/gcc/cp/pt.cc:19391

Reply via email to