/* { dg-do run } */ /* { dg-options "-O2 -fgcse-sm -minline-all-stringops" } */ /* Store motion used to fail to recognize killed expressions within parallels such as those generated for memory copying. */ static const char s[1024] __attribute__ ((__aligned__ (32))) = "This is what we should get!"; int bug (int arg) { char str[sizeof(s) > 4 ? sizeof(s) : 4] __attribute__ ((__aligned__ (32))); __builtin_memcpy (str, "Bug", 4); if (arg <= 2) __builtin_memcpy (str, s, sizeof (s)); if (arg <= 1) __builtin_memcpy (str, "Err", 4); __builtin_puts (str); return str[0] != s[0]; } int main () { if (bug (2)) __builtin_abort (); return 0; }