ng_violet: fix non-det in lookForCleanEarlySplits

This commit is contained in:
Justin Viiret 2016-07-27 11:19:58 +10:00 committed by Matthew Barr
parent d119dd95fd
commit c58d9d04a1

View File

@ -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;