refactor bool to void setDistinctTops setDistinctRoseTops

setDistinctSuffixTops
This commit is contained in:
gtsoul-tech 2024-05-01 15:21:36 +03:00
parent ea420114a7
commit 389b55c647
3 changed files with 11 additions and 16 deletions

View File

@ -1687,7 +1687,7 @@ void replaceTops(NGHolder &h, const map<u32, u32> &top_mapping) {
} }
static static
bool setDistinctTops(NGHolder &h1, const NGHolder &h2, void setDistinctTops(NGHolder &h1, const NGHolder &h2,
map<u32, u32> &top_mapping) { map<u32, u32> &top_mapping) {
flat_set<u32> tops1 = getTops(h1), tops2 = getTops(h2); flat_set<u32> tops1 = getTops(h1), tops2 = getTops(h2);
@ -1697,7 +1697,7 @@ bool setDistinctTops(NGHolder &h1, const NGHolder &h2,
// If our tops don't intersect, we're OK to merge with no changes. // If our tops don't intersect, we're OK to merge with no changes.
if (!has_intersection(tops1, tops2)) { if (!has_intersection(tops1, tops2)) {
DEBUG_PRINTF("tops don't intersect\n"); DEBUG_PRINTF("tops don't intersect\n");
return true; return ;
} }
// Otherwise, we have to renumber the tops in h1 so that they don't overlap // Otherwise, we have to renumber the tops in h1 so that they don't overlap
@ -1712,17 +1712,17 @@ bool setDistinctTops(NGHolder &h1, const NGHolder &h2,
} }
replaceTops(h1, top_mapping); replaceTops(h1, top_mapping);
return true; return ;
} }
bool setDistinctRoseTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2, void setDistinctRoseTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2,
const deque<RoseVertex> &verts1) { const deque<RoseVertex> &verts1) {
map<u32, u32> top_mapping; map<u32, u32> top_mapping;
setDistinctTops(h1, h2, top_mapping); setDistinctTops(h1, h2, top_mapping);
if (top_mapping.empty()) { if (top_mapping.empty()) {
return true; // No remapping necessary. return ; // No remapping necessary.
} }
for (auto v : verts1) { for (auto v : verts1) {
@ -1740,17 +1740,17 @@ bool setDistinctRoseTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2,
} }
} }
return true; return ;
} }
static static
bool setDistinctSuffixTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2, void setDistinctSuffixTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2,
const deque<RoseVertex> &verts1) { const deque<RoseVertex> &verts1) {
map<u32, u32> top_mapping; map<u32, u32> top_mapping;
setDistinctTops(h1, h2, top_mapping); setDistinctTops(h1, h2, top_mapping);
if (top_mapping.empty()) { if (top_mapping.empty()) {
return true; // No remapping necessary. return ; // No remapping necessary.
} }
for (auto v : verts1) { for (auto v : verts1) {
@ -1760,7 +1760,7 @@ bool setDistinctSuffixTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2,
g[v].suffix.top = top_mapping[t]; g[v].suffix.top = top_mapping[t];
} }
return true; return ;
} }
/** \brief Estimate the number of accel states in the given graph when built as /** \brief Estimate the number of accel states in the given graph when built as

View File

@ -62,7 +62,7 @@ bool mergeableRoseVertices(const RoseBuildImpl &tbi, RoseVertex u,
bool mergeableRoseVertices(const RoseBuildImpl &tbi, bool mergeableRoseVertices(const RoseBuildImpl &tbi,
const std::set<RoseVertex> &v1, const std::set<RoseVertex> &v1,
const std::set<RoseVertex> &v2); const std::set<RoseVertex> &v2);
bool setDistinctRoseTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2, void setDistinctRoseTops(RoseGraph &g, NGHolder &h1, const NGHolder &h2,
const std::deque<RoseVertex> &verts1); const std::deque<RoseVertex> &verts1);
} // namespace ue2 } // namespace ue2

View File

@ -1294,12 +1294,7 @@ bool attemptRoseGraphMerge(RoseBuildImpl &build, bool preds_same, RoseVertex a,
DEBUG_PRINTF("victim %zu states\n", num_vertices(*a_h)); DEBUG_PRINTF("victim %zu states\n", num_vertices(*a_h));
DEBUG_PRINTF("winner %zu states\n", num_vertices(*b_h)); DEBUG_PRINTF("winner %zu states\n", num_vertices(*b_h));
setDistinctRoseTops(g, victim, *b_h, deque<RoseVertex>(1, a));
if (!setDistinctRoseTops(g, victim, *b_h, deque<RoseVertex>(1, a))) {
assert(roseHasTops(build, a));
assert(roseHasTops(build, b));
return false;
}
assert(victim.kind == b_h->kind); assert(victim.kind == b_h->kind);
assert(!generates_callbacks(*b_h)); assert(!generates_callbacks(*b_h));