From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/gfortran.dg/ret_array_1.f90 | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/ret_array_1.f90 (limited to 'gcc/testsuite/gfortran.dg/ret_array_1.f90') diff --git a/gcc/testsuite/gfortran.dg/ret_array_1.f90 b/gcc/testsuite/gfortran.dg/ret_array_1.f90 new file mode 100644 index 000000000..45e5a07c1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ret_array_1.f90 @@ -0,0 +1,63 @@ +! { dg-do run } +! Test functions returning arrays of indeterminate size. +program ret_array_1 + integer, dimension(:, :), allocatable :: a + integer, dimension(2) :: b + + allocate (a(2, 3)) + a = reshape ((/1, 2, 3, 4, 5, 6/), (/2, 3/)) + + ! Using the return value as an actual argument + b = 0; + b = sum (transpose (a), 1); + if (any (b .ne. (/9, 12/))) call abort () + + ! Using the return value in an expression + b = 0; + b = sum (transpose (a) + 1, 1); + if (any (b .ne. (/12, 15/))) call abort () + + ! Same again testing a user function +! TODO: enable these once this is implemented +! b = 0; +! b = sum (my_transpose (a), 1); +! if (any (b .ne. (/9, 12/))) call abort () +! +! ! Using the return value in an expression +! b = 0; +! b = sum (my_transpose (a) + 1, 1); +! if (any (b .ne. (/12, 15/))) call abort () +contains +subroutine test(x, n) + integer, dimension (:, :) :: x + integer n + + if (any (shape (x) .ne. (/3, 2/))) call abort + if (any (x .ne. (n + reshape((/1, 4, 2, 5, 3, 6/), (/3, 2/))))) call abort +end subroutine + +function my_transpose (x) result (r) + interface + pure function obfuscate (i) + integer obfuscate + integer, intent(in) :: i + end function + end interface + integer, dimension (:, :) :: x + integer, dimension (obfuscate(ubound(x, 2)), & + obfuscate(ubound(x, 1))) :: r + integer i + + do i = 1, ubound(x, 1) + r(:, i) = x(i, :) + end do +end function +end program + +pure function obfuscate (i) + integer obfuscate + integer, intent(in) :: i + + obfuscate = i +end function + -- cgit v1.2.3