Commit 3535c4b3b6
Changed files (2)
src
test
behavior
src/Sema.zig
@@ -33069,7 +33069,7 @@ fn elemPtrType(sema: *Sema, ptr_ty: Type, offset: ?usize) !Type {
host_size: u16 = 0,
alignment: u32 = 0,
vector_index: VI = .none,
- } = if (parent_ty.tag() == .vector) blk: {
+ } = if (parent_ty.tag() == .vector and ptr_info.size == .One) blk: {
const elem_bits = elem_ty.bitSize(target);
if (elem_bits == 0) break :blk .{};
const is_packed = elem_bits < 8 or !std.math.isPowerOfTwo(elem_bits);
test/behavior/vector.zig
@@ -1261,3 +1261,19 @@ test "store packed vector element" {
v[0] = 0;
try expectEqual(@Vector(4, u1){ 0, 1, 1, 1 }, v);
}
+
+test "store to vector in slice" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ var v = [_]@Vector(3, f32){
+ .{ 1, 1, 1 },
+ .{ 0, 0, 0 },
+ };
+ var s: []@Vector(3, f32) = &v;
+ var i: usize = 1;
+ s[i] = s[0];
+ try expectEqual(v[1], v[0]);
+}