diff options
author | Peter Klausler <pklausler@nvidia.com> | 2021-11-02 16:41:15 -0700 |
---|---|---|
committer | Peter Klausler <pklausler@nvidia.com> | 2021-11-08 11:19:20 -0800 |
commit | f411c1dd95092139c8b992260705ac0b75c8583f (patch) | |
tree | f0cfcd1413c6948e89cd2e0a77fe65d934b0edf6 | |
parent | c0b298fc213c1b33e97ca72fba58597365375875 (diff) | |
download | llvm-f411c1dd95092139c8b992260705ac0b75c8583f.tar.gz |
[flang] Fix crash in semantic error recovery situation
A CHECK() in semantics is triggering when analyzing a program
with an undefined derived type pointer because the CHECK is
expecting a new error message to have been issued in a function
but not allowing for the case that a diagnostic could have been
produced earlier. Adjust the predicate.
Differential Revision: https://reviews.llvm.org/D113307
-rw-r--r-- | flang/lib/Semantics/expression.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp index 331b9b2cf5bc..8ee8c9a9c9ce 100644 --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -1916,7 +1916,7 @@ auto ExpressionAnalyzer::AnalyzeProcedureComponentRef( "Base of procedure component reference is not a derived-type object"_err_en_US); } } - CHECK(!GetContextualMessages().empty()); + CHECK(context_.AnyFatalError()); return std::nullopt; } |