[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