Mercurial > hg > CbC > CbC_gcc
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 } |