2 { dg-options "-O2 -Wall -Wno-stringop-overread" } */
4 typedef __SIZE_TYPE__
size_t;
6 extern size_t strlen (const char*);
10 struct A0
{ char i
, a
[0]; };
14 void fa0_extern (void)
16 sink (strlen (ea0
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
17 sink (strlen (ea0
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
18 sink (strlen (ea0
.a
)); // valid just-past-the-end offset
19 sink (strlen (ea0
.a
+ 1)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }
22 static struct A0 sa0
= { 0 };
24 void fa0_static (void)
26 sink (strlen (sa0
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
27 sink (strlen (sa0
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
28 sink (strlen (sa0
.a
)); // valid just-past-the-end offset
29 sink (strlen (sa0
.a
+ 1)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }
33 struct Ax
{ char i
, a
[]; };
37 void fax_extern (void)
39 sink (strlen (ax
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" "pr93514" }
40 sink (strlen (ax
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
42 sink (strlen (ax
.a
+ 123));
45 static struct Ax ax0
= { 0, { 0 } };
46 static struct Ax ax1
= { 1, { 1, 0 } };
47 static struct Ax ax2
= { 2, { 2, 1, 0 } };
48 static struct Ax ax3
= { 3, { 3, 2, 1, 0 } };
50 void fax_static (void)
52 sink (strlen (ax0
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
53 sink (strlen (ax0
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
54 sink (strlen (ax0
.a
));
55 sink (strlen (ax0
.a
+ 1)); // valid just-past-the-end offset
56 sink (strlen (ax0
.a
+ 2)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }
58 sink (strlen (ax1
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
59 sink (strlen (ax1
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
60 sink (strlen (ax1
.a
));
61 sink (strlen (ax1
.a
+ 1));
62 sink (strlen (ax1
.a
+ 2)); // valid just-past-the-end offset
63 sink (strlen (ax1
.a
+ 3)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }
65 sink (strlen (ax2
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
66 sink (strlen (ax2
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
67 sink (strlen (ax2
.a
));
68 sink (strlen (ax2
.a
+ 1));
69 sink (strlen (ax2
.a
+ 2));
70 sink (strlen (ax2
.a
+ 3)); // valid just-past-the-end offset
71 sink (strlen (ax2
.a
+ 4)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }
73 sink (strlen (ax3
.a
- 2)); // { dg-warning "\\\[-Warray-bounds" }
74 sink (strlen (ax3
.a
- 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
75 sink (strlen (ax3
.a
));
76 sink (strlen (ax3
.a
+ 1));
77 sink (strlen (ax3
.a
+ 2));
78 sink (strlen (ax3
.a
+ 3));
79 sink (strlen (ax3
.a
+ 4)); // valid just-past-the-end offset
80 sink (strlen (ax3
.a
+ 5)); // { dg-warning "\\\[-Warray-bounds|-Wstringop-overread" }