<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/77735>77735</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Result from TRANSFER intrinsic for INTEGER to LOGICAL and back is not identity
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kiranktp
</td>
</tr>
</table>
<pre>
Here is a small reproducer:
Program test_transfer
Logical ::l = Transfer(42,.true.)
Call s(l)
Contains
Subroutine s(x)
Logical ::x
Print '(I14)', Transfer(x,1) ! 42 recovered
End Subroutine s
End Program test_transfer
$ flang-new repro.F90 && ./a.out
1
$ gfortran repro.F90 && ./a.out
repro.F90:2:15:
2 | Logical ::l = Transfer(42,.true.)
| 1
Warning: Assigning value other than 0 or 1 to LOGICAL has undefined result at (1)
0
$ ifx repro.F90 && ./a.out
42
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVF1vqzgQ_TXDy6gIj_l84IFNQrdS1a3SSvu4MmCIt8SObNNN__0K0t5LP676cC0kj5g5h-M5g4VzatBSlpD8Ack2EJM_GFs-KSv0kz8Fjeleyj-llagcCnRHMY5o5cmabmqlBV5BtIWogqhYBcW9NYMVR_TS-X-8Fdr10q4LEG_NoFox4kzBq3nf4uNbJeUxAW1CbycZAhXvoZtZhAPKx4-pjdFeKO3WLyEqHqbGmskrLRfY-QPsCz3nT_l7q7RHoAwov2HxTDHHm7XoM9CGARUIxDAmtLI1z9LK7gPbTnf4TtMqPee-a99bQDH2o9DDlZb_XVwJ6yJCoBQoxRCoFqGZ_AWA7A24gg-9sfMHVuhfwC_qfpQBrwh4xZL3IzA_hJBt8DccXvp94Vgvtq75W1it9AC8wmqZYaUHfBbjJNH4g7ToD0JjhMYiQ2_w9q_rm011iwfhcNKd7JWWHVrpptGjmI3N2WcZr2KiLzqn-vP3LV-vmNYsQVfyruCFCGTJsigukjTnLDiUPS-yPOVSNHHXZGnStZLFsk9jwdOYN12gSooojhhjURZljIV5k1JOXZzGQnLe9xBH8ijUGI7j8zE0dgiUc5MssyzjSTCKRo5u-d-JmmkAmn0AomWSgFe9NdpL3c2JZBvYcqa5aqbBQRyNynn3k9grPy53xwWcbHF_6WhvzREf99XdQ73bo9LeKu1Ui72xeHP3uLve7deuCN1hI9qn-ZbRxqPqpPbKvwSTHcuD9yc3DxHVQPWg_GFqwtYcgepZyOt2dbLmX9l6oHo5rgOqlxP_HwAA__8TpF8H">