2 /* { dg-do compile { target size32plus } } */
3 /* { dg-options "-O2 -fdump-tree-fab1-details" } */
4 /* { dg-final { scan-tree-dump-times "after previous" 17 "fab1" } } */
6 struct S
{ char a
[32]; };
7 struct T
{ char a
[65536]; };
8 void bar (int, struct S
*, struct S
*, struct T
*, struct T
*);
9 void baz (char *, char *);
16 a
= b
= (struct S
) {};
17 c
= d
= (struct T
) {};
18 bar (1, &a
, &b
, &c
, &d
);
30 bar (2, &a
, &b
, &c
, &d
);
38 __builtin_memset (&b
, 0, sizeof (b
));
40 __builtin_memset (&d
, 0, sizeof (d
));
42 bar (3, &a
, &b
, &c
, &d
);
52 __builtin_memcpy (&a
, &b
, sizeof (b
));
54 __builtin_memcpy (&c
, &d
, sizeof (d
));
55 bar (4, &a
, &b
, &c
, &d
);
63 __builtin_memset (&b
, 0, sizeof (b
));
64 __builtin_memcpy (&a
, &b
, sizeof (b
));
65 __builtin_memset (&d
, 0, sizeof (d
));
66 __builtin_memcpy (&c
, &d
, sizeof (d
));
67 bar (5, &a
, &b
, &c
, &d
);
75 g
= e
= a
= b
= (struct S
) {};
76 h
= f
= c
= d
= (struct T
) {};
77 bar (6, &a
, &b
, &c
, &d
);
78 bar (6, &e
, &g
, &f
, &h
);
85 __builtin_memset (a
+ 13, 2, 27);
86 __builtin_memcpy (b
+ 4, a
+ 17, 23);