/* { dg-do compile } */ /* { dg-require-effective-target store_merge } */ /* { dg-options "-O2 -fdump-tree-store-merging" } */ /* Check that we can merge interleaving stores that are guaranteed to be non-aliasing. */ struct bar { int a; char b; char c; short d; char e; char f; char g; }; void foozero (struct bar *restrict p, struct bar *restrict p2) { p->b = 0xff; p2->b = 0xa; p->a = 0xfffff; p2->a = 0xab; p2->c = 0xc; p->c = 0xff; p2->d = 0xbf; p->d = 0xfff; } /* { dg-final { scan-tree-dump-times "Merging successful" 2 "store-merging" } } */