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

Reply via email to