public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug fortran/45197] New: [F2008] Allow IMPURE elemental procedures @ 2010-08-05 15:02 domob at gcc dot gnu dot org 2010-08-05 15:03 ` [Bug fortran/45197] " domob at gcc dot gnu dot org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: domob at gcc dot gnu dot org @ 2010-08-05 15:02 UTC (permalink / raw) To: gcc-bugs In Fortran 2008, an ELEMENTAL procedure needs not necessarily be PURE. Procedures can now be specified to be IMPURE, and if this is applied to an ELEMENTAL procedure it is not automatically PURE as it otherwise is. For instance, the following code will fill b(n) with cumulative sum of elements in array element order and thus print (/ 1, 3, 6, 10, 15 /): PROGRAM main IMPLICIT NONE INTEGER, PARAMETER :: n = 5 INTEGER :: i REAL :: a(n), b(n), s a = (/ (i, i = 1, n) /) s = 0.0 b = accumulate (a, s) PRINT *, b CONTAINS IMPURE ELEMENTAL FUNCTION accumulate (a, s) REAL, INTENT(IN) :: a REAL, INTENT(INOUT) :: s REAL :: accumulate s = s + a accumulate = s END FUNCTION accumulate END PROGRAM main -- Summary: [F2008] Allow IMPURE elemental procedures Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: domob at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45197 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/45197] [F2008] Allow IMPURE elemental procedures 2010-08-05 15:02 [Bug fortran/45197] New: [F2008] Allow IMPURE elemental procedures domob at gcc dot gnu dot org @ 2010-08-05 15:03 ` domob at gcc dot gnu dot org 2010-08-15 15:28 ` domob at gcc dot gnu dot org 2010-08-15 16:26 ` domob at gcc dot gnu dot org 2 siblings, 0 replies; 4+ messages in thread From: domob at gcc dot gnu dot org @ 2010-08-05 15:03 UTC (permalink / raw) To: gcc-bugs ------- Comment #1 from domob at gcc dot gnu dot org 2010-08-05 15:02 ------- Mine. -- domob at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |domob at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2010-08-05 15:02:59 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45197 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/45197] [F2008] Allow IMPURE elemental procedures 2010-08-05 15:02 [Bug fortran/45197] New: [F2008] Allow IMPURE elemental procedures domob at gcc dot gnu dot org 2010-08-05 15:03 ` [Bug fortran/45197] " domob at gcc dot gnu dot org @ 2010-08-15 15:28 ` domob at gcc dot gnu dot org 2010-08-15 16:26 ` domob at gcc dot gnu dot org 2 siblings, 0 replies; 4+ messages in thread From: domob at gcc dot gnu dot org @ 2010-08-15 15:28 UTC (permalink / raw) To: gcc-bugs ------- Comment #2 from domob at gcc dot gnu dot org 2010-08-15 15:28 ------- Subject: Bug 45197 Author: domob Date: Sun Aug 15 15:28:10 2010 New Revision: 163261 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163261 Log: 2010-08-15 Daniel Kraft <d@domob.eu> PR fortran/45197 * decl.c (gfc_match_prefix): Match IMPURE prefix and mark ELEMENTAL routines not IMPURE also as PURE. * intrinsic.c (enum klass): New class `CLASS_PURE' and renamed `NO_CLASS' in `CLASS_IMPURE'. (add_sym): Set symbol-attributes `pure' and `elemental' correctly. (add_sym_0s): Renamed `NO_CLASS' in `CLASS_IMPURE'. (add_functions): Ditto. (add_subroutines): Ditto and mark `MOVE_ALLOC' as CLASS_PURE. * resolve.c (gfc_pure): Do not treat ELEMENTAL as automatically PURE. (resolve_formal_arglist): Check that arguments to ELEMENTAL procedures are not ALLOCATABLE and have their INTENT specified. 2010-08-15 Daniel Kraft <d@domob.eu> PR fortran/45197 * gfortran.dg/elemental_args_check_3.f90: New test. * gfortran.dg/impure_1.f08: New test. * gfortran.dg/impure_2.f08: New test. * gfortran.dg/impure_3.f90: New test. * gfortran.dg/typebound_proc_6.f03: Changed expected error message. Added: trunk/gcc/testsuite/gfortran.dg/elemental_args_check_3.f90 trunk/gcc/testsuite/gfortran.dg/impure_1.f08 trunk/gcc/testsuite/gfortran.dg/impure_2.f08 trunk/gcc/testsuite/gfortran.dg/impure_3.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/decl.c trunk/gcc/fortran/intrinsic.c trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/typebound_proc_6.f03 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45197 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/45197] [F2008] Allow IMPURE elemental procedures 2010-08-05 15:02 [Bug fortran/45197] New: [F2008] Allow IMPURE elemental procedures domob at gcc dot gnu dot org 2010-08-05 15:03 ` [Bug fortran/45197] " domob at gcc dot gnu dot org 2010-08-15 15:28 ` domob at gcc dot gnu dot org @ 2010-08-15 16:26 ` domob at gcc dot gnu dot org 2 siblings, 0 replies; 4+ messages in thread From: domob at gcc dot gnu dot org @ 2010-08-15 16:26 UTC (permalink / raw) To: gcc-bugs ------- Comment #3 from domob at gcc dot gnu dot org 2010-08-15 16:26 ------- Fixed. -- domob at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45197 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-08-15 16:26 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-08-05 15:02 [Bug fortran/45197] New: [F2008] Allow IMPURE elemental procedures domob at gcc dot gnu dot org 2010-08-05 15:03 ` [Bug fortran/45197] " domob at gcc dot gnu dot org 2010-08-15 15:28 ` domob at gcc dot gnu dot org 2010-08-15 16:26 ` domob at gcc dot gnu dot org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).