diff options
| author | Jacob G-W <jacoblevgw@gmail.com> | 2021-08-22 14:44:33 -0400 |
|---|---|---|
| committer | Jacob G-W <jacoblevgw@gmail.com> | 2021-08-31 07:46:23 -0400 |
| commit | 908f72210741cc10b6bf494ace06f8e74a08f215 (patch) | |
| tree | dbd97004b5fa6e830474b5d19b949d435a3fccc8 /src/codegen | |
| parent | 353eec73cad82ed0783fe76837cbb94095f79f9d (diff) | |
| download | zig-908f72210741cc10b6bf494ace06f8e74a08f215.tar.gz zig-908f72210741cc10b6bf494ace06f8e74a08f215.zip | |
stage2 llvm backend: if an array has a senteniel, add it
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 4 |
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, |
