diff options
author | Fangrui Song <maskray@google.com> | 2019-12-23 21:42:41 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-12-23 22:04:14 -0800 |
commit | 01b98e6fd54f498018be4e298d98e711ab42b796 (patch) | |
tree | 5944cef8559d624b66e09ab5c27d5a7cc9810206 /llvm/lib/CodeGen | |
parent | 4b0563f89f939f2160002298d5491a8fc8ee1137 (diff) | |
download | bcm5719-llvm-01b98e6fd54f498018be4e298d98e711ab42b796.tar.gz bcm5719-llvm-01b98e6fd54f498018be4e298d98e711ab42b796.zip |
[SelectionDAG] Don't repeatedly add a node to the worklist in ComputeLiveOutVRegInfo. NFC
For sqlite3 amalgram, this decreases the number of Worklist.push_back calls (603084) by 10%.
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index b25a9ab854a..58e2dcfa18d 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -738,23 +738,20 @@ void SelectionDAGISel::SelectBasicBlock(BasicBlock::const_iterator Begin, } void SelectionDAGISel::ComputeLiveOutVRegInfo() { - SmallPtrSet<SDNode*, 16> VisitedNodes; + SmallPtrSet<SDNode *, 16> Added; SmallVector<SDNode*, 128> Worklist; Worklist.push_back(CurDAG->getRoot().getNode()); + Added.insert(CurDAG->getRoot().getNode()); KnownBits Known; do { SDNode *N = Worklist.pop_back_val(); - // If we've already seen this node, ignore it. - if (!VisitedNodes.insert(N).second) - continue; - // Otherwise, add all chain operands to the worklist. for (const SDValue &Op : N->op_values()) - if (Op.getValueType() == MVT::Other) + if (Op.getValueType() == MVT::Other && Added.insert(Op.getNode()).second) Worklist.push_back(Op.getNode()); // If this is a CopyToReg with a vreg dest, process it. |