diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-05-06 00:11:14 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-05-06 00:11:14 +0200 |
commit | 5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a (patch) | |
tree | 66ae0bab7c60f3e90600f4193b182a691dbef0fe /gcc | |
parent | 507014743436b1383e17dcc42ea64cbf3a865550 (diff) | |
download | gcc-5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a.zip gcc-5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a.tar.gz gcc-5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a.tar.bz2 |
re PR fortran/43985 (ICE when assumed size cray-pointee passed as argument)
2010-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/43985
* trans-types.c (gfc_sym_type): Mark Cray pointees as
GFC_POINTER_TYPE_P.
2010-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/43985
* gfortran.dg/gomp/crayptr5.f90: New test case.
From-SVN: r159086
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/fortran/trans-types.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/crayptr5.f90 | 27 |
4 files changed, 44 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5b6b42f..8580997 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,7 +1,13 @@ +2010-05-0 Tobias Burnus <burnus@net-b.de> + + PR fortran/43985 + * trans-types.c (gfc_sym_type): Mark Cray pointees as + GFC_POINTER_TYPE_P. + 2010-05-05 Daniel Franke <franke.daniel@gmail.com> - * 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 <franke.daniel@gmail.com> diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 31a250d..dca19ce 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 0bd0219..686fc38 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-05-06 Tobias Burnus <burnus@net-b.de> + + PR fortran/43985 + * gfortran.dg/gomp/crayptr5.f90: New test case. + 2010-05-05 Jason Merrill <jason@redhat.com> 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 0000000..5ade16c --- /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 |