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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Lowering error with optional arguments and strings
        </td>
    </tr>

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

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

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

<pre>
    A lowering error is seen when optional arguments and strings are used together in an if statement..

Error
```
error: loc("./cd.f90":1:1): 'fir.is_present' op operand #0 must be any reference or box like, but got '() -> ()'
error: Lowering to LLVM IR failed
```
Reproducer
```
subroutine cd(cmd, errstring)
  integer,  external, optional :: cmd
  character(5), intent(out) :: errstring
  if( .not.present(cmd) ) then
    errstring = 'error'
    return
  end if
end subroutine
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFUslunEAQ_ZrmUjKCZhY4cHA8HinS5OJDrlEvBXQM9KiX2P77VMMsSmTJEksv9eq9elXS6o_2EUb7hs7MPaBz1oHx4BFneBvoY8_B2FmMIFwfJ5yDBzFr8CEBaO0QokcNwfYYBiT0TAFgOgoRARMiz1lxYMXj-n1OHJeDXXF5lu3CzqqkRzFeM85zxo9K511T0IZuyuXlTQpifN8Zlxv_6-zQEw0dkFp60CWFjFcFTNEHkEiKPsBhhw5nhUA1SvsOo3lFxp9AxgC9DSnjQtvAA6ueYV2nw3_Vna5uBQun088f8P0FOmFG1J9W9YJnZ3VU-HnRPkpnYzAzgtJEqSadNBHbanGSsAQCORuwpzR0Dfge0FFb0ubWIlKXBKYUF4gahBMqJFC9Xap5WtIkt2qiTcVeUHfGK11HMZDPNuQ3h1d5hKGXuj1fY-EOp3yHZOXq19W9FOIwRHeDIPWIKFZv00TdjPjPp0y3lW6qRmTBhBFbtv12HAXp3B7uvVgn982E4YuJzaIb2yGEs0918yM9PaGizJWdaDOOf66_B2rcb1RU9tF4H9HTYrsrqyYb2rrYF2VXYiNr5I2UNReNFEru6LTrNkU2ComjT2JJZ2ZaXnBe7HhZ8nJDg73njZKy0vsNYtdtFdsUONEQ5Yk4t67PXLtokLH3dDkaH_z9Unhv-hnxml_EMFjXvhoafer5rJ2YLP2zRXi7qP4Lt3Y2ag">