[flang] Semantic analysis for FINAL subroutines
authorpeter klausler <pklausler@nvidia.com>
Wed, 30 Sep 2020 20:34:23 +0000 (13:34 -0700)
committerpeter klausler <pklausler@nvidia.com>
Wed, 30 Sep 2020 22:46:15 +0000 (15:46 -0700)
commit37b2e2b04cf434b368b1edf29609be21952316f9
treeb4b74f4e325d2945679981a0aac2fa5bba07a32b
parent5519e4da83d1abc66620334692394749eceb0e50
[flang] Semantic analysis for FINAL subroutines

Represent FINAL subroutines in the symbol table entries of
derived types.  Enforce constraints.  Update tests that have
inadvertent violations or modified messages.  Added a test.

The specific procedure distinguishability checking code for generics
was used to enforce distinguishability of FINAL procedures.
(Also cleaned up some confusion and redundancy noticed in the
type compatibility infrastructure while digging into that area.)

Differential revision: https://reviews.llvm.org/D88613
21 files changed:
flang/include/flang/Evaluate/characteristics.h
flang/include/flang/Evaluate/type.h
flang/include/flang/Semantics/symbol.h
flang/include/flang/Semantics/tools.h
flang/lib/Evaluate/characteristics.cpp
flang/lib/Evaluate/tools.cpp
flang/lib/Evaluate/type.cpp
flang/lib/Semantics/check-call.cpp
flang/lib/Semantics/check-declarations.cpp
flang/lib/Semantics/mod-file.cpp
flang/lib/Semantics/mod-file.h
flang/lib/Semantics/pointer-assignment.cpp
flang/lib/Semantics/resolve-names.cpp
flang/lib/Semantics/symbol.cpp
flang/lib/Semantics/tools.cpp
flang/test/Semantics/call03.f90
flang/test/Semantics/call05.f90
flang/test/Semantics/final01.f90 [new file with mode: 0644]
flang/test/Semantics/modfile10.f90
flang/test/Semantics/resolve32.f90
flang/test/Semantics/resolve55.f90