33 lines
625 B
C
33 lines
625 B
C
/* { dg-do compile } */
|
|
/* { dg-require-effective-target non_strict_align } */
|
|
/* { dg-options "-O2 -fdump-tree-store-merging-details" } */
|
|
|
|
/* Make sure stores to volatile addresses don't get combined with
|
|
other accesses. */
|
|
|
|
struct bar
|
|
{
|
|
int a;
|
|
char b;
|
|
char c;
|
|
volatile short d;
|
|
char e;
|
|
char f;
|
|
char g;
|
|
};
|
|
|
|
void
|
|
foozero (struct bar *p)
|
|
{
|
|
p->b = 0xa;
|
|
p->a = 0xb;
|
|
p->c = 0xc;
|
|
p->d = 0;
|
|
p->e = 0xd;
|
|
p->f = 0xe;
|
|
p->g = 0xf;
|
|
}
|
|
|
|
/* { dg-final { scan-tree-dump "Volatile access terminates all chains" "store-merging" } } */
|
|
/* { dg-final { scan-tree-dump-times "=\{v\} 0;" 1 "store-merging" } } */
|