This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/33686] New: FORALL loop gives wrong result
- From: "enok at lysator dot liu dot se" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Oct 2007 07:17:47 -0000
- Subject: [Bug fortran/33686] New: FORALL loop gives wrong result
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
A simple program that is supposed to invert a permutation P gives wrong result
with gfortran 4.2.1. A quite recent trunk 4.3 gfortran also gave wrong result.
See also discussion in comp.lang.fortran subject "Most elegant syntax for
inverting a permutation?". The concensus seems to be that this forall construct
should work according to the standard.
PROGRAM TST
IMPLICIT NONE
INTEGER :: P(4),I
P = (/2,4,1,3/)
FORALL(I=1:4)
P(P(I)) = I
END FORALL
PRINT *, P
END PROGRAM TST
enok@home:~/> gfortran421 -o tst tst.f90 -static && ./tst
3 1 4 3
enok@home:~/> ifort -o tst tst.f90 && ./tst
tst.f90(5): (col. 3) remark: LOOP WAS VECTORIZED.
3 1 4 2
enok@home:~/>
--
Summary: FORALL loop gives wrong result
Product: gcc
Version: 4.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: enok at lysator dot liu dot se
GCC build triplet: x86_64-unknown-linux-gnu
GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33686