[Bug fortran/35681] wrong result for vector subscripted array expression in MVBITS

dominiq at lps dot ens dot fr gcc-bugzilla@gcc.gnu.org
Sat Oct 18 09:32:00 GMT 2008



------- Comment #8 from dominiq at lps dot ens dot fr  2008-10-18 09:31 -------
(In reply to comment #7)
> This prints "2 2" at the moment, which seems quite reasonable to me; or does
> the standard enforce it should print "2 1"?

ifort returns "2 2" and g95 "2 1".  As far as I understand the scalarization of
elemental procedures, I think g95 is right. Considering the following
modification of the code:

PROGRAM main
  IMPLICIT NONE
  INTEGER :: i, a(2), b(2)

  a = (/ 1, 2 /)
  b = (/ 2, 1 /)
  CALL copy (a((/ 2, 1 /)), a)
  PRINT *, a
  a = (/ 1, 2 /)
  do i = 1, 2
     CALL copy (a(b(i)), a(i))
  end do
  PRINT *, a
  a = (/ 1, 2 /)
  do i = 2, 1, -1
     CALL copy (a(b(i)), a(i))
  end do
  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

which gives:

           2           1
           2           2
           2           2
           1           1

i.e., a result depending on the order of the scalar do loop, my understanding
is that a temporary is required.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35681



More information about the Gcc-bugs mailing list