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

Reply via email to