[llvm] [TableGen] Avoid emitting a switch that only contains a default. (PR #177391)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 22 08:22:42 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-selectiondag

Author: Craig Topper (topperc)

<details>
<summary>Changes</summary>

Addresses post commit feedback from #<!-- -->174471

---
Full diff: https://github.com/llvm/llvm-project/pull/177391.diff


1 Files Affected:

- (modified) llvm/utils/TableGen/DAGISelMatcherEmitter.cpp (+16-12) 


``````````diff
diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
index eaecccf215342..0ab19d686714f 100644
--- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -1364,19 +1364,23 @@ void MatcherTableEmitter::EmitValueTypeFunction(raw_ostream &OS) {
 
   for (const auto &[VTs, Idx] : ValueTypeMap) {
     OS << "  case " << (Idx - 1) << ":\n";
-    OS << "    switch (HwMode) {\n";
-    if (!VTs.hasDefault())
-      OS << "    default:\n      return MVT();\n";
-    for (const auto [Mode, VT] : VTs) {
-      if (Mode == DefaultMode)
-        OS << "    default:\n";
-      else
-        OS << "    case " << Mode << ":\n";
-      OS << "      return " << getEnumName(VT) << ";\n";
-    }
+    if (VTs.isSimple()) {
+      OS << "    return " << getEnumName(VTs.getSimple()) << ";\n";
+    } else {
+      OS << "    switch (HwMode) {\n";
+      if (!VTs.hasDefault())
+        OS << "    default:\n      return MVT();\n";
+      for (const auto [Mode, VT] : VTs) {
+        if (Mode == DefaultMode)
+          OS << "    default:\n";
+        else
+          OS << "    case " << Mode << ":\n";
+        OS << "      return " << getEnumName(VT) << ";\n";
+      }
 
-    OS << "    }\n";
-    OS << "    break;\n";
+      OS << "    }\n";
+      OS << "    break;\n";
+    }
   }
 
   OS << "  }\n";

``````````

</details>


https://github.com/llvm/llvm-project/pull/177391


More information about the llvm-commits mailing list