From 45c539d9a3b18ee82a50c4d2920fab7cea315140 Mon Sep 17 00:00:00 2001 From: burnus Date: Wed, 10 Nov 2010 18:04:04 +0000 Subject: [PATCH] 2010-11-10 Tobias Burnus 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 PR fortran/46411 * gfortran.dg/intrinsic_7.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166550 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/intrinsic.c | 2 +- gcc/fortran/intrinsic.texi | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/intrinsic_7.f90 | 13 +++++++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/intrinsic_7.f90 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 + + 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 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 + + PR fortran/46411 + * gfortran.dg/intrinsic_7.f90: New. + 2010-11-10 Rainer Orth * 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 -- 2.7.4