diff --git a/llvm/utils/TableGen/PseudoLoweringEmitter.cpp b/llvm/utils/TableGen/PseudoLoweringEmitter.cpp index 56b9e499cb4aa..7f67c13c0bbbd 100644 --- a/llvm/utils/TableGen/PseudoLoweringEmitter.cpp +++ b/llvm/utils/TableGen/PseudoLoweringEmitter.cpp @@ -90,14 +90,12 @@ unsigned PseudoLoweringEmitter::addDagOperandMapping( // problem. // FIXME: We probably shouldn't ever get a non-zero BaseIdx here. assert(BaseIdx == 0 && "Named subargument in pseudo expansion?!"); - if (DI->getDef() != Insn.Operands[BaseIdx + i].Rec) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', operand type '" + DI->getDef()->getName() + - "' does not match expansion operand type '" + - Insn.Operands[BaseIdx + i].Rec->getName() + "'"); - PrintFatalNote(DI->getDef(), - "Value was assigned at the following location:"); - } + if (DI->getDef() != Insn.Operands[BaseIdx + i].Rec) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', operand type '" + DI->getDef()->getName() + + "' does not match expansion operand type '" + + Insn.Operands[BaseIdx + i].Rec->getName() + + "'"); // Source operand maps to destination operand. The Data element // will be filled in later, just set the Kind for now. Do it // for each corresponding MachineInstr operand, not just the first. @@ -138,38 +136,26 @@ void PseudoLoweringEmitter::evaluateExpansion(const Record *Rec) { LLVM_DEBUG(dbgs() << " Result: " << *Dag << "\n"); const DefInit *OpDef = dyn_cast(Dag->getOperator()); - if (!OpDef) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', result operator is not a record"); - PrintFatalNote(Rec->getValue("ResultInst"), - "Result was assigned at the following location:"); - } + if (!OpDef) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', result operator is not a record"); const Record *Operator = OpDef->getDef(); - if (!Operator->isSubClassOf("Instruction")) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', result operator '" + Operator->getName() + - "' is not an instruction"); - PrintFatalNote(Rec->getValue("ResultInst"), - "Result was assigned at the following location:"); - } + if (!Operator->isSubClassOf("Instruction")) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', result operator '" + Operator->getName() + + "' is not an instruction"); CodeGenInstruction Insn(Operator); - if (Insn.isCodeGenOnly || Insn.isPseudo) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', result operator '" + Operator->getName() + - "' cannot be a pseudo instruction"); - PrintFatalNote(Rec->getValue("ResultInst"), - "Result was assigned at the following location:"); - } + if (Insn.isCodeGenOnly || Insn.isPseudo) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', result operator '" + Operator->getName() + + "' cannot be a pseudo instruction"); - if (Insn.Operands.size() != Dag->getNumArgs()) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', result operator '" + Operator->getName() + - "' has the wrong number of operands"); - PrintFatalNote(Rec->getValue("ResultInst"), - "Result was assigned at the following location:"); - } + if (Insn.Operands.size() != Dag->getNumArgs()) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', result operator '" + Operator->getName() + + "' has the wrong number of operands"); unsigned NumMIOperands = 0; for (const auto &Op : Insn.Operands) @@ -202,13 +188,10 @@ void PseudoLoweringEmitter::evaluateExpansion(const Record *Rec) { continue; StringMap::iterator SourceOp = SourceOperands.find(Dag->getArgNameStr(i)); - if (SourceOp == SourceOperands.end()) { - PrintError(Rec, "In pseudo instruction '" + Rec->getName() + - "', output operand '" + Dag->getArgNameStr(i) + - "' has no matching source operand"); - PrintFatalNote(Rec->getValue("ResultInst"), - "Value was assigned at the following location:"); - } + if (SourceOp == SourceOperands.end()) + PrintFatalError(Rec, "In pseudo instruction '" + Rec->getName() + + "', output operand '" + Dag->getArgNameStr(i) + + "' has no matching source operand"); // Map the source operand to the destination operand index for each // MachineInstr operand. for (unsigned I = 0, E = Insn.Operands[i].MINumOperands; I != E; ++I)