Add support for naming the destination of a "set" in a pattern


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7748 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/InstrSelectorEmitter.cpp b/utils/TableGen/InstrSelectorEmitter.cpp
index 153f27e..d9f333b 100644
--- a/utils/TableGen/InstrSelectorEmitter.cpp
+++ b/utils/TableGen/InstrSelectorEmitter.cpp
@@ -138,6 +138,7 @@
       if (!Tree->getChild(0)->isLeaf())
         error("Arg #0 of set should be a register or register class!");
       Result = Tree->getChild(0)->getValueRecord();
+      ResultName = Tree->getChildName(0);
       Tree = Tree->getChild(1);
     }
   }
@@ -895,6 +896,9 @@
   for (unsigned i = 0, e = P->getNumArgs(); i != e; ++i)
     if (P->getArgName(i) == ArgName)
       return Operands[i].second + "->Val";
+
+  if (ArgName == P->getResultName())
+    return "NewReg";
   P->error("Pattern does not define a value named $" + ArgName + "!");
   return "";
 }