https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68726
Bug ID: 68726 Summary: ice: tree check: expected tree_vec, have error_mark in comp_template_args_with_info, at cp/pt.c:7890 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: regehr at cs dot utah.edu Target Milestone: --- ICE on invalid code $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/regehr/z/compiler-install/gcc-r231259-install/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/regehr/z/compiler-source/gcc/configure --prefix=/home/regehr/z/compiler-install/gcc-r231259-install --disable-bootstrap --disable-multilib --enable-languages=c,c++ Thread model: posix gcc version 6.0.0 20151204 (experimental) (GCC) $ cat hello.cpp template <typename> struct A { template <typename, > struct __construct_helper; template <typename... _Args> using __has_construct typename __construct_helper<_Args...>::type; } struct : A<int> { $ g++ -w -std=c++11 hello.cpp hello.cpp:2:23: error: expected identifier before ‘>’ token template <typename, > struct __construct_helper; ^ hello.cpp:4:25: error: expected ‘=’ before ‘typename’ using __has_construct typename __construct_helper<_Args...>::type; ^~~~~~~~ hello.cpp:5:1: error: expected ‘;’ after struct definition } struct : A<int> { ^ hello.cpp: In instantiation of ‘struct A<int>’: hello.cpp:5:12: required from here hello.cpp:4:68: internal compiler error: tree check: expected tree_vec, have error_mark in comp_template_args_with_info, at cp/pt.c:7890 using __has_construct typename __construct_helper<_Args...>::type; ^ 0xf5cd5c tree_check_failed(tree_node const*, char const*, int, char const*, ...) /home/regehr/z/compiler-source/gcc/gcc/tree.c:9599 0x5fa12d tree_check /home/regehr/z/compiler-source/gcc/gcc/tree.h:2997 0x5fa12d comp_template_args_with_info /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:7890 0x63ada2 comp_template_args /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:7916 0x63ada2 lookup_template_class_1 /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:8534 0x63ada2 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*, int, int) /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:8611 0x63dcd1 tsubst_aggr_type /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:11280 0x625922 tsubst(tree_node*, tree_node*, int, tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:13267 0x62ed4d tsubst_decl /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:12166 0x6261fc tsubst(tree_node*, tree_node*, int, tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:12664 0x62e922 tsubst_decl /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:11506 0x6261fc tsubst(tree_node*, tree_node*, int, tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:12664 0x65aab2 instantiate_class_template_1 /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:9976 0x65aab2 instantiate_class_template(tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/pt.c:10253 0x706ccb complete_type(tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/typeck.c:131 0x706ecf complete_type_or_maybe_complain(tree_node*, tree_node*, int) /home/regehr/z/compiler-source/gcc/gcc/cp/typeck.c:143 0x5ce159 xref_basetypes(tree_node*, tree_node*) /home/regehr/z/compiler-source/gcc/gcc/cp/decl.c:12806 0x6c74ea cp_parser_class_head /home/regehr/z/compiler-source/gcc/gcc/cp/parser.c:21525 0x6c74ea cp_parser_class_specifier_1 /home/regehr/z/compiler-source/gcc/gcc/cp/parser.c:20785 0x6c85d9 cp_parser_class_specifier /home/regehr/z/compiler-source/gcc/gcc/cp/parser.c:21081 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions.