summaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2025-02-19 18:46:21 -0600
committerNic Gaffney <gaffney_nic@protonmail.com>2025-02-19 18:46:21 -0600
commit2c44d648157a6dbfd847e939016316032c6742a4 (patch)
tree9d19f0face496f3e520f8c69536f6cffe2879364 /src/codegen.zig
parent4ea2876e8243a86276917e691a335caed7a8fd74 (diff)
downloadcalico-2c44d648157a6dbfd847e939016316032c6742a4.tar.gz
Fixed while loops
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index ef65cf6..c19dfbc 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -199,19 +199,14 @@ pub const Generator = struct {
const func = self.currentFunc.?;
const then = core.LLVMAppendBasicBlock(func, "then");
- const elsebb = core.LLVMAppendBasicBlock(func, "elsebb");
const cont = core.LLVMAppendBasicBlock(func, "continue");
- _ = core.LLVMBuildCondBr(self.builder, condition, then, elsebb);
+ _ = core.LLVMBuildCondBr(self.builder, condition, then, cont);
_ = core.LLVMPositionBuilderAtEnd(self.builder, then);
try self.genStmt(block.*);
const newcondition = try self.genExpr(expr);
- _ = core.LLVMBuildCondBr(self.builder, newcondition, then, elsebb);
- _ = core.LLVMBuildBr(self.builder, cont);
-
- _ = core.LLVMPositionBuilderAtEnd(self.builder, elsebb);
- _ = core.LLVMBuildBr(self.builder, cont);
+ _ = core.LLVMBuildCondBr(self.builder, newcondition, then, cont);
_ = core.LLVMPositionBuilderAtEnd(self.builder, cont);
}
@@ -298,6 +293,7 @@ pub const Generator = struct {
.slash => core.LLVMBuildSDiv(self.builder, lhs, rhs, "div"),
.eqleql => core.LLVMBuildICmp(self.builder, types.LLVMIntPredicate.LLVMIntEQ, lhs, rhs, "eql"),
.lessthan => core.LLVMBuildICmp(self.builder, types.LLVMIntPredicate.LLVMIntSLT, lhs, rhs, "slt"),
+ .greaterthan => core.LLVMBuildICmp(self.builder, types.LLVMIntPredicate.LLVMIntSGT, lhs, rhs, "sgt"),
else => return error.Unimplemented,
};
},