llvm-project
ed5e6b87 - [flang] Catch calls to impure intrinsics from PURE subprograms (#160947)

Commit
4 days ago
[flang] Catch calls to impure intrinsics from PURE subprograms (#160947) The code in expression semantics that catches a call to an impure procedure in a PURE context misses calls to impure intrinsics, since their designators have a SpecificIntrinsic rather than a Symbol. Replace the current check with a new one that uses the characteristics of the called procedure, which works for both intrinsic and non-intrinsic cases. Testing this change revealed that an explicit INTRINSIC statement wasn't doing the right thing for extension "dual" intrinsics that can be called as either a function or as a subroutine; the use of an INTRINSIC statement would disallow its use as a subroutine. I've fixed that here as well. Fixes https://github.com/llvm/llvm-project/issues/157124.
Author
Parents
Loading