diff --git a/src/main/java/chocopy/pa3/CodeGenImpl.java b/src/main/java/chocopy/pa3/CodeGenImpl.java index 43acc8fe92ba7d6387496eae4255af03fc90b016..f70984c2016d6cd135b78b5e56c53a1329a1ff9b 100644 --- a/src/main/java/chocopy/pa3/CodeGenImpl.java +++ b/src/main/java/chocopy/pa3/CodeGenImpl.java @@ -352,8 +352,9 @@ public class CodeGenImpl extends CodeGenBase { stmt.dispatch(stmtAnalyzer); } - backend.emitMV(A0, ZERO, "Returning None implicitly"); betterBackend.emitFunctionEnd(funcInfo.getFuncName(), stmtAnalyzer.regMgr, "BEGIN FUNCTION"); + // the following instructions are ignored. + // backend.emitMV(A0, ZERO, "Returning None implicitly"); backend.emitLocalLabel(stmtAnalyzer.epilogue, "Epilogue"); // FIXME: {... reset fp etc. ...} @@ -424,8 +425,12 @@ public class CodeGenImpl extends CodeGenBase { // this is wrong, and you'll have to fix it. // This is here just to demonstrate how to emit a // RISC-V instruction. - backend.emitMV(ZERO, ZERO, "No-op"); - return null; + RiscVBackend.Register returnValReg = node.value.dispatch(this); + if(returnValReg == null) + return null; + backend.emitMV(A0, returnValReg, "put return value!"); + regMgr.returnOne(returnValReg); + return null; // Statement always return null. } // FIXME: More, of course.