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.