// RUN: %llvmgcc -S %s -o - | grep llvm.gcroot
// RUN: %llvmgcc -S %s -o - | grep llvm.gcroot | count 6
// RUN: %llvmgcc -S %s -o - | llvm-as

typedef struct foo_s
{
  int a;
} foo, __attribute__ ((gcroot)) *foo_p;

foo my_foo;

int alpha ()
{
  foo my_foo2 = my_foo;
  
  return my_foo2.a;
}

int bar (foo a)
{
  foo_p b;
  return b->a;
}

foo_p baz (foo_p a, foo_p b, foo_p *c)
{
  a = b = *c;
  return a;
}
