1 /* Verify -Wstringop-overread with a source pointer pointing either
2 before the beginning or past the end of an object.
4 { dg-options "-O -Wall" } */
6 typedef __SIZE_TYPE__
size_t;
8 size_t strlen (const char *);
15 void len_si_1_max (int i
)
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
)
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
)
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
)
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
)
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
)
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);