From 235b776d619d64dee62fc88e85bd53421cce37f7 Mon Sep 17 00:00:00 2001 From: Evin Yulo Date: Mon, 22 May 2023 15:45:39 -0400 Subject: [PATCH] fix #15778: Binary operations on empty vectors crash --- src/value.zig | 1 + test/behavior.zig | 1 + test/behavior/bugs/15778.zig | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 test/behavior/bugs/15778.zig diff --git a/src/value.zig b/src/value.zig index 613c3d9ca6..b18ba3d834 100644 --- a/src/value.zig +++ b/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]; diff --git a/test/behavior.zig b/test/behavior.zig index 34783ce2e1..bdc3f30ede 100644 --- a/test/behavior.zig +++ 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"); diff --git a/test/behavior/bugs/15778.zig b/test/behavior/bugs/15778.zig new file mode 100644 index 0000000000..86b9fce7b6 --- /dev/null +++ b/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; +}