The PRODUCT intrinsic gives the wrong answer when the mask argument is a scalar expression which evaluates to FALSE. It's OK with an array expression that evaluates to all FALSE.
Dick Hendrickson program try ga3019 ! fails on Windows XP ! gcc version 4.4.0 20080312 (experimental) [trunk revision 133139] call ga3019( 1, 2, 3, 4) end program SUBROUTINE GA3019(nf1,nf2,nf3,nf4) INTEGER IDA(NF2,NF3) INTEGER IDA1(NF2,NF4,NF3) ida1 = 3 ida = -3 IDA(NF1:NF2,NF1:NF3) = PRODUCT(IDA1,NF2, NF1 .LT. 0) !fails print '(6I3)', ida ida = -3 IDA(NF1:NF2,NF1:NF3) = PRODUCT(IDA1,NF2, .false. ) !fails print '(6I3)', ida ida = -3 IDA(NF1:NF2,NF1:NF3) = PRODUCT(IDA1,NF2, ida1 .eq. 137 ) !works print '(6I3)', ida END SUBROUTINE C:\gfortran:gfortran ga3019.f C:\gfortran:a 1 1 1 -3 -3 -3 1 1 1 -3 -3 -3 1 1 1 1 1 1 -- Summary: wrong answer for PRODUCT with scalar mask Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dick dot hendrickson at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35993