re PR fortran/55983 (ICE in find_typebound_proc_uop, at fortran/class.c:2711)

2013-01-16  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/55983
	* class.c (find_typebound_proc_uop): Check for f2k_derived instead of
	asserting it.


2013-01-16  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/55983
	* gfortran.dg/class_55.f90: New.

From-SVN: r195251
This commit is contained in:
Janus Weil 2013-01-16 20:52:10 +01:00
parent 934144c03c
commit 9b940c6dd7
4 changed files with 30 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2013-01-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/55983
* class.c (find_typebound_proc_uop): Check for f2k_derived instead of
asserting it.
2013-01-16 Jakub Jelinek <jakub@redhat.com>
Tobias Burnus <burnus@net-b.de>

View File

@ -2707,15 +2707,17 @@ find_typebound_proc_uop (gfc_symbol* derived, gfc_try* t,
gfc_symtree* res;
gfc_symtree* root;
/* Set correct symbol-root. */
gcc_assert (derived->f2k_derived);
root = (uop ? derived->f2k_derived->tb_uop_root
: derived->f2k_derived->tb_sym_root);
/* Set default to failure. */
if (t)
*t = FAILURE;
if (derived->f2k_derived)
/* Set correct symbol-root. */
root = (uop ? derived->f2k_derived->tb_uop_root
: derived->f2k_derived->tb_sym_root);
else
return NULL;
/* Try to find it in the current type's namespace. */
res = gfc_find_symtree (root, name);
if (res && res->n.tb && !res->n.tb->error)

View File

@ -1,3 +1,8 @@
2013-01-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/55983
* gfortran.dg/class_55.f90: New.
2013-01-16 Janis Johnson <janisjo@codesourcery.com>
PR testsuite/55994

View File

@ -0,0 +1,12 @@
! { dg-do compile }
!
! PR 55983: [4.7/4.8 Regression] ICE in find_typebound_proc_uop, at fortran/class.c:2711
!
! Contributed by Sylwester Arabas <slayoo@staszic.waw.pl>
type :: mpdata_t
class(bcd_t), pointer :: bcx, bcy ! { dg-error "is a type that has not been declared" }
end type
type(mpdata_t) :: this
call this%bcx%fill_halos() ! { dg-error "is being used before it is defined" }
end