From c970dc045949589801863bb6bf25cbfea35da3f5 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Sat, 27 Jul 2013 14:55:59 +0200 Subject: [PATCH] re PR fortran/57285 ([OOP] ICE on invalid: "gfc_array_dimen_size(): Bad dimension" due to SIZE intrinsic with invalid dim on CLASS dummy) 2013-07-27 Janus Weil PR fortran/57285 * check.c (dim_rank_check): Re-enable this check for CLASS arrays. 2013-07-27 Janus Weil PR fortran/57285 * gfortran.dg/class_array_19.f90: New. From-SVN: r201284 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/check.c | 3 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/class_array_19.f90 | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/class_array_19.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0723c6d80a0..6b95a0dc22f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Janus Weil + + PR fortran/57285 + * check.c (dim_rank_check): Re-enable this check for CLASS arrays. + 2013-07-25 Janus Weil PR fortran/57966 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 884dc43b125..758639e27af 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -608,9 +608,6 @@ dim_rank_check (gfc_expr *dim, gfc_expr *array, int allow_assumed) if (dim->expr_type != EXPR_CONSTANT) return true; - if (array->ts.type == BT_CLASS) - return true; - if (array->expr_type == EXPR_FUNCTION && array->value.function.isym && array->value.function.isym->id == GFC_ISYM_SPREAD) rank = array->rank + 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b81fe8f4c3f..0940a3934ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Janus Weil + + PR fortran/57285 + * gfortran.dg/class_array_19.f90: New. + 2013-07-27 Eric Botcazou * gcc.dg/vect/pr57705.c: Adjust for a !vect_pack_trunc target. diff --git a/gcc/testsuite/gfortran.dg/class_array_19.f90 b/gcc/testsuite/gfortran.dg/class_array_19.f90 new file mode 100644 index 00000000000..0b28db180db --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_array_19.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +! PR 57285: [OOP] ICE on invalid: "gfc_array_dimen_size(): Bad dimension" due to SIZE intrinsic with invalid dim on CLASS dummy +! +! Contributed by Lorenz Hüdepohl + + type type_t + end type +contains + subroutine foo(a) + class(type_t), intent(in) :: a(:) + type(type_t) :: c(size(a,dim=2)) ! { dg-error "is not a valid dimension index" } + end subroutine +end