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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] BIND(C) Passing a character type argument to C routine does not work.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang,
            flang:codegen
      </td>
    </tr>

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

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

<pre>
    ```
#include <stdio.h>
#include <stdlib.h>

void cfun(char p) {
   if ( p != 'A' ) exit(41);
}
```


```
   use, intrinsic :: iso_c_binding
   interface
       subroutine cfun(i) bind(c)
 import
          character(C_CHAR), value :: i
       end
   end interface

   character(C_CHAR) :: i
   i = 'A'
   call cfun(i)
   end
   ```
   
   The parameter `p` in C function `cfun` contains garbage value.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U11v2zoM_TX0C9FApj_z4IfUvsG9LxfDsPdCtmhbmyMZktyt_35QmiZpuxmGTJE81DmiKb3Xk2FuoHiEokvkFmbrmk4azUvbzmyS3qqXBkpxeUUH4gCUaTMsm2KErPVBabubIfvnL9FF9_fh8_pstcJh3AxQPczS4Qq0R6geX8OIqEcEqnFFoBSyDoGqA1CFMY9_6QBU5ynQHrILBqruYnxge7--DyHi5hmoRW2C08brASE7QHZA7e3T8NRro7SZbqRMYDfKga-e-Pitd3YL2vCbJB1ZRnCUF0m-puvTal14h0XEqF8OgR1Q3T61_x6-RgS1-CyXja-E3sHYqOuejfpI7Br7Y-3PJTXeXfENLJflXtH9iVf785VejW8z4yqdPHFgFxNXKAVqgy2OmxmCtiZ6zyeUAgdrgtTG4yRdLyd-1b9LVJOpfbaXCTdpJaq6ECKnZG64TOuRxKj2-zobqaxVPeSVSgtZKlUUY6IbEpQLSrO0ziuiXa8KKViU-V7Iuk4ryAWfpF52y_J82lk3Jdr7jZs6LfMyWWTPiz_PBtG4SDMBEVB73WWHwSqe2ER_0SWuiXUe-m3ykItF--BvlYMOy3nQjmds0eHjf_93sS2xI1_iKJoJ5a1jGF5WRumm7cQmYLDY4ttvpix7NDbgT-t-7JLNLc0cwupjY-kIdJx0mLd-N9gT0DFyuHweVme_8xCAjmepHuh4Vvs7AAD__3xbJKU">