From: Chris Lattner Date: Tue, 12 Aug 2003 05:19:49 +0000 (+0000) Subject: Fix emission of instructions that directly reference MBBs X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=42f3372742d6fabef22aa2267498ef0fb10c1e71;p=oota-llvm.git Fix emission of instructions that directly reference MBBs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7771 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/support/tools/TableGen/InstrSelectorEmitter.cpp b/support/tools/TableGen/InstrSelectorEmitter.cpp index 9bc50cee715..28c7de11403 100644 --- a/support/tools/TableGen/InstrSelectorEmitter.cpp +++ b/support/tools/TableGen/InstrSelectorEmitter.cpp @@ -1205,15 +1205,21 @@ void InstrSelectorEmitter::run(std::ostream &OS) { if (P->getResult()) OS << ", NewReg"; OS << ")"; - for (unsigned i = 0, e = Operands.size(); i != e; ++i) - if (Operands[i].first->isLeaf()) { - Record *RV = Operands[i].first->getValueRecord(); + for (unsigned i = 0, e = Operands.size(); i != e; ++i) { + TreePatternNode *Op = Operands[i].first; + if (Op->isLeaf()) { + Record *RV = Op->getValueRecord(); assert(RV->isSubClassOf("RegisterClass") && "Only handles registers here so far!"); OS << ".addReg(" << Operands[i].second << "->Val)"; - } else { + } else if (Op->getOperator()->getName() == "imm") { OS << ".addZImm(" << Operands[i].second << "->Val)"; + } else if (Op->getOperator()->getName() == "basicblock") { + OS << ".addMBB(" << Operands[i].second << "->Val)"; + } else { + assert(0 && "Unknown value type!"); } + } OS << ";\n"; break; case Pattern::Expander: { diff --git a/utils/TableGen/InstrSelectorEmitter.cpp b/utils/TableGen/InstrSelectorEmitter.cpp index 9bc50cee715..28c7de11403 100644 --- a/utils/TableGen/InstrSelectorEmitter.cpp +++ b/utils/TableGen/InstrSelectorEmitter.cpp @@ -1205,15 +1205,21 @@ void InstrSelectorEmitter::run(std::ostream &OS) { if (P->getResult()) OS << ", NewReg"; OS << ")"; - for (unsigned i = 0, e = Operands.size(); i != e; ++i) - if (Operands[i].first->isLeaf()) { - Record *RV = Operands[i].first->getValueRecord(); + for (unsigned i = 0, e = Operands.size(); i != e; ++i) { + TreePatternNode *Op = Operands[i].first; + if (Op->isLeaf()) { + Record *RV = Op->getValueRecord(); assert(RV->isSubClassOf("RegisterClass") && "Only handles registers here so far!"); OS << ".addReg(" << Operands[i].second << "->Val)"; - } else { + } else if (Op->getOperator()->getName() == "imm") { OS << ".addZImm(" << Operands[i].second << "->Val)"; + } else if (Op->getOperator()->getName() == "basicblock") { + OS << ".addMBB(" << Operands[i].second << "->Val)"; + } else { + assert(0 && "Unknown value type!"); } + } OS << ";\n"; break; case Pattern::Expander: {