Skip to content

[flang][runtime] DTIO failure with namelist input #159127

@DanielCChen

Description

@DanielCChen

Consider the following code:

module m

   type base
      character(7)   :: c(3) = (/ 'xxxxxxx', 'xxxxxxx', 'xxxxxxx' /)
   end type

   type nodtio
      character(7)   :: c(3) = (/ 'xxxxxxx', 'xxxxxxx', 'xxxxxxx' /)
   end type

end module

program character002
   use m

   interface read(formatted)
      subroutine readformatted(dtv, unit, iotype, v_list, iostat, iomsg )
         import base
         class(base), intent(inout) :: dtv
         integer,  intent(in) :: unit
         character(*), intent(in) :: iotype
         integer, intent(in)     :: v_list(:)
         integer,  intent(out) :: iostat
         character(*),  intent(inout) :: iomsg
      end subroutine
   end interface

   integer :: stat
   character(150) :: msg = ''

   type(base)   :: b1
   type(nodtio) :: b2

   namelist /n1/ b1, b2

   open (1, file='character002.1', form='formatted', access='sequential' )

   read (1, n1, iostat = stat, iomsg = msg)

print*, b2%c(1), "<"
print*, b2%c(2), "<"
print*, b2%c(3), "<"
end program

subroutine readformatted (dtv, unit, iotype, v_list, iostat, iomsg)
use m, only: base

   class(base), intent(inout) :: dtv
   integer, intent(in) :: unit
   character(*), intent(in) :: iotype
   integer, intent(in)     :: v_list(:)
   integer, intent(out) :: iostat
   character(*), intent(inout) :: iomsg
   type(base)           :: dummy
   namelist /dtio/ dummy

   read( unit, dtio, iostat = iostat)

   dtv%c = dummy%c

end subroutine

The input file character002.1 is

 &N1
 b1= &dtio
 dummy = 'ab
cdefg','
ABC
DE'   !<- b1 should be abcdefg, ABCDE__, xxxxxxx
 /
 b2   =  "ABCDEFG
","
abc"    !<- b2 should be ABCDEFG abc____, xxxxxxx
 /
 &N2
 b3= &dtio
 dummy = "abcdefg","ABCDE"
 /
 b4   =  "ABCDEFG","abc"
 /

Flang outputs

> a.out
 xxxxxxx<
 xxxxxxx<
 xxxxxxx<

Where both gfortran and XLF outputs

> a.out
 ABCDEFG<
 abc    <
 xxxxxxx<

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions