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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Execution error in assignment between derived types due to incorrect GENERIC statement
        </td>
    </tr>

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

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

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

<pre>
    ```
Version of flang : 21.0.0(842e5915778a820c63cf38b75bec932a6ea8c18b)/AArch64
```

Because `GENERIC statement` does not work, an assignment between `derived types (v21 and v22)` results in a run-time error.  
A run-time error occurs on line 28:
```
    v22=v21
```

When the following statement is added before line 28, the result is `Segmentation fault (core dumped) `:
```
ALLOCATE(v22(1)%x22%x11(2))
```


The following are the test program, Flang, Gfortran and ifx compilation/execution result.

Typebound_op_FT_005_2332.f90:
```fortran
MODULE m1
  TYPE t1
 INTEGER,POINTER:: x11(:)
   CONTAINS
     PROCEDURE:: t_prc=>prc
 GENERIC:: ASSIGNMENT(=) => t_prc
  END TYPE t1
CONTAINS
  SUBROUTINE prc(x,y)
    CLASS(t1),INTENT(OUT)::x
    CLASS(t1),INTENT(IN)::y
 x%x11 = y%x11+100
  END SUBROUTINE prc
END MODULE m1

PROGRAM MAIN
  USE m1
  TYPE t2
     TYPE(t1):: x22
  END TYPE t2
  CALL s1
CONTAINS
 SUBROUTINE s1
    TYPE(t2):: v21(1),v22(1)
 ALLOCATE(v21(1)%x22%x11(2))
    v21(1)%x22%x11=1
    write(6,*) "v21(1)%x22%x11 = ", v21(1)%x22%x11
    v22=v21
  END SUBROUTINE s1
END PROGRAM MAIN

```

```
$ flang Typebound_op_FT_005_2332.f90; ./a.out
 v21(1)%x22%x11 =  1 1

fatal Fortran runtime error(/work/home/ohno/CT/test/fort/tp/reproducerJ/CL_NEXT_PT3_14/Typebound_op_FT_005_2332.f90:12): Assign: mismatching element counts in array assignment (to 187651055140848, from 2)
Aborted (core dumped)
$
```

```
$ gfortran Typebound_op_FT_005_2332.f90; ./a.out
 v21(1)%x22%x11 =            1 1
$
```

```
$ ifx Typebound_op_FT_005_2332.f90; ./a.out
 v21(1)%x22%x11 =            1           1
$
```


</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vltv6jgQ_jXmZVTkTC6EBx7ckFSsKFRA9_KEnMSBnA0xcpwW_v3KTtpS6Dndh92qErYzM_5mvrmYN025q4WYEP-e-NMBb_Veqonc1_Ku-DFIZX6ekID2_5T9LlRTyhpkAUXF6x0QlwE6QzqkBMPQQ-GPHX80CnmINAvcrHDDdOSnIhu7yAPBw8wJU4JjggljKtsHHqHs8gZC2b3IeNsIIAF9iBfxahZBo7kWB1FrElDIpWiglhpepfqbYAS8hs4RIwGp0K9C1EY9F6p8ETno81E0QDB8QQd4ncMLogERUFCiaSvdQFkDB9XWd7o8CBBKSTUEIJSxq1OQWdaqBmQNVVkLwJC47MoJALBXuNMXdG4d_GMvatB7AYWsKvla1rsPB6FsgOe5yCEVhVTi_RKMrEqH10iRgK7FzuhwbTgpuPlAMMyMWt4ejiInODZytwjZfL6M2Ca2MUGCoWNJ8U9m458ch2BoQ4TjW_yEss0n9FwJC06LRsNRyZ3iBwM4MTliFg-FVFoZnuocyuIEmTwcy8oCJ5iIk8ha60Tn3rC_5HwUqWzrfCuP22SzpdTfouvisBhfu9TbJ5Q9LqfP8xgOjuVh89dTDNquZ4tN_BCvCEZPS7NeGRMug85Zs7G-AkC0XGzYbLHumYSn1TKKp8-ruNfQ26PKiDslbmwWlEGfp_13tl7PHhaP8WJjDU8tC1a8VzV248X0At2nK9fP96vl82a2iMFIY3giGJ3f4UE0Z-s1wVB3pEXGG3vX8nljTiyK03fCs8W77NnInjriDVI4vyXBvUPpO9wrXJSZw8t4E8qeVsuHFXuERzZbWMXn9RUZ-BZWs30H1nOBeBWcbh-x-Rya60Bd4Gmc3uqbUfwwamrwLcGji2ynDD6VgfNdGXRl_aWYO30D8KpKLQiGAcGIILPcI36tZmNNzC76meHbZnLDhfXdnF3F_ovCvdyi1_fwX5fZPQwJJnwoW20u_4Uj4ECfBAXXvIKkr3nV1h_t01QEJl3nTvbyIAgmZtwQTKINwcS0EIKJqWezOxJMlDgqmbeZUL8Zqfl2Ef-52T5t3K3jEUy-6RJOnwnA7Igwq0PZHLjO9qZ1iapru5ls634MKMXPlwPFpJMEJxwFvkN93_Fo6Nl-XCh5AOxyg6VSaZHf9t8u1N9zsXtrkf8ZHR9_PTH_BoZpzv8Lgov1z7AM8ombj90xH4iJM_KCgNLAo4P9JBh5QTjCQjj5OA-5H4SBQz3ujUSRjWgaDMoJUvSpT0c08KlHh4hFEeYiDzI3w3GaEo-KAy-rYVW9HIZS7QZl07Ri4rhhSMeDiqeiauwrCLHophaaB5GaGIW7tN01xKNV2ejmw4QudWWfTt2c86cQvw-y7q1Qfvky-fwsyVsBWkJZZ1IpkWm4efQMWlVN9lofGzulEoLJrtT7Nh1m8kAwMYD6n7ujkj9EZmrHOtgQTHofXyb4TwAAAP__iaS9zg">