diff options
| author | Peter Klausler <pklausler@nvidia.com> | 2026-01-12 15:40:22 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-12 15:40:22 -0800 |
| commit | 3874c4541a2e7fe044f02cda962657be35314deb (patch) | |
| tree | f9764b2abd496ef1142f2aa93ed33768a8c99559 | |
| parent | 3fe94ab4d6aa936c4f8a4bbdd25d1da47d112265 (diff) | |
| download | llvm-3874c4541a2e7fe044f02cda962657be35314deb.tar.gz llvm-3874c4541a2e7fe044f02cda962657be35314deb.tar.bz2 llvm-3874c4541a2e7fe044f02cda962657be35314deb.zip | |
[flang] Handle useless NAMELIST in interface block (#175214)
NAMELIST has no useful purpose in an interface block, but it's allowed.
Fix a crash due to our deferred handling of NAMELIST groups in the
execution part (which doesn't exist in an interface block).
Fixes https://github.com/llvm/llvm-project/issues/175207.
| -rw-r--r-- | flang/lib/Semantics/resolve-names.cpp | 3 | ||||
| -rw-r--r-- | flang/test/Semantics/bug175207.f90 | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp index 527be8645ff8..47ca433e0f7a 100644 --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -9876,6 +9876,9 @@ void ResolveNamesVisitor::FinishSpecificationPart( misparsedStmtFuncFound_ = false; funcResultStack().CompleteFunctionResultType(); CheckImports(); + if (inInterfaceBlock()) { + FinishNamelists(); // NAMELIST is useless in an interface, but allowed + } for (auto &pair : currScope()) { auto &symbol{*pair.second}; if (inInterfaceBlock()) { diff --git a/flang/test/Semantics/bug175207.f90 b/flang/test/Semantics/bug175207.f90 new file mode 100644 index 000000000000..63696dfac0b6 --- /dev/null +++ b/flang/test/Semantics/bug175207.f90 @@ -0,0 +1,10 @@ +!RUN: %python %S/test_errors.py %s %flang_fc1 +interface + subroutine sub(x) + real x + namelist /useless/x ! ok, but don't crash + !ERROR: 'sub' is not a variable + namelist /bad/sub + end +end interface +end |
