diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-05-03 15:50:37 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-05-03 15:50:37 +0000 |
commit | d857f64c318dcc5827b9e4cb84086dc8080ca9af (patch) | |
tree | 36a272708c9577bdc0c96a17c53896bb8ed71632 /llvm/lib/CodeGen | |
parent | 657ef48a882299c3216aa616e0e56366151fb8d0 (diff) | |
download | bcm5719-llvm-d857f64c318dcc5827b9e4cb84086dc8080ca9af.tar.gz bcm5719-llvm-d857f64c318dcc5827b9e4cb84086dc8080ca9af.zip |
[SelectionDAG] CreateTopologicalOrder - don't use iterator
We shouldn't use an iterator to loop across a std::vector when the same loop is adding elements to that std::vector
Found by cppcheck
llvm-svn: 359900
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 7b31f5d11e2..31035bdccaa 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -8239,19 +8239,17 @@ void SelectionDAG::updateDivergence(SDNode * N) } } - -void SelectionDAG::CreateTopologicalOrder(std::vector<SDNode*>& Order) { +void SelectionDAG::CreateTopologicalOrder(std::vector<SDNode *> &Order) { DenseMap<SDNode *, unsigned> Degree; Order.reserve(AllNodes.size()); - for (auto & N : allnodes()) { + for (auto &N : allnodes()) { unsigned NOps = N.getNumOperands(); Degree[&N] = NOps; if (0 == NOps) Order.push_back(&N); } - for (std::vector<SDNode *>::iterator I = Order.begin(); - I!=Order.end();++I) { - SDNode * N = *I; + for (size_t I = 0; I != Order.size(); ++I) { + SDNode *N = Order[I]; for (auto U : N->uses()) { unsigned &UnsortedOps = Degree[U]; if (0 == --UnsortedOps) @@ -8261,9 +8259,8 @@ void SelectionDAG::CreateTopologicalOrder(std::vector<SDNode*>& Order) { } #ifndef NDEBUG -void SelectionDAG::VerifyDAGDiverence() -{ - std::vector<SDNode*> TopoOrder; +void SelectionDAG::VerifyDAGDiverence() { + std::vector<SDNode *> TopoOrder; CreateTopologicalOrder(TopoOrder); const TargetLowering &TLI = getTargetLoweringInfo(); DenseMap<const SDNode *, bool> DivergenceMap; @@ -8289,7 +8286,6 @@ void SelectionDAG::VerifyDAGDiverence() } #endif - /// ReplaceAllUsesOfValuesWith - Replace any uses of From with To, leaving /// uses of other values produced by From.getNode() alone. The same value /// may appear in both the From and To list. The Deleted vector is |