http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59638

            Bug ID: 59638
           Summary: [c++1y] ICE with pointer to function that has auto as
                    parameter
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with "-std=c++1y")
triggers an ICE on trunk:

===========================================
typedef void (*f)(auto);

struct A
{
  int i;
};
===========================================

bug.cc:1:23: error: template declaration of 'typedef void (* f)(auto:1)'
 typedef void (*f)(auto);
                       ^
bug.cc:5:7: error: data member 'i' cannot be a member template
   int i;
       ^
bug.cc:5:7: internal compiler error: in poplevel, at cp/decl.c:568
0x58b398 poplevel(int, int, int)
        ../../gcc/gcc/cp/decl.c:568
0x5c5498 end_template_decl()
        ../../gcc/gcc/cp/pt.c:3799
0x6697a1 finish_fully_implicit_template
        ../../gcc/gcc/cp/parser.c:31759
0x6727a3 cp_parser_member_declaration
        ../../gcc/gcc/cp/parser.c:20390
0x6759ec cp_parser_member_specification_opt
        ../../gcc/gcc/cp/parser.c:19935
0x6759ec cp_parser_class_specifier_1
        ../../gcc/gcc/cp/parser.c:19179
0x6759ec cp_parser_class_specifier
        ../../gcc/gcc/cp/parser.c:19406
0x6759ec cp_parser_type_specifier
        ../../gcc/gcc/cp/parser.c:14297
0x68e8cf cp_parser_decl_specifier_seq
        ../../gcc/gcc/cp/parser.c:11542
0x695459 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:11132
0x679003 cp_parser_block_declaration
        ../../gcc/gcc/cp/parser.c:11081
0x69fcd3 cp_parser_declaration
        ../../gcc/gcc/cp/parser.c:10978
0x69e9c8 cp_parser_declaration_seq_opt
        ../../gcc/gcc/cp/parser.c:10864
0x6a02ba cp_parser_translation_unit
        ../../gcc/gcc/cp/parser.c:4018
0x6a02ba c_parse_file()
        ../../gcc/gcc/cp/parser.c:31331
0x7c30f3 c_common_parse_file()
        ../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


Already the second error message is bogus, because i is not a template:
> bug.cc:5:7: error: data member 'i' cannot be a member template

Reply via email to