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

            Bug ID: 98372
           Summary: ICE tree check: accessed elt 2 of ‘tree_vec’ with 1
                    elts in tsubst, at cp/pt.c:15500 since
                    r11-5942-g059da609fa8b3a08
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: nathan at gcc dot gnu.org
  Target Milestone: ---

Reduced from libcamera package:

$ cat ipa-key.ii
template <typename _Tp> using remove_pointer_t = typename _Tp ::type;
template <bool> struct enable_if;
template <bool _Cond, typename>
using enable_if_t = typename enable_if<_Cond>::type;
template <typename> bool is_convertible_v;
template <typename, unsigned long = 0> class Span;
template <typename T, unsigned long> class Span {
  using element_type = T;
  template <unsigned long N>
  Span(element_type (&arr)[N],
       enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
                   decltype(nullptr)>);
};
template <typename T> class Span<T> {
  using element_type = T;
  template <unsigned long N>
  Span(element_type (&arr)[N],
       enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
                   decltype(nullptr)>);
};

struct aaa
{
  Span<char> data0;
};

$ g++ ipa-key.ii -c
ipa-key.ii: In instantiation of ‘class Span<char>’:
ipa-key.ii:24:14:   required from here
ipa-key.ii:10:23: internal compiler error: tree check: accessed elt 2 of
‘tree_vec’ with 1 elts in tsubst, at cp/pt.c:15511
   10 |   Span(element_type (&arr)[N],
      |        ~~~~~~~~~~~~~~~^~~~~~~
0x83963e tree_vec_elt_check_failed(int, int, char const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.c:10011
0x94f182 tree_vec_elt_check(tree_node*, int, char const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.h:3559
0xad3dae tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15511
0xab7c28 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20744
0xac10d8 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:19004
0xad5a83 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:12247
0xad5a83 tsubst_template_arg(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:12258
0xad5a83 tsubst_template_arg(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:12246
0xad5b98 tsubst_template_args(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:13316
0xad4c57 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15395
0xad2d14 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15434
0xad2d14 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15434
0xabe8ef tsubst_decl
        /home/marxin/Programming/gcc/gcc/cp/pt.c:14461
0xab479f tsubst_copy
        /home/marxin/Programming/gcc/gcc/cp/pt.c:16514
0xab5f50 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20609
0xab6703 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:19526
0xab6a03 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20033
0xad31ea tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:16086
0xad3296 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15979
0xad5b98 tsubst_template_args(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:13316
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