re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
PR fortran/50420 * gfortran.dg/coarray_subobject_1.f90: New test. * gfortran.dg/coarray/subobject_1.f90: New test. From-SVN: r180153
This commit is contained in:
parent
fef8962802
commit
1b688c0e01
@ -1,3 +1,9 @@
|
||||
2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
PR fortran/50420
|
||||
* gfortran.dg/coarray_subobject_1.f90: New test.
|
||||
* gfortran.dg/coarray/subobject_1.f90: New test.
|
||||
|
||||
2011-10-18 Alexander Monakov <amonakov@ispras.ru>
|
||||
|
||||
PR rtl-optimization/50205
|
||||
|
43
gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
Normal file
43
gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
Normal file
@ -0,0 +1,43 @@
|
||||
! { dg-do run }
|
||||
!
|
||||
! PR fortran/50420
|
||||
! Coarray subobjects were not accepted as valid coarrays
|
||||
|
||||
integer :: i
|
||||
integer, parameter :: la = 4, lb = 5, lc = 8
|
||||
integer, parameter :: init(la) = -4 + (/ (i, i=1,la) /)
|
||||
|
||||
type t
|
||||
integer :: i
|
||||
end type t
|
||||
type t2
|
||||
type(t), allocatable :: a[:]
|
||||
end type t2
|
||||
type t3
|
||||
type(t), allocatable :: a(:)[:]
|
||||
end type t3
|
||||
|
||||
type(t2) :: b
|
||||
type(t3) :: c
|
||||
|
||||
allocate(b%a[lb:*])
|
||||
b%a%i = 7
|
||||
if (b%a%i /= 7) call abort
|
||||
if (any (lcobound(b%a) /= (/ lb /))) call abort
|
||||
if (ucobound(b%a, dim=1) /= this_image() + lb - 1) call abort
|
||||
if (any (lcobound(b%a%i) /= (/ lb /))) call abort
|
||||
if (ucobound(b%a%i, dim=1) /= this_image() + lb - 1) call abort
|
||||
allocate(c%a(la)[lc:*])
|
||||
c%a%i = init
|
||||
if (any(c%a%i /= init)) call abort
|
||||
if (any (lcobound(c%a) /= (/ lc /))) call abort
|
||||
if (ucobound(c%a, dim=1) /= this_image() + lc - 1) call abort
|
||||
if (any (lcobound(c%a%i) /= (/ lc /))) call abort
|
||||
if (ucobound(c%a%i, dim=1) /= this_image() + lc - 1) call abort
|
||||
if (c%a(2)%i /= init(2)) call abort
|
||||
if (any (lcobound(c%a(2)) /= (/ lc /))) call abort
|
||||
if (ucobound(c%a(2), dim=1) /= this_image() + lc - 1) call abort
|
||||
if (any (lcobound(c%a(2)%i) /= (/ lc /))) call abort
|
||||
if (ucobound(c%a(2)%i, dim=1) /= this_image() + lc - 1) call abort
|
||||
deallocate(b%a, c%a)
|
||||
end
|
31
gcc/testsuite/gfortran.dg/coarray_subobject_1.f90
Normal file
31
gcc/testsuite/gfortran.dg/coarray_subobject_1.f90
Normal file
@ -0,0 +1,31 @@
|
||||
! { dg-do compile }
|
||||
! { dg-options "-fcoarray=single" }
|
||||
!
|
||||
! PR fortran/50420
|
||||
! Coarray subobjects were not accepted as valid coarrays
|
||||
! They should still be rejected if one of the component reference is allocatable
|
||||
! or pointer
|
||||
|
||||
type t
|
||||
integer :: i
|
||||
end type t
|
||||
type t2
|
||||
type(t), allocatable :: a
|
||||
type(t), pointer :: c
|
||||
end type t2
|
||||
type(t2) :: b[5:*]
|
||||
allocate(b%a)
|
||||
allocate(b%c)
|
||||
b%a%i = 7
|
||||
b%c%i = 13
|
||||
if (b%a%i /= 7) call abort
|
||||
if (any (lcobound(b%a) /= (/ 5 /))) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (ucobound(b%a, dim=1) /= this_image() + 4) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (any (lcobound(b%a%i) /= (/ 5 /))) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (ucobound(b%a%i, dim=1) /= this_image() + 4) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (b%c%i /= 13) call abort
|
||||
if (any (lcobound(b%c) /= (/ 5 /))) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (ucobound(b%c, dim=1) /= this_image() + 4) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (any (lcobound(b%c%i) /= (/ 5 /))) call abort ! { dg-error "Expected coarray variable" }
|
||||
if (ucobound(b%c%i, dim=1) /= this_image() + 4) call abort ! { dg-error "Expected coarray variable" }
|
||||
end
|
Loading…
Reference in New Issue
Block a user