/* { dg-do run } */ struct T { int a, b; } t; __attribute__((noinline)) struct T *f (struct T *p) { struct T *q = __builtin_malloc (sizeof (struct T)); *q = *p; return q; } int main (void) { struct T *p; t.a = 1; t.b = 2; p = f (&t); t.a = 3; if (p->a != 1) __builtin_abort (); return 0; }