diff options
author | Erik Edelmann <eedelman@gcc.gnu.org> | 2005-11-09 11:27:56 +0000 |
---|---|---|
committer | Erik Edelmann <eedelman@gcc.gnu.org> | 2005-11-09 11:27:56 +0000 |
commit | a01db3bf1a1430d7c4665364250ac63fab318a6a (patch) | |
tree | 196138e4184c19886262aa678dad88c2bf9930a0 /gcc/testsuite | |
parent | 1508cc4663c41afdcaf9df3499b24f6537afe818 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pure_byref_1.f90 | 15 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pure_byref_2.f90 | 17 |
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 |