Commit 235b776d61

Evin Yulo <yujiri@disroot.org>
2023-05-22 21:45:39
fix #15778: Binary operations on empty vectors crash
1 parent ab37ab3
Changed files (3)
src
test
behavior
src/value.zig
@@ -2208,6 +2208,7 @@ pub const Value = extern union {
                 }
                 return true;
             },
+            .empty_array => return true,
             .str_lit => {
                 const str_lit = lhs.castTag(.str_lit).?.data;
                 const bytes = mod.string_literal_bytes.items[str_lit.index..][0..str_lit.len];
test/behavior/bugs/15778.zig
@@ -0,0 +1,25 @@
+const builtin = @import("builtin");
+
+test {
+    if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
+    const a = @Vector(0, i32){};
+    const b = @Vector(0, i32){};
+    _ = a + b;
+}
+
+test {
+    if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
+    const a = @Vector(0, f32){};
+    const b = @Vector(0, f32){};
+    _ = a - b;
+}
test/behavior.zig
@@ -142,6 +142,7 @@ test {
     _ = @import("behavior/bugs/13714.zig");
     _ = @import("behavior/bugs/13785.zig");
     _ = @import("behavior/bugs/14854.zig");
+    _ = @import("behavior/bugs/15778.zig");
     _ = @import("behavior/byteswap.zig");
     _ = @import("behavior/byval_arg_var.zig");
     _ = @import("behavior/call.zig");