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)12snd_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[])23int 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