[PATCH] D79507: [flang] Change DIE("unreachable") cases to use llvm_unreachable

David Truby via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 6 10:46:54 PDT 2020


DavidTruby created this revision.
DavidTruby added a reviewer: sscalpone.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
DavidTruby added a comment.

I couldn't find any other non-controversial places to change this: this seems to be all the cases where something is marked as unreachable but using our current macros.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79507

Files:
  flang/lib/Semantics/check-declarations.cpp
  flang/lib/Semantics/resolve-names.cpp


Index: flang/lib/Semantics/resolve-names.cpp
===================================================================
--- flang/lib/Semantics/resolve-names.cpp
+++ flang/lib/Semantics/resolve-names.cpp
@@ -287,7 +287,7 @@
     case parser::AccessSpec::Kind::Private:
       return Attr::PRIVATE;
     }
-    common::die("unreachable"); // suppress g++ warning
+    llvm_unreachable("unreachable"); // suppress g++ warning
   }
   Attr IntentSpecToAttr(const parser::IntentSpec &x) {
     switch (x.v) {
@@ -298,7 +298,7 @@
     case parser::IntentSpec::Intent::InOut:
       return Attr::INTENT_INOUT;
     }
-    common::die("unreachable"); // suppress g++ warning
+    llvm_unreachable("unreachable"); // suppress g++ warning
   }
 
 private:
@@ -1391,13 +1391,19 @@
   void Post(const parser::AssignedGotoStmt &);
 
   // These nodes should never be reached: they are handled in ProgramUnit
-  bool Pre(const parser::MainProgram &) { DIE("unreachable"); }
-  bool Pre(const parser::FunctionSubprogram &) { DIE("unreachable"); }
-  bool Pre(const parser::SubroutineSubprogram &) { DIE("unreachable"); }
-  bool Pre(const parser::SeparateModuleSubprogram &) { DIE("unreachable"); }
-  bool Pre(const parser::Module &) { DIE("unreachable"); }
-  bool Pre(const parser::Submodule &) { DIE("unreachable"); }
-  bool Pre(const parser::BlockData &) { DIE("unreachable"); }
+  bool Pre(const parser::MainProgram &) { llvm_unreachable("unreachable"); }
+  bool Pre(const parser::FunctionSubprogram &) {
+    llvm_unreachable("unreachable");
+  }
+  bool Pre(const parser::SubroutineSubprogram &) {
+    llvm_unreachable("unreachable");
+  }
+  bool Pre(const parser::SeparateModuleSubprogram &) {
+    llvm_unreachable("unreachable");
+  }
+  bool Pre(const parser::Module &) { llvm_unreachable("unreachable"); }
+  bool Pre(const parser::Submodule &) { llvm_unreachable("unreachable"); }
+  bool Pre(const parser::BlockData &) { llvm_unreachable("unreachable"); }
 
   void NoteExecutablePartCall(Symbol::Flag, const parser::Call &);
 
Index: flang/lib/Semantics/check-declarations.cpp
===================================================================
--- flang/lib/Semantics/check-declarations.cpp
+++ flang/lib/Semantics/check-declarations.cpp
@@ -1452,7 +1452,9 @@
                        "Dummy argument '%s' is a procedure; the corresponding"
                        " argument in the interface body is not"_err_en_US);
                  },
-                 [&](const auto &, const auto &) { DIE("can't happen"); },
+                 [&](const auto &, const auto &) {
+                   llvm_unreachable("can't happen");
+                 },
              },
       arg1.u, arg2.u);
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79507.262420.patch
Type: text/x-patch
Size: 2685 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200506/e2fd4620/attachment.bin>


More information about the llvm-commits mailing list