[flang] Carry over the derived type from MOLD
authorValentin Clement <clementval@gmail.com>
Wed, 8 Feb 2023 08:26:12 +0000 (09:26 +0100)
committerValentin Clement <clementval@gmail.com>
Wed, 8 Feb 2023 08:27:27 +0000 (09:27 +0100)
commitb37e35979ad569c052b31c7b9e543cca49346cdc
treea097e740d309ac75046157a681ac4e8c197e3b72
parentcf2d374e990e4784c7f2bf3bd66c76bb00843a11
[flang] Carry over the derived type from MOLD

Derived type from the MOLD was not carried over
to the newly allocated pointer or allocatable.
This may lead to wrong dynamic type when the pointer or allocatable
is polymorphic as shown in the example below:

```
type :: p1
  integer :: a
end type

type, extends(p1) :: p2
  integer :: b
end type

class(p1), pointer :: p(:)

allocate(p(5), MOLD=p2(1,2))
```

Reviewed By: klausler

Differential Revision: https://reviews.llvm.org/D143525
flang/runtime/allocatable.cpp
flang/runtime/pointer.cpp