struct Foo {
    int *p;
    struct X {
	int a,b,c,d,e,*f;
    } x;
} *init, *init2;

struct X __attribute__((const)) foo(struct X);
struct Foo __attribute__((const)) foo2(struct Foo);

void bar1 (void)
{
  init->x = foo (init2->x);
}
void bar2 (void)
{
  init->x = foo (init->x);
}
void bar3 (void)
{
  *init = foo2 (*init2);
}