<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/137776>137776</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang] incorrect iostat for failed list-separated read into real
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Inker2401
      </td>
    </tr>
</table>

<pre>
    There appears to be some (possibly) non-standard conforming behaviour concerning the reading of an internal file (string) containing `..` into a real variable. Consider the following program: 

```
program flang_read_dots
 implicit none

  character(len=2) :: str
  real :: x
  complex :: z
 integer  :: n, ierr

  str='..'

  ! With status checks
 read(str,*,iostat=ierr) x ! ierr=0 (success) and then x is read as 0.0 (non-standard behaviour)
  print *, 'Read real number ierr, val =', ierr, x

  read(str,*,iostat=ierr) n ! ierr is non-zero as expected as cannot read to integer
  print *, 'Read integer number ierr, val =', ierr, n

 read(str,*,iostat=ierr) z ! ierr is non-zero as expected as cannot read to complex
  print *, 'Read complex number ierr, val=', ierr, z

  ! Without status checks
  read(str,*) x ! read succeeds (incorrectly!)
  print *, 'Read real number (no stat check) val =', x

  read(str,*) n ! read does not succeed, runtime error raised
  print *, 'Read integer number (no stat check) val =', n

  read(str,*) z ! read does not succeed, runtime warning
  print *, 'Read complex number (no stat check) val =', z
end program flang_read_dots
```

The `str` containing `..` when read into `x` gives `0.0` with `iostat=0` for success (likewise, `iostat` is omitted, no runtime error is raised). This appears to be possibly non-standard conforming behaviour, as various other compilers such as ifort, Cray Fortran and gfortran all raise a runtime error (and will also return non-zero `iostat` codes). 

I suspect it has to do with the interpretation decimal point as if `str` is initialised to `hi`, then a non-zero `iostat` value is returned as expected. Similarly, if the `decimal="comma"` argument is passed into the `read` statement, a non-zero value for `iostat` is also returned.  
 
Compiler explorer link: [https://godbolt.org/z/9doTaGqKT](https://godbolt.org/z/9doTaGqKT)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyclsFu4zgPx59GuRA1HLlO4kMOnQT5MPhuuwX2OGBsOtZWlryUnHb69AvKcTvtTKfBAikayyL1458UGQzBnBzRVpVfVLlf4Bg7z9uv7oFY3-bLxdE337f3HTEBDgMhB4gejgTB9wRKbwYfgjna70pX4Ly7CRFdg9xA7V3ruTfuBEfq8Gz8yLJYEztZjB0BEzby3beADoyLxA4ttMYm3yGycSfxXHsX0SQ7tcqzTK1y2e4BxYeFM7LBo6UMdt4F0xAn_6231j-K1cD-xNir4g5UfiefVX755HeXl9BadKdvAvWt8TGo_A5MP1hTmyix0WQJUHfIWEdipTeWnCr2WiBVcSf-Q-S0K4Fd1p4mO98Plp7mxed0gIt0IoZ50Sm9A0PM82Hirtgrvc4ypdfzqtJL-MvEDkLEOAaoO6ofErHgT9opvVP6Tumd8bJLFfvkV1fwlOzTU7HPk9RjXVMI8hJdI-I5eAITkjvAAHmW9r1J8Utela4S1cDGRZgOBaXXf4hx0sGN_ZF4OlLv4JykkahewtW7pNIs3acxuJcYBFO4nom9oNLTQHWkhF2jcz5OUUQ_q_0x7JyOq3jdhfca3Of_gnspmI9x54r6Gfdn2uf3tePH-HP5_CKYuV4SVSoUaoIUg3G1Z6Y6yvVfXl0EqYzSydO5csJbgX9TCHPiE0zjSbSMM5XY8uii6QmI2TMwmkDN1fn-HM39Du35OrRHTC3w6rR-TiW5JdfAx53sx36n8rv7jqSTCv0q_2V7fZQWwBeNvKw_yfLJnCnIU57laZs0IbXKXwo-rbae4dJShN6aB3o0gVKML3ulhwfwvYlx0sf5d9mT_jMlUFcZ3HcmvJtC8_T5fPSIfwxpUPgxgI8dcdLZWOIgsJ28N63nKHt3jN_h4DkyutQST-38YO1EJcPnDa7SG9n5aKwFtMEDUxzZvd72N7HXvqGQAptS8hXCGKQVgInQYQqx8ZPAMszSeByYIkbjHTRUmx4tDF4KKKH_kFETwDgTDVqRD6YEdkbyr3dTe8cPuM5oR5pav9BPjWluUhn8aXpjkeXK7-TMOFXSBSeVpK5936PSWtwhn8aeXBSPAwahSQV1sUvXaJWn6ibZlxL1ijbRSD29L5wfFBYuUVH-dpecCrL1TAzWuIc0-MsvXYxDkEmrD0ofTr45ehszzyelD89KH6rG3-P__vn_vSr3Sm-u366rRbMtmqqocEHb5fq2rJabdblcdNtG06oqSGNZldWqzdu8Xraa2nJZHzcF4cJsda7L_FZXeaXLcpkhLuu6aLFo62Jzu1mq25x6NDaz9tzL8QsTwkjbZbFer1cLi0eyIf2E0zrdfJG-3C94KwY3x_EU1G1uTYjh1UU00abffZNFuYeXdg6Tzkn1Fo2lBsT4JtCAjDKqXvuCNPbFyHb7TisTu_GY1b5X-iBnXv7dDOz_pjoqfUgxBKUPlzDOW_1vAAAA__-Z92BV">