diff options
| author | Baitinq <[email protected]> | 2025-04-02 22:37:48 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-04-02 23:27:47 +0200 |
| commit | 05eff82d55c817ed30f38fa2a4e00dc87b299a21 (patch) | |
| tree | 072c0eb881a9f49ee796f53786345c88be33f342 | |
| parent | Feature: Start adding support for assigning to pointers with arithmetic (diff) | |
| download | pry-lang-05eff82d55c817ed30f38fa2a4e00dc87b299a21.tar.gz pry-lang-05eff82d55c817ed30f38fa2a4e00dc87b299a21.tar.bz2 pry-lang-05eff82d55c817ed30f38fa2a4e00dc87b299a21.zip | |
Codegen: Fix GEP type
| -rw-r--r-- | examples/18.src | 2 | ||||
| -rw-r--r-- | 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; } |