mescc: Fix struct field comparison.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 22 Mar 2017 06:10:54 +0000 (07:10 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 22 Mar 2017 06:10:54 +0000 (07:10 +0100)
* module/language/c99/compiler.mes (expr->accu, ast->info): Some
  push/pop fixes, fixes struct field comparisons.
* doc/examples/t.c (struct_test): Test it.

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

index 54eb31c5c3b00321c4381a4527e79dc0053e3ddc..28a4a80c9f6466e82848a59c5e7f117639574bb6 100644 (file)
@@ -805,7 +805,8 @@ _)))))
                           (list (lambda (f g ta t d)
                                   (i386:push-base)))
                           (.text accu)
-                          (i386:pop-accu)
+                          (list (lambda (f g ta t d)
+                                  (i386:pop-base)))
                           (list (lambda (f g ta t d)
                                   (i386:sub-base)))))))
 
@@ -1619,7 +1620,8 @@ _)))))
                           (list (lambda (f g ta t d)
                                   (i386:push-base)))
                           (.text accu)
-                          (i386:pop-accu)
+                          (list (lambda (f g ta t d)
+                                  (i386:pop-base)))
                           (list (lambda (f g ta t d)
                                   (i386:sub-base)))))))
 
@@ -1680,6 +1682,8 @@ _)))))
                           (list (lambda (f g ta t d)
                                   (i386:push-base)))
                           (.text accu)
+                          (list (lambda (f g ta t d)
+                                  (i386:pop-base)))
                           (list (lambda (f g ta t d)
                                   (i386:base-sub)))))))
 
@@ -1693,6 +1697,8 @@ _)))))
                           (list (lambda (f g ta t d)
                                   (i386:push-base)))
                           (.text accu)
+                          (list (lambda (f g ta t d)
+                                  (i386:pop-base)))
                           (list (lambda (f g ta t d)
                                   (i386:base-sub)))))))
 
index 67843c687577f6599251b7dd009ac7da0ab34ef8..7b2d95e4e27d2362c200e33ae4c649c906002be1 100644 (file)
@@ -228,6 +228,13 @@ make_tmps_test (struct scm* cells)
 int
 struct_test ()
 {
+  g_cells[0].type = TNUMBER;
+  g_cells[1].type = TNUMBER;
+  puts ("t: TYPE (0) != TYPE (1)\n");
+  if (TYPE (0) == TYPE (1)) goto ok;
+  return 1;
+ ok:
+
   g_cells[0].car = 1;
   g_cells[1].car = 2;