aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-10-24 19:21:42 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-10-24 19:21:42 +0000
commitc708217135607d42ff3926164f0472ef6aa66719 (patch)
treebaeb490399f923d9e48e32eb7362056a58a73628
parent0f2a9e37fa5487d7f1b4ea3530c497661a6d7817 (diff)
downloadgcc-c708217135607d42ff3926164f0472ef6aa66719.zip
gcc-c708217135607d42ff3926164f0472ef6aa66719.tar.gz
gcc-c708217135607d42ff3926164f0472ef6aa66719.tar.bz2
re PR fortran/71895 (ICE in gfc_compare_derived_types, at fortran/interface.c:520)
2016-10-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71895 * interface.c (gfc_compare_derived_types): Convert gcc_assert() to a gfc_internal_error() to prevent an ICE. 2016-10-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71895 * gfortran.dg/pr71895.f90: New test. From-SVN: r241493
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/interface.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr71895.f9010
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5c47028..3757881 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2016-10-24 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/71895
+ * interface.c (gfc_compare_derived_types): Convert gcc_assert()
+ to a gfc_internal_error() to prevent an ICE.
+
2016-10-24 Jakub Jelinek <jakub@redhat.com>
* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use VAR_P (x)
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index dc81ab5..b851d5a 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -615,7 +615,8 @@ gfc_compare_derived_types (gfc_symbol *derived1, gfc_symbol *derived2)
if (derived1 == derived2)
return 1;
- gcc_assert (derived1 && derived2);
+ if (!derived1 || !derived2)
+ gfc_internal_error ("gfc_compare_derived_types: invalid derived type");
/* Compare UNION types specially. */
if (derived1->attr.flavor == FL_UNION || derived2->attr.flavor == FL_UNION)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dc5f13e..0cc1027 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-24 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/71895
+ * gfortran.dg/pr71895.f90: New test.
+
2016-10-24 Jakub Jelinek <jakub@redhat.com>
* g++.dg/debug/dwarf2/ref-2.C: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr71895.f90 b/gcc/testsuite/gfortran.dg/pr71895.f90
new file mode 100644
index 0000000..e5d4002
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr71895.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+program p
+ type t
+ integer :: n
+ end type
+ type(t) :: x
+ class(t) :: y ! { dg-error "must be dummy, allocatable or pointer" }
+ print *, extends_type_of(x, y)
+ print *, extends_type_of(y, x)
+end