<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/135580>135580</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Incorrect execution result when the arguments described in SAME_TYPE_AS intrinsic function are defined in derived types with the same name but different definitions in different modules of different subroutines
</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(9fe6f6a0d430b872750354c20f3e4a651bd1f135)/AArch64
```
`The arguments (dmyptr and baseobj)` described in `SAME_TYPE_AS intrinsic function` are defined in `derived types` with `the same name (deriv)` but different definitions in different `modules (module3 and module4)` of different `subroutines (sub1 and sub2)`.
Thus, the result of the `SAME_TYPE_AS intrinsic function` should be `F` because they are different types, even if they are defined by a `derived type` of the same name.
The following are the test program, Flang, Gfortran and ifx compilation/execution result.
Polymorphism_FT_sametypeas_046_22.f90:
```fortran
MODULE MODULE3
IMPLICIT NONE
LOGICAL::x
TYPE base
integer ::int1
END TYPE base
TYPE ,EXTENDS(base)::deriv
INTEGER :: int2
END TYPE deriv
END MODULE MODULE3
MODULE MODULE4
IMPLICIT NONE
TYPE base
INTEGER ::ii
END TYPE base
TYPE ,EXTENDS(base):: deriv
INTEGER :: kk
END TYPE deriv
END MODULE MODULE4
PROGRAM MAIN
IMPLICIT NONE
INTERFACE
SUBROUTINE sub2
END SUBROUTINE sub2
END INTERFACE
call sub2()
END PROGRAM MAIN
SUBROUTINE sub1(dmyptr)
use MODULE3
CLASS(*)::dmyptr
TYPE(deriv)::baseobj
LOGICAL::res
res=SAME_TYPE_AS(dmyptr,baseobj)
write(6,*) "res = ", res
END SUBROUTINE sub1
SUBROUTINE sub2()
use MODULE4
INTERFACE
SUBROUTINE sub1(dmy1)
CLASS(*)::dmy1
END SUBROUTINE sub1
end interface
CLASS(base),POINTER::ptr_base
TYPE(deriv),TARGET::tar_ty1
ptr_base=>tar_ty1
call sub1(ptr_base)
END SUBROUTINE sub2
```
```
$ flang Polymorphism_FT_sametypeas_046_22.f90; ./a.out
res = T
$
```
```
$ gfortran Polymorphism_FT_sametypeas_046_22.f90; ./a.out
res = F
$
```
```
$ ifx Polymorphism_FT_sametypeas_046_22.f90; ./a.out
res = F
$
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vl1v6jgT_jXmxjrIcZwAF1zkQFIhtVAB59W7V8hJHOKeECPbacu_X9kOkEC7B2m1VUX8MfPMzOPxeKhSfF8zNgXBTxDMB7TRpZBTUdbiR_E2SEV-moIQtf8o-h-TiosaigIWFa33EPgRxN4QDRHA40nBwiKkKCc-SscjPAqQH5AMo8JnhIaBl-Ze4fkBwBOAkyiSWRkSgKKuBTfdlgxSuW8OrNYKAjzOD6ejlpDWOUypYiJ9MyAhgjlTmeQpyyGvIQjRJnqJd9u_XuNdtIG81pLXimewaOpMc1EbFSoZzFnB64tSziR_ZznUpyNTRuSD69Js6JJBRQ8M1ubH-GEkW9Npo2HOi4JJVmuHyI0NZVCvGyBEB5E3FbOBuKFvI3Fj0sKJoq-kmlSKRvPaKaom9ayWalLsVIYQAhRty0YBPIPGV8lUU2kDZWaP0aFK0VQ5TK18YgNjGW0UMxgnx9bFL8cQnkH2zmrIi45My2h6gvSW0za8HptDd9jmpAtRVeKD13sLZKQ0UxoepdhLejDWEpNsZvBUCKklrS0TvPiEmTgceUVtMDhhnyxrzLhlojXyKqrTQchjydVhl2x3xgnjF1U7RMIdxsNigoAfdXOxNQRQ9LKa_3qOofv4AEUQLl5enxezxRYuV8vYrjyvnhaz6NmA-NGnXTK022y1MwgN_2zPJHRCvNae2YmX8xtROwN4Fv9_Gy_nG4DHdgtPnKLLwRZzsdzGT_G6xTQmsN26oJ6lzcJdJLfRkW-i6_nXN8l5396jUcB_CuP37weDIO0Br1dP6-gFvkSL5TchGAvrJJrFZ5ObXz_Xq1_bxTJ2V6pdNia-2jLrfYyMVlV7G8cmLOfejSsARX0071LNnA6E5qp1k2v2HG02FjO6nrnTOPParUR2_1wU71JRMmUWzcefd6tBx41Zp6QagA_JNQN4HAI8c05AgLE0dcifm6G5iQ74ni3vq6CvFHXDJfcH8yVX3lnV_n1Dj_f9AbotZipGrZksaMZ6RJ_zEs9eV9YbB3rUctfL5i7reLaN1k_x1olqKnfauXDR8ufAjzsbl3wxUV2kLnlzn3P3z-J1ikn7AD9Y2n7CIcAJHYpGt-lgz3LrsP5sbH-uu__OHkweNWhq-39ia5BP_XziT-iATb0RIcGEeBMyKKfeKM1JgUKCSEppGOARm-DcQyz3JmMvTAd8ihEOEPEI8vAkIEOP-JR6OR2HLKfhCAGC2IHyalhV74ehkPsBV6phU88PgjEaVDRllbKtFsaFe9Gw6brk1Cj8SJu9AgRVXGl1hdBcV7Y_c29gMIeLOhNSskzD2-cOfpSstg_otXnqNUh_aAduW6NeX-Saon5H9GALdO5_ei1Op78ZNLKalloflblOOAE42XNdNukwEweAE0NG-_lxlOKNZRrgxJKrAE5aft-n-O8AAAD__zUaNb0">