authorgravatar for yujiri@disroot.orgEvin Yulo <yujiri@disroot.org> 2023-05-22 15:45:39-04:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-05-29 13:01:11+03:00
log235b776d619d64dee62fc88e85bd53421cce37f7
tree8804f7c206a0f7f0f34f215a6a5e149305b75812
parentab37ab33ce94b4fb6536bcc2f3981c0cc257c9f0

fix #15778: Binary operations on empty vectors crash


3 files changed, 27 insertions(+), 0 deletions(-)

src/value.zig+1
......@@ -2208,6 +2208,7 @@ pub const Value = extern union {
22082208 }
22092209 return true;
22102210 },
2211 .empty_array => return true,
22112212 .str_lit => {
22122213 const str_lit = lhs.castTag(.str_lit).?.data;
22132214 const bytes = mod.string_literal_bytes.items[str_lit.index..][0..str_lit.len];
test/behavior.zig+1
......@@ -142,6 +142,7 @@ test {
142142 _ = @import("behavior/bugs/13714.zig");
143143 _ = @import("behavior/bugs/13785.zig");
144144 _ = @import("behavior/bugs/14854.zig");
145 _ = @import("behavior/bugs/15778.zig");
145146 _ = @import("behavior/byteswap.zig");
146147 _ = @import("behavior/byval_arg_var.zig");
147148 _ = @import("behavior/call.zig");
test/behavior/bugs/15778.zig created+25
......@@ -0,0 +1,25 @@
1const builtin = @import("builtin");
2
3test {
4 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
10 const a = @Vector(0, i32){};
11 const b = @Vector(0, i32){};
12 _ = a + b;
13}
14
15test {
16 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
22 const a = @Vector(0, f32){};
23 const b = @Vector(0, f32){};
24 _ = a - b;
25}