re PR fortran/45916 (ICE in match_procedure_in_type, at fortran/decl.c:7921)
2010-10-07 Mikael Morin <mikael@gcc.gnu.org> PR fortran/45916 Revert revision 165026: 2010-10-06 Mikael Morin <mikael@gcc.gnu.org> * decl.c (match_procedure_in_type): Assertify if conditions. 2010-10-07 Mikael Morin <mikael@gcc.gnu.org> PR fortran/45916 * gfortran.dg/generic_typebound_operator_1.f90: New test. From-SVN: r165089
This commit is contained in:
parent
fa8d6f0771
commit
9f23af489a
@ -1,3 +1,11 @@
|
||||
2010-10-07 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
PR fortran/45916
|
||||
Revert revision 165026:
|
||||
2010-10-06 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
* decl.c (match_procedure_in_type): Assertify if conditions.
|
||||
|
||||
2010-10-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR fortran/45889
|
||||
|
@ -7916,9 +7916,8 @@ match_procedure_in_type (void)
|
||||
would be an error. If a GENERIC already targetted this binding, it may
|
||||
be already there but then typebound is still NULL. */
|
||||
stree = gfc_find_symtree (ns->tb_sym_root, name);
|
||||
if (stree)
|
||||
if (stree && stree->n.tb)
|
||||
{
|
||||
gcc_assert (stree->n.tb);
|
||||
gfc_error ("There is already a procedure with binding name '%s' for "
|
||||
"the derived type '%s' at %C", name, block->name);
|
||||
return MATCH_ERROR;
|
||||
@ -7926,9 +7925,11 @@ match_procedure_in_type (void)
|
||||
|
||||
/* Insert it and set attributes. */
|
||||
|
||||
gcc_assert (!stree);
|
||||
stree = gfc_new_symtree (&ns->tb_sym_root, name);
|
||||
gcc_assert (stree);
|
||||
if (!stree)
|
||||
{
|
||||
stree = gfc_new_symtree (&ns->tb_sym_root, name);
|
||||
gcc_assert (stree);
|
||||
}
|
||||
stree->n.tb = gfc_get_typebound_proc (&tb);
|
||||
|
||||
if (gfc_get_sym_tree (target, gfc_current_ns, &stree->n.tb->u.specific,
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-10-07 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
PR fortran/45916
|
||||
* gfortran.dg/generic_typebound_operator_1.f90: New test.
|
||||
|
||||
2010-10-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR fortran/45889
|
||||
|
19
gcc/testsuite/gfortran.dg/generic_typebound_operator_1.f90
Normal file
19
gcc/testsuite/gfortran.dg/generic_typebound_operator_1.f90
Normal file
@ -0,0 +1,19 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/45916
|
||||
! ICE with generic type-bound operator
|
||||
|
||||
module m_sort
|
||||
implicit none
|
||||
type, abstract :: sort_t
|
||||
contains
|
||||
generic :: operator(.gt.) => gt_cmp
|
||||
procedure(gt_cmp), deferred :: gt_cmp
|
||||
end type sort_t
|
||||
interface
|
||||
logical function gt_cmp(a,b)
|
||||
import
|
||||
class(sort_t), intent(in) :: a, b
|
||||
end function gt_cmp
|
||||
end interface
|
||||
end module m_sort
|
Loading…
Reference in New Issue
Block a user