From 8539d639a863e52a59bad6ef6c7fbd7e80a4c042 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Tue, 31 Jul 2012 15:03:53 +0200 Subject: [PATCH] re PR fortran/54134 ([OOP] ICE overriding derived type bound function with allocatable character as result) 2012-07-31 Janus Weil PR fortran/54134 * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL. 2012-07-31 Janus Weil PR fortran/54134 * gfortran.dg/typebound_override_3.f90: New. From-SVN: r190010 --- gcc/fortran/ChangeLog | 5 ++++ gcc/fortran/dependency.c | 3 ++ gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/typebound_override_3.f90 | 34 ++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/typebound_override_3.f90 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 + + PR fortran/54134 + * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL. + 2012-07-31 Tobias Burnus * 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 + + PR fortran/54134 + * gfortran.dg/typebound_override_3.f90: New. + 2012-07-31 Bill Schmidt 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 + +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" } } -- 2.7.4