From 9e2b344bd2574191a63506b2272435fedd6b265b Mon Sep 17 00:00:00 2001 From: Apoorva Ranade Date: Sun, 2 May 2021 20:20:52 +0530 Subject: [PATCH] Fixed Ifs --- src/main/java/chocopy/pa3/CodeGenImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/chocopy/pa3/CodeGenImpl.java b/src/main/java/chocopy/pa3/CodeGenImpl.java index 021a450..c3de1f5 100644 --- a/src/main/java/chocopy/pa3/CodeGenImpl.java +++ b/src/main/java/chocopy/pa3/CodeGenImpl.java @@ -415,8 +415,9 @@ public class CodeGenImpl extends CodeGenBase @Override public Register analyze(IfExpr node) { - node.condition.dispatch(this); + Register result = node.condition.dispatch(this); Label ln = generateLocalLabel(); + backend.emitBEQZ(result, ln,"Jump to beginning of loop"); node.thenExpr.dispatch(this); backend.emitJ(ln, "Jump to end of if expression"); backend.emitLocalLabel(elseBlock, "Else part of if expression"); @@ -428,8 +429,9 @@ public class CodeGenImpl extends CodeGenBase @Override public Register analyze(IfStmt node) { - node.condition.dispatch(this); + Register result = node.condition.dispatch(this); Label ln = generateLocalLabel(); + backend.emitBEQZ(result, ln,"Jump to beginning of loop"); for(Stmt s:node.thenBody) s.dispatch(this); backend.emitJ(ln, "Jump to end of if statement");