aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2013-12-15 10:49:51 +0100
committerJanus Weil <janus@gcc.gnu.org>2013-12-15 10:49:51 +0100
commit013a961bacc2aacc34f27b786a5f191fbfe094c4 (patch)
tree2dfa78681db12296cf1838534bc34d8a8eaa28ea
parent5fbcd8d405e54e30b4a5a747d4162e3c2d194d93 (diff)
downloadgcc-013a961bacc2aacc34f27b786a5f191fbfe094c4.zip
gcc-013a961bacc2aacc34f27b786a5f191fbfe094c4.tar.gz
gcc-013a961bacc2aacc34f27b786a5f191fbfe094c4.tar.bz2
re PR fortran/59493 ([OOP] ICE: Segfault on Class(*) pointer association)
2013-12-15 Janus Weil <janus@gcc.gnu.org> PR fortran/59493 * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. 2013-12-15 Janus Weil <janus@gcc.gnu.org> PR fortran/59493 * gfortran.dg/unlimited_polymorphic_15.f90: New. From-SVN: r205997
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/class.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f9017
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