[PATCH] D81021: [TableGen] Avoid generating switch with just default
David Stuttard via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 2 11:32:28 PDT 2020
dstuttard created this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
dstuttard added a reviewer: dsanders.
Switch with just default causes an MSVC warning (warning C4065: switch statement
contains 'default' but no 'case' labels).
Change-Id: I9ddeccdef93666256b5454b164b567b73b488461
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D81021
Files:
llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp
Index: llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp
===================================================================
--- llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp
+++ llvm/utils/TableGen/GlobalISel/GIMatchTree.cpp
@@ -612,18 +612,23 @@
void GIMatchTreeOpcodePartitioner::generatePartitionSelectorCode(
raw_ostream &OS, StringRef Indent) const {
- OS << Indent << "Partition = -1;\n"
- << Indent << "switch (MIs[" << InstrID << "]->getOpcode()) {\n";
- for (const auto &EnumInstr : enumerate(PartitionToInstr)) {
- if (EnumInstr.value() == nullptr)
- OS << Indent << "default:";
- else
- OS << Indent << "case " << EnumInstr.value()->Namespace
- << "::" << EnumInstr.value()->TheDef->getName() << ":";
- OS << " Partition = " << EnumInstr.index() << "; break;\n";
+ // Make sure not to emit empty switch or switch with just default
+ if (PartitionToInstr.size() == 1 && PartitionToInstr[0] == nullptr) {
+ OS << Indent << "Partition = 0;\n";
+ } else if (PartitionToInstr.size()) {
+ OS << Indent << "Partition = -1;\n"
+ << Indent << "switch (MIs[" << InstrID << "]->getOpcode()) {\n";
+ for (const auto &EnumInstr : enumerate(PartitionToInstr)) {
+ if (EnumInstr.value() == nullptr)
+ OS << Indent << "default:";
+ else
+ OS << Indent << "case " << EnumInstr.value()->Namespace
+ << "::" << EnumInstr.value()->TheDef->getName() << ":";
+ OS << " Partition = " << EnumInstr.index() << "; break;\n";
+ }
+ OS << Indent << "}\n";
}
- OS << Indent << "}\n"
- << Indent
+ OS << Indent
<< "// Default case but without conflicting with potential default case "
"in selection.\n"
<< Indent << "if (Partition == -1) return false;\n";
@@ -775,4 +780,3 @@
OS << Indent << "if (Partition == -1) return false;\n";
}
-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D81021.267942.patch
Type: text/x-patch
Size: 1856 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200602/1c9ce4e9/attachment.bin>
More information about the llvm-commits
mailing list