aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorErik Edelmann <eedelman@gcc.gnu.org>2005-11-09 11:27:56 +0000
committerErik Edelmann <eedelman@gcc.gnu.org>2005-11-09 11:27:56 +0000
commita01db3bf1a1430d7c4665364250ac63fab318a6a (patch)
tree196138e4184c19886262aa678dad88c2bf9930a0 /gcc/testsuite
parent1508cc4663c41afdcaf9df3499b24f6537afe818 (diff)
downloadgcc-a01db3bf1a1430d7c4665364250ac63fab318a6a.zip
gcc-a01db3bf1a1430d7c4665364250ac63fab318a6a.tar.gz
gcc-a01db3bf1a1430d7c4665364250ac63fab318a6a.tar.bz2
re PR fortran/22607 (Elemental character functions don't work)
fortran/ 2005-11-09 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/22607 * trans-decl.c(build_function_decl): Don't set DECL_IS_PURE (fndecl) = 1 for return-by-reference functions. testsuite/ 2005-11-09 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/22607 * gfortran-dg/pure_byref_1.f90: New. * gfortran-dg/pure_byref_2.f90: New. From-SVN: r106683
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pure_byref_1.f9015
-rw-r--r--gcc/testsuite/gfortran.dg/pure_byref_2.f9017
3 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0bd89e..6725ae3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2005-11-09 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ PR fortran/22607
+ * gfortran-dg/pure_byref_1.f90: New.
+ * gfortran-dg/pure_byref_2.f90: New.
+
2005-11-09 Uros Bizjak <uros@kss-loka.si>
PR c/24101
diff --git a/gcc/testsuite/gfortran.dg/pure_byref_1.f90 b/gcc/testsuite/gfortran.dg/pure_byref_1.f90
new file mode 100644
index 0000000..5e080e5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pure_byref_1.f90
@@ -0,0 +1,15 @@
+! { dg-do run }
+! PR 22607: PURE/ELEMENTAL return-by-reference functions
+program main
+ implicit none
+ character(2), dimension(2) :: a, b
+ a = 'ok'
+ b = fun(a)
+ if (.not.all(b == 'ok')) call abort()
+contains
+ elemental function fun(a)
+ character(*), intent(in) :: a
+ character(len(a)) :: fun
+ fun = a
+ end function fun
+end program main
diff --git a/gcc/testsuite/gfortran.dg/pure_byref_2.f90 b/gcc/testsuite/gfortran.dg/pure_byref_2.f90
new file mode 100644
index 0000000..805653e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pure_byref_2.f90
@@ -0,0 +1,17 @@
+! { dg-do run }
+! PR 22607: PURE return-by-reference functions
+program main
+ implicit none
+ integer, dimension(2) :: b
+ b = fun(size(b))
+ if (b(1) /= 1 .or. b(2) /= 2) call abort()
+contains
+ pure function fun(n)
+ integer, intent(in) :: n
+ integer :: fun(n)
+ integer :: i
+ do i = 1, n
+ fun(i) = i
+ end do
+ end function fun
+end program main