mescc: Fix truncation of short.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 6 Oct 2018 09:57:04 +0000 (11:57 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 6 Oct 2018 09:57:04 +0000 (11:57 +0200)
* module/mescc/compile.scm (convert-r0): Typo.  Fixes truncation of
short.  Thanks, pdewacht!
* scaffold/tests/a0-call-trunc-char.c: New file.
* scaffold/tests/a0-call-trunc-short.c: New file.
* build-aux/check-mescc.sh: Add them.

build-aux/check-mescc.sh
module/mescc/compile.scm
scaffold/tests/a0-call-trunc-char.c [new file with mode: 0644]
scaffold/tests/a0-call-trunc-short.c [new file with mode: 0644]

index 918f87d021545f72f5f5692594e55a1d41f4fecb..5884f8f83d4cba62b09100daa80f8ec7573ae896 100755 (executable)
@@ -216,6 +216,8 @@ t
 97-fopen
 98-fopen
 99-readdir
+a0-call-trunc-char
+a0-call-trunc-short
 "
 
 broken="$broken
index a9504f642542519ef4e0a7f0f14b91254c1de567..5afbf6ec0942760fb68f6b5ba94c246cdfcb2fe8 100644 (file)
                (wrap-as (as info 'byte-r)))
               ((and (= size 2) sign)
                (wrap-as (as info 'word-signed-r)))
-              ((= size 1)
+              ((= size 2)
                (wrap-as (as info 'word-r)))
               ((and (> reg-size 4) (= size 4) sign)
                (wrap-as (as info 'long-signed-r)))
diff --git a/scaffold/tests/a0-call-trunc-char.c b/scaffold/tests/a0-call-trunc-char.c
new file mode 100644 (file)
index 0000000..7369513
--- /dev/null
@@ -0,0 +1,38 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libmes.h>
+
+int
+f (unsigned char x)
+{
+  eputs ("x="); eputs (itoa (x)); eputs ("\n");
+  return x;
+}
+
+int
+main ()
+{
+  unsigned int x = -1;
+  x = f(x);
+  if (x != 255)
+    return 1;
+  return 0;
+}
diff --git a/scaffold/tests/a0-call-trunc-short.c b/scaffold/tests/a0-call-trunc-short.c
new file mode 100644 (file)
index 0000000..37284af
--- /dev/null
@@ -0,0 +1,38 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libmes.h>
+
+int
+f (unsigned short x)
+{
+  eputs ("x="); eputs (itoa (x)); eputs ("\n");
+  return x;
+}
+
+int
+main ()
+{
+  unsigned int x = -1;
+  x = f(x);
+  if (x != 65535)
+    return 1;
+  return 0;
+}