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

    <tr>
        <th>Summary</th>
        <td>
            [flang] Incorrect execution result of variable in subroutine using INTERFACE ASSIGNMENT(=)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          ohno-fj
      </td>
    </tr>
</table>

<pre>
    ```
Version of flang-new : 17.0.0(5a50ba03e9adb1614189530f8a5ef06d90dfd670)
```

The variable a2 in subroutine x using `INTERFACE ASSIGNMENT(=)` appears to be handled incorrectly.
The value of the variable a2 in subroutine x expects 1, but is actually 11 for flang and gfortran.

The following are the test program, results of flang-new, gfortran and ifort compilation and execution.

snggf232_5.f90:
```fortran
module m1
  interface assignment(=)
     module procedure x
  end interface assignment(=)
 integer::aa=1
contains
  subroutine x(a1,a2)
 character,intent(out)::a1
    integer,intent(in)::a2
    write(6,*) "subroutine : a2 = ", a2, ", aa = ", aa
    aa=11
    write(6,*) "subroutine : a2 = ", a2, ", aa = ", aa
    if (a2 .eq. 1) then
 a1 = '1'
    end if
    write(6,*) "subroutine : a1 = ", a1
 end subroutine x
end module m1

program main
  use m1
 character:: a
  a=aa
  write(6,*) "main : a = ", a, ", aa = ", aa
  if (any(a/=(/'1'/))) write(6,*) "NG"
  if (any(aa/=(/11/))) write(6,*) "NG"
end program main
```

```
$ flang-new -flang-experimental-exec snggg232_5.f90; ./a.out
 subroutine : a2 =  1 , aa =  1
 subroutine : a2 =  11 , aa =  11
 subroutine : a1 = ^@
 main       : a = , aa =  11
 NG
$
```

```
$ gfortran snggg232_5.f90; ./a.out
 subroutine : a2 =            1 , aa = 1
 subroutine : a2 =           11 , aa =           11
 subroutine : a1 = ^@
 main       : a = ^@, aa =           11
 NG
$
```


```
$ ifort snggg232_5.f90; ./a.out
 subroutine : a2 =            1 , aa =            1
 subroutine : a2 = 1 , aa =           11
 subroutine : a1 = 1
 main       : a = 1, aa =           11
$
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vl9zozgM_zTOiyaMbQKBhzxkm2ZnH64Pt517vRFgiHccnLPNtv32NwJSSK5_924uw1Asyz9JP8mq0HvdtEptWPKFJbsFduFg3cYeWrusfywKWz1tWMrHh-8Y3_6hnNe2BVtDbbBtlq16ABZvQawjHnEmswQTXiCPVY5VIVKxElmexLzOMFE1T6ucV3WVrjmT-QB5ZWF43x8U_ESnsTAKUIJuwXeFs13QrYJH6LxuG2Ap_3Z3f_v7fntzC9vv3799vfvt9u6eyYzFOzKQcsDTSaHzECwUCg7YVkZVoNvSOqfKYJ6iuUXTKYotvGNePZ5UGTwIJm-g6AJoD1iGDo15AiGgtm7gB7CtoKmtCw7b6DrC2hpjHygSdKo3GpQPcHK2cXgkbKd8Z4K_4JvkZ8geX9MCSns8aYOB0kNS9ajKjlYXZn3bNLWM5Z9JVOecxdurJIy4g_Roq84oOIphCaDboFyNpYKhdo6qDRPboxIAjAdPzpaq6pyCx_OmIn8_gEI6jXLkYLxFZPFudKK0bUDd-jPgPC9MZkgpQTkBlQd0WAblmLwh0N6U7QJpDOBicvxsdaaq20lTTpoPTgfFZJYyecPklskcmJQzZ-hSoAQW72iDcob9-7zAiy2ckIdgxf9hStdAlEmI1F8RFXNORTgmH1CM59aCyfV0qk9h_Vn_xIUT5_AI6yKDvZikV7U3vMebAUfUZy-h87MKnbLdZwyegyVSp9BfdplQB2cvfP0AlSOR7RO9mdz3pZzRx0gefeXD84rxu6-E-hLeBaAQn8MiKv_J2os991ooV7Mevxw-qfE5TRcWzZI6DFBDaWYN5QtETO4xois2RPNypYKAGaMg3lG-0n5Nfayy5JatxjD6qGH4zXP7Atjd1-fIP0fTczf-ZTKm30Wg77AyHbqkZyb_tzwNGm9if5C218gb_nv918zN5W8C_Bpz4i3SxJuIr9G0qDZxlcc5LtRGpFmcyHUSrxaHTayKeJ1KjmmGvMyFEnKVZmUZy3hd16pe6I3kMuYJz3gaS7GKMrXiIltjgrFMearYiqsjahMZ8_MYWdcstPed2qQyyfOFwUIZ3w-BUtJd7zepgyS7hdvQmWXRNZ6tuNE--Akl6GD66bFvDizZwbfzXDWNH-MMQyPM80h1OU8Nw9ybk9yic2ZzCOHkqbFTB9w3Ohy6Iirtkck9uTT-WZ6c_aHKwOS-D8Qzue8D_TsAAP__2Zn1ew">