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

Chris Lattner lattner at cs.uiuc.edu
Tue Dec 20 21:31:17 PST 2005



Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.109 -> 1.110
---
Log message:

Eliminate some GCC warnings from the generated code


---
Diffs of the changes:  (+17 -9)

 DAGISelEmitter.cpp |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.109 llvm/utils/TableGen/DAGISelEmitter.cpp:1.110
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.109	Tue Dec 20 14:08:01 2005
+++ llvm/utils/TableGen/DAGISelEmitter.cpp	Tue Dec 20 23:31:05 2005
@@ -1770,18 +1770,24 @@
                      TreePatternNode *pattern, TreePatternNode *instr,
                      unsigned PatNum, std::ostream &os) :
     ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr),
-    PatternNo(PatNum), OS(os), FoundChain(false), TmpNo(0) {};
+    PatternNo(PatNum), OS(os), FoundChain(false), TmpNo(0) {}
 
+  /// isPredeclaredSDOperand - Return true if this is one of the predeclared
+  /// SDOperands.
+  bool isPredeclaredSDOperand(const std::string &OpName) const {
+    return OpName == "N0" || OpName == "N1" || OpName == "N2" || 
+           OpName == "N00" || OpName == "N01" || 
+           OpName == "N10" || OpName == "N11" || 
+           OpName == "Tmp0" || OpName == "Tmp1" || 
+           OpName == "Tmp2" || OpName == "Tmp3";
+  }
+  
   /// DeclareSDOperand - Emit "SDOperand <opname>" or "<opname>".  This works
   /// around an ugly GCC bug where SelectCode is using too much stack space
   void DeclareSDOperand(const std::string &OpName) const {
     // If it's one of the common cases declared at the top of SelectCode, just
     // use the existing declaration.
-    if (OpName == "N0" || OpName == "N1" || OpName == "N2" || 
-        OpName == "N00" || OpName == "N01" || 
-        OpName == "N10" || OpName == "N11" || 
-        OpName == "Tmp0" || OpName == "Tmp1" || 
-        OpName == "Tmp2" || OpName == "Tmp3")
+    if (isPredeclaredSDOperand(OpName))
       OS << OpName;
     else
       OS << "SDOperand " << OpName;
@@ -1986,9 +1992,11 @@
         std::string Fn = CP->getSelectFunc();
         NumRes = CP->getNumOperands();
         for (unsigned i = 0; i != NumRes; ++i) {
-          OS << "      ";
-          DeclareSDOperand("Tmp" + utostr(i+ResNo));
-          OS << ";\n";
+          if (!isPredeclaredSDOperand("Tmp" + utostr(i+ResNo))) {
+            OS << "      ";
+            DeclareSDOperand("Tmp" + utostr(i+ResNo));
+            OS << ";\n";
+          }
         }
         OS << "      if (!" << Fn << "(" << Val;
         for (unsigned i = 0; i < NumRes; i++)






More information about the llvm-commits mailing list