aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2010-05-06 00:11:14 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2010-05-06 00:11:14 +0200
commit5e7b92b9ff393c7cc64a7ff7d3400ab86d5f587a (patch)
tree66ae0bab7c60f3e90600f4193b182a691dbef0fe /gcc
parent507014743436b1383e17dcc42ea64cbf3a865550 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/fortran/trans-types.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/crayptr5.f9027
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