aboutsummaryrefslogtreecommitdiff
path: root/flang/lib
diff options
context:
space:
mode:
authorPeter Klausler <pklausler@nvidia.com>2025-07-25 14:48:01 -0700
committerGitHub <noreply@github.com>2025-07-25 14:48:01 -0700
commit129db4dc3e53abd0021dc443d68fdadb1d8dd27d (patch)
tree0acc89e6090831f6172583bafd14ba5424c64dbf /flang/lib
parentf6a6cdd15c72fbf33f8cd7beac98910bef87e3dc (diff)
downloadllvm-129db4dc3e53abd0021dc443d68fdadb1d8dd27d.zip
llvm-129db4dc3e53abd0021dc443d68fdadb1d8dd27d.tar.gz
llvm-129db4dc3e53abd0021dc443d68fdadb1d8dd27d.tar.bz2
[flang] Catch both EXTERNAL and INTRINSIC on type declaration stmt (#150254)
The EXTERNAL and INTRINSIC attributes can't both appear on the same type declarations statement. Fixes https://github.com/llvm/llvm-project/issues/149771.
Diffstat (limited to 'flang/lib')
-rw-r--r--flang/lib/Semantics/resolve-names.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index b326860..d08c669 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -2351,7 +2351,8 @@ bool AttrsVisitor::IsConflictingAttr(Attr attrName) {
HaveAttrConflict(attrName, Attr::PASS, Attr::NOPASS) || // C781
HaveAttrConflict(attrName, Attr::PURE, Attr::IMPURE) ||
HaveAttrConflict(attrName, Attr::PUBLIC, Attr::PRIVATE) ||
- HaveAttrConflict(attrName, Attr::RECURSIVE, Attr::NON_RECURSIVE);
+ HaveAttrConflict(attrName, Attr::RECURSIVE, Attr::NON_RECURSIVE) ||
+ HaveAttrConflict(attrName, Attr::INTRINSIC, Attr::EXTERNAL);
}
bool AttrsVisitor::CheckAndSet(Attr attrName) {
if (IsConflictingAttr(attrName) || IsDuplicateAttr(attrName)) {