------- Comment #21 from sfilippone at uniroma2 dot it 2010-06-23 12:20 ------- (In reply to comment #20) > (In reply to comment #14) > > The attached variation of generic_23 still does not work. > > ... and the dump shows why: > > > > The specific PPCs of 'foo2' point to the right procedures, but their generic > counterparts don't. >
Same thing happens for the code of #19: struct class$base_sparse_mat class.6; if (vtab$d_coo_sparse_mat.allocate == 0B) { vtab$vtype$d_coo_sparse_mat$allocate.allocate_mnnz = base_allocate_mnnz; vtab$d_coo_sparse_mat.allocate = &vtab$vtype$d_coo_sparse_mat$allocate; vtab$d_coo_sparse_mat.allocate_mnnz = (void (*<T5b>) (void)) d_coo_allocate_mnnz; vtab$d_coo_sparse_mat.set_null = (void (*<T5b>) (void)) base_set_null; vtab$d_coo_sparse_mat.get_fmt = (void (*<T5b>) (void)) d_coo_get_fmt; } class.6.$vptr = (struct vtype$base_sparse_mat *) &vtab$d_coo_sparse_mat; class.6.$data = (struct base_sparse_mat *) &acoo; base_allocate_mnnz (&n, &n, &class.6, &nnz); ^^^^^^^^^ Note the last statement should ultimately be resolved to vtab$d_coo_sparse_mat.allocate_mnnz -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43945