1 /* PR27363.  CSE was breaking on the arm store multiple insn used for
2    structure copies.  */
3 /* { dg-do run } */
4 /* { dg-options "-Os" } */
5 extern void abort (void);
6 
7 struct snd_mask {
8     unsigned int bits[6];
9 };
10 
11 static int __attribute__((noinline))
snd_mask_refine(struct snd_mask * mask)12 snd_mask_refine(struct snd_mask *mask)
13 {
14   struct snd_mask old;
15 
16   old = *mask;
17   if (mask->bits[0]==0 && mask->bits[1]==0)
18     return 1;
19 
20   return old.bits[0] != mask->bits[0];
21 }
22 
main(int argc,char * argv[])23 int main(int argc, char *argv[])
24 {
25   struct snd_mask mask;
26 
27 
28   mask.bits[0] = 23;
29   mask.bits[1] = 42;
30   mask.bits[2] = 0;
31   mask.bits[3] = 0;
32   mask.bits[4] = 0;
33   mask.bits[5] = 0;
34 
35 
36   if (snd_mask_refine(&mask))
37     abort();
38   return 0;
39 }
40