[flang] Catch impure specifics called in DO CONCURRENT
authorPeter Klausler <pklausler@nvidia.com>
Wed, 5 Jul 2023 18:19:47 +0000 (11:19 -0700)
committerPeter Klausler <pklausler@nvidia.com>
Mon, 17 Jul 2023 18:41:10 +0000 (11:41 -0700)
commit486be17ddaf639dc13b8df4ba078f2677f0c5829
tree1cad16647264411684969f87b1269cf86cc1e64d
parent0d21b7cbdeb2f2eb5ef123a15099da0b651b24c0
[flang] Catch impure specifics called in DO CONCURRENT

Rework the code used to check for calls to impure procedures in DO CONCURRENT
constructs.  The current code wasn't checking the representation of the
procedure references in the strongly typed expressions, so it was missing
calls to impure subprograms made via generic interfaces.  While here,
improve error messages, and fix some minor issues exposed by testing the
improved checks.

Differential Revision: https://reviews.llvm.org/D155489
flang/lib/Evaluate/intrinsics.cpp
flang/lib/Semantics/check-do-forall.cpp
flang/module/__fortran_ieee_exceptions.f90
flang/test/Semantics/call11.f90
flang/test/Semantics/doconcurrent01.f90
flang/test/Semantics/doconcurrent09.f90