mescc: Tinycc support: foo *bar[baz].
[mes.git] / scaffold / tests / 77-pointer-assign.c
index d8f063c9238ebf77d4c374420272649c7af121e0..c54ed88600e1ca96021c4a86bcf6b8601cf557c4 100644 (file)
@@ -20,7 +20,6 @@
 
 #include "30-test.i"
 
-
 struct baz {
   int i;
 };
@@ -30,11 +29,19 @@ struct foo {
 };
 
 void
-add (void *ptab)
+add0 (void *ptab)
+{
+  void **pp = *(void***)ptab;
+ bla:
+  pp[0] = 0x11223344;
+}
+
+void
+add1 (void *ptab)
 {
   void ***x = (void***)ptab;
  bla:
-  *(void***)ptab = 0x11223344;
+  *(void***)ptab = 0x22334455;
 }
 
 void
@@ -42,24 +49,43 @@ add2 (void *ptab)
 {
   void ***x = (void***)ptab;
  bla:
-  *x = 0x22334455;
+  *x = 0x33445566;
+}
+
+struct foo *hash_ident[10];
+
+void *
+memset (void *s, int c, int n)
+{
+  char *p = s;
+  while (n--) *p++ = c;
+  return s;
 }
 
 int
 test ()
 {
-  int i;
+  int i = 1;
   int *p = &i;
   struct foo f;
   f.bar = &p;
   eputs ("f.bar:"); eputs (itoa (f.bar)); eputs ("\n");
-  add (&f.bar);
+
+  add0 (&f.bar);
+  eputs ("f.bar:"); eputs (itoa (*f.bar)); eputs ("\n");
+  if (*f.bar != 0x11223344) return 1;
+
+  add1 (&f.bar);
   eputs ("f.bar:"); eputs (itoa (f.bar)); eputs ("\n");
-  if (f.bar != 0x11223344) return 1;
+  if (f.bar != 0x22334455) return 2;
+
   add2 (&f.bar);
-  // FIXME
-  // eputs ("f.bar:"); eputs (itoa (f.bar)); eputs ("\n");
-  // if (f.bar != 0x22334455) return 2;
+  eputs ("f.bar:"); eputs (itoa (f.bar)); eputs ("\n");
+  if (f.bar != 0x33445566) return 3;
+
+  hash_ident[0] = 10;
+  *hash_ident = 0;
+  memset (hash_ident, 0, 10);
 
   return 0;
 }