<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/153032>153032</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Incorrect intrinsic assignment of derived type parent component
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following reducer.
```
type t
integer :: a
end type
type, extends(t) :: t2
integer :: b
end type
type(t), allocatable :: a(:)
class(t), allocatable :: b(:)
allocate(b(5), source=(/t2(1,1),t2(2,2),t2(3,3),t2(4,4),t2(5,5)/))
a = b !! a should get b%a
print*, a%a
if (any(a%a /= (/1,2,3,4,5/))) stop 2
end
```
Flang failed to assign `b%a` to `a%a` in intrinsic assignment `a = b`.
gfortran and XLF works fine.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8U8GOnDAM_RpzsXYEDjBw4DBlhFSpH9BrIIZJm0lGSdjt_n0VmN2drlaVUIgdv-fnxJYh6MUyd1B9g-qcyTVenO_O0mo2fX9hm41OvXa9s0Er9hgvjLMzxr1ou6BntU7sD5CfoM7vX35CjK83xrhtEbWNvLBHECcQJ5Sbm63aot7DgXrkP5GtCkBNBGrfAJG-Jho_Ez1wbQSJUhrjJhnlaPhDADVpS-0GmIwM4f-I8V_EPSKlSSfVHRjc6icGcU7RNEQCagqgvtjPN5uAenqwBVAvHuwSqC8f7Aqo3_mHbb0LQBBnHBGoACpQYri41ShcOCat1X7FN69tBDptRb179YxAjbSvaU1eTNzijLvqYheYRCUhKflbZmoxRHfD9Bxs1adHh_w0GGkXnKU2rDA63LsLoc53UXWevFDn8s3UNj2q1zbo6R5-ZRu3mL1GqPMD7vTL7Hz00qK0Cn_-GPDF-d8BZ235kKlOqFa0MuOuOFZlS1V1LLJL19btXB-5qI_lXB-bUrWTqNXcFnnZCElNpjvKqcqboiiqoqX2UPEkpGx4lmOrqC6gzPkqtTkY83w9OL9kOoSVu6ISuaDMyJFN2AaIaE43AOI0e2dTKwNRGivfJezTuC4BytzoEMMHW9TRbAO4g6szfreT856n-PXluBkVe_3Me-PjTfrkntz15izbmK3edJcYb2Hr2QFoWHS8rONhclegIWW-_55u3v3iKQINW1EhdcBe13NHfwMAAP__-HQuuw">