mescc: Fix simple value tests.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 17 Mar 2017 22:49:29 +0000 (23:49 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 17 Mar 2017 22:49:29 +0000 (23:49 +0100)
* module/language/c99/compiler.mes (test->jump->info): Test accu
  before jumping.  Fixes simple value tests.

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

index 381f6f611042dbdb1a1432272b2b664fd0dd6e7c..d66e1d41e6beb64c830dad4cbdefc438cb14e73b 100644 (file)
@@ -1073,9 +1073,19 @@ _)))))
                           (.text (a-jump jump-length))
                           jump-text
                           (.text (b-jump body-length)))))))
-      ((array-ref . _) ((jump i386:jump-byte-z) o))
-      ((de-ref _) ((jump i386:jump-byte-z) o))
-      (_ ((jump i386:Xjump-z) o)))))
+
+      ((array-ref . _) ((jump (lambda (n)
+                                (append
+                                 (i386:accu-zero?)
+                                 (i386:jump-byte-z n)))) o))
+      ((de-ref _) ((jump (lambda (n)
+                           (append
+                            (i386:accu-zero?)
+                            (i386:jump-byte-z n)))) o))
+      (_ ((jump (lambda (n)
+                  (append
+                   (i386:accu-zero?)
+                   (i386:Xjump-z n)))) o)))))
 
 (define (cstring->number s)
   (cond ((string-prefix? "0x" s) (string->number (string-drop s 2) 16))
index b79ef163df8a1e5f54a8d5a759659db08d2e4b1a..9b14d42cb8b4c66eeb446c6dc434ee1b48da8750 100644 (file)
@@ -1100,19 +1100,8 @@ make_symbol (SCM s)
   return make_symbol_ (s);
 #else
   SCM x = lookup_symbol_ (s);
-  // FIXME: does not work with mescc?!
-  // return x != 0 ? x : make_symbol_ (s);
   return x ? x : make_symbol_ (s);
 #endif
-// FIXME
-// #if MES_MINI
-//   SCM x = 0;
-// #else
-//   SCM x = lookup_symbol_ (s);
-// #endif
-//   //FIXME
-//   //return x ? x : make_symbol_ (s);
-//   return x != 0 ? x : make_symbol_ (s);
 }
 
 SCM
index f19d29339bcf0a206c26270186197ded5745a79c..82165c41d7be3e4ed6328e1813bfeb4b07a5d93a 100644 (file)
@@ -376,10 +376,7 @@ struct_test ()
 
   int fn = 0;
   puts ("t: g_functions[g_cells[fn].cdr].arity\n");
-#if __GNUC__
-  //FIXME
   if (g_functions[g_cells[fn].cdr].arity) return 1;
-#endif
   if (g_functions[g_cells[fn].cdr].arity != 0) return 1;
 
   int (*functionx) (void) = 0;
@@ -731,6 +728,17 @@ test (char *p)
 }
 #endif
 
+int
+init ()
+{
+  // g_cells[0].cdr = 0;
+  // g_cells[1].cdr = 1;
+  g_functions[0] = g_foo;
+  g_functions[1] = g_bar;
+    
+  return 0;
+}
+    
 int
 main (int argc, char *argv[])
 {