1 /* { dg-do run } */
2 /* { dg-options "-O2 -fgcse-sm -minline-all-stringops" } */
3 
4 /* Store motion used to fail to recognize killed expressions within
5    parallels such as those generated for memory copying.  */
6 
7 static const char s[1024] __attribute__ ((__aligned__ (32)))
8   = "This is what we should get!";
9 
bug(int arg)10 int bug (int arg) {
11   char str[sizeof(s) > 4 ? sizeof(s) : 4] __attribute__ ((__aligned__ (32)));
12 
13   __builtin_memcpy (str, "Bug", 4);
14 
15   if (arg <= 2)
16     __builtin_memcpy (str, s, sizeof (s));
17 
18   if (arg <= 1)
19     __builtin_memcpy (str, "Err", 4);
20 
21   __builtin_puts (str);
22 
23   return str[0] != s[0];
24 }
25 
main()26 int main () {
27   if (bug (2))
28     __builtin_abort ();
29 
30   return 0;
31 }
32