diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/class.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 | 17 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9de1860..a7d2ff8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-12-15 Janus Weil <janus@gcc.gnu.org> + + PR fortran/59493 + * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. + 2013-12-14 Janus Weil <janus@gcc.gnu.org> PR fortran/59502 diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 52b9760..b65cd89 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -2424,7 +2424,7 @@ gfc_find_intrinsic_vtab (gfc_typespec *ts) return NULL; /* Sometimes the typespec is passed from a single call. */ - if (ts->type == BT_DERIVED) + if (ts->type == BT_DERIVED || ts->type == BT_CLASS) return gfc_find_derived_vtab (ts->u.derived); /* Find the top-level namespace. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ccb7829..7074aca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-15 Janus Weil <janus@gcc.gnu.org> + + PR fortran/59493 + * gfortran.dg/unlimited_polymorphic_15.f90: New. + 2013-12-14 Jan Hubicka <jh@suse.cz> PR middle-end/58477 diff --git a/gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 b/gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 new file mode 100644 index 0000000..1dfebdc --- /dev/null +++ b/gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR 59493: [OOP] ICE: Segfault on Class(*) pointer association +! +! Contributed by Hossein Talebi <talebi.hossein@gmail.com> + + implicit none + + type ty_mytype1 + end type + + class(ty_mytype1), allocatable, target:: cla1 + class(*), pointer :: ptr + + ptr => cla1 + +end |