<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">