From d5a92ea9241e6b6b531220df28c2fc1b569388f3 Mon Sep 17 00:00:00 2001 From: John Polstra Date: Tue, 29 Oct 1996 23:01:55 +0000 Subject: Split the Modula-3 port into two pieces, creating a new port "modula-3-lib". It installs only the shared libraries needed for executing Modula-3 programs. This saves a lot of disk space for people who need to run Modula-3 programs but don't need to build them. The original "modula-3" port now depends on this one, and uses it to install the compiler and the rest of the development system. Also, everything is now built with optimization. I have been testing this for at least a month, and haven't seen any problems from it. It makes the libraries and executables substantially smaller. This new port also includes some hooks that will make SOCKS support possible in the near future. --- lang/modula-3-lib/files/patch-bi | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lang/modula-3-lib/files/patch-bi (limited to 'lang/modula-3-lib/files/patch-bi') diff --git a/lang/modula-3-lib/files/patch-bi b/lang/modula-3-lib/files/patch-bi new file mode 100644 index 000000000000..74a018c9ba18 --- /dev/null +++ b/lang/modula-3-lib/files/patch-bi @@ -0,0 +1,39 @@ +Bug fix from SRC: + bug assigning arrays + + This patch applies to all platforms. + + The Modula-3 language definition says that it is possible to assign + one array to another if they have the same shape. There is a bug + in the compiler front-end that causes the compiler to report that + two array types are not assignable if they have different base + indices, even if they have the same size. + +Index: m3/m3front/src/types/ArrayType.m3 +--- ArrayType.m3.orig Tue May 23 15:24:27 1995 ++++ ArrayType.m3 Mon Sep 30 11:12:31 1996 +@@ -286,7 +286,9 @@ + a := Reduce (ta); b := Reduce (tb); + IF (a = NIL) OR (b = NIL) THEN EXIT END; + IF (a.index # b.index) THEN +- IF Type.Number (a.index) # Type.Number (b.index) THEN RETURN FALSE END; ++ IF NOT TInt.EQ (Type.Number (a.index), Type.Number (b.index)) THEN ++ RETURN FALSE ++ END; + END; + ta := a.element; + tb := b.element; +Index: m3/m3front/src/types/OpenArrayType.m3 +--- OpenArrayType.m3.orig Tue May 23 15:24:22 1995 ++++ OpenArrayType.m3 Mon Sep 30 11:13:12 1996 +@@ -188,7 +188,9 @@ + + (* peel off the fixed dimensions as long as the sizes are equal *) + WHILE ArrayType.Split (ta, ia, ea) AND ArrayType.Split (tb, ib, eb) DO +- IF Type.Number (ia) # Type.Number (ib) THEN RETURN FALSE END; ++ IF NOT TInt.EQ (Type.Number (ia), Type.Number (ib)) THEN ++ RETURN FALSE ++ END; + ta := ea; + tb := eb; + END; -- cgit v1.2.3