[flang-commits] [flang] [flang] Fix crash with legacy DATA initializer for an invalid declaration (PR #221170)
via flang-commits
flang-commits at lists.llvm.org
Fri Sep 4 01:49:17 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Mattéo Rizza Murgier (matteo-rm)
<details>
<summary>Changes</summary>
For legacy DATA /initialization/, declarations weren't checked for errors before construction, resulting in an assert crash. This PR fixes this by adding a check.
Fixes #<!-- -->220846
---
Full diff: https://github.com/llvm/llvm-project/pull/221170.diff
2 Files Affected:
- (modified) flang/lib/Semantics/check-data.cpp (+1-1)
- (added) flang/test/Semantics/data27.f90 (+7)
``````````diff
diff --git a/flang/lib/Semantics/check-data.cpp b/flang/lib/Semantics/check-data.cpp
index e8b7ea2eda63e..921128ced5d61 100644
--- a/flang/lib/Semantics/check-data.cpp
+++ b/flang/lib/Semantics/check-data.cpp
@@ -265,7 +265,7 @@ void DataChecker::Leave(const parser::EntityDecl &decl) {
const auto *list{
std::get_if<std::list<common::Indirection<parser::DataStmtValue>>>(
&init->u)};
- if (name && list) {
+ if (name && list && !exprAnalyzer_.context().HasError(*name)) {
AccumulateDataInitializations(inits_, exprAnalyzer_, *name, *list);
}
}
diff --git a/flang/test/Semantics/data27.f90 b/flang/test/Semantics/data27.f90
new file mode 100644
index 0000000000000..4dd6230c0b957
--- /dev/null
+++ b/flang/test/Semantics/data27.f90
@@ -0,0 +1,7 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+program main
+ type foo
+ end type foo
+ !ERROR: 'foo' is already declared in this scoping unit
+ integer foo(1) /2/
+end program main
``````````
</details>
https://github.com/llvm/llvm-project/pull/221170
More information about the flang-commits
mailing list