https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80891
Bug ID: 80891 Summary: [8 Regression] Three new ICEs Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: nathan at gcc dot gnu.org Target Milestone: --- 1) % cat chi_square_std_dev_test.ii namespace std { struct A { void operator<<(A(A)); }; template <typename _CharT, typename _Traits> _CharT endl(_Traits); A a; } using std::endl; void chi_squared_sample_sized() { using namespace std; a << endl; } % g++ -c chi_square_std_dev_test.ii chi_square_std_dev_test.ii: In function ‘void chi_squared_sample_sized()’: chi_square_std_dev_test.ii:11:8: internal compiler error: in get_bindings, at cp/pt.c:21559 a << endl; ^~~~ 0x7b3a35 get_bindings ../../gcc/gcc/cp/pt.c:21559 0x7b3af5 more_specialized_inst ../../gcc/gcc/cp/pt.c:21692 0x7b3c31 most_specialized_instantiation(tree_node*) ../../gcc/gcc/cp/pt.c:21732 0x5eef43 resolve_address_of_overloaded_function ../../gcc/gcc/cp/class.c:8251 0x5ccdf6 standard_conversion ../../gcc/gcc/cp/call.c:1123 0x5daef8 implicit_conversion ../../gcc/gcc/cp/call.c:1839 0x5dc896 add_function_candidate ../../gcc/gcc/cp/call.c:2196 0x5de6b7 add_candidates ../../gcc/gcc/cp/call.c:5479 0x5e6269 add_candidates ../../gcc/gcc/cp/call.c:5379 0x5e6269 build_new_op_1 ../../gcc/gcc/cp/call.c:5653 0x5e6b3e build_new_op(unsigned int, tree_code, int, tree_node*, tree_node*, tree_node*, tree_node**, int) ../../gcc/gcc/cp/call.c:6009 0x815de2 build_x_binary_op(unsigned int, tree_code, tree_node*, tree_code, tree_node*, tree_code, tree_node**, int) ../../gcc/gcc/cp/typeck.c:3957 0x72e894 cp_parser_binary_expression ../../gcc/gcc/cp/parser.c:9051 0x72efe4 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:9184 0x732e28 cp_parser_expression ../../gcc/gcc/cp/parser.c:9353 0x73b698 cp_parser_expression_statement ../../gcc/gcc/cp/parser.c:10912 0x7208e6 cp_parser_statement ../../gcc/gcc/cp/parser.c:10728 0x7219ad cp_parser_statement_seq_opt ../../gcc/gcc/cp/parser.c:11054 0x721a7f cp_parser_compound_statement ../../gcc/gcc/cp/parser.c:11008 0x722198 cp_parser_function_body ../../gcc/gcc/cp/parser.c:21445 2) % cat ptr_vector.ii void swap(); namespace boost { void swap(); } using namespace boost; template <typename C, typename, typename> void reversible_container_test() { using namespace boost; C a; swap(a); } namespace boost { struct A {}; template <typename> void swap(); } void test_ptr_vector() { reversible_container_test<A, int, int>; } % g++ -c ptr_vector.ii ptr_vector.ii: In instantiation of ‘void reversible_container_test() [with C = boost::A; <template-parameter-1-2> = int; <template-parameter-1-3> = int]’: ptr_vector.ii:15:64: required from here ptr_vector.ii:9:7: internal compiler error: in ovl_copy, at cp/tree.c:2142 swap(a); ~~~~^~~ 0x7f7812 ovl_copy ../../gcc/gcc/cp/tree.c:2142 0x7fc4e7 lookup_maybe_add(tree_node*, tree_node*) ../../gcc/gcc/cp/tree.c:2383 0x6f951a name_lookup::add_fns(tree_node*) ../../gcc/gcc/cp/name-lookup.c:688 0x6f98ff name_lookup::adl_namespace(tree_node*) ../../gcc/gcc/cp/name-lookup.c:714 0x6f98ff name_lookup::adl_class_only(tree_node*) ../../gcc/gcc/cp/name-lookup.c:740 0x6f9c3e name_lookup::adl_bases(tree_node*) ../../gcc/gcc/cp/name-lookup.c:774 0x6fa094 name_lookup::adl_class(tree_node*) ../../gcc/gcc/cp/name-lookup.c:817 0x6fae3c name_lookup::search_adl(tree_node*, vec<tree_node*, va_gc, vl_embed>*) ../../gcc/gcc/cp/name-lookup.c:1001 0x6faef4 lookup_arg_dependent(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>*) ../../gcc/gcc/cp/name-lookup.c:1026 0x7d6786 perform_koenig_lookup(cp_expr, vec<tree_node*, va_gc, vl_embed>*, int) ../../gcc/gcc/cp/semantics.c:2270 0x7903c0 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:17253 0x77ec33 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:16514 0x77d3ae tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15778 0x77c751 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15764 0x77ebf3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15991 0x77a6cb instantiate_decl(tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:22955 0x7bc21b instantiate_pending_templates(int) ../../gcc/gcc/cp/pt.c:23076 0x6a2208 c_parse_final_cleanups() ../../gcc/gcc/cp/decl2.c:4519 3) % cat test_rayleigh.ii namespace std { void endl(); } using std::endl; template <class RealType> void test_spots(RealType) { using namespace std; RealType a; a << endl; } void test_maintest_method() { test_spots(0.); } % g++ -c test_rayleigh.ii test_rayleigh.ii: In instantiation of ‘void test_spots(RealType) [with RealType = double]’: test_rayleigh.ii:10:44: required from here test_rayleigh.ii:8:5: internal compiler error: in tsubst_copy, at cp/pt.c:14679 a << endl; ~~^~~~~~~ 0x787fdf tsubst_copy ../../gcc/gcc/cp/pt.c:14679 0x78fba7 tsubst_copy ../../gcc/gcc/cp/pt.c:14476 0x78fba7 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:17980 0x78f500 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:16899 0x77ec33 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:16514 0x77d3ae tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15778 0x77c751 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15764 0x77ebf3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15991 0x77a6cb instantiate_decl(tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:22955 0x7bc21b instantiate_pending_templates(int) ../../gcc/gcc/cp/pt.c:23076 0x6a2208 c_parse_final_cleanups() ../../gcc/gcc/cp/decl2.c:4519 2) and 3) got invalid during reduction. (Couldn't be bothered to fix them up.)