authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-06-01 01:44:39-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-06-10 20:47:58-07:00
log0777e98bfe89eadeaa0e34a2ad07cf61cdf5b26a
tree66a0bf465658a81c55d5b15bd3a9a368fec52b3a
parenta3b3ac0ea482fc76684ee7d0a9b98306ebbd942c

Sema: disable repeated aggregate storage use with mismatching sentinel

The InternPool implementation was not written to support this, but that could be changed and this check removed in the future.

1 files changed, 1 insertions(+), 1 deletions(-)

src/Sema.zig+1-1
...@@ -13094,7 +13094,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -13094,7 +13094,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
13094 const val = v: {13094 const val = v: {
13095 // Optimization for the common pattern of a single element repeated N times, such13095 // Optimization for the common pattern of a single element repeated N times, such
13096 // as zero-filling a byte array.13096 // as zero-filling a byte array.
13097 if (lhs_len == 1) {13097 if (lhs_len == 1 and lhs_info.sentinel == null) {
13098 const elem_val = try lhs_sub_val.elemValue(mod, 0);13098 const elem_val = try lhs_sub_val.elemValue(mod, 0);
13099 break :v try mod.intern(.{ .aggregate = .{13099 break :v try mod.intern(.{ .aggregate = .{
13100 .ty = result_ty.toIntern(),13100 .ty = result_ty.toIntern(),