/* PR tree-optimization/93249 */ char a[2], b[4], c[6]; void foo (void) { char d[2] = { 0x00, 0x11 }; __builtin_strncpy (&b[2], d, 2); __builtin_strncpy (&b[1], a, 2); if (b[0] || b[1] || b[2] || b[3]) __builtin_abort (); } void bar (void) { __builtin_strncpy (&b[2], "\0\x11", 2); __builtin_strncpy (&b[1], a, 2); if (b[0] || b[1] || b[2] || b[3]) __builtin_abort (); } void baz (void) { __builtin_strncpy (&c[2], "\x11\x11\0\x11", 4); __builtin_strncpy (&c[1], a, 2); if (c[0] || c[1] || c[2] || c[3] != 0x11 || c[4] || c[5]) __builtin_abort (); } int main () { foo (); bar (); baz (); return 0; }