diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-11-10 19:04:04 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-11-10 19:04:04 +0100 |
commit | 1d3a84ce0338d5002672a643ca506224cd944298 (patch) | |
tree | 67a1fe76be31a8c6ed217135b30c3902c00a2d68 /gcc | |
parent | 95b53b576b7372dd13ab1115df13c2dc92b730b9 (diff) | |
download | gcc-1d3a84ce0338d5002672a643ca506224cd944298.zip gcc-1d3a84ce0338d5002672a643ca506224cd944298.tar.gz gcc-1d3a84ce0338d5002672a643ca506224cd944298.tar.bz2 |
re PR fortran/46411 (MOVE_ALLOC wrongly rejected as impure)
2010-11-10 Tobias Burnus <burnus@net-b.de>
PR fortran/46411
* intrinsic.c (gfc_intrinsic_sub_interface): Check for attr.pure
and not for attr.elemental.
* intrinsic.texi (move_alloc): Document as being pure.
2010-11-10 Tobias Burnus <burnus@net-b.de>
PR fortran/46411
* gfortran.dg/intrinsic_7.f90: New.
From-SVN: r166550
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.c | 2 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.texi | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_7.f90 | 13 |
5 files changed, 27 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d0b003d..fe335a9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2010-11-10 Tobias Burnus <burnus@net-b.de> + + PR fortran/46411 + * intrinsic.c (gfc_intrinsic_sub_interface): Check for attr.pure + and not for attr.elemental. + * intrinsic.texi (move_alloc): Document as being pure. + 2010-11-10 Tobias Burnus <burnus@net-b.de> PR fortran/46244 diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index f7f0e05..d17544c 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -4193,7 +4193,7 @@ gfc_intrinsic_sub_interface (gfc_code *c, int error_flag) c->resolved_sym->attr.elemental = isym->elemental; } - if (gfc_pure (NULL) && !isym->elemental) + if (gfc_pure (NULL) && !isym->pure) { gfc_error ("Subroutine call to intrinsic '%s' at %L is not PURE", name, &c->loc); diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 09f5278..3b81c2d 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -8977,7 +8977,7 @@ end program Fortran 2003 and later @item @emph{Class}: -Subroutine +Pure subroutine @item @emph{Syntax}: @code{CALL MOVE_ALLOC(FROM, TO)} diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5143d15..ba0a4c1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-10 Tobias Burnus <burnus@net-b.de> + + PR fortran/46411 + * gfortran.dg/intrinsic_7.f90: New. + 2010-11-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * g++.dg/abi/rtti3.C: Scan for .weakext on alpha*-dec-osf*. diff --git a/gcc/testsuite/gfortran.dg/intrinsic_7.f90 b/gcc/testsuite/gfortran.dg/intrinsic_7.f90 new file mode 100644 index 0000000..69bca66 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_7.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! +! PR fortran/46411 +! +! MOVE_ALLOC and other non-elemental but pure +! procedures where regarded as impure. +! + +pure subroutine test() + integer, allocatable :: a, b + allocate(a,b) + call move_alloc(a,b) +end subroutine test |