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

    <tr>
        <th>Summary</th>
        <td>
            [flang] pseudopositive warning to function result that is set, pseudonegative warning to subroutine INTENT(OUT) parameter that is not set
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          e-kwsm
      </td>
    </tr>
</table>

<pre>
    ```console
$ flang --version
flang version 20.1.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```

Prepare the following file:

```fortran
program main
  implicit none
  logical :: x0, x1

 print *, f0(), f1()
  call s0(x0)
  call s1(x1)
  print *, x0, x1

contains

  function f0()
    ! "Function result is never defined", as expected
    logical :: f0
  end function

  function f1()
    ! "Function result is never defined", but f1 is definitely set
 logical :: f1
    INQUIRE(file="/usr/bin/flang", EXIST=f1)
  end function f1

  subroutine s0(x)
    ! NO warning, but x is NOT set
 logical, INTENT(OUT) :: x
  end subroutine

  subroutine s1(x)
    ! no warning as expected, but inconsistent with f1
    logical, INTENT(OUT) :: x
    INQUIRE(file="/usr/bin/flang", EXIST=x)
  end subroutine

end program
```

`INQUIRE` assigns the `EXIST=` specifier to T or F, so the result of `f1` is set. Also, `s0` does not set a value to `x` that is specified as `intent(out)`, but no warning is issued.

```console
$ flang a.F90
./a.F90:12:12: warning: Function result is never defined
    function f0()
             ^^
./a.F90:17:12: warning: Function result is never defined
    function f1()
 ^^
```

Expected:

```console
$ flang a.F90
./a.F90:12:12: warning: Function result is never defined
    function f0()
 ^^
./a.F90:23:17: warning: Subroutine parameter x specified as INTENT(OUT) is never defined
  subroutine s0(x)
                ^
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVstu6zYQ_Rp6Q9igqIethRZqHQHZJG2vL9BdQUkjmS1NCiTl-P59MXrZUdIH2gINjESZ4ZwzPPOwhHOy1QAZib8j8XEjen82NoPtb2_usilN_S0jCRs_ldHOKCAsJzyijRK6pdvtFayTRhOWj5bpf8rZLtglhOUnYVvwJMzp7ZD8kkTbrtoqqfvbttU9-s8WRE0vpgaFpzrj5I2w_Fk7L5SC-igt2gkvemcJL0qJbEta-MzyHyx0wgL1Z6CNUcq8Sd3SRiogYT4eWSIaY70VCNJZ01pxoRcxYFIqL52SlfRUGw2DRZlWVkJRhME7MMK_p7dghKSdldpTwnO0NozwA-Hp8BxMz4hRCaWoQy-GP9rw1C2Ybe_Q3jNVRnshtZt4adPryqPOCylaKSU8oITzYnZbcL3yVDqq4QqW1tBIDTXhHNGFo3DroPJQT_Gr6zZssIOuF8aPGQT_IoOy97QJ0DvYpQf1jTrwCLbOJZgYnl9-_Pr80xPhh7G-xwHroTt4MfTiRPH08_OXEwmPzaLz43VG2MHs-tKa3ksNU7HeX-rllb4JqyUCj4nfMO-X19MqYXQ_v5yeXk6EH16_nghPl_ZZ-O9kn9EHH-m1menflW1KRWocT-k8aE_fpD_f5fq7Wf1jYW-Puq7vhbZpzD5OLUnYzJkwOi4jN8wwSdgMjy7XQSUbCZZ6Q0_UWFpgBs4Mh6cWMw2GNQEGSIdF2dFcOYMnScIc8tLagKPaeHRTQa9C9YCgJGE39PuzGJp1ZqxRbZIwqVFawg-m93jfhM3SPxRGOiqd66HerVbOZ7tT7IoUddgRXozPYR7w-dfSa2FO_3KWxvL90U5Yfkj8hJ8V5f4_oXxYAgvNqtpPc89-2Mj_nzyfSsLDWZdHmi_3-eyEFRfwYOntfaOsB-zTVP5kz6yr9aDRps7COg1TsYEs2McsCPZxEG3OWSpSljZxXAZCxNG-hrpM0_jAuTjsy_hQbmTGGY9ZEiQ8jOIg2iVRWu4BoubAoyoM9iRicBFS7ZS6XnbGtpuhi7MgiqI43ChRgnLDKwLnywKIjxubYcC27FtHIqak8-4O4aVXw3vFGBEfaeegrw1-v3t5hWVovLmXZqrgMoTgccrGQA2tWAc-SLmW_l6jGW2a-k1vVXb2vnPYiLwgvGilP_flrjIXwgu8wfRn21nzK1Se8GJQxBFeTKJcM_57AAAA__8eucAm">