[Bug c++/80891] New: [8 Regression] Three new ICEs

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri May 26 17:51:00 GMT 2017


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.)


More information about the Gcc-bugs mailing list