Two of the following 4 subroutines abort at run time.  They
have a zero sized array argument to PACK.  If the left and
right hand zero sizes are "the same", it works.  Also works if
the zero size is a compile time thing.

Dick Hendrickson

      program try_gf1048

! fails on Windows XP
! gcc version 4.4.0 20080312 (experimental) [trunk revision 133139]

      call       gf1048a(  10,  8,  7,  1,  0,  .true.)
      call       gf1048b(  10,  8,  7,  1,  0,  .true.)
      call       gf1048c(  10,  8,  7,  1,  0,  .true.)    !fails
      call       gf1048d(  10,  8,  7,  1,  0,  .true.)    !fails
      end program

      SUBROUTINE GF1048a(nf10,nf8,nf7,nf1,nf0,nf_true)
      logical nf_true
      CHARACTER(9) BDA(10)
      CHARACTER(9) BDA1(10)
      print *, 'gf1048a started'
      BDA(  8:7) = PACK(BDA1( 10:  1), NF_TRUE)
      print *, 'gf1048a finished'
      END SUBROUTINE

      SUBROUTINE GF1048b(nf10,nf8,nf7,nf1,nf0,nf_true)
      logical nf_true
      CHARACTER(9) BDA(10)
      CHARACTER(9) BDA1(nf10)
      print *, 'gf1048b started'
      BDA(NF8:NF7) = PACK(BDA1(NF8:NF7), NF_TRUE)
      print *, 'gf1048b finished'
      END SUBROUTINE

      SUBROUTINE GF1048c(nf10,nf8,nf7,nf1,nf0,nf_true)
!  on windows XP, natters to itself a while and then goes
!  back to command line prompt with no obvious message
      logical nf_true
      CHARACTER(9) BDA(10)
      CHARACTER(9) BDA1(10)
      print *, 'gf1048c started'
      BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
      print *, 'gf1048c finished'
      END SUBROUTINE

      SUBROUTINE GF1048d(nf10,nf8,nf7,nf1,nf0,nf_true)
!  on windows XP, natters to itself a while and then opens
!  a run time error box and offers to send report to MS
      logical nf_true
      CHARACTER(9) BDA(10)
      CHARACTER(9) BDA1(nf10)
      print *, 'gf1048d started'
      BDA(NF8:NF7) = PACK(BDA1(NF10:NF1), NF_TRUE)
      print *, 'gf1048d finished'
      END SUBROUTINE

C:\gfortran:gfortran gf1048.f

C:\gfortran:a
 gf1048a started
 gf1048a finished
 gf1048b started
 gf1048b finished
 gf1048c started

C:\gfortran:gfortran gf1048.f

!  call gf1048c commented out
C:\gfortran:a
 gf1048a started
 gf1048a finished
 gf1048b started
 gf1048b finished
 gf1048d started

C:\gfortran:


-- 
           Summary: run-time abort for MATMUL of run-time zero sized array
           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=35990

Reply via email to