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

            Bug ID: 98116
           Summary: [11 Regression] ICE in strip_typedefs, at
                    cp/tree.c:1744 since r11-5663-g329ae1d7751346ba
           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: ---

The following is reduced from chromium:

$ cat file_path.ii
namespace std {
struct is_convertible;
template <typename _Tp> using remove_pointer_t = typename _Tp ::type;
template <bool> struct enable_if;
template <typename> void declval();
template <bool _Cond> using enable_if_t = typename enable_if<_Cond>::type;
template <typename, typename> class Trans_NS___cxx11_basic_string {
  long _M_string_length;
};
} // namespace std
struct string16_char_traits;
template class std::Trans_NS___cxx11_basic_string<unsigned short,
                                                  string16_char_traits>;
template <typename, typename> using IsLegalDataConversion =
std::is_convertible;
template <typename Container, typename T>
using ContainerHasConvertibleData = IsLegalDataConversion<
    std::remove_pointer_t<decltype(std::declval<Container>)>, T>;
template <typename Array, typename T, long>
using EnableIfSpanCompatibleArray =
    std::enable_if_t<ContainerHasConvertibleData<Array, T>::value>;
template <int Extent> class span {
  template <long N, EnableIfSpanCompatibleArray<
                        const std::Trans_NS___cxx11_basic_string<
                            unsigned short, string16_char_traits>[N],
                        std::Trans_NS___cxx11_basic_string<short, int>,
Extent>>
  span();
};

$ g++ file_path.ii -c
file_path.ii:25:73: internal compiler error: in strip_typedefs, at
cp/tree.c:1744
   25 |                         std::Trans_NS___cxx11_basic_string<short, int>,
Extent>>
      |                                                                        
^~~~~~
0x6dd571 strip_typedefs(tree_node*, bool*, unsigned int)
        /home/marxin/Programming/gcc/gcc/cp/tree.c:1744
0xa3cbb2 canonicalize_type_argument(tree_node*, int)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:8121
0xa3cbb2 canonicalize_type_argument(tree_node*, int)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:8116
0xa74cf3 coerce_template_parms
        /home/marxin/Programming/gcc/gcc/cp/pt.c:8965
0xa6e496 instantiate_alias_template
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20991
0xa6e496 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15322
0xa7816e lookup_template_class_1
        /home/marxin/Programming/gcc/gcc/cp/pt.c:9907
0xa7964c lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*,
int, int)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:10190
0xaa063b finish_template_type(tree_node*, tree_node*, int)
        /home/marxin/Programming/gcc/gcc/cp/semantics.c:3442
0xa18b11 cp_parser_template_id
        /home/marxin/Programming/gcc/gcc/cp/parser.c:16994
0xa18cfc cp_parser_class_name
        /home/marxin/Programming/gcc/gcc/cp/parser.c:24216
0xa14c45 cp_parser_qualifying_entity
        /home/marxin/Programming/gcc/gcc/cp/parser.c:6864
0xa14c45 cp_parser_nested_name_specifier_opt
        /home/marxin/Programming/gcc/gcc/cp/parser.c:6546
0xa036be cp_parser_constructor_declarator_p
        /home/marxin/Programming/gcc/gcc/cp/parser.c:29163
0xa036be cp_parser_decl_specifier_seq
        /home/marxin/Programming/gcc/gcc/cp/parser.c:14576
0xa2122e cp_parser_parameter_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:23278
0xa222bb cp_parser_template_parameter
        /home/marxin/Programming/gcc/gcc/cp/parser.c:16569
0xa222bb cp_parser_template_parameter_list
        /home/marxin/Programming/gcc/gcc/cp/parser.c:16160
0xa2cda2 cp_parser_explicit_template_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:29828
0x9fff48 cp_parser_member_specification_opt
        /home/marxin/Programming/gcc/gcc/cp/parser.c:25313
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