From e320b0b581ca9a18d7ac3f96563efb879c974036 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sun, 25 Feb 2024 17:12:13 -0500 Subject: [PATCH] Internals: Favor const_iterators. No functional change intended. --- include/verilated.cpp | 8 ++--- include/verilated_timing.cpp | 4 +-- include/verilated_timing.h | 2 +- include/verilated_types.h | 70 ++++++++++++++++++------------------ src/V3EmitMk.cpp | 2 +- src/V3Graph.cpp | 2 +- src/V3Simulate.h | 2 +- src/V3VariableOrder.cpp | 4 +-- 8 files changed, 46 insertions(+), 48 deletions(-) diff --git a/include/verilated.cpp b/include/verilated.cpp index 68dfc00eb..18a3ab01f 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -814,7 +814,7 @@ void _vl_vsformat(std::string& output, const std::string& format, va_list ap) VL bool widthSet = false; bool left = false; size_t width = 0; - for (std::string::const_iterator pos = format.begin(); pos != format.end(); ++pos) { + for (std::string::const_iterator pos = format.cbegin(); pos != format.cend(); ++pos) { if (!inPct && pos[0] == '%') { pctit = pos; inPct = true; @@ -1212,8 +1212,8 @@ IData _vl_vsscanf(FILE* fp, // If a fscanf IData got = 0; bool inPct = false; bool inIgnore = false; - std::string::const_iterator pos = format.begin(); - for (; pos != format.end() && !_vl_vsss_eof(fp, floc); ++pos) { + std::string::const_iterator pos = format.cbegin(); + for (; pos != format.cend() && !_vl_vsss_eof(fp, floc); ++pos) { // VL_DBG_MSGF("_vlscan fmt='"<first == m_context.time())) { + while (!m_queue.empty() && (m_queue.cbegin()->first == m_context.time())) { VlCoroutineHandle handle = std::move(m_queue.begin()->second); m_queue.erase(m_queue.begin()); handle.resume(); @@ -80,7 +80,7 @@ void VlDelayScheduler::resume() { } uint64_t VlDelayScheduler::nextTimeSlot() const { - if (!m_queue.empty()) return m_queue.begin()->first; + if (!m_queue.empty()) return m_queue.cbegin()->first; if (m_zeroDelayed.empty()) VL_FATAL_MT(__FILE__, __LINE__, "", "%Error: There is no next time slot scheduled"); return m_context.time(); diff --git a/include/verilated_timing.h b/include/verilated_timing.h index b222c360c..3fc3ca976 100644 --- a/include/verilated_timing.h +++ b/include/verilated_timing.h @@ -180,7 +180,7 @@ public: bool empty() const { return m_queue.empty() && m_zeroDelayed.empty(); } // Are there coroutines to resume at the current simulation time? bool awaitingCurrentTime() const { - return (!m_queue.empty() && (m_queue.begin()->first <= m_context.time())) + return (!m_queue.empty() && (m_queue.cbegin()->first <= m_context.time())) || !m_zeroDelayed.empty(); } #ifdef VL_DEBUG diff --git a/include/verilated_types.h b/include/verilated_types.h index 6ee53a26a..a8359744c 100644 --- a/include/verilated_types.h +++ b/include/verilated_types.h @@ -615,7 +615,7 @@ public: // inside (set membership operator) bool inside(const T_Value& value) const { - return std::find(m_deque.begin(), m_deque.end(), value) != m_deque.end(); + return std::find(m_deque.cbegin(), m_deque.cend(), value) != m_deque.cend(); } // Return slice q[lsb:msb] @@ -776,13 +776,13 @@ public: // Reduction operators VlQueue min() const { if (m_deque.empty()) return VlQueue{}; - const auto it = std::min_element(m_deque.begin(), m_deque.end()); + const auto it = std::min_element(m_deque.cbegin(), m_deque.cend()); return VlQueue::cons(*it); } template VlQueue min(Func with_func) const { if (m_deque.empty()) return VlQueue{}; - const auto it = std::min_element(m_deque.begin(), m_deque.end(), + const auto it = std::min_element(m_deque.cbegin(), m_deque.cend(), [&with_func](const IData& a, const IData& b) { return with_func(0, a) < with_func(0, b); }); @@ -790,13 +790,13 @@ public: } VlQueue max() const { if (m_deque.empty()) return VlQueue{}; - const auto it = std::max_element(m_deque.begin(), m_deque.end()); + const auto it = std::max_element(m_deque.cbegin(), m_deque.cend()); return VlQueue::cons(*it); } template VlQueue max(Func with_func) const { if (m_deque.empty()) return VlQueue{}; - const auto it = std::max_element(m_deque.begin(), m_deque.end(), + const auto it = std::max_element(m_deque.cbegin(), m_deque.cend(), [&with_func](const IData& a, const IData& b) { return with_func(0, a) < with_func(0, b); }); @@ -817,40 +817,40 @@ public: } T_Value r_product() const { if (m_deque.empty()) return T_Value(0); - auto it = m_deque.begin(); + auto it = m_deque.cbegin(); T_Value out{*it}; ++it; - for (; it != m_deque.end(); ++it) out *= *it; + for (; it != m_deque.cend(); ++it) out *= *it; return out; } template T_Value r_product(Func with_func) const { if (m_deque.empty()) return T_Value(0); - auto it = m_deque.begin(); + auto it = m_deque.cbegin(); IData index = 0; T_Value out{with_func(index, *it)}; ++it; ++index; - for (; it != m_deque.end(); ++it) out *= with_func(index++, *it); + for (; it != m_deque.cend(); ++it) out *= with_func(index++, *it); return out; } T_Value r_and() const { if (m_deque.empty()) return T_Value(0); - auto it = m_deque.begin(); + auto it = m_deque.cbegin(); T_Value out{*it}; ++it; - for (; it != m_deque.end(); ++it) out &= *it; + for (; it != m_deque.cend(); ++it) out &= *it; return out; } template T_Value r_and(Func with_func) const { if (m_deque.empty()) return T_Value(0); - auto it = m_deque.begin(); + auto it = m_deque.cbegin(); IData index = 0; T_Value out{with_func(index, *it)}; ++it; ++index; - for (; it != m_deque.end(); ++it) out &= with_func(index, *it); + for (; it != m_deque.cend(); ++it) out &= with_func(index, *it); return out; } T_Value r_or() const { @@ -948,7 +948,7 @@ public: // Return last element. Verilog: function int last(ref index) int last(T_Key& indexr) const { const auto it = m_map.crbegin(); - if (it == m_map.rend()) return 0; + if (it == m_map.crend()) return 0; indexr = it->first; return 1; } @@ -1077,7 +1077,7 @@ public: template VlQueue find_first(Func with_func) const { const auto it - = std::find_if(m_map.begin(), m_map.end(), [=](const std::pair& i) { + = std::find_if(m_map.cbegin(), m_map.cend(), [=](const std::pair& i) { return with_func(i.first, i.second); }); if (it == m_map.end()) return VlQueue{}; @@ -1086,7 +1086,7 @@ public: template VlQueue find_first_index(Func with_func) const { const auto it - = std::find_if(m_map.begin(), m_map.end(), [=](const std::pair& i) { + = std::find_if(m_map.cbegin(), m_map.cend(), [=](const std::pair& i) { return with_func(i.first, i.second); }); if (it == m_map.end()) return VlQueue{}; @@ -1094,19 +1094,17 @@ public: } template VlQueue find_last(Func with_func) const { - const auto it - = std::find_if(m_map.rbegin(), m_map.rend(), [=](const std::pair& i) { - return with_func(i.first, i.second); - }); + const auto it = std::find_if( + m_map.crbegin(), m_map.crend(), + [=](const std::pair& i) { return with_func(i.first, i.second); }); if (it == m_map.rend()) return VlQueue{}; return VlQueue::cons(it->second); } template VlQueue find_last_index(Func with_func) const { - const auto it - = std::find_if(m_map.rbegin(), m_map.rend(), [=](const std::pair& i) { - return with_func(i.first, i.second); - }); + const auto it = std::find_if( + m_map.crbegin(), m_map.crend(), + [=](const std::pair& i) { return with_func(i.first, i.second); }); if (it == m_map.rend()) return VlQueue{}; return VlQueue::cons(it->first); } @@ -1115,7 +1113,7 @@ public: VlQueue min() const { if (m_map.empty()) return VlQueue(); const auto it = std::min_element( - m_map.begin(), m_map.end(), + m_map.cbegin(), m_map.cend(), [](const std::pair& a, const std::pair& b) { return a.second < b.second; }); @@ -1125,7 +1123,7 @@ public: VlQueue min(Func with_func) const { if (m_map.empty()) return VlQueue(); const auto it = std::min_element( - m_map.begin(), m_map.end(), + m_map.cbegin(), m_map.cend(), [&with_func](const std::pair& a, const std::pair& b) { return with_func(a.first, a.second) < with_func(b.first, b.second); }); @@ -1134,7 +1132,7 @@ public: VlQueue max() const { if (m_map.empty()) return VlQueue(); const auto it = std::max_element( - m_map.begin(), m_map.end(), + m_map.cbegin(), m_map.cend(), [](const std::pair& a, const std::pair& b) { return a.second < b.second; }); @@ -1144,7 +1142,7 @@ public: VlQueue max(Func with_func) const { if (m_map.empty()) return VlQueue(); const auto it = std::max_element( - m_map.begin(), m_map.end(), + m_map.cbegin(), m_map.cend(), [&with_func](const std::pair& a, const std::pair& b) { return with_func(a.first, a.second) < with_func(b.first, b.second); }); @@ -1164,36 +1162,36 @@ public: } T_Value r_product() const { if (m_map.empty()) return T_Value(0); - auto it = m_map.begin(); + auto it = m_map.cbegin(); T_Value out{it->second}; ++it; - for (; it != m_map.end(); ++it) out *= it->second; + for (; it != m_map.cend(); ++it) out *= it->second; return out; } template T_Value r_product(Func with_func) const { if (m_map.empty()) return T_Value(0); - auto it = m_map.begin(); + auto it = m_map.cbegin(); T_Value out{with_func(it->first, it->second)}; ++it; - for (; it != m_map.end(); ++it) out *= with_func(it->first, it->second); + for (; it != m_map.cend(); ++it) out *= with_func(it->first, it->second); return out; } T_Value r_and() const { if (m_map.empty()) return T_Value(0); - auto it = m_map.begin(); + auto it = m_map.cbegin(); T_Value out{it->second}; ++it; - for (; it != m_map.end(); ++it) out &= it->second; + for (; it != m_map.cend(); ++it) out &= it->second; return out; } template T_Value r_and(Func with_func) const { if (m_map.empty()) return T_Value(0); - auto it = m_map.begin(); + auto it = m_map.cbegin(); T_Value out{with_func(it->first, it->second)}; ++it; - for (; it != m_map.end(); ++it) out &= with_func(it->first, it->second); + for (; it != m_map.cend(); ++it) out &= with_func(it->first, it->second); return out; } T_Value r_or() const { diff --git a/src/V3EmitMk.cpp b/src/V3EmitMk.cpp index 6d00e3997..12b049d10 100644 --- a/src/V3EmitMk.cpp +++ b/src/V3EmitMk.cpp @@ -339,7 +339,7 @@ class EmitMkHierVerilation final { const V3HierBlockPlan::HierVector blocks = m_planp->hierBlocksSorted(); // leaf comes first // List in order of leaf-last order so that linker can resolve dependency - for (auto& block : vlstd::reverse_view(blocks)) { + for (const auto& block : vlstd::reverse_view(blocks)) { of.puts("\t" + block->hierLib(true) + " \\\n"); } of.puts("\n"); diff --git a/src/V3Graph.cpp b/src/V3Graph.cpp index 8b7c9cf08..fe425151b 100644 --- a/src/V3Graph.cpp +++ b/src/V3Graph.cpp @@ -394,7 +394,7 @@ void V3Graph::dumpDotFile(const string& filename, bool colorAsSubgraph) const { } // Print ranks - for (auto dotRank : ranks) { + for (const auto& dotRank : ranks) { *logp << "\t{ rank="; if (dotRank != "sink" && dotRank != "source" && dotRank != "min" && dotRank != "max") { *logp << "same"; diff --git a/src/V3Simulate.h b/src/V3Simulate.h index 77d441c2a..4648dbc19 100644 --- a/src/V3Simulate.h +++ b/src/V3Simulate.h @@ -1253,7 +1253,7 @@ public: } ~SimulateVisitor() override { for (const auto& pair : m_constps) { - for (AstConst* const constp : pair.second) { delete constp; } + for (AstConst* const constp : pair.second) delete constp; } m_constps.clear(); for (AstNode* ip : m_reclaimValuesp) delete ip; diff --git a/src/V3VariableOrder.cpp b/src/V3VariableOrder.cpp index 2514b88de..9c00de7b5 100644 --- a/src/V3VariableOrder.cpp +++ b/src/V3VariableOrder.cpp @@ -107,7 +107,7 @@ class VariableOrder final { void tspSortVars(std::vector& varps) { // Map from "MTask affinity" -> "variable list" std::map> m2v; - for (AstVar* const varp : varps) { m2v[varp->mtaskIds()].push_back(varp); } + for (AstVar* const varp : varps) m2v[varp->mtaskIds()].push_back(varp); // Create a TSP sort state for each unique MTaskIdSet, except for the empty set V3TSP::StateVec states; @@ -125,7 +125,7 @@ class VariableOrder final { // Helper function to sort given vector, then append to 'varps' const auto sortAndAppend = [this, &varps](std::vector& subVarps) { simpleSortVars(subVarps); - for (AstVar* const varp : subVarps) { varps.push_back(varp); } + for (AstVar* const varp : subVarps) varps.push_back(varp); }; // Enumerate by sorted MTaskIdSet, sort within the set separately