From: Tobias Burnus Date: Wed, 5 May 2010 22:11:14 +0000 (+0200) Subject: re PR fortran/43985 (ICE when assumed size cray-pointee passed as argument) X-Git-Tag: releases/gcc-4.6.0~7471 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a;p=thirdparty%2Fgcc.git re PR fortran/43985 (ICE when assumed size cray-pointee passed as argument) 2010-05-06 Tobias Burnus PR fortran/43985 * trans-types.c (gfc_sym_type): Mark Cray pointees as GFC_POINTER_TYPE_P. 2010-05-06 Tobias Burnus PR fortran/43985 * gfortran.dg/gomp/crayptr5.f90: New test case. From-SVN: r159086 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5b6b42f8a804..8580997fb4c7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,7 +1,13 @@ +2010-05-0 Tobias Burnus + + PR fortran/43985 + * trans-types.c (gfc_sym_type): Mark Cray pointees as + GFC_POINTER_TYPE_P. + 2010-05-05 Daniel Franke - * resolve.c (traverse_data_list): Rephrase error message for - non-constant bounds in data-implied-do. + * resolve.c (traverse_data_list): Rephrase error message for + non-constant bounds in data-implied-do. 2010-05-05 Daniel Franke diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 31a250d0de76..dca19ce90b65 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1793,6 +1793,9 @@ gfc_sym_type (gfc_symbol * sym) restricted); byref = 0; } + + if (sym->attr.cray_pointee) + GFC_POINTER_TYPE_P (type) = 1; } else { @@ -1808,7 +1811,7 @@ gfc_sym_type (gfc_symbol * sym) { if (sym->attr.allocatable || sym->attr.pointer) type = gfc_build_pointer_type (sym, type); - if (sym->attr.pointer) + if (sym->attr.pointer || sym->attr.cray_pointee) GFC_POINTER_TYPE_P (type) = 1; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0bd021986aea..686fc381c280 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-05-06 Tobias Burnus + + PR fortran/43985 + * gfortran.dg/gomp/crayptr5.f90: New test case. + 2010-05-05 Jason Merrill PR debug/43370 diff --git a/gcc/testsuite/gfortran.dg/gomp/crayptr5.f90 b/gcc/testsuite/gfortran.dg/gomp/crayptr5.f90 new file mode 100644 index 000000000000..5ade16c83bcf --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/crayptr5.f90 @@ -0,0 +1,27 @@ +! { dg-do compile } +! { dg-options "-fopenmp -fcray-pointer" } +! +! PR fortran/43985 + +subroutine pete(A) + real(8) :: A + print *, 'pete got ',A + if (A /= 3.0) call abort() +end subroutine pete + + subroutine bob() + implicit none + real(8) peted + pointer (ipeted, peted(*)) + integer(4) sz + ipeted = malloc(5*8) + peted(1:5) = [ 1.,2.,3.,4.,5.] + sz = 3 +!$omp parallel default(shared) + call pete(peted(sz)) +!$omp end parallel + return + end subroutine bob + +call bob() +end