mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
ng_violet: fix non-det in lookForCleanEarlySplits
This commit is contained in:
parent
d119dd95fd
commit
c58d9d04a1
@ -2529,12 +2529,19 @@ bool lookForCleanSplit(const NGHolder &h, const vector<RoseInEdge> &ee,
|
|||||||
static
|
static
|
||||||
void lookForCleanEarlySplits(RoseInGraph &vg, const CompileContext &cc) {
|
void lookForCleanEarlySplits(RoseInGraph &vg, const CompileContext &cc) {
|
||||||
u32 gen = 0;
|
u32 gen = 0;
|
||||||
set<RoseInVertex> prev = {getStart(vg)};
|
|
||||||
|
vector<RoseInVertex> prev = {getStart(vg)};
|
||||||
|
|
||||||
while (gen < MAX_DESIRED_CLEAN_SPLIT_DEPTH) {
|
while (gen < MAX_DESIRED_CLEAN_SPLIT_DEPTH) {
|
||||||
set<RoseInVertex> curr;
|
/* collect vertices in edge order for determinism */
|
||||||
|
vector<RoseInVertex> curr;
|
||||||
|
set<RoseInVertex> curr_seen;
|
||||||
for (RoseInVertex u : prev) {
|
for (RoseInVertex u : prev) {
|
||||||
insert(&curr, adjacent_vertices(u, vg));
|
for (auto v : adjacent_vertices_range(u, vg)) {
|
||||||
|
if (curr_seen.insert(v).second) {
|
||||||
|
curr.push_back(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
map<const NGHolder *, vector<RoseInEdge>> rightfixes;
|
map<const NGHolder *, vector<RoseInEdge>> rightfixes;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user