Fix file cache tunables documentation
[official-gcc.git] / gcc / testsuite / gcc.dg / pr113907-1.c
blob04c4fb8c1287b6b6956b45f30ac225a74b63b4ed
1 /* PR middle-end/113907 */
2 /* { dg-do run } */
3 /* { dg-options "-O2" } */
4 /* { dg-additional-options "-minline-all-stringops" { target i?86-*-* x86_64-*-* } } */
6 static inline int
7 foo (int len, void *indata, void *outdata)
9 if (len < 0 || (len & 7) != 0)
10 return 0;
11 if (len != 0 && indata != outdata)
12 __builtin_memcpy (outdata, indata, len);
13 return len;
16 static inline int
17 bar (int len, void *indata, void *outdata)
19 if (len < 0 || (len & 1) != 0)
20 return 0;
21 if (len != 0 && indata != outdata)
22 __builtin_memcpy (outdata, indata, len);
23 return 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)
32 if ((len & 6) != 0)
33 bar (len, indata, outdata);
34 else
35 foo (len, indata, outdata);
38 struct S { char buf[64]; } s __attribute__((aligned (8)));
40 int
41 main ()
43 for (int i = 0; i < 64; ++i)
44 s.buf[i] = ' ' + 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))
48 __builtin_abort ();