[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp

Chris Lattner lattner at cs.uiuc.edu
Fri Sep 23 14:53:56 PDT 2005



Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.36 -> 1.37
---
Log message:

Fix a fixme by passing around SDOperand's instead of SDNode*'s


---
Diffs of the changes:  (+14 -15)

 DAGISelEmitter.cpp |   29 ++++++++++++++---------------
 1 files changed, 14 insertions(+), 15 deletions(-)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.36 llvm/utils/TableGen/DAGISelEmitter.cpp:1.37
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.36	Fri Sep 23 16:33:23 2005
+++ llvm/utils/TableGen/DAGISelEmitter.cpp	Fri Sep 23 16:53:45 2005
@@ -994,13 +994,13 @@
   assert(!N->isLeaf() && "Cannot match against a leaf!");
   // Emit code to load the child nodes and match their contents recursively.
   for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) {
-    OS << "      SDNode *" << RootName << i <<" = " << RootName
-       << "->getOperand(" << i << ").Val;\n";
+    OS << "      SDOperand " << RootName << i <<" = " << RootName
+       << ".getOperand(" << i << ");\n";
     TreePatternNode *Child = N->getChild(i);
     if (!Child->isLeaf()) {
       // If it's not a leaf, recursively match.
       const SDNodeInfo &CInfo = getSDNodeInfo(Child->getOperator());
-      OS << "      if (" << RootName << i << "->getOpcode() != "
+      OS << "      if (" << RootName << i << ".getOpcode() != "
          << CInfo.getEnumName() << ") goto P" << PatternNo << "Fail;\n";
       EmitMatchForPattern(Child, RootName + utostr(i), PatternNo, OS);
     } else {
@@ -1022,14 +1022,14 @@
     
     // If this child has a name associated with it, capture it as a variable.
     if (!Child->getName().empty())
-      OS << "      SDOperand op" << Child->getName() << "(" << RootName
-         << i << ", 0 /*FIXME*/);\n";
+      OS << "      SDOperand op" << Child->getName() << " = " << RootName
+         << i << ";\n";
   }
   
   // If there is a node predicate for this, emit the call.
   if (!N->getPredicateFn().empty())
     OS << "      if (!" << N->getPredicateFn() << "(" << RootName
-       << ")) goto P" << PatternNo << "Fail;\n";
+       << ".Val)) goto P" << PatternNo << "Fail;\n";
 }
 
 /// EmitCodeForPattern - Given a pattern to match, emit code to the specified
@@ -1090,18 +1090,17 @@
 void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
   // Emit boilerplate.
   OS << "// The main instruction selector code.\n"
-     << "SDOperand SelectCode(SDOperand Op) {\n"
-     << "  SDNode *N = Op.Val;\n"
-     << "  if (N->getOpcode() >= ISD::BUILTIN_OP_END &&\n"
-     << "      N->getOpcode() < PPCISD::FIRST_NUMBER)\n"
-     << "    return Op;   // Already selected.\n\n"
-     << "  switch (N->getOpcode()) {\n"
+     << "SDOperand SelectCode(SDOperand N) {\n"
+     << "  if (N.getOpcode() >= ISD::BUILTIN_OP_END &&\n"
+     << "      N.getOpcode() < PPCISD::FIRST_NUMBER)\n"
+     << "    return N;   // Already selected.\n\n"
+     << "  switch (N.getOpcode()) {\n"
      << "  default: break;\n"
      << "  case ISD::EntryToken:       // These leaves remain the same.\n"
-     << "    return Op;\n"
+     << "    return N;\n"
      << "  case ISD::AssertSext:\n"
      << "  case ISD::AssertZext:\n"
-     << "    return Select(N->getOperand(0));\n";
+     << "    return Select(N.getOperand(0));\n";
     
   // Group the patterns by their top-level opcodes.
   std::map<Record*, std::vector<PatternToMatch*> > PatternsByOpcode;
@@ -1132,7 +1131,7 @@
 
   OS << "  } // end of big switch.\n\n"
      << "  std::cerr << \"Cannot yet select: \";\n"
-     << "  N->dump();\n"
+     << "  N.Val->dump();\n"
      << "  std::cerr << '\\n';\n"
      << "  abort();\n"
      << "}\n";






More information about the llvm-commits mailing list