From 80def9087092a60b4f5f2ca952b3d0eb8e73cc8d Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 15 Jul 2014 07:36:35 +0200 Subject: symbol.c (check_conflict): Add codimension conflict with pointer; fix cray-pointee check. 2014-06-15 Tobias Burnus gcc/fortran/ * symbol.c (check_conflict): Add codimension conflict with pointer; fix cray-pointee check. gcc/testsuite/ * gfortran.dg/coarray_34.f90: New. * gfortran.dg/coarray_6.f90: Update test case. From-SVN: r212540 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/symbol.c | 5 +++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/coarray_34.f90 | 26 ++++++++++++++++++++++++++ gcc/testsuite/gfortran.dg/coarray_6.f90 | 2 +- 5 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray_34.f90 (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2c36291..c33936b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-06-15 Tobias Burnus + + * symbol.c (check_conflict): Add codimension conflict with + pointer; fix cray-pointee check. + + 2014-06-14 Tobias Burnus * trans-intrinsic.c (conv_intrinsic_atomic_ref): Fix handling diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index aee7510..2e04598 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -458,6 +458,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf (pointer, target); conf (pointer, intrinsic); conf (pointer, elemental); + conf (pointer, codimension); conf (allocatable, elemental); conf (target, external); @@ -534,8 +535,8 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf (cray_pointer, entry); conf (cray_pointee, allocatable); - conf (cray_pointer, contiguous); - conf (cray_pointer, codimension); + conf (cray_pointee, contiguous); + conf (cray_pointee, codimension); conf (cray_pointee, intent); conf (cray_pointee, optional); conf (cray_pointee, dummy); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0a7e567..2f25963 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-06-15 Tobias Burnus + + * gfortran.dg/coarray_34.f90: New. + * gfortran.dg/coarray_6.f90: Update test case. + 2014-07-14 Richard Biener PR tree-optimization/61779 diff --git a/gcc/testsuite/gfortran.dg/coarray_34.f90 b/gcc/testsuite/gfortran.dg/coarray_34.f90 new file mode 100644 index 0000000..f2bc910 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_34.f90 @@ -0,0 +1,26 @@ +! { dg-do compile } +! { dg-options "-fcoarray=single" } +! +use iso_fortran_env +implicit none + +type t + integer, pointer :: caf2[:] ! { dg-error "must be allocatable with deferred shape" } +end type t + +integer, pointer :: caf[*] ! { dg-error "POINTER attribute conflicts with CODIMENSION attribute" } + +type t2 + type(lock_type), pointer :: lock_it ! { dg-error "Component lock_it at .1. of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attribute" } +end type t2 +type(t2) :: caf3[*] + +type t3 + type(lock_type) :: x +end type t3 + +type t4 + type(t3), pointer :: y ! { dg-error "Pointer component y at .1. has a noncoarray subcomponent of type LOCK_TYPE, which must have a codimension or be a subcomponent of a coarray" } +end type t4 + +end diff --git a/gcc/testsuite/gfortran.dg/coarray_6.f90 b/gcc/testsuite/gfortran.dg/coarray_6.f90 index f44ac01..d30567a 100644 --- a/gcc/testsuite/gfortran.dg/coarray_6.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_6.f90 @@ -32,7 +32,7 @@ end module m subroutine bar() integer, parameter :: a[*] = 4 ! { dg-error "PARAMETER attribute conflicts with CODIMENSION" } - integer, pointer :: b[:] ! { dg-error "is not ALLOCATABLE, SAVE nor a dummy" } + integer :: b[*] ! { dg-error "is not ALLOCATABLE, SAVE nor a dummy" } end subroutine bar subroutine vol() -- cgit v1.1