https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67257
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-invalid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2015-08-18 CC| |trippels at gcc dot gnu.org Summary|Internal compiler error in |[5/6 regression] Internal |retrieve_specialization |compiler error in | |retrieve_specialization Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- It is an ICE on invalid: % cat Matrix.ii template <typename> struct plus; template <typename> struct A { template <typename T> auto operator()(T); } foldl; void foo() { foldl<plus<int>>(0); } % /var/tmp/gcc_test/usr/local/bin/g++ -c Matrix.ii Matrix.ii: In substitution of ‘template<class> template<class T> auto A::operator()(T) [with T = <missing>; <template-parameter-1-1> = int]’: Matrix.ii:5:32: required from here Matrix.ii:5:32: internal compiler error: in retrieve_specialization, at cp/pt.c:1194 void foo() { foldl<plus<int>>(0); } ^ 0x5e0c73 retrieve_specialization ../../gcc/gcc/cp/pt.c:1191 0x5e568e instantiate_template_1 ../../gcc/gcc/cp/pt.c:16561 0x5e568e instantiate_template(tree_node*, tree_node*, int) ../../gcc/gcc/cp/pt.c:16675 0x5fa689 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool) ../../gcc/gcc/cp/pt.c:17024 0x5b3cf9 add_template_candidate_real ../../gcc/gcc/cp/call.c:3065 0x5b437c add_template_candidate ../../gcc/gcc/cp/call.c:3162 0x5b437c add_candidates ../../gcc/gcc/cp/call.c:5318 0x5b8527 build_op_call_1 ../../gcc/gcc/cp/call.c:4305 0x5b8527 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ../../gcc/gcc/cp/call.c:4392 0x688568 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ../../gcc/gcc/cp/semantics.c:2408 0x63cde8 cp_parser_postfix_expression ../../gcc/gcc/cp/parser.c:6422 0x640d29 cp_parser_unary_expression ../../gcc/gcc/cp/parser.c:7486 0x6418a7 cp_parser_binary_expression ../../gcc/gcc/cp/parser.c:8223 0x641e7d cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:8481 0x6488f1 cp_parser_expression ../../gcc/gcc/cp/parser.c:8635 0x64a0f6 cp_parser_expression_statement ../../gcc/gcc/cp/parser.c:10049 0x639365 cp_parser_statement ../../gcc/gcc/cp/parser.c:9900 0x639e42 cp_parser_statement_seq_opt ../../gcc/gcc/cp/parser.c:10172 0x639f73 cp_parser_compound_statement ../../gcc/gcc/cp/parser.c:10126 0x652c5d cp_parser_function_body ../../gcc/gcc/cp/parser.c:19783 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. markus@x4 tmp % /usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3/g++ -std=c++14 -c Matrix.ii Matrix.ii:4:3: error: template declaration of ‘A< <template-parameter-1-1> > foldl’ } foldl; ^ Matrix.ii: In function ‘void foo()’: Matrix.ii:5:14: error: ‘foldl’ was not declared in this scope void foo() { foldl<plus<int>>(0); } ^ Matrix.ii:5:28: error: expected primary-expression before ‘>’ token void foo() { foldl<plus<int>>(0); } ^