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

    <tr>
        <th>Summary</th>
        <td>
            [flang] Definitions of an array using subscript triplet of derived type is incorrect
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```
Version of flang-new : 17.0.0(633146093c4ea78dc8f56a27006fe4eed84be370)
```

Definitions of an array using subscript triplet of derived type are incorrect.

The following definitions are not correctly applied:
```
 v(1:2)%a(2,3)=2
```
There is no problem if you change the definition as follows:
```
  v(1)%a(2,3)=2
  v(2)%a(2,3)=2
```

The following are the test program, results of flang-new, gfortran and ifort compilation and execution.

snggp155_4.f90:
```fortran
subroutine sub
  type x
     integer, DIMENSION(2, 3) :: a
  end type x
 type(x),target::v(3)
  v(1)%a=3; v(2)%a=3; v(1:2)%a(2,3)=2

 write(6,*) "v(1)%a           = ", v(1)%a
  write(6,*) "v(2)%a = ", v(2)%a
  write(6,*) "v(1:2)%a(2, 3)   = ", v(1:2)%a(2, 3)
 write(6,*) "v(1)%a(2, 3)     = ", v(1)%a(2, 3)
  write(6,*) "v(2)%a(2, 3)     = ", v(2)%a(2, 3)

end subroutine sub

program main
 call sub
end program main
```

```
$ flang-new -flang-experimental-exec snggp155_4.f90; ./a.out
 v(1)%a           =  3 3 3 3 2 3
 v(2)%a           =  3 3 3 3 2 3
 v(1:2)%a(2, 3)   =  2 2
 v(1)%a(2, 3)     =  3
 v(2)%a(2, 3)     =  3
$
```

```
$ gfortran snggp155_4.f90; ./a.out
 v(1)%a           =            3 3           3           3           3           2
 v(2)%a           = 3           3           3           3           3           2
 v(1:2)%a(2, 3)   =            2           2
 v(1)%a(2, 3)     = 2
 v(2)%a(2, 3)     =            2
$
```

```
$ ifort snggp155_4.f90; ./a.out
 v(1)%a           =            3           3 3           3           3
           2
 v(2)%a           = 3           3           3           3           3
           2
 v(1:2)%a(2, 3)   =            2           2
 v(1)%a(2, 3)     = 2
 v(2)%a(2, 3)     =            2
$
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVk1zozgQ_TXi0mVKSEDwgUMmXlfNYWcPO7XXLQEN1pQsUZLIx7_fEpAJdnAc1-welqQwEt1Pr1-3GgnnZKcRS5J9IdkuEoM_GFuagzab9kdUmealJDmd_-mO0Pu_0DppNJgWWiV0t9H4BITfQ3IX05gSVuScJ2lOt7xOUdwVTV20WS7YHaV5iyliU6QV8jtK2HaCPFthuu-wlVp6abQLawkNwlrxAoOTugM3VK62svfgrewV-mDToJWP2IB_6RGERZC6NtZi7eMl8vcDQmuUMk8BqVmsE3y08TB7qRcQfa8kNoTfr1KFR8KKhPB7FoJhmSCsYIQ98DDkO7bq9P2AgZsDbaC3plJ4BNnCixmgPgjdIfgDLniBcDNfd5HHTOQDEpPJLTzX1AoKBXYenQ_kOyuOhD2ARTco706qIsx3rbHehuTpBmQYQG2OvVRiikw3gM9YD2F0kiSnu65PsuzvNG639H3cM-5sPFTWDF5qDIXxGu9YBs-vIwCQ2mOHNvDaff39t29_fv3j2ywEBCVCGYdKFq8-qJtTlDAgrHgeVXzwwnboJ6cgLv9Z0Wf54DtO-JfTBCzmrhfQBPpkpQ_L54Q9EHY_MmZsuRK8XYTvwtsQ2wmXmd9lrFcm5wjs0wgr8Uz6rrBat_x0wGfwl8N-D_4JCa6hX6Y-3UP9rNXmdJ-3DxyFnOsYaqHUm1lwf2-0ukvPJ1m66M6b6RGfe7TyiNoLtQm7Ds432ReICduL2Az-pL-tFhfw-Y8BX1izm6yvlAowYCtMVvOyyuJDS8LS2yT92c1-Tbi3KwiyHF1_ZtelvhXyEvy13Cy8LiJ8kIW1SNbT9Q785sRNX55_L2vL54uyLr48_13uPlzk_5fBqCl5s-VbEWGZ5EWSUJYVWXQoM06rtCqSImlZUW0F1mnT1jSpeda0aYORLBllnKYJpWmWsyyutmndVm3KapHlVZWRlOJRSBUr9XiMje0i6dyAZc4oLyIlKlRuPAczFprm-DL0-mwX2TL4bKqhcySlSjrv3lC89Go8QI9dlmQ7-NWjq3RvJ9dosKo8eN-PZz-2J2zfSX8Yqrg2R8L2gcb8s-mt-YG1J2w_kneE7cfg_gkAAP__FP_rhQ">