Teach the table generator to not generate switch statements containing only a default...
authorAaron Ballman <aaron@aaronballman.com>
Tue, 13 May 2014 12:52:35 +0000 (12:52 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Tue, 13 May 2014 12:52:35 +0000 (12:52 +0000)
No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208694 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/AsmWriterEmitter.cpp

index 7165effa863a23cb7bc4f7ee24d223099fce2397..57889ca7542ecaa410c8a298a21b0e884bd3384f 100644 (file)
@@ -1008,20 +1008,23 @@ void AsmWriterEmitter::EmitPrintAliasInstruction(raw_ostream &O) {
   O << "void " << Target.getName() << ClassName << "::"
     << "printCustomAliasOperand(\n"
     << "         const MCInst *MI, unsigned OpIdx,\n"
-    << "         unsigned PrintMethodIdx, raw_ostream &OS) {\n"
-    << "  switch (PrintMethodIdx) {\n"
-    << "  default:\n"
-    << "    llvm_unreachable(\"Unknown PrintMethod kind\");\n"
-    << "    break;\n";
-
-  for (unsigned i = 0; i < PrintMethods.size(); ++i) {
-    O << "  case " << i << ":\n"
-      << "    " << PrintMethods[i] << "(MI, OpIdx, OS);\n"
+    << "         unsigned PrintMethodIdx, raw_ostream &OS) {\n";
+  if (PrintMethods.empty())
+    O << "  llvm_unreachable(\"Unknown PrintMethod kind\");\n";
+  else {
+    O << "  switch (PrintMethodIdx) {\n"
+      << "  default:\n"
+      << "    llvm_unreachable(\"Unknown PrintMethod kind\");\n"
       << "    break;\n";
-  }
 
-  O << "  }\n"
-    << "}\n\n";
+    for (unsigned i = 0; i < PrintMethods.size(); ++i) {
+      O << "  case " << i << ":\n"
+        << "    " << PrintMethods[i] << "(MI, OpIdx, OS);\n"
+        << "    break;\n";
+    }
+    O << "  }\n";
+  }    
+  O << "}\n\n";
 
   O << "#endif // PRINT_ALIAS_INSTR\n";
 }