aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2012-07-31 15:03:53 +0200
committerJanus Weil <janus@gcc.gnu.org>2012-07-31 15:03:53 +0200
commit8539d639a863e52a59bad6ef6c7fbd7e80a4c042 (patch)
treed89feb8370f0f1f19d52dbd2d74516b16acdd884 /gcc
parent315bdf71bd62b8efd04c426a2be7d641cda8658e (diff)
downloadgcc-8539d639a863e52a59bad6ef6c7fbd7e80a4c042.zip
gcc-8539d639a863e52a59bad6ef6c7fbd7e80a4c042.tar.gz
gcc-8539d639a863e52a59bad6ef6c7fbd7e80a4c042.tar.bz2
re PR fortran/54134 ([OOP] ICE overriding derived type bound function with allocatable character as result)
2012-07-31 Janus Weil <janus@gcc.gnu.org> PR fortran/54134 * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL. 2012-07-31 Janus Weil <janus@gcc.gnu.org> PR fortran/54134 * gfortran.dg/typebound_override_3.f90: New. From-SVN: r190010
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/dependency.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_override_3.f9034
4 files changed, 47 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fcd07f1..7eb4db4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54134
+ * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL.
+
2012-07-31 Tobias Burnus <burnus@net-b.de>
* interface.c (gfc_procedure_use): Return gfc_try instead of void.
diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c
index 108815a..ea1245d 100644
--- a/gcc/fortran/dependency.c
+++ b/gcc/fortran/dependency.c
@@ -261,6 +261,9 @@ gfc_dep_compare_expr (gfc_expr *e1, gfc_expr *e2)
n1 = NULL;
n2 = NULL;
+ if (e1 == NULL && e2 == NULL)
+ return 0;
+
/* Remove any integer conversion functions to larger types. */
if (e1->expr_type == EXPR_FUNCTION && e1->value.function.isym
&& e1->value.function.isym->id == GFC_ISYM_CONVERSION
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bfbf597..6a56342 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-31 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54134
+ * gfortran.dg/typebound_override_3.f90: New.
+
2012-07-31 Bill Schmidt <wschmidt@linux.ibm.com>
PR tree-optimization/53773
diff --git a/gcc/testsuite/gfortran.dg/typebound_override_3.f90 b/gcc/testsuite/gfortran.dg/typebound_override_3.f90
new file mode 100644
index 0000000..36d8473
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_override_3.f90
@@ -0,0 +1,34 @@
+! { dg-do compile }
+!
+! PR 54134: [OOP] ICE overriding derived type bound function with allocatable character as result
+!
+! Contributed by <koen.poppe@cs.kuleuven.be>
+
+module dtAs
+ implicit none
+ type :: A
+ contains
+ procedure, nopass :: name => name_A
+ end type
+contains
+ function name_A() result( name )
+ character(:), allocatable :: name
+ name = "name_A"
+ end function
+end module
+
+module dtBs
+ use dtAs
+ implicit none
+ type, extends( A ) :: B
+ contains
+ procedure, nopass :: name => name_B
+ end type
+contains
+ function name_B() result( name )
+ character(:), allocatable :: name
+ name = "name_B"
+ end function
+end module
+
+! { dg-final { cleanup-modules "dtAs dtBs" } }