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

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).