/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fre1" } */ /* This testcase tests nonoverlapping_component_refs_since_match_p in presence of non-trivial mem-refs. */ struct a {int a,b;}; struct b {struct a a[10];}; struct c {int c; struct b b;} c, *cptr; void set_a(struct a *a, int p) { a->a=p; } void set_b(struct a *a, int p) { a->b=p; } int get_a(struct a *a) { return a->a; } int test(int i, int j) { struct b *bptr = &c.b; set_a (&bptr->a[i], 123); set_b (&bptr->a[j], 124); return get_a (&bptr->a[i]); } int test2(int i, int j) { struct b *bptr = &cptr->b; set_a (&bptr->a[i], 125); set_b (&bptr->a[j], 126); return get_a (&bptr->a[i]); } /* { dg-final { scan-tree-dump-times "return 123" 1 "fre1"} } */ /* { dg-final { scan-tree-dump-times "return 125" 1 "fre1"} } */