summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/pr33560.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/pr33560.c')
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr33560.c29
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;
+}
+