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

            Bug ID: 90173
           Summary: [9 Regression] ICE: Segmentation fault (in
                    strip_declarator_types)
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: error-recovery, ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

g++-9.0.0-alpha20190414 snapshot (r270355) ICEs when compiling the following
testcase extracted from test/Parser/cxx1z-class-template-argument-deduction.cpp
from the clang 8.0.0 test suite w/ -std=c++17:

template <typename T> struct A { };

A(int) -> A<int>;

namespace decl {
  A (*fp)() = 0;
}

% g++-9.0.0-alpha20190414 -std=c++17 -c yuz02xm1.cpp
yuz02xm1.cpp:6:3: error: template placeholder type 'A<...auto...>' must be
followed by a simple declarator-id
    6 |   A (*fp)() = 0;
      |   ^
yuz02xm1.cpp:1:30: note: 'template<class T> struct A' declared here
    1 | template <typename T> struct A { };
      |                              ^
yuz02xm1.cpp:6:15: error: conversion from 'int' to non-scalar type 'A<int>'
requested
    6 |   A (*fp)() = 0;
      |               ^
yuz02xm1.cpp:6:15: internal compiler error: Segmentation fault
0xf780df crash_signal
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/toplev.c:326
0x9ada1f strip_declarator_types
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:20058
0x9ada1f cp_parser_init_declarator
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:20559
0x98f245 cp_parser_simple_declaration
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:13541
0x9b432d cp_parser_declaration
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:13238
0x9b4eeb cp_parser_declaration_seq_opt
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:13114
0x9b4eeb cp_parser_namespace_body
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:19327
0x9b4eeb cp_parser_namespace_definition
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:19305
0x9b4440 cp_parser_declaration
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:13218
0x9b4ac1 cp_parser_translation_unit
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:4701
0x9b4ac1 c_parse_file()
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/cp/parser.c:41181
0xabe3eb c_common_parse_file()
       
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190414/work/gcc-9-20190414/gcc/c-family/c-opts.c:1156

Reply via email to