[flang] Use derivedType from toAddedum to get updated components
authorValentin Clement <clementval@gmail.com>
Thu, 16 Feb 2023 13:53:47 +0000 (14:53 +0100)
committerValentin Clement <clementval@gmail.com>
Thu, 16 Feb 2023 13:54:14 +0000 (14:54 +0100)
commit5c988cba4a669051c819730ad0e8fa925056708b
tree86feb93ca91a256eb90bfb1573ecd8e66dbaefc4
parent96179dff46a9a3981708b06bc9e0f981be4cc1a8
[flang] Use derivedType from toAddedum to get updated components

When the rhs is polymorphic and allocated during assignment, the
derivedType might have change from the one set in `toDerived`.
Use the one set in the addendum so it is always up to date.

This can happen in cases like the one shown below:

```
type :: t1
end type t1

type, extends(t1) :: t2
  integer, allocatable :: i(:)
end type

subroutine assign(t)
  class(t2), intent(in) :: t
  class(t1), allocatable :: cp

  cp = t
end subroutine
```

Reviewed By: jeanPerier

Differential Revision: https://reviews.llvm.org/D144171
flang/runtime/assign.cpp