/* Must define:
   int expect_error;
   void test ();
   void setup () NOCHECK; */

#include "driver.h"

int expect_error = 0;

typedef struct {
  short a;
  char b;
} S1;
typedef struct {
  struct { int x; S1 *s1p; } *p;
} S2;

S1 *s1;
S2 *s2;

void test ()
{
  s1 = c_malloc (sizeof (S1));
  s2 = c_malloc (sizeof (S2));
  s2->p = c_malloc (sizeof (*s2->p));
  s2->p->s1p = s1;
  s1->a = 47;
  s1->b = 3;
  foo ();
}

int foo ()
{
  return s2->p->s1p->b;
}

void setup () /* NOCHECK */
{
  mark_region (&s1, sizeof (s1), ACCESS_RW);
  mark_region (&s2, sizeof (s2), ACCESS_RW);
}
