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

            Bug ID: 86205
           Summary: ICE on valid C++11 code: in
                    type_dependent_expression_p, at cp/pt.c:25193
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: su at cs dot ucdavis.edu
  Target Milestone: ---

It appears to be a recent regression. 

$ g++tk -v
Using built-in specs.
COLLECT_GCC=g++tk
COLLECT_LTO_WRAPPER=/home/su/software/tmp/gcc/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/9.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto
--prefix=/home/su/software/tmp/gcc/gcc-trunk --disable-bootstrap
Thread model: posix
gcc version 9.0.0 20180618 (experimental) [trunk revision 261707] (GCC) 
$ 
$ g++-8.1.0 -c tmp.cpp
$ 
$ g++tk -c tmp.cpp
tmp.cpp:8:68: internal compiler error: in type_dependent_expression_p, at
cp/pt.c:25193
 template < class T > auto g () -> decltype (b ? f < int > : throw 0)
                                                                    ^
0x82c691 type_dependent_expression_p(tree_node*)
        ../../gcc-source-trunk/gcc/cp/pt.c:25192
0x831f97 instantiation_dependent_r
        ../../gcc-source-trunk/gcc/cp/pt.c:25322
0x1195df4 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
        ../../gcc-source-trunk/gcc/tree.c:11407
0x1195870 walk_tree_without_duplicates_1(tree_node**, tree_node*
(*)(tree_node**, int*, void*), void*, tree_node* (*)(tree_node**, int*,
tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*,
default_hash_traits<tree_node*> >*))
        ../../gcc-source-trunk/gcc/tree.c:11749
0x826127 instantiation_dependent_uneval_expression_p(tree_node*)
        ../../gcc-source-trunk/gcc/cp/pt.c:25352
0x8b0533 finish_decltype_type(tree_node*, bool, int)
        ../../gcc-source-trunk/gcc/cp/semantics.c:8751
0x7ff66d cp_parser_decltype
        ../../gcc-source-trunk/gcc/cp/parser.c:14252
0x7fd95f cp_parser_simple_type_specifier
        ../../gcc-source-trunk/gcc/cp/parser.c:17158
0x7ee741 cp_parser_type_specifier
        ../../gcc-source-trunk/gcc/cp/parser.c:16945
0x7ef6e2 cp_parser_type_specifier_seq
        ../../gcc-source-trunk/gcc/cp/parser.c:21219
0x7fb261 cp_parser_type_id_1
        ../../gcc-source-trunk/gcc/cp/parser.c:21062
0x7face7 cp_parser_trailing_type_id
        ../../gcc-source-trunk/gcc/cp/parser.c:21153
0x7face7 cp_parser_late_return_type_opt
        ../../gcc-source-trunk/gcc/cp/parser.c:20978
0x7face7 cp_parser_direct_declarator
        ../../gcc-source-trunk/gcc/cp/parser.c:20151
0x7face7 cp_parser_declarator
        ../../gcc-source-trunk/gcc/cp/parser.c:19982
0x808ff1 cp_parser_init_declarator
        ../../gcc-source-trunk/gcc/cp/parser.c:19499
0x80a141 cp_parser_single_declaration
        ../../gcc-source-trunk/gcc/cp/parser.c:27400
0x80a27c cp_parser_template_declaration_after_parameters
        ../../gcc-source-trunk/gcc/cp/parser.c:26999
0x80ab83 cp_parser_explicit_template_declaration
        ../../gcc-source-trunk/gcc/cp/parser.c:27233
0x80ab83 cp_parser_template_declaration_after_export
        ../../gcc-source-trunk/gcc/cp/parser.c:27251
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.
$ 


--------------------------------------------------


bool b;

template < class T > int f ()
{
  return 0;
}

template < class T > auto g () -> decltype (b ? f < int > : throw 0)
{
  return 0;
}

Reply via email to