aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
authorJacob G-W <jacoblevgw@gmail.com>2021-08-22 14:44:33 -0400
committerJacob G-W <jacoblevgw@gmail.com>2021-08-31 07:46:23 -0400
commit908f72210741cc10b6bf494ace06f8e74a08f215 (patch)
treedbd97004b5fa6e830474b5d19b949d435a3fccc8 /src/codegen/llvm.zig
parent353eec73cad82ed0783fe76837cbb94095f79f9d (diff)
downloadzig-908f72210741cc10b6bf494ace06f8e74a08f215.tar.gz
zig-908f72210741cc10b6bf494ace06f8e74a08f215.zip
stage2 llvm backend: if an array has a senteniel, add it
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index d7aa2d45b3..e487dec538 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -796,11 +796,13 @@ pub const DeclGen = struct {
const gpa = self.gpa;
const elem_ty = tv.ty.elemType();
const elem_vals = payload.data;
- const llvm_elems = try gpa.alloc(*const llvm.Value, elem_vals.len);
+ const sento = tv.ty.sentinel();
+ const llvm_elems = try gpa.alloc(*const llvm.Value, elem_vals.len + @boolToInt(sento != null));
defer gpa.free(llvm_elems);
for (elem_vals) |elem_val, i| {
llvm_elems[i] = try self.genTypedValue(.{ .ty = elem_ty, .val = elem_val });
}
+ if (sento) |sent| llvm_elems[elem_vals.len] = try self.genTypedValue(.{ .ty = elem_ty, .val = sent });
const llvm_elem_ty = try self.llvmType(elem_ty);
return llvm_elem_ty.constArray(
llvm_elems.ptr,