mescc: Tinycc support: bugfix struct pointer.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 25 Jul 2017 15:01:37 +0000 (17:01 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:45 +0000 (11:36 +0200)
* module/language/c99/compiler.mes (decl->info): Only set non-pointer struct to -1.
* scaffold/tests/23-pointer.c (test): Test it.

module/language/c99/compiler.mes
scaffold/tests/23-pointer.c

index 91d60269337d9b053a3bc326bf8992def3d122e3..5a9a97546658d31358b93250b205626fe18e147b 100644 (file)
                 (info (append-text info (ast->comment o)))
                 (globals (append globals initzer-globals))
                 (info (clone info #:globals globals))
-                (pointer (if (and (pair? type) (equal? (car type) "tag")) -1 pointer))
+                (pointer (if (and (zero? pointer) (pair? type) (equal? (car type) "tag")) -1 pointer))
                 (size (if (zero? pointer) (ast-type->size info type)
                           4)))
            (if (.function info)
index c8e2694f87375f9ddd38c8798a9a9b4e16f21020..e16cb079ebe63008edcc0a5e9a9f5995bd6d9bb0 100644 (file)
 char g_arena[4] = "XXX";
 char *g_chars = g_arena;
 
+struct foo {
+  int fd;
+};
+
+struct foo *file;
+
 int
 test ()
 {
@@ -46,5 +52,9 @@ test ()
   char **pp2 = *ppp;
   if (**pp2 != 'X') return 8;
 
+  struct foo *f = 0;
+  if (f) return 9;
+  if (file) return 10;
+
   return 0;
 }