aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorDaniel Franke <dfranke@gcc.gnu.org>2007-05-21 18:24:55 -0400
committerDaniel Franke <dfranke@gcc.gnu.org>2007-05-21 18:24:55 -0400
commit1b35264faba71c070736b4e5ac148b0ea5c910c0 (patch)
tree9e3752725ea5fa801e046db1fd56d2a18a949134 /gcc/testsuite
parent244974bd1bb1e486361d7b4ec6fe686239e2e1f1 (diff)
downloadgcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.zip
gcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.tar.gz
gcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.tar.bz2
re PR fortran/32002 (insufficient conformance check when assigning the result of an elemental function to an array)
gcc/fortran: 2005-05-21 Jerry DeLisle <jvdelisle@verizon.net> Daniel Franke <franke.daniel@gmail.com> PR fortran/32002 * resolve.c (resolve_actual_arglist): Resolve actual argument after being identified as variable. gcc/testsuite: 2005-05-21 Daniel Franke <franke.daniel@gmail.com> PR fortran/32002 * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test. From-SVN: r124924
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f9044
2 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6de884b..c08db44 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-21 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/32002
+ * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test.
+
2007-05-21 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/32027
diff --git a/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90 b/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
new file mode 100644
index 0000000..ab5607f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
@@ -0,0 +1,44 @@
+! { dg-compile }
+!
+! Testcases from PR32002.
+!
+PROGRAM test_pr32002
+
+ CALL test_1() ! scalar/vector
+ CALL test_2() ! vector/vector
+ CALL test_3() ! matrix/vector
+ CALL test_4() ! matrix/matrix
+
+CONTAINS
+ ELEMENTAL FUNCTION f(x)
+ INTEGER, INTENT(in) :: x
+ INTEGER :: f
+ f = x
+ END FUNCTION
+
+ SUBROUTINE test_1()
+ INTEGER :: a = 0, b(2) = 0
+ a = f(b) ! { dg-error "Incompatible ranks" }
+ b = f(a) ! ok, set all array elements to f(a)
+ END SUBROUTINE
+
+ SUBROUTINE test_2()
+ INTEGER :: a(2) = 0, b(3) = 0
+ a = f(b) ! { dg-error "different shape" }
+ a = f(b(1:2)) ! ok, slice, stride 1
+ a = f(b(1:3:2)) ! ok, slice, stride 2
+ END SUBROUTINE
+
+ SUBROUTINE test_3()
+ INTEGER :: a(4) = 0, b(2,2) = 0
+ a = f(b) ! { dg-error "Incompatible ranks" }
+ a = f(RESHAPE(b, (/ 4 /))) ! ok, same shape
+ END SUBROUTINE
+
+ SUBROUTINE test_4()
+ INTEGER :: a(2,2) = 0, b(3,3) = 0
+ a = f(b) ! { dg-error "different shape" }
+ a = f(b(1:3, 1:2)) ! { dg-error "different shape" }
+ a = f(b(1:3:2, 1:3:2)) ! ok, same shape
+ END SUBROUTINE
+END PROGRAM