[flang-commits] [flang] 06fb26c - [flang] Silence bogus error (#160173)
via flang-commits
flang-commits at lists.llvm.org
Tue Sep 23 15:46:00 PDT 2025
Author: Peter Klausler
Date: 2025-09-23T15:45:56-07:00
New Revision: 06fb26c3a4ede667552f2dacefc8f9d8d1778271
URL: https://github.com/llvm/llvm-project/commit/06fb26c3a4ede667552f2dacefc8f9d8d1778271
DIFF: https://github.com/llvm/llvm-project/commit/06fb26c3a4ede667552f2dacefc8f9d8d1778271.diff
LOG: [flang] Silence bogus error (#160173)
One of the checks for implicitly-typed names under IMPLICIT NONE has a
false positive case for USE-associated items in COMMON blocks.
Fixes https://github.com/llvm/llvm-project/issues/159977.
Added:
flang/test/Semantics/bug159977.f90
Modified:
flang/lib/Semantics/resolve-names.cpp
Removed:
################################################################################
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index 843f67a6f6091..d4e3b9cd4e00f 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -3359,7 +3359,8 @@ bool ScopeHandler::CheckPossibleBadForwardRef(const Symbol &symbol) {
context().SetError(symbol);
return true;
}
- if ((IsDummy(symbol) || FindCommonBlockContaining(symbol)) &&
+ if ((IsDummy(symbol) ||
+ (!symbol.has<UseDetails>() && FindCommonBlockContaining(symbol))) &&
isImplicitNoneType() && symbol.test(Symbol::Flag::Implicit) &&
!context().HasError(symbol)) {
// Dummy or COMMON was implicitly typed despite IMPLICIT NONE(TYPE) in
diff --git a/flang/test/Semantics/bug159977.f90 b/flang/test/Semantics/bug159977.f90
new file mode 100644
index 0000000000000..ee731c9fb170e
--- /dev/null
+++ b/flang/test/Semantics/bug159977.f90
@@ -0,0 +1,11 @@
+! RUN: %flang_fc1 -fsyntax-only -pedantic %s 2>&1 | FileCheck %s --allow-empty
+! Ensure no bogus "no explicit type for ..." error on USE-associated
+! implicitly-typed COMMON block object in scope with IMPLICIT NONE.
+! CHECK-NOT: error:
+module m
+ common /block/ var
+end
+subroutine test
+ use m
+ implicit none
+end
More information about the flang-commits
mailing list