From 8d2afe11036819762212b6f9c835bc8acc902798 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 14 Sep 1987 12:41:08 +0000 Subject: [PATCH] some more fixes --- lang/m2/comp/Version.c | 2 +- lang/m2/comp/walk.c | 48 ++++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/lang/m2/comp/Version.c b/lang/m2/comp/Version.c index 4d0bd0fad..36086579a 100644 --- a/lang/m2/comp/Version.c +++ b/lang/m2/comp/Version.c @@ -1 +1 @@ -static char Version[] = "ACK Modula-2 compiler Version 0.16"; +static char Version[] = "ACK Modula-2 compiler Version 0.17"; diff --git a/lang/m2/comp/walk.c b/lang/m2/comp/walk.c index 1238e6bb3..7a26411bb 100644 --- a/lang/m2/comp/walk.c +++ b/lang/m2/comp/walk.c @@ -532,32 +532,34 @@ WalkStat(nd, exit_label) C_stl(tmp); nd->nd_def->df_flags |= D_FORLOOP; C_df_ilb(l1); - } - if (! options['R']) { - tmp2 = NewInt(); - ForLoopVarExpr(nd); - C_stl(tmp2); + if (! options['R']) { + tmp2 = NewInt(); + ForLoopVarExpr(nd); + C_stl(tmp2); + } } WalkNode(right, exit_label); - if (! options['R']) { - C_lol(tmp2); - ForLoopVarExpr(nd); - C_cal("_forloopchk"); - FreeInt(tmp2); - } nd->nd_def->df_flags &= ~D_FORLOOP; - if (good_forvar && stepsize) { - C_lol(tmp); - C_zeq(l2); - C_lol(tmp); - C_loc((arith) 1); - C_sbu(int_size); - C_stl(tmp); - C_loc(left->nd_INT); - ForLoopVarExpr(nd); - C_adu(int_size); - RangeCheck(nd->nd_type, bstp); - CodeDStore(nd); + if (good_forvar) { + if (! options['R']) { + C_lol(tmp2); + ForLoopVarExpr(nd); + C_cal("_forloopchk"); + FreeInt(tmp2); + } + if (stepsize) { + C_lol(tmp); + C_zeq(l2); + C_lol(tmp); + C_loc((arith) 1); + C_sbu(int_size); + C_stl(tmp); + C_loc(left->nd_INT); + ForLoopVarExpr(nd); + C_adu(int_size); + RangeCheck(nd->nd_type, bstp); + CodeDStore(nd); + } } C_bra(l1); C_df_ilb(l2); -- 2.34.1