From 2c44d648157a6dbfd847e939016316032c6742a4 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Wed, 19 Feb 2025 18:46:21 -0600 Subject: Fixed while loops --- src/codegen.zig | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/codegen.zig') 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, }; }, -- cgit v1.2.3