next batch

This commit is contained in:
G.E 2024-05-17 10:44:28 +03:00
parent c482c05fa8
commit f2cecfd0e2
20 changed files with 98 additions and 0 deletions

View File

@ -262,6 +262,7 @@ bool findMaskLiterals(const vector<CharReach> &mask, vector<ue2_literal> *lit,
// Candidates have been expanded in reverse order.
for (auto &cand : candidates) {
// cppcheck-suppress useStlAlgorithm
cand = reverse_literal(cand);
}
@ -443,7 +444,9 @@ bool maskIsNeeded(const ue2_literal &lit, const NGHolder &g) {
curr.swap(next);
}
// cppcheck-suppress useStlAlgorithm
for (auto v : curr) {
// cppcheck-suppress useStlAlgorithm
for (auto u : inv_adjacent_vertices_range(v, g)) {
if (u == g.start || u == g.startDs) {
DEBUG_PRINTF("literal spans graph from start to accept\n");

View File

@ -158,9 +158,11 @@ void mergeAnchoredDfas(vector<unique_ptr<raw_dfa>> &dfas,
// Rehome our groups into one vector.
for (auto &rdfa : small_starts) {
// cppcheck-suppress useStlAlgorithm
dfas.emplace_back(std::move(rdfa));
}
for (auto &rdfa : big_starts) {
// cppcheck-suppress useStlAlgorithm
dfas.emplace_back(std::move(rdfa));
}
@ -784,6 +786,7 @@ vector<unique_ptr<raw_dfa>> getAnchoredDfas(RoseBuildImpl &build,
// DFAs that already exist as raw_dfas.
for (auto &anch_dfas : build.anchored_nfas) {
for (auto &rdfa : anch_dfas.second) {
// cppcheck-suppress useStlAlgorithm
dfas.emplace_back(std::move(rdfa));
}
}

View File

@ -208,6 +208,7 @@ u32 countRosePrefixes(const vector<LeftNfaInfo> &roses) {
u32 num = 0;
for (const auto &r : roses) {
if (!r.infix) {
// cppcheck-suppress useStlAlgorithm
num++;
}
}
@ -242,6 +243,7 @@ bool needsCatchup(const RoseBuildImpl &build) {
const RoseGraph &g = build.g;
// cppcheck-suppress useStlAlgorithm
for (auto v : vertices_range(g)) {
if (g[v].suffix) {
/* TODO: check that they have non-eod reports */
@ -304,6 +306,7 @@ bool isPureFloating(const RoseResources &resources, const CompileContext &cc) {
static
bool isSingleOutfix(const RoseBuildImpl &tbi) {
// cppcheck-suppress useStlAlgorithm
for (auto v : vertices_range(tbi.g)) {
if (tbi.isAnyStart(v)) {
continue;
@ -986,6 +989,7 @@ bool checkSuitableForEager(bool is_prefix, const left_id &left,
return false;
}
// cppcheck-suppress useStlAlgorithm
for (RoseVertex s : succs) {
if (build.isInETable(s)
|| contains(rg[s].literals, build.eod_event_literal_id)) {
@ -1599,6 +1603,7 @@ void findSuffixTriggers(const RoseBuildImpl &tbi,
static
bool hasNonSmallBlockOutfix(const vector<OutfixInfo> &outfixes) {
// cppcheck-suppress useStlAlgorithm
for (const auto &out : outfixes) {
if (!out.in_sbmatcher) {
return true;
@ -1948,6 +1953,7 @@ bool buildSuffixes(const RoseBuildImpl &tbi, build_context &bc,
// order.
vector<pair<u32, suffix_id>> ordered;
for (const auto &e : bc.suffixes) {
// cppcheck-suppress useStlAlgorithm
ordered.emplace_back(e.second, e.first);
}
sort(begin(ordered), end(ordered));
@ -2294,6 +2300,7 @@ u32 buildEodNfaIterator(build_context &bc, const u32 activeQueueCount) {
static
bool hasMpvTrigger(const set<u32> &reports, const ReportManager &rm) {
// cppcheck-suppress useStlAlgorithm
for (u32 r : reports) {
if (rm.getReport(r).type == INTERNAL_ROSE_CHAIN) {
return true;
@ -2324,6 +2331,7 @@ bool anyEndfixMpvTriggers(const RoseBuildImpl &build) {
}
/* outfixes */
// cppcheck-suppress useStlAlgorithm
for (const auto &out : build.outfixes) {
if (hasMpvTrigger(all_reports(out), build.rm)) {
return true;
@ -2607,6 +2615,7 @@ unordered_map<RoseVertex, u32> assignStateIndices(const RoseBuildImpl &build) {
// eagerly-reported EOD vertices.
bool needs_state_index = false;
for (const auto &e : out_edges_range(v, g)) {
// cppcheck-suppress useStlAlgorithm
if (!canEagerlyReportAtEod(build, e)) {
needs_state_index = true;
break;
@ -2797,6 +2806,7 @@ bool isUsedLiteral(const RoseBuildImpl &build, u32 lit_id) {
return true;
}
// cppcheck-suppress useStlAlgorithm
for (const u32 &delayed_id : info.delayed_ids) {
assert(delayed_id < build.literal_info.size());
const rose_literal_info &delayed_info = build.literal_info[delayed_id];
@ -3225,6 +3235,7 @@ pair<u32, u32> buildReportPrograms(const RoseBuildImpl &build,
static
bool hasEodAnchoredSuffix(const RoseBuildImpl &build) {
const RoseGraph &g = build.g;
// cppcheck-suppress useStlAlgorithm
for (auto v : vertices_range(g)) {
if (g[v].suffix && build.isInETable(v)) {
DEBUG_PRINTF("vertex %zu is in eod table and has a suffix\n",
@ -3238,6 +3249,7 @@ bool hasEodAnchoredSuffix(const RoseBuildImpl &build) {
static
bool hasEodMatcher(const RoseBuildImpl &build) {
const RoseGraph &g = build.g;
// cppcheck-suppress useStlAlgorithm
for (auto v : vertices_range(g)) {
if (build.isInETable(v)) {
DEBUG_PRINTF("vertex %zu is in eod table\n", g[v].index);

View File

@ -130,6 +130,7 @@ vector<rose_literal_id> literals_for_vertex(const RoseBuildImpl &tbi,
vector<rose_literal_id> rv;
for (const u32 id : tbi.g[v].literals) {
// cppcheck-suppress useStlAlgorithm
rv.emplace_back(tbi.literals.at(id));
}

View File

@ -96,6 +96,7 @@ bool limited_explosion(const ue2_literal &s) {
for (const auto &e : s) {
if (e.nocase) {
// cppcheck-suppress useStlAlgorithm
nc_count++;
}
}
@ -268,6 +269,7 @@ bool RoseBuildImpl::isPseudoStarOrFirstOnly(const RoseEdge &e) const {
}
bool RoseBuildImpl::hasOnlyPseudoStarInEdges(RoseVertex v) const {
// cppcheck-suppress useStlAlgorithm
for (const auto &e : in_edges_range(v, g)) {
if (!isPseudoStar(e)) {
return false;
@ -413,6 +415,7 @@ bool RoseBuildImpl::isDirectReport(u32 id) const {
}
// Use the program to handle cases that aren't external reports.
// cppcheck-suppress useStlAlgorithm
for (const ReportID &rid : g[v].reports) {
if (!isExternalReport(rm.getReport(rid))) {
return false;
@ -451,6 +454,7 @@ bool RoseBuildImpl::isDirectReport(u32 id) const {
* larger than avoiding running an eod table over the last N bytes. */
static
bool checkFloatingKillableByPrefixes(const RoseBuildImpl &tbi) {
// cppcheck-suppress useStlAlgorithm
for (auto v : vertices_range(tbi.g)) {
if (!tbi.isRootSuccessor(v)) {
continue;
@ -699,6 +703,7 @@ bool suitableForAnchored(const RoseBuildImpl &tbi, const rose_literal_id &l_id,
return false;
}
// cppcheck-suppress useStlAlgorithm
for (auto w : adjacent_vertices_range(v, g)) {
if (!g[w].eod_accept) {
DEBUG_PRINTF("non eod accept literal\n");
@ -771,6 +776,7 @@ bool RoseBuildImpl::isDelayed(u32 id) const {
}
bool RoseBuildImpl::hasDelayedLiteral(RoseVertex v) const {
// cppcheck-suppress useStlAlgorithm
for (u32 lit_id : g[v].literals) {
if (literals.at(lit_id).delay) {
return true;
@ -781,6 +787,7 @@ bool RoseBuildImpl::hasDelayedLiteral(RoseVertex v) const {
}
bool RoseBuildImpl::hasDelayPred(RoseVertex v) const {
// cppcheck-suppress useStlAlgorithm
for (auto u : inv_adjacent_vertices_range(v, g)) {
if (hasDelayedLiteral(u)) {
return true;
@ -791,6 +798,7 @@ bool RoseBuildImpl::hasDelayPred(RoseVertex v) const {
}
bool RoseBuildImpl::hasAnchoredTablePred(RoseVertex v) const {
// cppcheck-suppress useStlAlgorithm
for (auto u : inv_adjacent_vertices_range(v, g)) {
if (isAnchored(u)) {
return true;
@ -956,6 +964,7 @@ bool reduceTopTriggerLoad(RoseBuildImpl &build, NGHolder &h, RoseVertex u) {
u32 new_top = ~0U;
/* check if there is already a top with the right the successor set */
for (const auto &elem : h_top_info) {
// cppcheck-suppress useStlAlgorithm
if (elem.second == edges_to_trigger) {
new_top = elem.first;
break;
@ -1497,6 +1506,7 @@ bool extractSEPLiterals(const raw_dfa &rdfa,
CharReach cr;
for (const auto &sym : symbols) {
// cppcheck-suppress useStlAlgorithm
cr |= reach[sym];
}
@ -1522,6 +1532,7 @@ bool extractSEPLiterals(const OutfixInfo &outfix, const ReportManager &rm,
return false;
}
// cppcheck-suppress useStlAlgorithm
for (const auto &report_id : all_reports(outfix)) {
const auto &report = rm.getReport(report_id);
if (!isSimpleExhaustible(report)) {
@ -1556,6 +1567,7 @@ void addAnchoredSmallBlockLiterals(RoseBuildImpl &tbi) {
// literals are direct reports (i.e. leaf nodes in the Rose graph).
for (const set<u32> &lits : tbi.anchored_simple | map_values) {
for (u32 lit_id : lits) {
// cppcheck-suppress useStlAlgorithm
if (!tbi.isDirectReport(lit_id)) {
DEBUG_PRINTF("not all anchored lits are direct reports\n");
return;

View File

@ -307,6 +307,7 @@ bool RoseDedupeAuxImpl::requiresDedupeSupport(
/* literals */
// cppcheck-suppress useStlAlgorithm
for (const auto &m : lits) {
if (m.second > 1) {
DEBUG_PRINTF("lit %u used by >1 reporting roles\n", m.first);

View File

@ -54,6 +54,7 @@ CharReach getReachability(const NGHolder &h) {
CharReach cr;
for (const auto &v : vertices_range(h)) {
if (!is_special(v, h)) {
// cppcheck-suppress useStlAlgorithm
cr |= h[v].char_reach;
}
}
@ -140,6 +141,7 @@ bool isSuffix(const vector<vector<CharReach>> &triggers1,
const vector<vector<CharReach>> &triggers2) {
// literal suffix test
for (const auto &lit1 : triggers1) {
// cppcheck-suppress useStlAlgorithm
for (const auto &lit2 : triggers2) {
const size_t len = min(lit1.size(), lit2.size());
if (equal(lit1.rbegin(), lit1.rbegin() + len,
@ -240,6 +242,7 @@ bool isExclusive(const NGHolder &h,
// Check if only literal states are on
for (const auto &s : activeStates) {
if ((!is_any_start(s, h) && h[s].index <= num) ||
// cppcheck-suppress useStlAlgorithm
contains(tailId, h[s].index)) {
skipList[id2].insert(id1);
return false;

View File

@ -84,6 +84,7 @@ bool eligibleForAlwaysOnGroup(const RoseBuildImpl &build, u32 id) {
return true;
}
// cppcheck-suppress useStlAlgorithm
for (u32 delayed_id : build.literal_info[id].delayed_ids) {
if (any_of_in(build.literal_info[delayed_id].vertices, eligble)) {
return true;
@ -130,6 +131,7 @@ rose_group calcLocalGroup(const RoseVertex v, const RoseGraph &g,
for (auto w : adjacent_vertices_range(u, g)) {
if (!small_literal_count || g[v].left == g[w].left) {
for (u32 lit_id : g[w].literals) {
// cppcheck-suppress useStlAlgorithm
local_group |= literal_info[lit_id].group_mask;
}
} else {
@ -409,6 +411,7 @@ rose_group RoseBuildImpl::getSuccGroups(RoseVertex start) const {
rose_group initialGroups = 0;
for (auto v : adjacent_vertices_range(start, g)) {
// cppcheck-suppress useStlAlgorithm
initialGroups |= getGroups(v);
}
@ -536,6 +539,7 @@ bool coversGroup(const RoseBuildImpl &build,
rose_group groups = lit_info.group_mask;
while (groups) {
u32 group_id = findAndClearLSB_64(&groups);
// cppcheck-suppress useStlAlgorithm
for (u32 id : build.group_to_literal.at(group_id)) {
DEBUG_PRINTF(" checking against friend %u\n", id);
if (!is_subset_of(build.literal_info[id].vertices,
@ -611,6 +615,7 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */,
}
// Out-edges must have inf max bound, + no other shenanigans */
// cppcheck-suppress useStlAlgorithm
for (const auto &e : out_edges_range(v, g)) {
if (g[e].maxBound != ROSE_BOUND_INF) {
return false;
@ -629,6 +634,7 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */,
}
// Multiple-vertex case
// cppcheck-suppress useStlAlgorithm
for (auto v : lit_info.vertices) {
assert(!build.isAnyStart(v));
@ -650,6 +656,7 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */,
// Out-edges must have inf max bound and not directly lead to another
// vertex with this group, e.g. 'foobar.*foobar'.
// cppcheck-suppress useStlAlgorithm
for (const auto &e : out_edges_range(v, g)) {
if (g[e].maxBound != ROSE_BOUND_INF) {
return false;
@ -660,6 +667,7 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */,
return false; /* is an infix rose trigger */
}
// cppcheck-suppress useStlAlgorithm
for (u32 lit_id : g[t].literals) {
if (build.literal_info[lit_id].group_mask &
lit_info.group_mask) {
@ -671,6 +679,7 @@ bool isGroupSquasher(const RoseBuildImpl &build, const u32 id /* literal id */,
// In-edges must all be dot-stars with no overlap at all, as overlap
// also causes history to be used.
/* Different tables are already forbidden by previous checks */
// cppcheck-suppress useStlAlgorithm
for (const auto &e : in_edges_range(v, g)) {
if (!(g[e].minBound == 0 && g[e].maxBound == ROSE_BOUND_INF)) {
return false;

View File

@ -347,6 +347,7 @@ private:
static
bool isFloodProne(const map<s32, CharReach> &look, const CharReach &flood_cr) {
// cppcheck-suppress useStlAlgorithm
for (const auto &m : look) {
const CharReach &look_cr = m.second;
if (!overlaps(look_cr, flood_cr)) {
@ -365,6 +366,7 @@ bool isFloodProne(const map<s32, CharReach> &look,
return false;
}
// cppcheck-suppress useStlAlgorithm
for (const CharReach &flood_cr : flood_reach) {
if (isFloodProne(look, flood_cr)) {
return true;
@ -748,6 +750,7 @@ bool getTransientPrefixReach(const NGHolder &g, ReportID report, u32 lag,
assert(!is_special(v, g));
for (auto u : inv_adjacent_vertices_range(v, g)) {
// cppcheck-suppress useStlAlgorithm
if (u == g.start || u == g.startDs) {
curr[idx] = g.startDs;
break;

View File

@ -490,6 +490,7 @@ bool isNoRunsVertex(const RoseBuildImpl &build, RoseVertex u) {
return false;
}
// cppcheck-suppress useStlAlgorithm
for (const auto &oe : out_edges_range(u, g)) {
RoseVertex v = target(oe, g);
if (g[oe].maxBound != ROSE_BOUND_INF) {
@ -532,6 +533,7 @@ bool isNoRunsLiteral(const RoseBuildImpl &build, const u32 id,
}
// Undelayed vertices.
// cppcheck-suppress useStlAlgorithm
for (RoseVertex v : info.vertices) {
if (!isNoRunsVertex(build, v)) {
return false;
@ -543,6 +545,7 @@ bool isNoRunsLiteral(const RoseBuildImpl &build, const u32 id,
assert(d < build.literal_info.size());
const rose_literal_info &delayed_info = build.literal_info.at(d);
assert(delayed_info.undelayed_id == id);
// cppcheck-suppress useStlAlgorithm
for (RoseVertex v : delayed_info.vertices) {
if (!isNoRunsVertex(build, v)) {
return false;

View File

@ -582,6 +582,7 @@ bool compatibleLiteralsForMerge(
}
// We don't handle delayed cases yet.
// cppcheck-suppress useStlAlgorithm
for (const auto &ue : ulits) {
const rose_literal_id &ul = *ue.first;
if (ul.delay) {
@ -589,6 +590,7 @@ bool compatibleLiteralsForMerge(
}
}
// cppcheck-suppress useStlAlgorithm
for (const auto &ve : vlits) {
const rose_literal_id &vl = *ve.first;
if (vl.delay) {
@ -601,10 +603,12 @@ bool compatibleLiteralsForMerge(
checked its status at offset X and X > Y). If we can not establish that
the literals used for triggering will satisfy this property, then it is
not safe to merge the engine. */
// cppcheck-suppress useStlAlgorithm
for (const auto &ue : ulits) {
const rose_literal_id &ul = *ue.first;
u32 ulag = ue.second;
// cppcheck-suppress useStlAlgorithm
for (const auto &ve : vlits) {
const rose_literal_id &vl = *ve.first;
u32 vlag = ve.second;
@ -743,6 +747,7 @@ bool mergeableRoseVertices(const RoseBuildImpl &tbi, RoseVertex u,
vector<pair<const rose_literal_id *, u32>> ulits;
ulits.reserve(tbi.g[u].literals.size());
for (u32 id : tbi.g[u].literals) {
// cppcheck-suppress useStlAlgorithm
ulits.emplace_back(&tbi.literals.at(id), ulag);
}
@ -750,6 +755,7 @@ bool mergeableRoseVertices(const RoseBuildImpl &tbi, RoseVertex u,
vector<pair<const rose_literal_id *, u32>> vlits;
vlits.reserve(tbi.g[v].literals.size());
for (u32 id : tbi.g[v].literals) {
// cppcheck-suppress useStlAlgorithm
vlits.emplace_back(&tbi.literals.at(id), vlag);
}
@ -820,6 +826,7 @@ bool checkPredDelays(const RoseBuildImpl &build, const VertexCont &v1,
vector<const rose_literal_id *> pred_rose_lits;
pred_rose_lits.reserve(pred_lits.size());
for (const auto &p : pred_lits) {
// cppcheck-suppress useStlAlgorithm
pred_rose_lits.emplace_back(&build.literals.at(p));
}
@ -885,6 +892,7 @@ bool mergeableRoseVertices(const RoseBuildImpl &tbi,
u32 ulag = tbi.g[a].left.lag;
for (u32 id : tbi.g[a].literals) {
// cppcheck-suppress useStlAlgorithm
ulits.emplace_back(&tbi.literals.at(id), ulag);
}
}
@ -897,6 +905,7 @@ bool mergeableRoseVertices(const RoseBuildImpl &tbi,
u32 vlag = tbi.g[a].left.lag;
for (u32 id : tbi.g[a].literals) {
// cppcheck-suppress useStlAlgorithm
vlits.emplace_back(&tbi.literals.at(id), vlag);
}
}
@ -1050,6 +1059,7 @@ bool checkVerticesOkForLeftfixMerge(const RoseBuildImpl &build,
for (auto a : targets_1) {
u32 ulag = build.g[a].left.lag;
for (u32 id : build.g[a].literals) {
// cppcheck-suppress useStlAlgorithm
ulits.emplace_back(&build.literals.at(id), ulag);
}
}
@ -1058,6 +1068,7 @@ bool checkVerticesOkForLeftfixMerge(const RoseBuildImpl &build,
for (auto a : targets_2) {
u32 vlag = build.g[a].left.lag;
for (u32 id : build.g[a].literals) {
// cppcheck-suppress useStlAlgorithm
vlits.emplace_back(&build.literals.at(id), vlag);
}
}

View File

@ -106,6 +106,7 @@ bool RoseVertexProps::fixedOffset(void) const {
}
bool RoseBuildImpl::isRootSuccessor(const RoseVertex &v) const {
// cppcheck-suppress useStlAlgorithm
for (auto u : inv_adjacent_vertices_range(v, g)) {
if (isAnyStart(u)) {
return true;
@ -115,6 +116,7 @@ bool RoseBuildImpl::isRootSuccessor(const RoseVertex &v) const {
}
bool RoseBuildImpl::isNonRootSuccessor(const RoseVertex &v) const {
// cppcheck-suppress useStlAlgorithm
for (auto u : inv_adjacent_vertices_range(v, g)) {
if (!isAnyStart(u)) {
return true;
@ -124,6 +126,7 @@ bool RoseBuildImpl::isNonRootSuccessor(const RoseVertex &v) const {
}
bool hasAnchHistorySucc(const RoseGraph &g, RoseVertex v) {
// cppcheck-suppress useStlAlgorithm
for (const auto &e : out_edges_range(v, g)) {
if (g[e].history == ROSE_ROLE_HISTORY_ANCH) {
return true;
@ -134,6 +137,7 @@ bool hasAnchHistorySucc(const RoseGraph &g, RoseVertex v) {
}
bool hasLastByteHistorySucc(const RoseGraph &g, RoseVertex v) {
// cppcheck-suppress useStlAlgorithm
for (const auto &e : out_edges_range(v, g)) {
if (g[e].history == ROSE_ROLE_HISTORY_LAST_BYTE) {
return true;
@ -183,6 +187,7 @@ bool RoseBuildImpl::hasLiteralInTable(RoseVertex v,
/* Indicates that the floating table (if it exists) will be only run
conditionally based on matches from the anchored table. */
bool RoseBuildImpl::hasNoFloatingRoots() const {
// cppcheck-suppress useStlAlgorithm
for (auto v : adjacent_vertices_range(root, g)) {
if (isFloating(v)) {
DEBUG_PRINTF("direct floating root %zu\n", g[v].index);
@ -191,6 +196,7 @@ bool RoseBuildImpl::hasNoFloatingRoots() const {
}
/* need to check if the anchored_root has any literals which are too deep */
// cppcheck-suppress useStlAlgorithm
for (auto v : adjacent_vertices_range(anchored_root, g)) {
if (isFloating(v)) {
DEBUG_PRINTF("indirect floating root %zu\n", g[v].index);
@ -208,6 +214,7 @@ size_t RoseBuildImpl::maxLiteralLen(RoseVertex v) const {
size_t maxlen = 0;
for (const auto &lit_id : lit_ids) {
// cppcheck-suppress useStlAlgorithm
maxlen = max(maxlen, literals.at(lit_id).elength());
}
@ -221,6 +228,7 @@ size_t RoseBuildImpl::minLiteralLen(RoseVertex v) const {
size_t minlen = ROSE_BOUND_INF;
for (const auto &lit_id : lit_ids) {
// cppcheck-suppress useStlAlgorithm
minlen = min(minlen, literals.at(lit_id).elength());
}
@ -880,6 +888,7 @@ u32 findMinOffset(const RoseBuildImpl &build, u32 lit_id) {
u32 min_offset = UINT32_MAX;
for (const auto &v : lit_vertices) {
// cppcheck-suppress useStlAlgorithm
min_offset = min(min_offset, build.g[v].min_offset);
}
@ -892,6 +901,7 @@ u32 findMaxOffset(const RoseBuildImpl &build, u32 lit_id) {
u32 max_offset = 0;
for (const auto &v : lit_vertices) {
// cppcheck-suppress useStlAlgorithm
max_offset = max(max_offset, build.g[v].max_offset);
}

View File

@ -292,6 +292,7 @@ void stripCheckHandledInstruction(RoseProgram &prog) {
/** Returns true if the program may read the interpreter's work_done flag */
static
bool reads_work_done_flag(const RoseProgram &prog) {
// cppcheck-suppress useStlAlgorithm
for (const auto &ri : prog) {
if (dynamic_cast<const RoseInstrSquashGroups *>(ri.get())) {
return true;
@ -914,6 +915,7 @@ void makeRoleGroups(const RoseGraph &g, ProgramBuild &prog_build,
assert(in_degree(v, g) > 0);
rose_group already_on = ~rose_group{0};
for (const auto &u : inv_adjacent_vertices_range(v, g)) {
// cppcheck-suppress useStlAlgorithm
already_on &= prog_build.vertex_group_map.at(u);
}
@ -2020,6 +2022,7 @@ bool onlyAtEod(const RoseBuildImpl &tbi, RoseVertex v) {
return false;
}
// cppcheck-suppress useStlAlgorithm
for (const auto &e : out_edges_range(v, g)) {
RoseVertex w = target(e, g);
if (!g[w].eod_accept) {

View File

@ -258,6 +258,7 @@ bool samePredecessors(RoseVertex a, RoseVertex b, const RoseGraph &g) {
return false;
}
// cppcheck-suppress useStlAlgorithm
for (const auto &e_a : in_edges_range(a, g)) {
RoseEdge e = edge(source(e_a, g), b, g);
if (!e || g[e].rose_top != g[e_a].rose_top) {
@ -273,6 +274,7 @@ bool samePredecessors(RoseVertex a, RoseVertex b, const RoseGraph &g) {
static
bool hasCommonSuccWithBadBounds(RoseVertex a, RoseVertex b,
const RoseGraph &g) {
// cppcheck-suppress useStlAlgorithm
for (const auto &e_a : out_edges_range(a, g)) {
if (RoseEdge e = edge(b, target(e_a, g), g)) {
if (g[e_a].maxBound < g[e].minBound
@ -292,6 +294,7 @@ bool hasCommonSuccWithBadBounds(RoseVertex a, RoseVertex b,
static
bool hasCommonPredWithBadBounds(RoseVertex a, RoseVertex b,
const RoseGraph &g) {
// cppcheck-suppress useStlAlgorithm
for (const auto &e_a : in_edges_range(a, g)) {
if (RoseEdge e = edge(source(e_a, g), b, g)) {
if (g[e_a].maxBound < g[e].minBound
@ -328,8 +331,10 @@ bool canMergeLiterals(RoseVertex a, RoseVertex b, const RoseBuildImpl &build) {
}
// Otherwise, all the literals involved must have the same length.
// cppcheck-suppress useStlAlgorithm
for (u32 a_id : lits_a) {
const rose_literal_id &la = build.literals.at(a_id);
// cppcheck-suppress useStlAlgorithm
for (u32 b_id : lits_b) {
const rose_literal_id &lb = build.literals.at(b_id);
@ -699,6 +704,7 @@ bool hasCommonPredWithDiffRoses(RoseVertex a, RoseVertex b,
const bool equal_roses = hasEqualLeftfixes(a, b, g);
// cppcheck-suppress useStlAlgorithm
for (const auto &e_a : in_edges_range(a, g)) {
if (RoseEdge e = edge(source(e_a, g), b, g)) {
DEBUG_PRINTF("common pred, e_r=%d r_t %u,%u\n",
@ -723,6 +729,7 @@ void pruneReportIfUnused(const RoseBuildImpl &build, shared_ptr<NGHolder> h,
DEBUG_PRINTF("trying to prune %u from %p (v %zu)\n", report, h.get(),
verts.size());
for (RoseVertex v : verts) {
// cppcheck-suppress useStlAlgorithm
if (build.g[v].left.graph == h &&
build.g[v].left.leftfix_report == report) {
DEBUG_PRINTF("report %u still in use\n", report);
@ -1942,6 +1949,7 @@ bool hasNoDiamondSiblings(const RoseGraph &g, RoseVertex v) {
if (has_successor(v, g)) {
bool only_succ = true;
for (const auto &w : adjacent_vertices_range(v, g)) {
// cppcheck-suppress useStlAlgorithm
if (in_degree(w, g) > 1) {
only_succ = false;
break;
@ -1958,6 +1966,7 @@ bool hasNoDiamondSiblings(const RoseGraph &g, RoseVertex v) {
bool only_pred = true;
for (const auto &u : inv_adjacent_vertices_range(v, g)) {
// cppcheck-suppress useStlAlgorithm
if (out_degree(u, g) > 1) {
only_pred = false;
break;

View File

@ -44,6 +44,7 @@ namespace ue2 {
static
bool is_end_anchored(const RoseGraph &g, RoseVertex v) {
// cppcheck-suppress useStlAlgorithm
for (auto w : adjacent_vertices_range(v, g)) {
if (g[w].eod_accept) {
return true;

View File

@ -134,6 +134,7 @@ string dumpString(const ue2_literal &lit) {
void upperString(string &s) {
for (auto &c : s) {
// cppcheck-suppress useStlAlgorithm
c = mytoupper(c);
}
}
@ -341,6 +342,7 @@ void make_nocase(ue2_literal *lit) {
ue2_literal rv;
for (const auto &elem: *lit) {
// cppcheck-suppress useStlAlgorithm
rv.push_back(elem.c, ourisalpha(elem.c));
}

View File

@ -727,6 +727,7 @@ double fastestResult(const vector<unique_ptr<ThreadContext>> &threads) {
double best = threads[0]->results[0].seconds;
for (const auto &t : threads) {
for (const auto &r : t->results) {
// cppcheck-suppress useStlAlgorithm
best = min(best, r.seconds);
}
}
@ -737,6 +738,7 @@ static
u64a byte_size(const vector<DataBlock> &corpus_blocks) {
u64a total = 0;
for (const DataBlock &block : corpus_blocks) {
// cppcheck-suppress useStlAlgorithm
total += block.payload.size();
}
@ -757,6 +759,7 @@ void displayResults(const vector<unique_ptr<ThreadContext>> &threads,
// Sanity check: all of our results should have the same match count.
for (const auto &t : threads) {
// cppcheck-suppress useStlAlgorithm
if (!all_of(begin(t->results), end(t->results),
[&matchesPerRun](const ResultEntry &e) {
return e.matches == matchesPerRun;
@ -813,6 +816,7 @@ void displayCsvResults(const vector<unique_ptr<ThreadContext>> &threads,
// Sanity check: all of our results should have the same match count.
for (const auto &t : threads) {
// cppcheck-suppress useStlAlgorithm
if (!all_of(begin(t->results), end(t->results),
[&matchesPerRun](const ResultEntry &e) {
return e.matches == matchesPerRun;
@ -867,6 +871,7 @@ void sqlResults(const vector<unique_ptr<ThreadContext>> &threads,
// Sanity check: all of our results should have the same match count.
for (const auto &t : threads) {
// cppcheck-suppress useStlAlgorithm
if (!all_of(begin(t->results), end(t->results),
[&matchesPerRun](const ResultEntry &e) {
return e.matches == matchesPerRun;

View File

@ -57,6 +57,7 @@ template<typename Graph, typename Range>
vector<size_t> to_indices(const Range &range, const Graph &g) {
vector<size_t> indices;
for (const auto &elem : range) {
// cppcheck-suppress useStlAlgorithm
indices.push_back(g[elem].index);
}
sort(indices.begin(), indices.end());
@ -68,6 +69,7 @@ vector<size_t> to_indices(const std::initializer_list<T> &range,
const Graph &g) {
vector<size_t> indices;
for (const auto &elem : range) {
// cppcheck-suppress useStlAlgorithm
indices.push_back(g[elem].index);
}
sort(indices.begin(), indices.end());

View File

@ -61,6 +61,7 @@ unique_ptr<hs_platform_info> xcompileReadMode(const char *s) {
if (!opt.empty()) {
for (const auto &xcompile : xcompile_options) {
// cppcheck-suppress useStlAlgorithm
if (opt == xcompile.name) {
rv.cpu_features = xcompile.cpu_features;
found_mode = true;

View File

@ -80,11 +80,13 @@ string pathToString(const NGHolder &g, const VertexPath &p) {
/** True if this graph has no non-special successors of start or startDs. */
static
bool graph_is_empty(const NGHolder &g) {
// cppcheck-suppress useStlAlgorithm
for (const auto &v : adjacent_vertices_range(g.start, g)) {
if (!is_special(v, g)) {
return false;
}
}
// cppcheck-suppress useStlAlgorithm
for (const auto &v : adjacent_vertices_range(g.start, g)) {
if (!is_special(v, g)) {
return false;
@ -468,6 +470,7 @@ void CorpusGeneratorUtf8::generateCorpus(vector<string> &data) {
}
for (const auto &e : raw) {
// cppcheck-suppress useStlAlgorithm
data.push_back(encodeUtf8(e));
}
}
@ -545,6 +548,7 @@ CorpusGeneratorUtf8::pathToCorpus(const vector<CodePointSet> &path) {
// Generate a corpus from our path
for (const auto &e : path) {
// cppcheck-suppress useStlAlgorithm
s.push_back(getChar(e));
}