diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.dg/pr60485-2.c')
-rw-r--r-- | gcc-4.8/gcc/testsuite/gcc.dg/pr60485-2.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr60485-2.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr60485-2.c new file mode 100644 index 000000000..767e61d1c --- /dev/null +++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr60485-2.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort (void); +struct S { + int *i[4]; + int *p1; + int *p2; + int *p3; + int *p4; + int **x; +}; +int **b; +int main() +{ + int i = 1; + struct S s; + s.p3 = &i; + int **p; + if (b) + p = b; + else + p = &s.i[2]; + p += 4; + /* prevert fowrprop from creating an offsetted sd constraint and + preserve the pointer offsetting constraint. */ + s.x = p; + p = s.x; + if (!b) + { + int *z = *p; + /* z should point to i (and non-local/escaped). */ + *z = 0; + } + if (i != 0) + abort (); + return i; +} |