mescc: Bugfix for neg.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 25 Mar 2017 18:03:03 +0000 (19:03 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 25 Mar 2017 18:03:03 +0000 (19:03 +0100)
* module/language/c99/compiler.mes (expr->accu): Fix neg.
* scaffold/t.c (math_test): Test it.
* scaffold/mini-mes.c (ash): Remove workaround.

module/language/c99/compiler.mes
scaffold/mini-mes.c
scaffold/t.c

index d22bd35178da9467a431b46a56902b0e3a666a58..382058f7333dc05d922c2c6e7f572c87186fbde1 100644 (file)
                                     (list (lambda (f g ta t d)
                                             (i386:value->accu 0)))
                                     (list (lambda (f g ta t d)
-                                            (i386:base-sub))))))
+                                            (i386:sub-base))))))
 
         ;;((cast (type-name (decl-spec-list (type-spec (typename "SCM"))) (abs-declr (declr-fctn (declr-scope (abs-declr (pointer))) (param-list (param-decl (decl-spec-list (type-spec (typename "SCM")))))))) (d-sel (ident "function") (array-ref (d-sel (ident "cdr") (array-ref (p-expr (ident "fn")) (p-expr (ident "g_cells")))) (p-expr (ident "functions"))))))
         ((cast ,cast ,o)
index 9032fe8fd24af4e5a0f44d500930a93118456c42..33bf34f855c399a95a9bb6e3c569386b47688e33 100644 (file)
@@ -1275,14 +1275,7 @@ ash (SCM n, SCM count)
   assert (TYPE (count) == TNUMBER);
   int cn = VALUE (n);
   int ccount = VALUE (count);
-#if __GNUC__
   return MAKE_NUMBER ((ccount < 0) ? cn >> -ccount : cn << ccount);
-#else
-  int x;
-  if (ccount < 0) x = cn >> INT_MIN - ccount;
-  else x = cn << ccount;
-  return MAKE_NUMBER (x);
-#endif
 }
 
 //\f Lib [rest of]
index 459c61782b99dfe7c536d02eb5e20e3e62024293..d88672dc0e130c8cc9e026e70929f04598d209b4 100644 (file)
@@ -230,10 +230,10 @@ math_test ()
 
   i = -3;
   puts ("t: -i\n");
-  if (-i != 3) return -i;
+  if (-i != 3) return 1;
 
   puts ("t: -1 + 2\n");
-  if (-1 + 2 != 1) return -1 + 2;
+  if (-1 + 2 != 1) return 1;
 
   return read_test ();
 }