diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/20090618-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/20090618-1.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/20090618-1.c b/gcc/testsuite/gcc.dg/torture/20090618-1.c new file mode 100644 index 000000000..60eb90078 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/20090618-1.c @@ -0,0 +1,25 @@ +/* { dg-do run } */ +/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */ +/* { dg-skip-if "PR middle-end/47405" { mips-sgi-irix* } } */ + +extern void abort (void); + +struct X { int *p; int *q; }; + +int foo(void) +{ + int i = 0, j = 1; + struct X x, y; + int **p; + y.p = &i; + x.q = &j; + p = __builtin_mempcpy (&x, &y, sizeof (int *)); + return **p; +} + +int main() +{ + if (foo() != 1) + abort (); + return 0; +} |