Issue 148638
Summary [flang] Runtime DTIO lacking support for `-fdefault-integer-8`
Labels flang:runtime
Assignees
Reporter DanielCChen
    Consider the following code
```
module m

   type base
      sequence
 integer(4) :: i
   end type

end module

program scalar007
use m

 type(base), allocatable :: b1

   integer :: stat = 0
   character(150) :: msg = "original"

   interface write(formatted)
      subroutine writeformatted(dtv, unit, iotype, v_list, iostat, iomsg )
         import base
         type(base), intent(in) :: 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

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

   allocate ( b1, source = base(4) )

   write ( 1, *, iostat = stat, iomsg = msg ) b1
end program

subroutine writeformatted (dtv, unit, iotype, v_list, iostat, iomsg)
use m!, only: base, data

   type(base), intent(in) :: dtv
   integer, intent(in) :: unit
   character(*), intent(in) :: iotype
   integer, intent(in)     :: v_list(:)
   integer, intent(out) :: iostat
   character(*), intent(inout) :: iomsg

   print*, unit
   !write ( unit=unit, fmt=* ) ' Data not using DTIO: v_list is:', v_list
end subroutine
```

When compile the code with `-fdefault-integer-8`, Flang failed at runtime as
```
> a.out
 4563402751

fatal Fortran runtime error(t.f:48): UNIT number 4563402751 is out of range
IOT/Abort trap(coredump)
```

It worked fine if I removed the `-fdefault-integer-8` option. 
It seems the runtime routine `_FortranAioCheckUnitNumberInRange64` isn't expecting a `i64` UNIT number.

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to