typedef struct {int a; char b;} T;

int h (T *);
T g (T);

#if COMPILER != 1
h (T *x)
{
  if (x->a != 0 || x->b != 1)
    abort ();
}
#endif

#if COMPILER != 2
T
g (T x)
{
  if (x.a != 13 || x.b != 47)
    abort ();
  x.a = 0;
  x.b = 1;
  h (&x);
  return x;
}
#endif

#if COMPILER != 1
f ()
{
  T x;
  x.a = 13;
  x.b = 47;
  g (x);
  if (x.a != 13 || x.b != 47)
    abort ();
  x = g (x);
  if (x.a != 0 || x.b != 1)
    abort ();
}
#endif

#if COMPILER != 2
main ()
{
  f ();
  exit (0);
}
#endif
