| Issue |
108895
|
| Summary |
[Flang] write statement in subroutine specified in FINAL statement is not executed correctly
|
| Labels |
flang:runtime
|
| Assignees |
|
| Reporter |
ohno-fj
|
```
Version of flang-new : 20.0.0(1cc4c87198ec0c6febca3f6ed03357e9e091cfd4)/AArch64
```
Execution error occurs because `subroutine` specified in `final-subroutine-name-list` of `FINAL` statement is not executed correctly.
`Write` statement in the `subroutine` creates a file named `file.2` with no data.
Then the empty file is read, resulting in a runtime error.
The following are the test program, Flang-new, Gfortran and ifort compilation/execution result.
sngg632d_.f90:
```fortran
module m0
type :: ty0
integer :: ii
contains
FINAL::destructor
end type ty0
type :: ty1
integer :: jj
integer :: kk
type(ty0),allocatable :: ty0_obj
end type ty1
contains
subroutine destructor(dmy)
IMPLICIT NONE
TYPE(ty0), INTENT(INOUT):: dmy
write(2,*) dmy%ii
end subroutine destructor
end module m0
program main
use m0
call sub
rewind 2
read(2,*) n
if (n/=2) print *,701
read(2,*,end=9) n
if (n/=2) print *,702
9 print*, "pass"
contains
subroutine s1(d1)
type(ty1),INTENT(in) :: d1
integer :: v1, v2
v1=d1%ty0_obj%ii
v2=d1%jj
v1=v1+v2
end subroutine s1
subroutine sub()
type(ty0),save :: ty0_var
ty0_var%ii=2
call s1(ty1(10,10, ty0_var))
end subroutine sub
end program main
```
```
$ flang-new sngg632d_.f90; ./a.out; ls -al fort.2; cat fort.2
fatal Fortran runtime error(/work/home/ohno/CT/test/fort/tp/reproducerJ/Metro/FFE_2019_generic_04/sngg632d_.f90:24): End of file during input
Aborted (core dumped)
-rw-------. 1 ohno ohno 0 Sep 10 13:39 fort.2
$
```
```
$ gfortran sngg632d_2.f90; ./a.out; ls -al fort.2; cat fort.2
sngg632d : pass
-rw-r--r-- 1 ohno users 13 Sep 10 2024 fort.2
2
$
```
```
$ ifort -diag-disable=10448 sngg632d_2.f90; ./a.out; ls -al fort.2; cat fort.2; cat fort.2
forrtl: No such file or directory
forrtl: severe (29): file not found, unit 2, file /home/ohno/CT/test/fort/tp/reproducerJ/Metro/FFE_2019_generic_04/fort.2
Image PC Routine Line Source
sngg632d_.f90.out 000000000040A08C Unknown Unknown Unknown
sngg632d_.f90.out 000000000040420D Unknown Unknown Unknown
sngg632d_.f90.out 000000000040416D Unknown Unknown Unknown
libc.so.6 00007C89BEA29D90 Unknown Unknown Unknown
libc.so.6 00007C89BEA29E40 __libc_start_main Unknown Unknown
sngg632d_.f90.out 0000000000404085 Unknown Unknown Unknown
ls: cannot access 'fort.2': No such file or directory
cat: fort.2: No such file or directory
$
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs