text: /* { 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;
  }
  