commit 595ccecd88d82874e7f677ee1809c04fc29424ff (tree)
parent 5b79f42dc5220850b67ac461a326d5a6253da215
Author: Veikka Tuominen <git@vexu.eu>
Date: Tue, 25 Oct 2022 16:10:09 +0300
llvm: do not return undefined pointers from array_to_slice
Diffstat:
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
@@ -5434,10 +5434,11 @@ pub const FuncGen = struct {
const llvm_usize = try self.dg.lowerType(Type.usize);
const len = llvm_usize.constInt(array_ty.arrayLen(), .False);
const slice_llvm_ty = try self.dg.lowerType(self.air.typeOfIndex(inst));
+ const operand = try self.resolveInst(ty_op.operand);
if (!array_ty.hasRuntimeBitsIgnoreComptime()) {
- return self.builder.buildInsertValue(slice_llvm_ty.getUndef(), len, 1, "");
+ const partial = self.builder.buildInsertValue(slice_llvm_ty.getUndef(), operand, 0, "");
+ return self.builder.buildInsertValue(partial, len, 1, "");
}
- const operand = try self.resolveInst(ty_op.operand);
const indices: [2]*llvm.Value = .{
llvm_usize.constNull(), llvm_usize.constNull(),
};