[flang] Semantic checks for deallocating entities with IMPURE FINAL procedures
You cannot call an IMPURE procedure in a DO CONCURRENT construct. One way that can happen is if an entity with an IMPURE FINAL procedure gets deallocated. Similar to the checks for deallocating coarrays, there are three ways that an entity can get deallocated that are applicable to DO CONCURRENT constructs -- an actual DEALLOCATE statement, block exit, and assignment. This change depends on the utility function `HasImpureFinal()` in tools.h to determine if an entity has a derived type with an IMPURE FINAL procedure. In the course of testing this change, I realized that this check is incorrect, but the code specific to DO CONCURRENT is independent of the check, so I might as well implement it. Original-commit: flang-compiler/f18@d2294ff511aebd64889df57d02325bd6fcdf914a Reviewed-on: https://github.com/flang-compiler/f18/pull/954
Loading
Please sign in to comment