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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Compilation error for the same type of two data elements declared with reference to the same derived type definition
        </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 : 21.0.0(f75126eeabba13ce2aab53c2e4296fca12b9da0d)/AArch64
```

The attached program has the same `derived type (ty)` definitions in the `specification-part` and `module-subprogram-part` in `module`, and data elements declared with reference to these `derived types`.  
The data elements are of the same type, as described in `Fortran standard 2023: 7.5.2.4 Determination of derived types`.  
So this program seems to be correct, but it results in a compilation error.  

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

sngg430l_32.f90:
```fortran
module m
  type ty
 integer::x
  end type ty
  interface assignment(=)
     procedure operator_overload
  end interface assignment(=)
contains
  subroutine operator_overload(t1,p1)
    type ty
       integer::x
    end type ty
 type(ty),intent(inout)::t1
    integer,intent(in)::p1
    t1%x=p1
 write(6,*) "t1%x = ", t1%x, " p1 = ", p1
  end subroutine operator_overload
end module m

program main
  use m
  integer::x
 type(ty)::obj
  x=10
  obj= x
  write(6,*) "obj%x = ", obj%x
  if(obj%x .ne. 10)print*,"100"
  print*,"pass"
end program main
```

```
$ flang sngg430l_32.f90
error: Semantic errors in sngg430l_32.f90
./sngg430l_32.f90:25:3: error: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(ty) and INTEGER(4)
    obj= x
 ^^^^^^

```

```
$ gfortran sngg430l_32.f90
sngg430l_32.f90:25:7:

 25 |   obj= x
      |       1
Error: Cannot convert INTEGER(4) to TYPE(ty) at (1)

```

```
$ ifx sngg430l.f90_32; ./a.out
 t1%x = 10  p1 =           10
 obj%x =           10
 pass

```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVklv47gS_jX0hYhAlRbbBx_UdtzowwseXoIHzKlBUSWbDYkUSCrLvx8UJa_JTM8IBiyRtXxfbaT0Xh8M4oYV31ixW8gxHK3b2KOxD-2vRW2bjw0rxfwT1f_ReW0Nty1vO2kOnGUVhzQRiWCwapdFCiWirGuZZgpByrrIFGAO67JVMoV63UjRMFgz2FeVU8cyZ6K69sBE9XJELkOQ6ogNH5w9ONnzo_Q8HJF72SNnpWjQ6VdsePgYkDNYhQ-yWgreYKuNDtoaz7WJOqwUfkClW60kbTwM0gWSlaahzd42Y4cPfqxnb2cBbS77hA-2UaeRQXLssEcTPG9QddJhw990OHKHLTo0Cnmw5N1_gutZKRLOZ6a3tqRDCu6ZKclHr-TGK6drbGZUe-uCk4b7IE0jXcNBQEb5WCZFAknOdxjQ9dpEzmT1axDPBFP7c6Q9Yu8JfI1cWedQBUJQj4HrwB36sQsxtJIr2w-6m-yjc9ZNFmdmre06-6bNIbIiSgF9OPkhm3uqIXr53s5kKLq6fb-2zGCP76jG6GVyn0xOvDkc8kx0PzNI2rVgWXVdTLNJJqopf7xnouJTwYQPetcm4AEd6WXVe9xF01xLRBHXSoV8ahXKEoMVy3ZUbiTBOTFS2IyUugGdDNb9tK_oOiubs9HfGVLWBKmNjwp-rJ0dgzZfWYRVSBlsh_SC4BpxfL5g9onbVFpz48CWVCIkbewYaC0qh3TWPpm8kTyLDScxwla8s2w3rbw5HchLyWDLoGKw5gxgEuIs29EXFcCsBlta4EN6vTfbJvh_GxhRkchVspmoTkXdS22ildGfCuFzjG4iEpdt_SvKEqFUxFdaynZ8CurX9Ejkjt-8NDluGaxOMonBhKeCwXpwmqJaRVOQCkGqJH-7MUjvpx1ie8fvbpLefEI-z-z7thFV7F0aHc_YSxO0mro5dvln6YTB_nPrQcGyKs6fs7UnS0F22nituHUUe_cQ5zM2vHp-_vH96T-PTy_nNuC9DOqIfsrtXK2ev_zx38dTWuKA-PH08vj98X8MVvmlB67zworH-98UgN-H6HCaRJ95_wXn5Tx3RMWh4Gy5vQMTn2mZHirmx1OEttIYG7iy5hVduCNGM_iWe6CTbu77f0aHZukJN4H-mQHLvnFKoUyoz6nsL92YCn5qvsszFf51Ud_vxZr8EtKi2WTNOlvLBW7SZS7yPC9htThu0gKzfF2mmKu0LopSyaKUrazX2CzrIhULvQEBhQAohCgErJIiX2cgVN0WhWzWLbBcYC91l3Tda59Yd1ho70fcpLAqxXLRyRo7Hy82ALHwWVa1ztLwaqiBit3CbUj3oR4PnuWi0z74i7WgQxcvRtMpVez49v644611t2d1PLzf7L-6IUzaNxeayyVmMbpucwxh8FRmsGewP-hwHOtE2Z7BnuDOfw-Ds7_iab2PkfAM9nMwXjfwZwAAAP__gfr1pA">