[TableGen] Avoid extra IntrusiveRefCntPtr when calling SimplifyTree. NFC
authorCraig Topper <craig.topper@sifive.com>
Mon, 17 Apr 2023 01:07:10 +0000 (18:07 -0700)
committerCraig Topper <craig.topper@sifive.com>
Mon, 17 Apr 2023 01:57:27 +0000 (18:57 -0700)
Add a helper to get modifiable access to the IntrusiveRefCntPtr
stored in the Children array. This avoids copying and overwriting the child.

llvm/utils/TableGen/CodeGenDAGPatterns.cpp
llvm/utils/TableGen/CodeGenDAGPatterns.h

index 93e9ea1..d8ec427 100644 (file)
@@ -3058,11 +3058,9 @@ static bool SimplifyTree(TreePatternNodePtr &N) {
 
   // Walk all children.
   bool MadeChange = false;
-  for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) {
-    TreePatternNodePtr Child = N->getChildShared(i);
-    MadeChange |= SimplifyTree(Child);
-    N->setChild(i, std::move(Child));
-  }
+  for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i)
+    MadeChange |= SimplifyTree(N->getChildSharedPtr(i));
+
   return MadeChange;
 }
 
index e04a087..0dd99a4 100644 (file)
@@ -727,6 +727,9 @@ public:
   const TreePatternNodePtr &getChildShared(unsigned N) const {
     return Children[N];
   }
+  TreePatternNodePtr &getChildSharedPtr(unsigned N) {
+    return Children[N];
+  }
   void setChild(unsigned i, TreePatternNodePtr N) { Children[i] = N; }
 
   /// hasChild - Return true if N is any of our children.