Eliminate some GCC warnings from the generated code
authorChris Lattner <sabre@nondot.org>
Wed, 21 Dec 2005 05:31:05 +0000 (05:31 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 21 Dec 2005 05:31:05 +0000 (05:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24897 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelEmitter.cpp

index 80f226cd79fc6a689af16ca045f0c530a33ea5eb..be8fb75b43a6b630c47ba29b7c99cc126be2a4f8 100644 (file)
@@ -1770,18 +1770,24 @@ public:
                      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 @@ public:
         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++)