Tblgen was generating syntactically illegal C++ code like:
authorJeff Cohen <jeffc@jolt-lang.org>
Wed, 4 Jan 2006 03:15:19 +0000 (03:15 +0000)
committerJeff Cohen <jeffc@jolt-lang.org>
Wed, 4 Jan 2006 03:15:19 +0000 (03:15 +0000)
   SDOperand Tmp0,Tmp1,Tmp2,Tmp3,;

GCC has a bug (24907) in which is fails to catch this, but VC++ correctly
notes its illegality, so tblgen must be taught to only generate legal C++.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25075 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelEmitter.cpp

index d719038ac89d2296a1c083f7492404c5eb723b01..1fbb7c6946eb1cd1994bcfa19cd0fd3a36dffa89 100644 (file)
@@ -2030,12 +2030,13 @@ public:
         std::string Fn = CP->getSelectFunc();
         NumRes = CP->getNumOperands();
         OS << "      SDOperand ";
-        for (unsigned i = 0; i != NumRes; ++i)
+        unsigned i;
+        for (i = 0; i < NumRes - 1; ++i)
           OS << "Tmp" << (i+ResNo) << ",";
-        OS << ";\n";
+        OS << "Tmp" << (i+ResNo) << ";\n";
         
         OS << "      if (!" << Fn << "(" << Val;
-        for (unsigned i = 0; i < NumRes; i++)
+        for (i = 0; i < NumRes; i++)
           OS << ", Tmp" << i + ResNo;
         OS << ")) goto P" << PatternNo << "Fail;\n";
         TmpNo = ResNo + NumRes;