[PATCH] D89829: [flang] Fix call to CHECK() on erroneous subroutine declaration
Pete Steinfeld via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 20 15:09:38 PDT 2020
PeteSteinfeld created this revision.
PeteSteinfeld added reviewers: klausler, tskeith.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
PeteSteinfeld requested review of this revision.
When processing declarations in resolve-names.cpp, we were returning a
symbol that had SubprogramName details to PushSubprogramScope(), which
expects a symbol with Subprogram details.
I adjusted the code and added a test.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D89829
Files:
flang/lib/Semantics/resolve-names.cpp
flang/test/Semantics/resolve19.f90
Index: flang/test/Semantics/resolve19.f90
===================================================================
--- flang/test/Semantics/resolve19.f90
+++ flang/test/Semantics/resolve19.f90
@@ -22,3 +22,14 @@
end subroutine
end interface
end module
+
+module m3
+ interface s
+ subroutine s
+ end
+ end interface
+contains
+ !ERROR: 's' is already declared in this scoping unit
+ subroutine s
+ end subroutine
+end
Index: flang/lib/Semantics/resolve-names.cpp
===================================================================
--- flang/lib/Semantics/resolve-names.cpp
+++ flang/lib/Semantics/resolve-names.cpp
@@ -3048,7 +3048,8 @@
details->set_specific(Resolve(name, *specific));
} else if (isGeneric()) {
SayAlreadyDeclared(name, *specific);
- } else if (!specific->has<SubprogramDetails>()) {
+ }
+ if (!specific->has<SubprogramDetails>()) {
specific->set_details(SubprogramDetails{});
}
return specific;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89829.299488.patch
Type: text/x-patch
Size: 991 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201020/c8349e77/attachment.bin>
More information about the llvm-commits
mailing list