(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
opt/
store-merging-2.C
// PR target/92038
// { dg-do compile { target int32 } }
// { dg-require-effective-target store_merge }
// { dg-options "-O2 -flifetime-dse=2 -fdump-tree-store-merging-details" }
// { dg-final { scan-tree-dump "New sequence of 2 stores to replace old one of 3 stores" "store-merging" } }

/* The alignment is necessary for store-merging to take place on
   strict-alignment targets.  */
struct __attribute__ ((__aligned__ (4))) T { char a[128]; };
struct S { S () : a () { a.a[12] = 0; a.a[13] = 1; a.a[14] = 0; a.a[15] = 6; } T a; };
void foo (S &);
void bar (void) { S s; foo (s); }