comparison gcc/testsuite/gcc.dg/Warray-bounds-58.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* { dg-do compile }
2 { dg-options "-O2 -Wall" } */
3
4 typedef __SIZE_TYPE__ size_t;
5
6 extern size_t strlen (const char*);
7
8 void sink (size_t);
9
10 struct A0 { char i, a[0]; };
11
12 extern struct A0 ea0;
13
14 void fa0_extern (void)
15 {
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
19 sink (strlen (ea0.a + 1)); // { dg-warning "\\\[-Warray-bounds" }
20 }
21
22 static struct A0 sa0 = { 0 };
23
24 void fa0_static (void)
25 {
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
29 sink (strlen (sa0.a + 1)); // { dg-warning "\\\[-Warray-bounds" }
30 }
31
32
33 struct Ax { char i, a[]; };
34
35 extern struct Ax ax;
36
37 void fax_extern (void)
38 {
39 sink (strlen (ax.a - 2)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
40 sink (strlen (ax.a - 1)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
41 sink (strlen (ax.a));
42 sink (strlen (ax.a + 123));
43 }
44
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 } };
49
50 void fax_static (void)
51 {
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
56 sink (strlen (ax0.a + 2)); // { dg-warning "\\\[-Warray-bounds" }
57
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
63 sink (strlen (ax1.a + 3)); // { dg-warning "\\\[-Warray-bounds" }
64
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
71 sink (strlen (ax2.a + 4)); // { dg-warning "\\\[-Warray-bounds" }
72
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)); // { dg-warning "\\\[-Warray-bounds" "pr93514" { xfail *-*-* } }
80 sink (strlen (ax3.a + 5)); // { dg-warning "\\\[-Warray-bounds" }
81 }