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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Compilation error when variables with different names are defined with the same derived types in two different modules and the variable is specified in an allocate statement
        </td>
    </tr>

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

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

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

<pre>
    ```
Version of flang-new : 19.0.0(41211919db5feb279d2954eb590a3cf2a1742152)/AArch64
```

When variables with different names are defined with the same `derived types` in two different `modules` and the variable is specified in an `allocate` statement, a compilation error occurs.

When the two modules are modified into one module, the compilation is successful.  
The fixed program is `sngtbind_17_13.f90`.

The following are the test program, Flang-new, Gfortran and ifort compilation/execution result.

sngtbind_17_1.f90:
```fortran
module mod1
  use, intrinsic :: ISO_C_BINDING
  type, bind(C) :: SwigClassWrapper
 type(C_PTR), public :: cptr = C_NULL_PTR
     integer(C_INT), public :: cmemflags = 0
  end type SwigClassWrapper
  type (SwigClassWrapper),allocatable ::mod1_str
end module mod1

module mod2
  use, intrinsic :: ISO_C_BINDING
  type, bind(C) :: SwigClassWrapper
     type(C_PTR), public :: cptr = C_NULL_PTR
 integer(C_INT), public :: cmemflags = 0
  end type SwigClassWrapper
 type (SwigClassWrapper),allocatable :: mod2_str

end module mod2

program main
  use mod1
  use mod2
 allocate(mod1_str)
  allocate(mod2_str,source=mod1_str)
 deallocate(mod1_str)
  allocate(mod1_str,source=mod2_str)
  print *,"pass"
end program main
```

```
$ flang-new sngtbind_17_1.f90
error: Semantic errors in sngtbind_17_1.f90
./sngtbind_17_1.f90:24:12: error: Allocatable object in ALLOCATE must be type compatible with source expression from MOLD or SOURCE
    allocate(mod2_str,source=mod1_str)
 ^^^^^^^^
./sngtbind_17_1.f90:26:12: error: Allocatable object in ALLOCATE must be type compatible with source expression from MOLD or SOURCE
 allocate(mod1_str,source=mod2_str)
 ^^^^^^^^
$
```

```
$ gfortran sngtbind_17_1.f90; ./a.out
 pass
$
```

```
$ ifort -diag-disable=10448 sngtbind_17_1.f90; ./a.out
 pass
$
```

sngtbind_17_13.f90:
```fortran
module mod1
 use, intrinsic :: ISO_C_BINDING
  type, bind(C) :: SwigClassWrapper
 type(C_PTR), public :: cptr = C_NULL_PTR
     integer(C_INT), public :: cmemflags = 0
  end type SwigClassWrapper
  type (SwigClassWrapper),allocatable :: mod1_str, mod2_str
end module mod1

program main
  use mod1
  allocate(mod1_str)
 allocate(mod2_str,source=mod1_str)
  deallocate(mod1_str)
 allocate(mod1_str,source=mod2_str)
  print *,"pass"
end program main
```

```
$ flang-new sngtbind_17_13.f90; ./a.out
 pass
$
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV91u2zgTfRr6hrBBjeQfXfjCleMiQL7kQ5NuLw1KGsksJFIgqTh9-wUpKXZsN1u3-4MFNjBiWJw5MzwcntFwY0QpEZdk-oFM1yPe2p3SS7WTalx8HaUq_7YkM9Z_2Jqw1W-ojVCSqoIWFZflWOKeknBFg3jCJozAIgogCOIgztNpgSnM4xziaYTpNGY8zArgwTyCYAoEYgKb1Upnu1nUgZ_E6v5_2aGkz1wLnlZo6F7YHc1FUaBGaankNRrKNdIcCyEx7wzsDqnhNVIyYzlq8Yw5td8aNGTGqJDU7tURCJmxWuVt1S1zmXv_ISYVhpoGM1EIzJ0zl86DV5XKuEXnYiy3WKO0BBLKaabqRlTcOqJQa6WpyrJWm8nZvlwcl0sf3m-kVvkQyiqqJParDtvZH6O71NosQ2OKtppQ2kE_7ZAW4gVz2mhVal47OzJjRpY2FTLfBvNtEE6K2HH9JinvqapK7YUsfTY-QzR2gHJZbIaTdz8-FkpbzaXnTbgfxxkS2OALZq3PVqNpK_sm4JuUfEbh6qQYevzuaUeFYyToHlDaGk-NkFYLaUTmytFV5O3jwzbZfri9X9_efxyMXRE4axeTwCIhEA_2j3tRJhU35ovmTYO6d-k8Fsn2_0-ffM0mtGnT6hAna6ymJFzTZHv_-e7O2_XRKHVpYYnaI9zeP11GqLEuKl4aD8MGb5Rd0X4vs26RwOJs3QfpC9SXcBfIsbY1tvd38Gd0nrIMfxPL7u8XmP4LWb6WZM_ageVLXMPx0nBFay7kEdmnJX58GK_SA4vXI4V4MH672qUCiVGtzpCE63OPHK8BDC4AwolHo4WTVVgRSAhAw40hAAcqzvd8UfpPH0J01HTOlaODd3rrCw1rLq3IOgU2Tri_4zIhsLmkQxCRcBWAA3tFXR2dt0q_YmYd8Oru7iFZPd3QujWWptgVjZNBboUz9U2pY4ziS6PR-C5aaFXT_z3cranS9PHh86fk5nAfrj5HMr25_Hl_l7N_bpdXV9b7WyTw3ovEhWoqh951gZgP1DHGJ6q1fXBfxj8XqOuL41zwcpwL44gl4TpgUbT4c2NfaPHXNtT_-uk1Uj8U7Ynsv9Ncf0Tw3xXkq4XhjxT-XyDw4c9fjFG-DPM4jPkIl8EcYBGELFyMdsso5RkrMpgVYTpPMYtjLKZpBgXM5zmGs5FYAoOILVgEYcDCxWSa8zRasCCfMcC0mJGIYc1FNamq53qidDkSxrS4DFgQs3hU8RQr46crAL8xEq4KraRFd1vAzVx66XzHaVsaErFKGGsOaFbYyk9n_o2bTNc0ORst9r80H70Zjs4no9e55AdmoqGKDtPQqNXVcmdtY9x9gQ2BTSnsrk0nmaoJbNw--69xo5XrMwQ2nkJDYNOz-LyE3wMAAP__yjxw0g">