Allow Names Changes on Unregistered Records
[oota-llvm.git] / lib / TableGen / Record.cpp
index c92f1b2f61401fa2dd5f5f2afa641b53758d8429..69d31fe3b43d1ba33f3501465160aac72f679b6c 100644 (file)
@@ -1714,13 +1714,12 @@ const std::string &Record::getName() const {
 void Record::setName(Init *NewName) {
   if (TrackedRecords.getDef(Name->getAsUnquotedString()) == this) {
     TrackedRecords.removeDef(Name->getAsUnquotedString());
-    Name = NewName;
     TrackedRecords.addDef(this);
-  } else {
+  } else if (TrackedRecords.getClass(Name->getAsUnquotedString()) == this) {
     TrackedRecords.removeClass(Name->getAsUnquotedString());
-    Name = NewName;
     TrackedRecords.addClass(this);
-  }
+  }  // Otherwise this isn't yet registered.
+  Name = NewName;
   checkName();
   // Since the Init for the name was changed, see if we can resolve
   // any of it using members of the Record.