diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-01-25 17:21:42 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-01-25 17:21:42 +0100 |
commit | 03d838ba0317bf85fb6c994d0dc7cfc65c64421e (patch) | |
tree | 58acf096a7038e31494474c4bcfe8d3e8a06e679 /gcc | |
parent | f7adff969fd0f5c894c27fbeda87fb3b9b01fb9d (diff) | |
download | gcc-03d838ba0317bf85fb6c994d0dc7cfc65c64421e.zip gcc-03d838ba0317bf85fb6c994d0dc7cfc65c64421e.tar.gz gcc-03d838ba0317bf85fb6c994d0dc7cfc65c64421e.tar.bz2 |
re PR fortran/42858 (ICE in gfc_array_dimen_size at ../../trunk/gcc/fortran/array.c:2063)
2010-01-25 Tobias Burnus <burnus@net-b.de>
PR fortran/42858
* array.c (gfc_array_dimen_size): Fix intrinsic procedure
check.
2010-01-25 Tobias Burnus <burnus@net-b.de>
PR fortran/42858
* gfortran.dg/generic_21.f90: New test.
From-SVN: r156214
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/array.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/generic_21.f90 | 33 |
4 files changed, 46 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 760fc24..a72bc3e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-01-25 Tobias Burnus <burnus@net-b.de> + + PR fortran/42858 + * array.c (gfc_array_dimen_size): Fix intrinsic procedure + check. + 2010-01-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/41044 diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 139609c..094026f 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -1,5 +1,5 @@ /* Array things - Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 + Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Andy Vaught @@ -2054,7 +2054,7 @@ gfc_array_dimen_size (gfc_expr *array, int dimen, mpz_t *result) } if (array->symtree->n.sym->attr.generic - && !array->symtree->n.sym->attr.intrinsic) + && array->value.function.esym != NULL) { if (spec_dimen_size (array->value.function.esym->as, dimen, result) == FAILURE) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0719703..46b1eb0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-01-25 Tobias Burnus <burnus@net-b.de> + + PR fortran/42858 + * gfortran.dg/generic_21.f90: New test. + 2010-01-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR testsuite/41522 diff --git a/gcc/testsuite/gfortran.dg/generic_21.f90 b/gcc/testsuite/gfortran.dg/generic_21.f90 new file mode 100644 index 0000000..c651e63 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/generic_21.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! +! PR fortran/42858 +! +! Contributed by Harald Anlauf +! +module gfcbug102 + implicit none + type t_vector_segm + real ,pointer :: x(:) => NULL() + end type t_vector_segm + + type t_vector + integer :: n_s = 0 + type (t_vector_segm) ,pointer :: s (:) => NULL() + end type t_vector + + interface sqrt + module procedure sqrt_vector + end interface sqrt + +contains + function sqrt_vector (x) result (y) + type (t_vector) :: y + type (t_vector) ,intent(in) :: x + integer :: i + do i = 1, y% n_s + y% s(i)% x = sqrt (x% s(i)% x) + end do + end function sqrt_vector +end module gfcbug102 + +! { dg-final { cleanup-modules "gfcbug102" } } |