diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/pr33560.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr33560.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr33560.c b/gcc/testsuite/gcc.dg/torture/pr33560.c new file mode 100644 index 000000000..7eea1e3f6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr33560.c @@ -0,0 +1,29 @@ +/* { 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; +} + |