From: janus Date: Tue, 31 Jul 2012 13:03:53 +0000 (+0000) Subject: 2012-07-31 Janus Weil X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a9f097cb33a56f654e3d4f1bf76552d5f2f7a5dd;p=thirdparty%2Fgcc.git 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190010 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fcd07f1b59ec..7eb4db4b2aad 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 108815a44d94..ea1245dbb0b7 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 bfbf597ec489..6a56342c018d 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 000000000000..36d84737e18c --- /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" } }