1 /* { dg-do compile } */
2 /* { dg-require-effective-target store_merge } */
3 /* { dg-options "-O2 -fdump-tree-store-merging" } */
4 
5 /* Check that we can merge interleaving stores that are guaranteed
6    to be non-aliasing.  */
7 
8 struct bar
9 {
10   int a;
11   char b;
12   char c;
13   short d;
14   char e;
15   char f;
16   char g;
17 };
18 
19 void
foozero(struct bar * restrict p,struct bar * restrict p2)20 foozero (struct bar *restrict p, struct bar *restrict p2)
21 {
22   p->b = 0xff;
23   p2->b = 0xa;
24   p->a = 0xfffff;
25   p2->a = 0xab;
26   p2->c = 0xc;
27   p->c = 0xff;
28   p2->d = 0xbf;
29   p->d = 0xfff;
30 }
31 
32 /* { dg-final { scan-tree-dump-times "Merging successful" 2 "store-merging" } } */
33