aboutsummaryrefslogtreecommitdiff
path: root/src/compile.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/compile.zig')
-rw-r--r--src/compile.zig7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compile.zig b/src/compile.zig
index c352994..acae7ff 100644
--- a/src/compile.zig
+++ b/src/compile.zig
@@ -84,10 +84,11 @@ pub const Block = struct {
fn init(allocator: Allocator, instrs: []Instr) !Block {
var vreg_last_use: std.AutoHashMap(usize, std.ArrayList(VReg)) = .init(allocator);
for (0.., instrs) |i, instr| {
+ const kv = try vreg_last_use.getOrPut(i);
+ if (!kv.found_existing) kv.value_ptr.* = .init(allocator);
for (instr.sources().slice()) |src| {
- const kv = try vreg_last_use.getOrPut(i);
- if (!kv.found_existing) kv.value_ptr.* = .init(allocator);
- try kv.value_ptr.append(src);
+ if (std.mem.indexOfScalar(VReg, kv.value_ptr.items, src) == null)
+ try kv.value_ptr.append(src);
}
}
return .{