about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-02-11 00:02:11 +0100
committerBaitinq <[email protected]>2025-02-11 00:02:11 +0100
commitf278904b34582ef862fd90f7ec74bbf2c990a6e0 (patch)
tree0f77b315802c0b15bdc070ec153d7429fb00fef8
parentEvaluator: Add "printb" function (diff)
downloadinterpreter-f278904b34582ef862fd90f7ec74bbf2c990a6e0.tar.gz
interpreter-f278904b34582ef862fd90f7ec74bbf2c990a6e0.tar.bz2
interpreter-f278904b34582ef862fd90f7ec74bbf2c990a6e0.zip
Codegen: Fix generating equality expressions
Diffstat (limited to '')
-rw-r--r--src/codegen.zig15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index cc1d79d..a402124 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -359,6 +359,7 @@ pub const CodeGen = struct {
 
                 const ptr = self.environment.get_variable(name.?) orelse unreachable;
                 _ = core.LLVMBuildStore(self.builder, result, ptr.value);
+                ptr.type = core.LLVMInt64Type();
 
                 return ptr;
             },
@@ -377,6 +378,7 @@ pub const CodeGen = struct {
 
                 const ptr = self.environment.get_variable(name.?) orelse unreachable;
                 _ = core.LLVMBuildStore(self.builder, result, ptr.value);
+                ptr.type = core.LLVMInt64Type();
 
                 return ptr;
             },
@@ -407,10 +409,15 @@ pub const CodeGen = struct {
                 const rhs_value = try self.generate_expression_value(exp.rhs, null);
 
                 const cmp = core.LLVMBuildICmp(self.builder, types.LLVMIntPredicate.LLVMIntEQ, lhs_value.value, rhs_value.value, "");
-                return self.create_variable(.{
-                    .value = cmp,
-                    .type = core.LLVMInt1Type(),
-                });
+
+                std.debug.assert(name != null);
+
+                const ptr = self.environment.get_variable(name.?) orelse unreachable;
+
+                _ = core.LLVMBuildStore(self.builder, cmp, ptr.value);
+                ptr.type = core.LLVMInt1Type();
+
+                return ptr;
             },
             else => unreachable,
         };