Add a helper to get modifiable access to the IntrusiveRefCntPtr
stored in the Children array. This avoids copying and overwriting the child.
// 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;
}
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.