Skip to content
This repository was archived by the owner on Nov 22, 2025. It is now read-only.

Commit 423460c

Browse files
committed
fix non-deterministic results when minimizing
1 parent 53c830e commit 423460c

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/main.zig

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ const Merger = struct {
263263
}
264264

265265
fn minimize(m: *Merger, writer: anytype) !void {
266-
var symbols_by_name = std.StringHashMap(std.ArrayList(Symbol)).init(m.arena);
266+
var symbols_by_name = std.StringArrayHashMap(std.ArrayList(Symbol)).init(m.arena);
267267
for (m.all_symbols.items) |symbol| {
268268
const gop = try symbols_by_name.getOrPut(symbol.identifier);
269269
if (!gop.found_existing) {
@@ -272,9 +272,8 @@ const Merger = struct {
272272
try gop.value_ptr.append(symbol);
273273
}
274274

275-
var it = symbols_by_name.iterator();
276-
while (it.next()) |entry| {
277-
const first = entry.value_ptr.items[0];
275+
for (symbols_by_name.values()) |symbols| {
276+
const first = symbols.items[0];
278277

279278
std.debug.print("minimizing boolean expression for symbol '{s}'\n", .{first.identifier});
280279

@@ -286,7 +285,7 @@ const Merger = struct {
286285
index: u16,
287286
def: NamedDefine,
288287
}).init(m.arena);
289-
for (entry.value_ptr.items) |symbol| {
288+
for (symbols.items) |symbol| {
290289
for (symbol.clauses.conjunctives) |conj| {
291290
for (conj) |def| {
292291
const name = switch (def.define) {
@@ -318,7 +317,7 @@ const Merger = struct {
318317
try in_writer.print("OUTORDER = {s};\n", .{out_label});
319318

320319
try in_writer.print("{s} = ", .{out_label});
321-
for (entry.value_ptr.items, 0..) |symbol, i| {
320+
for (symbols.items, 0..) |symbol, i| {
322321
for (symbol.clauses.conjunctives, 0..) |conj, k| {
323322
for (conj, 0..) |def, j| {
324323
const name = switch (def.define) {
@@ -343,7 +342,7 @@ const Merger = struct {
343342
try in_writer.print(" & ", .{});
344343
}
345344
}
346-
if (entry.value_ptr.items.len > 1 and i < entry.value_ptr.items.len - 1) {
345+
if (symbols.items.len > 1 and i < symbols.items.len - 1) {
347346
try in_writer.print(" | ", .{});
348347
}
349348
}

0 commit comments

Comments
 (0)