From 05eff82d55c817ed30f38fa2a4e00dc87b299a21 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Wed, 2 Apr 2025 22:37:48 +0200 Subject: Codegen: Fix GEP type --- examples/18.src | 2 +- src/codegen.zig | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/18.src b/examples/18.src index 6d75e30..c050f8c 100644 --- a/examples/18.src +++ b/examples/18.src @@ -3,7 +3,7 @@ extern malloc = (i64) => *i64; extern free = (*i64) => void; let main = () => i64 { - let x = malloc(128); + let x = malloc(24); (*(x+0)) = 10; (*(x+1)) = 20; (*(x+2)) = 40; diff --git a/src/codegen.zig b/src/codegen.zig index d6b3e98..77f5ea3 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -430,8 +430,7 @@ pub const CodeGen = struct { var result: llvm.LLVMValueRef = undefined; if (exp.addition) { if (llvm.LLVMGetTypeKind(lhs_value.type.?) == llvm.LLVMPointerTypeKind) { - const indices = [_]llvm.LLVMValueRef{rhs_value.value}; - result = llvm.LLVMBuildGEP2(self.builder, llvm.LLVMInt8Type(), lhs_value.value, @constCast(&indices), indices.len, ""); + result = llvm.LLVMBuildGEP2(self.builder, rhs_value.type, lhs_value.value, @constCast(&[_]llvm.LLVMValueRef{rhs_value.value}), 1, ""); } else { result = llvm.LLVMBuildAdd(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; } -- cgit 1.4.1