From f0c3dfdbf1e3921638fa3dda4944fd84e9bb7e45 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Sun, 16 Apr 2023 18:07:10 -0700 Subject: [PATCH] [TableGen] Avoid extra IntrusiveRefCntPtr when calling SimplifyTree. NFC 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 | 8 +++----- llvm/utils/TableGen/CodeGenDAGPatterns.h | 3 +++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index 93e9ea1..d8ec427 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -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; } diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.h b/llvm/utils/TableGen/CodeGenDAGPatterns.h index e04a087..0dd99a4 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.h +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.h @@ -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. -- 2.7.4