[TableGen] Fix ICE on MSVC 2012 Release builds.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 26 Feb 2013 21:29:47 +0000 (21:29 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 26 Feb 2013 21:29:47 +0000 (21:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176125 91177308-0d34-0410-b5e6-96231b3b80d8

lib/TableGen/TGParser.cpp
utils/TableGen/CodeGenRegisters.cpp

index da0086a74acde651b5a12e66664bde59755c30eb..c4b48fe5e895d539c7b21cb1e0eed1d54587419e 100644 (file)
@@ -382,7 +382,8 @@ static bool isObjectStart(tgtok::TokKind K) {
 
 static std::string GetNewAnonymousName() {
   static unsigned AnonCounter = 0;
-  return "anonymous."+utostr(AnonCounter++);
+  unsigned Tmp = AnonCounter++; // MSVC2012 ICEs without this.
+  return "anonymous." + utostr(Tmp);
 }
 
 /// ParseObjectName - If an object name is specified, return it.  Otherwise,
index 4238340ff068f80ba23ddfa419a08db5ac4eaba4..993b8dba426730089627597aeec36767aaf8b098 100644 (file)
@@ -703,7 +703,9 @@ CodeGenRegisterClass::CodeGenRegisterClass(CodeGenRegBank &RegBank, Record *R)
   // Rename anonymous register classes.
   if (R->getName().size() > 9 && R->getName()[9] == '.') {
     static unsigned AnonCounter = 0;
-    R->setName("AnonRegClass_"+utostr(AnonCounter++));
+    R->setName("AnonRegClass_" + utostr(AnonCounter));
+    // MSVC2012 ICEs if AnonCounter++ is directly passed to utostr.
+    ++AnonCounter;
   }
 
   std::vector<Record*> TypeList = R->getValueAsListOfDefs("RegTypes");