diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr8081.c | 26 |
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; +} |