From 013a961bacc2aacc34f27b786a5f191fbfe094c4 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Sun, 15 Dec 2013 10:49:51 +0100 Subject: [PATCH] re PR fortran/59493 ([OOP] ICE: Segfault on Class(*) pointer association) 2013-12-15 Janus Weil PR fortran/59493 * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. 2013-12-15 Janus Weil PR fortran/59493 * gfortran.dg/unlimited_polymorphic_15.f90: New. From-SVN: r205997 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/class.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ .../gfortran.dg/unlimited_polymorphic_15.f90 | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9de18607db3..a7d2ff8a8a4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-12-15 Janus Weil + + PR fortran/59493 + * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. + 2013-12-14 Janus Weil PR fortran/59502 diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 52b9760b271..b65cd892b1d 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 ccb78290915..7074acab2ae 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-15 Janus Weil + + PR fortran/59493 + * gfortran.dg/unlimited_polymorphic_15.f90: New. + 2013-12-14 Jan Hubicka 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 00000000000..1dfebdce3d5 --- /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 + + implicit none + + type ty_mytype1 + end type + + class(ty_mytype1), allocatable, target:: cla1 + class(*), pointer :: ptr + + ptr => cla1 + +end -- 2.30.2