From: janus Date: Thu, 17 Jan 2013 10:55:50 +0000 (+0000) Subject: 2013-01-17 Janus Weil X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=13a3b0bbe86864e33a37edf33de21546cab59891 2013-01-17 Janus Weil PR fortran/55983 * class.c (find_typebound_proc_uop): Check for f2k_derived instead of asserting it. 2013-01-17 Janus Weil PR fortran/55983 * gfortran.dg/class_55.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@195261 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 750627a83ca..19b45d859c5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-01-17 Janus Weil + + PR fortran/55983 + * class.c (find_typebound_proc_uop): Check for f2k_derived instead of + asserting it. + 2013-01-13 Janus Weil PR fortran/55072 diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 7257e8372eb..d4ed6b043ac 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -940,15 +940,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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac906b1267c..667adb90aea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-17 Janus Weil + + PR fortran/55983 + * gfortran.dg/class_55.f90: New. + 2013-01-16 Richard Biener PR middle-end/55882 diff --git a/gcc/testsuite/gfortran.dg/class_55.f90 b/gcc/testsuite/gfortran.dg/class_55.f90 new file mode 100644 index 00000000000..b47989f416c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_55.f90 @@ -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 + + 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