some more fixes
authorceriel <none@none>
Mon, 14 Sep 1987 12:41:08 +0000 (12:41 +0000)
committerceriel <none@none>
Mon, 14 Sep 1987 12:41:08 +0000 (12:41 +0000)
lang/m2/comp/Version.c
lang/m2/comp/walk.c

index 4d0bd0f..3608657 100644 (file)
@@ -1 +1 @@
-static char Version[] = "ACK Modula-2 compiler Version 0.16";
+static char Version[] = "ACK Modula-2 compiler Version 0.17";
index 1238e6b..7a26411 100644 (file)
@@ -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);