<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/154954>154954</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Failed at runtime when handling user-defined `v_list` with `DT` edit descriptor.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:runtime
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following code:
```
module m
type base
integer :: i
end type
interface write(formatted)
subroutine writeformatted(dtv, unit, iotype, v_list, iostat, iomsg )
import base
class(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
end module
program fdtedit105kl
use m
type(base) :: b1 = base(100)
type(base) :: b2 = base(200)
integer :: stat
character(150) :: msg = 'original'
open (1, file = 'fdtedit105kl.1', form='formatted', access='sequential' )
10 format (DT'write'(-1,+2,3,-4,+5,6))
write ( 1, 10, iostat = stat, iomsg = msg ) b1
print*, stat
print*, msg
if ( stat /= 0 ) ERROR STOP 1
close ( 1, status='delete' )
end program
subroutine writeformatted (dtv, unit, iotype, v_list, iostat, iomsg)
use m, only: base
class(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
write ( unit, "(I4)", iostat = iostat ) dtv%i
end subroutine
```
Flang failed at the runtime as:
```
> a.out
1005
Excessive DT(v_list) in FORMAT; at offset 1 in format '(dt'write'(1,+2,3,-4,+5
,6))'
Fortran ERROR STOP: code 1
```
The test case is testing if the `v_list` that the main program defined via the `DT` edit descriptor gets passed to the DTIO procedure correctly.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVk2PszYQ_jXOZbSRMRDgkAObbKT3UG21zb0yMIBbsFPbZLv_vrKBwKabfmwUCWzP5zPPjOHGiEYi7kn8TOLjhg-2VXp_5FJgdzi0KDeFqj72ByWNqFCDbRFq1XXqXcgGSlUhCXNCc7Kj05_mvaqGDqEnNAcA-3FBKLjBcQkAQlpsUIPTDHMQ4wHKyss6Y37DiemalwjvWlgkLK2V7rm1WBGW3ayZodBqsEJOciuhtLJXwg4wSGHdUyjvgB3g-msnzLRnLJ_eetPA2rQLor8obW_xlx03hrDUr1nm1aRFaQlLhSQsm5NyntdmxpSd_AMFH6Pz0HLNS-tkU8Lyf3Qy5fO1nzsV95vU5uRTt75L96s41WA_OfWArZT-NeR7A71pbvqu7EsJFyrcqj_ywW2NvBrXF60azXuoK4uVsAGNf-8IzQcz8m6h3lKs2X8RAAmPY0lZGlA6YfBAmq2l2Sy9UHTF5AWYNSRBTFf2PMfCIxCWKC0aIXlHWDJqqQtKcBoOv1p0OEuus9wGTt4JKN2T8OiOF8r7E16WaMx4ZvCPAaUV3g3cgg8ojFrO3_FMWDI1WUJY-uQCIOyZEXYICTs8ReM6Juyw8-VdIPBqzgj4qAO6NJWP_q67wiNMXQYAReArKRxNcic0AbjeunFF1N7LaJidnCXq7by8vb2-wS_n158huIVVdsqswnJaw4RIhR36TBc0HLsmRo0bD4cKfGuqjI5GcrIDKNl9eG6NU2WO-P-OlsfNfjdT_kOLPpgq358nX2k-GiTfHCD3BJwLQhgjLP0ReTvsjo_zK8s8kCwWCwU-zaH1jUZofuq4bKDmosMKuPUXoR6kFT0CN3-_BEn4AnzrAqc5BJTG7vnyp2tMcUVwLZfOwGUgJJxe337KzyR8dtZVXRu0ELiDW58mnnufW_Vhp9IcVt3qJ8xJaau5XDWMQ9Pd4WPjfE743CJYNBZKbhCE8Qt36YvaJ092dIp_R8G2EyQ9F3JuJaiwFhIruAo-qxzPTtwNM6jQlFpcrNLQoDVw4cZgBVZ52eP5x6szVGI1aIRSaY2l7T62m2ofVlmY8Q3ugySO0yTYBeGm3WdlEQeU75IwrcsiqYM4q3Y7llVJFIVFQjdizyiLacpYENFdlG2TtOKUBymNiiIKeEwiij0X3bbrrv1W6WYjjBlwH8RRFkebjhfYGf-pxFjt-EDCfOKAI1p83Oi9U30qhsaQiDp0zGLMCtv5L61RNz7C6UanmUrvLUpouaw6B_VgUD_NKH4C_F3Y9iGe282gu31r7cUTk50IOzXCtkOxLVVP2MmFND2eLlr9hqUl7OSTNYSdpnyve_ZXAAAA__96K_ij">