/* PR c/78408 */ /* { dg-do compile { target size32plus } } */ /* { dg-options "-O2 -fdump-tree-fab1-details" } */ /* { dg-final { scan-tree-dump-not "after previous" "fab1" } } */ struct S { char a[32]; }; struct T { char a[65536]; }; void bar (int, struct S *, struct S *, struct T *, struct T *); void baz (char *, char *); void f1 (void) { struct S a, b; struct T c, d; __builtin_memset (&b, 2, sizeof (b)); a = b; __builtin_memset (&d, 3, sizeof (d)); c = d; bar (3, &a, &b, &c, &d); } void f2 (void) { char a[64], b[64]; __builtin_memset (a + 13, 2, 27); __builtin_memcpy (b + 4, a + 17, 24); baz (a, b); } void f3 (void) { char a[64], b[64]; __builtin_memset (a + 13, 2, 27); __builtin_memcpy (b + 4, a + 12, 5); baz (a, b); }