https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83958
Bug ID: 83958 Summary: ICE: Segmentation fault (in find_decomp_class_base) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- While reducing the testcase from PR83481 I've found a snippet that still makes both g++ 7 and 8 (r256677) ICE: template <typename = void> struct ab; class b; template <typename, typename, typename = ab<>> class c; template <typename, typename> struct ae; template <typename af, typename i, typename ag, typename, typename, typename d> class e { public: using ah = d; ah operator*(); af operator++(); template <typename f, typename g, typename h, typename ai> bool operator!=(e<f, i, ag, g, h, ai>); }; template <typename i, typename ag, typename> class aj { public: class ad; using ak = ae<i, ag>; using am = e<ad, i, ag, ad, ak, ak &>; class ad : public am {}; ad begin(); ad end(); }; template <typename i, typename ag, typename an> class c : aj<i, ag, an> { using ao = aj<i, ag, an>; public: using ao::begin; using ao::end; }; using ap = class aq; class ar { void as() { for (auto & [ a ] : at) {} } c<ap, b> at; }; % g++-8.0.0-alpha20180114 -std=c++1z -w -c file_upload.i file_upload.i: In member function 'void ar::as()': file_upload.i:32:35: internal compiler error: Segmentation fault void as() { for (auto & [ a ] : at) {} } ^~ 0xea3a0f crash_signal /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/toplev.c:325 0x853a88 tree_check(tree_node*, char const*, int, char const*, tree_code) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/tree.h:3126 0x853a88 find_decomp_class_base /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/decl.c:7215 0x875eb3 cp_finish_decomp(tree_node*, tree_node*, unsigned int) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/decl.c:7604 0x8e9e24 cp_convert_range_for(tree_node*, tree_node*, tree_node*, tree_node*, unsigned int, bool, unsigned short) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:11928 0x8ee82b cp_parser_range_for /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:11753 0x9198de cp_parser_for /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:11615 0x9198de cp_parser_iteration_statement /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:12172 0x8f5ec6 cp_parser_statement /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:10766 0x8f6ee0 cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:11206 0x8f6fb7 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:11160 0x90de50 cp_parser_function_body /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:21700 0x90de50 cp_parser_ctor_initializer_opt_and_function_body /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:21737 0x90e770 cp_parser_function_definition_after_declarator /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:26635 0x91058c cp_parser_late_parsing_for_member /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:27515 0x90235e cp_parser_class_specifier_1 /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:22666 0x903639 cp_parser_class_specifier /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:22692 0x903639 cp_parser_type_specifier /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:16698 0x910e6c cp_parser_decl_specifier_seq /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:13559 0x916ec3 cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20180114/work/gcc-8-20180114/gcc/cp/parser.c:12867