[flang] Use definability tests for better PURE constraint checking
authorPeter Klausler <pklausler@nvidia.com>
Thu, 30 Mar 2023 17:26:16 +0000 (10:26 -0700)
committerPeter Klausler <pklausler@nvidia.com>
Mon, 3 Apr 2023 14:00:07 +0000 (07:00 -0700)
commite9a8ab004cc9aae3c45f8b3708176e584b5c23a2
treee008565def296ea4797c7a4f2d1a8b97d1735fc8
parent056042d21b72a86653f88719c0b54b07e35d2144
[flang] Use definability tests for better PURE constraint checking

Many semantic checks for constraints related to PURE subprograms
can be implemented in terms of Semantics' "definable.h" utilities,
slightly expanded.  Replace some particular PURE constraint
checks with calls to WhyNotDefinable(), except for cases that
had better specific error messages, and start checking some
missing constraints with DEALLOCATE statements and local
variable declarations.

Differential Revision: https://reviews.llvm.org/D147389
13 files changed:
flang/include/flang/Semantics/tools.h
flang/lib/Evaluate/tools.cpp
flang/lib/Semantics/check-deallocate.cpp
flang/lib/Semantics/check-deallocate.h
flang/lib/Semantics/check-declarations.cpp
flang/lib/Semantics/check-do-forall.cpp
flang/lib/Semantics/definable.cpp
flang/lib/Semantics/tools.cpp
flang/module/__fortran_type_info.f90
flang/test/Semantics/call10.f90
flang/test/Semantics/deallocate07.f90
flang/test/Semantics/declarations05.f90 [new file with mode: 0644]
flang/test/Semantics/doconcurrent08.f90