1 /* PR middle-end/113907 */
3 /* { dg-options "-O2" } */
4 /* { dg-additional-options "-minline-all-stringops" { target i?86-*-* x86_64-*-* } } */
7 foo (int len
, void *indata
, void *outdata
)
9 if (len
< 0 || (len
& 7) != 0)
11 if (len
!= 0 && indata
!= outdata
)
12 __builtin_memcpy (outdata
, indata
, len
);
17 bar (int len
, void *indata
, void *outdata
)
19 if (len
< 0 || (len
& 1) != 0)
21 if (len
!= 0 && indata
!= outdata
)
22 __builtin_memcpy (outdata
, indata
, len
);
26 int (*volatile p1
) (int, void *, void *) = foo
;
27 int (*volatile p2
) (int, void *, void *) = bar
;
29 __attribute__((noipa
)) int
30 baz (int len
, void *indata
, void *outdata
)
33 bar (len
, indata
, outdata
);
35 foo (len
, indata
, outdata
);
38 struct S
{ char buf
[64]; } s
__attribute__((aligned (8)));
43 for (int i
= 0; i
< 64; ++i
)
45 p2 (2, s
.buf
, s
.buf
+ 33);
46 for (int i
= 0; i
< 64; ++i
)
47 if (s
.buf
[i
] != ' ' + ((i
>= 33 && i
< 35) ? i
- 33 : i
))