mescc: Tinycc support: Pointer typedefs.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 16:36:35 +0000 (18:36 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 11 May 2018 16:36:35 +0000 (18:36 +0200)
module/language/c99/compiler.mes
scaffold/tests/t.c

index 86896bf084c8d46f47bc23c84dbd74e9e0dd2626..9f1d89a606e24cf7f49802409f3e3356c8a664e3 100644 (file)
             (count (expr->number info count))
             (type (make-c-array type count)))
        (clone info #:types (acons name type (.types info)))))
+    (((decl-spec-list (stor-spec (typedef)) (type-spec ,type)) (init-declr-list (init-declr (ptr-declr ,pointer (ident ,name)))))
+     (let* ((info (type->info type name info))
+            (type (ast->type type info))
+            (rank (pointer->rank pointer))
+            (type (rank+= type rank)))
+       (clone info #:types (acons name type (.types info)))))
     (((decl-spec-list (stor-spec (,store)) (type-spec ,type)) (init-declr-list . ,inits))
      (let* ((type (ast->type type info))
             (function (.function info)))
index 8fe749ce181064c760e99dcd077cd1f50cb81eed..ff3ec8eebe870149a55363f10a1f25d5ded80419 100644 (file)
@@ -46,6 +46,9 @@ struct here {int and;} there;
 typedef int int_array_t[1];
 int_array_t bar;
 
+typedef struct foo *foo_pointer_t;
+foo_pointer_t foep;
+
 int
 test (struct foo* p)
 {