------- Comment #7 from domob at gcc dot gnu dot org 2008-10-18 08:27 -------
I'm having some difficulties seeing what the problem really is... My
understanding of elemental procedures so far is that they should be more or
less equivalent to looping over the arguments and then performing them as the
standard seems to enforce the order and such is not important... What do I
miss? Is the following program supposed to swap the elements in a and b?
PROGRAM main
IMPLICIT NONE
INTEGER :: a(2)
a = (/ 1, 2 /)
CALL copy (a((/ 2, 1 /)), a)
PRINT *, a
STOP
CONTAINS
ELEMENTAL SUBROUTINE copy (a, b)
IMPLICIT NONE
INTEGER, INTENT(IN) :: a
INTEGER, INTENT(OUT) :: b
b = a
END SUBROUTINE copy
END PROGRAM main
This prints "2 2" at the moment, which seems quite reasonable to me; or does
the standard enforce it should print "2 1"? If so, where can I find the
details about this (i.e. need temporaries only for INTENT(IN) arguments that
are TARGETS or also passed to INTENT(*OUT) parameters, or also for
INTENT(INOUT) ones...)?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35681