(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
store_merging_21.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target store_merge } */
       3  /* { dg-options "-O2 -fdump-tree-store-merging" } */
       4  
       5  extern void abort (void);
       6  
       7  struct S1 {
       8    unsigned int flag : 1;
       9    unsigned int size : 31;
      10  };
      11  
      12  void foo1 (struct S1 *s, struct S1 *m)
      13  {
      14    s->flag = 1;
      15    s->size = m->size;
      16  }
      17  
      18  void bar1 (struct S1 *s, struct S1 *m, _Bool flag)
      19  {
      20    s->flag = flag;
      21    s->size = m->size;
      22  }
      23  
      24  struct S2 {
      25    unsigned int size : 31;
      26    unsigned int flag : 1;
      27  };
      28  
      29  void foo2 (struct S2 *s, struct S2 *m)
      30  {
      31    s->size = m->size;
      32    s->flag = 1;
      33  }
      34  
      35  void bar2 (struct S2 *s, struct S2 *m, _Bool flag)
      36  {
      37    s->flag = flag;
      38    s->size = m->size;
      39  }
      40  
      41  /* { dg-final { scan-tree-dump-times "Merging successful" 4 "store-merging" } } */