summaryrefslogtreecommitdiff
path: root/support/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-12 05:19:49 +0000
committerChris Lattner <sabre@nondot.org>2003-08-12 05:19:49 +0000
commit42f3372742d6fabef22aa2267498ef0fb10c1e71 (patch)
treef23c5866af7f2561f31478108bf5ead17c0cf612 /support/tools
parent175724f2d332c0cd5e54503c8d95d25417358828 (diff)
downloadllvm-42f3372742d6fabef22aa2267498ef0fb10c1e71.tar.gz
llvm-42f3372742d6fabef22aa2267498ef0fb10c1e71.tar.bz2
llvm-42f3372742d6fabef22aa2267498ef0fb10c1e71.tar.xz
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
Diffstat (limited to 'support/tools')
-rw-r--r--support/tools/TableGen/InstrSelectorEmitter.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/support/tools/TableGen/InstrSelectorEmitter.cpp b/support/tools/TableGen/InstrSelectorEmitter.cpp
index 9bc50cee71..28c7de1140 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: {