[flang] Catch attempts to copy pointers in allocatables in PURE
authorPeter Klausler <pklausler@nvidia.com>
Fri, 18 Nov 2022 00:30:49 +0000 (16:30 -0800)
committerPeter Klausler <pklausler@nvidia.com>
Mon, 5 Dec 2022 18:18:06 +0000 (10:18 -0800)
commit962863d988195917b7d2ccfb83a3a166e01ffc77
tree9dd315d54175915d9d567067ef423cb9bca1b007
parente31160155e484414db9177806ae9f0840c985b49
[flang] Catch attempts to copy pointers in allocatables in PURE

In a pure context, a pointer acquired from an INTENT(IN) dummy argument
may not be copied.  Catch the case in which the pointer is a component
of an allocatable component at some depth of nesting.

(This patch adds a new component iterator kind that is a variant of
a potential subobject component iterator; it visits all potential
subobject components, plus pointers, into which it does not descend.)

Differential Revision: https://reviews.llvm.org/D139161
flang/include/flang/Semantics/tools.h
flang/lib/Semantics/assignment.cpp
flang/lib/Semantics/tools.cpp
flang/test/Semantics/call12.f90