Fix file cache tunables documentation
[official-gcc.git] / gcc / testsuite / gcc.dg / Wstringop-overread-4.c
blob8248dad213b466cc663532a998a3649e05550fda
1 /* Verify -Wstringop-overread with a source pointer pointing either
2 before the beginning or past the end of an object.
3 { dg-do compile }
4 { dg-options "-O -Wall" } */
6 typedef __SIZE_TYPE__ size_t;
8 size_t strlen (const char *);
11 extern char a[1];
13 volatile size_t n;
15 void len_si_1_max (int i)
17 if (i < 1) i = 1;
18 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" }
19 n = strlen (a + i + 1); // { dg-warning "reading 1 or more bytes from a region of size 0" }
22 void len_ui_1_max (unsigned i)
24 if (i < 1) i = 1;
25 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" }
26 n = strlen (a + i + 1); // { dg-warning "reading 1 or more bytes from a region of size 0" "" { xfail ilp32 } }
29 void len_sl_1_max (long i)
31 if (i < 1) i = 1;
32 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" }
33 n = strlen (a + i + 1); // { dg-warning "reading 1 or more bytes from a region of size 0" }
36 void len_ul_1_max (unsigned long i)
38 if (i < 1) i = 1;
39 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" }
40 n = strlen (a + i + 1); // { dg-warning "reading 1 or more bytes from a region of size 0" "" { xfail *-*-* } }
44 void len_si_min_m1 (int i)
46 if (i > -1) i = -1;
47 n = strlen (a + i - 1); // { dg-warning "reading 1 or more bytes from a region of size 0" "" { xfail lp64 } }
48 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" "" { xfail *-*-* } }
49 n = strlen (a + i + 2);
52 void len_sl_min_m1 (long i)
54 if (i > -1) i = -1;
55 n = strlen (a + i - 1); // { dg-warning "reading 1 or more bytes from a region of size 0" }
56 n = strlen (a + i); // { dg-warning "reading 1 or more bytes from a region of size 0" "" { xfail *-*-* } }
57 n = strlen (a + i + 2);