diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-01-13 07:20:13 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-01-13 07:20:13 +0000 |
commit | 0b271ad1f873572286f19279069a340e8339bd75 (patch) | |
tree | d606c93bc7850564cd340aed05e009187f0a8f76 | |
parent | d4f87a3321a3877dfdee0434c8a835232220c94e (diff) | |
download | bcm5719-llvm-0b271ad1f873572286f19279069a340e8339bd75.tar.gz bcm5719-llvm-0b271ad1f873572286f19279069a340e8339bd75.zip |
[TableGen] Cleanup output formatting and add llvm_unreachables to the output the AsmMatcher uses when it overflows the 64-bit tables. No in tree targets use this code, but I tested it with an temporarily reduced table width.
llvm-svn: 257583
-rw-r--r-- | llvm/utils/TableGen/AsmWriterEmitter.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/utils/TableGen/AsmWriterEmitter.cpp b/llvm/utils/TableGen/AsmWriterEmitter.cpp index af82f9c21da..cf7cbd96286 100644 --- a/llvm/utils/TableGen/AsmWriterEmitter.cpp +++ b/llvm/utils/TableGen/AsmWriterEmitter.cpp @@ -65,7 +65,7 @@ private: static void PrintCases(std::vector<std::pair<std::string, AsmWriterOperand> > &OpsToPrint, raw_ostream &O) { - O << " case " << OpsToPrint.back().first << ": "; + O << " case " << OpsToPrint.back().first << ":"; AsmWriterOperand TheOp = OpsToPrint.back().second; OpsToPrint.pop_back(); @@ -73,13 +73,13 @@ static void PrintCases(std::vector<std::pair<std::string, // emit a case label for them. for (unsigned i = OpsToPrint.size(); i != 0; --i) if (OpsToPrint[i-1].second == TheOp) { - O << "\n case " << OpsToPrint[i-1].first << ": "; + O << "\n case " << OpsToPrint[i-1].first << ":"; OpsToPrint.erase(OpsToPrint.begin()+i-1); } // Finally, emit the code. - O << TheOp.getCode(); - O << "break;\n"; + O << "\n " << TheOp.getCode(); + O << "\n break;\n"; } @@ -120,6 +120,7 @@ static void EmitInstructions(std::vector<AsmWriterInst> &Insts, // If this is the operand that varies between all of the instructions, // emit a switch for just this operand now. O << " switch (MI->getOpcode()) {\n"; + O << " default: llvm_unreachable(\"Unexpected opcode.\");\n"; std::vector<std::pair<std::string, AsmWriterOperand> > OpsToPrint; OpsToPrint.push_back(std::make_pair(FirstInst.CGI->Namespace + "::" + FirstInst.CGI->TheDef->getName(), @@ -499,11 +500,11 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) { if (!Instructions.empty()) { // Find the opcode # of inline asm. O << " switch (MI->getOpcode()) {\n"; + O << " default: llvm_unreachable(\"Unexpected opcode.\");\n"; while (!Instructions.empty()) EmitInstructions(Instructions, O); O << " }\n"; - O << " return;\n"; } O << "}\n"; |