[flang-commits] [flang] Fix #222168: reject DATA-style initializer on EXTERNAL/INTRINSIC (PR #222256)
via flang-commits
flang-commits at lists.llvm.org
Wed Sep 9 00:21:31 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Adarsh Mishra (Adarsh-Me)
<details>
<summary>Changes</summary>
Fixes #<!-- -->222168
---
Full diff: https://github.com/llvm/llvm-project/pull/222256.diff
2 Files Affected:
- (modified) flang/lib/Semantics/check-data.cpp (+7-1)
- (added) flang/test/Semantics/data28.f90 (+13)
``````````diff
diff --git a/flang/lib/Semantics/check-data.cpp b/flang/lib/Semantics/check-data.cpp
index 921128ced5d61..7fad6e9b40cf3 100644
--- a/flang/lib/Semantics/check-data.cpp
+++ b/flang/lib/Semantics/check-data.cpp
@@ -266,7 +266,13 @@ void DataChecker::Leave(const parser::EntityDecl &decl) {
std::get_if<std::list<common::Indirection<parser::DataStmtValue>>>(
&init->u)};
if (name && list && !exprAnalyzer_.context().HasError(*name)) {
- AccumulateDataInitializations(inits_, exprAnalyzer_, *name, *list);
+ if (IsProcedure(*name) && !IsProcedurePointer(*name)) {
+ exprAnalyzer_.context().Say(std::get<parser::Name>(decl.t).source,
+ "Procedure '%s' may not have a DATA-style initializer"_err_en_US,
+ name->name());
+ } else {
+ AccumulateDataInitializations(inits_, exprAnalyzer_, *name, *list);
+ }
}
}
}
diff --git a/flang/test/Semantics/data28.f90 b/flang/test/Semantics/data28.f90
new file mode 100644
index 0000000000000..9167da4ba9357
--- /dev/null
+++ b/flang/test/Semantics/data28.f90
@@ -0,0 +1,13 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! A procedure (EXTERNAL/INTRINSIC) may not have a DATA-style initializer.
+! The initializer used to be silently accepted and dropped (#222168).
+subroutine s1
+ external foo
+ !ERROR: Procedure 'foo' may not have a DATA-style initializer
+ integer foo /1/
+end subroutine
+subroutine s2
+ intrinsic sin
+ !ERROR: Procedure 'sin' may not have a DATA-style initializer
+ integer sin /1/
+end subroutine
``````````
</details>
https://github.com/llvm/llvm-project/pull/222256
More information about the flang-commits
mailing list