@Override public IRStm unNx() { return IR.SEQ( test.unCx(t, f), IR.SEQ(IR.LABEL(t), thenExp.unNx(), IR.JUMP(join)), IR.SEQ(IR.LABEL(f), elseExp.unNx(), IR.JUMP(join)), IR.LABEL(join)); }
@Override public IRExp unEx() { Temp res = new Temp(); return IR.ESEQ( IR.SEQ( test.unCx(t, f), IR.SEQ(IR.LABEL(t), IR.MOVE(IR.TEMP(res), thenExp.unEx())), IR.SEQ(IR.LABEL(f), IR.MOVE(IR.TEMP(res), elseExp.unEx()))), IR.TEMP(res)); }