changed error messages, initialize bss with funny value, and be
authorceriel <none@none>
Mon, 28 Nov 1988 12:54:38 +0000 (12:54 +0000)
committerceriel <none@none>
Mon, 28 Nov 1988 12:54:38 +0000 (12:54 +0000)
somewhat more conservative with memory usage

lang/m2/comp/Version.c
lang/m2/comp/statement.g
lang/m2/comp/walk.c

index ac49387..1c0dcdc 100644 (file)
@@ -1 +1 @@
-static char Version[] = "ACK Modula-2 compiler Version 0.43";
+static char Version[] = "ACK Modula-2 compiler Version 0.44";
index 0e43d9e..06ead2d 100644 (file)
@@ -111,10 +111,12 @@ StatementSequence(register t_node **pnd;)
        [ %persistent
                ';'
                statement(&nd)
-                       { nd1 = dot2node(Link, *pnd, nd);
-                         *pnd = nd1;
-                         nd1->nd_symb = ';';
-                         pnd = &(nd1->nd_right);
+                       { if (nd != EmptyStatement) {
+                               nd1 = dot2node(Link, *pnd, nd);
+                               *pnd = nd1;
+                               nd1->nd_symb = ';';
+                               pnd = &(nd1->nd_right);
+                         }
                        }
        ]*
 ;
@@ -262,15 +264,15 @@ ReturnStatement(t_node **pnd;)
        [
                expression(&(nd->nd_right))
                        { if (scopeclosed(CurrentScope)) {
-error("a module body has no result value");
+error("a module body cannot return a value");
                          }
                          else if (! ResultType(df->df_type)) {
-error("procedure \"%s\" has no result value", df->df_idf->id_text);
+error("procedure \"%s\" is not a function, so cannot return a value", df->df_idf->id_text);
                          }
                        }
        |
                        { if (ResultType(df->df_type)) {
-error("procedure \"%s\" must return a value", df->df_idf->id_text);
+error("function procedure \"%s\" must return a value", df->df_idf->id_text);
                          }
                        }
        ]
index 82fa46b..10576f8 100644 (file)
@@ -181,6 +181,9 @@ WalkModule(module)
                        C_zne(RETURN_LABEL);
                        C_ine_dlb(data_label, (arith) 0);
                }
+               else if (! options['R']) {
+                       C_cal("killbss");
+               }
 
                for (; nd; nd = nd->nd_left) {
                        C_cal(nd->nd_def->mod_vis->sc_scope->sc_name);