summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr8081.c26
2 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b26ac263360..cbee6be3d5d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-13 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/8081
+ * gcc.dg/torture/pr8081.c: New testcase.
+
2012-01-13 Georg-Johann Lay <avr@gjlay.de>
* gcc.dg/pr46309.c: Set branch cost to greater 1 for avr.
diff --git a/gcc/testsuite/gcc.dg/torture/pr8081.c b/gcc/testsuite/gcc.dg/torture/pr8081.c
new file mode 100644
index 00000000000..6899f6a1487
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr8081.c
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+
+extern void abort (void);
+int
+main (int argc, char **argv)
+{
+ int size = 10;
+ typedef struct
+ {
+ char val[size];
+ }
+ block;
+ block a, b;
+ block __attribute__((noinline))
+ retframe_block ()
+ {
+ return *(block *) &b;
+ }
+ b.val[0] = -1;
+ b.val[9] = -2;
+ a=retframe_block ();
+ if (a.val[0] != -1
+ || a.val[9] != -2)
+ abort ();
+ return 0;
+}