And another bug found via the test suite. It works with 4.1.3 and 4.2.2, but with gfortran the result array is .FALSE.; however, result(1,3) shall be .TRUE.
program m implicit none logical, dimension (3, 3) :: & p = & reshape ( (/.false.,.false.,.false., & .true., .false.,.false., & .false.,.true., .false. /), & (/ 3, 3/) ) logical, dimension(3,3) :: result result = matmul(p,p) write(*,*) matmul(p,p) if(any(result(2:3,:))) stop 'ERROR 1' if(any(result(1,1:2))) stop 'ERROR 2' if(.not.result(1,3)) stop 'ERROR 3' end program m -- Summary: 4.3 Regression: Matmul of logical values Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org OtherBugsDependingO 32834 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34566