annotate gcc/testsuite/g++.dg/warn/Warray-bounds.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-O2 -Warray-bounds" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 int a[10];
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 extern "C" __SIZE_TYPE__ strlen(const char *s);
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 static inline int n(void) {
kono
parents:
diff changeset
9 return strlen("12345");
kono
parents:
diff changeset
10 }
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 void g(int *p);
kono
parents:
diff changeset
13 void h(int p);
kono
parents:
diff changeset
14 void bar (void *);
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 int* f(void) {
kono
parents:
diff changeset
17 int b[10];
kono
parents:
diff changeset
18 int i;
kono
parents:
diff changeset
19 struct {
kono
parents:
diff changeset
20 int c[10];
kono
parents:
diff changeset
21 } c;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 a[-1] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
24 a[ 0] = 0;
kono
parents:
diff changeset
25 a[ 1] = 0;
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 a[ 9] = 0;
kono
parents:
diff changeset
29 a[10] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
30 a[11] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
31 bar (a);
kono
parents:
diff changeset
32 a[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
33 a[2 * n() - 10] = 1;
kono
parents:
diff changeset
34 a[2 * n() - 1] = 1;
kono
parents:
diff changeset
35 a[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 b[-1] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
38 b[ 0] = 0;
kono
parents:
diff changeset
39 b[ 1] = 0;
kono
parents:
diff changeset
40 b[ 9] = 0;
kono
parents:
diff changeset
41 b[10] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
42 b[11] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
43 bar (b);
kono
parents:
diff changeset
44 b[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
45 b[2 * n() - 10] = 1;
kono
parents:
diff changeset
46 b[2 * n() - 1] = 1;
kono
parents:
diff changeset
47 b[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 c.c[-1] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
50 c.c[ 0] = 0;
kono
parents:
diff changeset
51 c.c[ 1] = 0;
kono
parents:
diff changeset
52 c.c[ 9] = 0;
kono
parents:
diff changeset
53 c.c[10] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
54 c.c[11] = 0; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
55 bar (&c);
kono
parents:
diff changeset
56 c.c[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
57 c.c[2 * n() - 10] = 1;
kono
parents:
diff changeset
58 c.c[2 * n() - 1] = 1;
kono
parents:
diff changeset
59 c.c[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 g(&a[8]);
kono
parents:
diff changeset
62 g(&a[9]);
kono
parents:
diff changeset
63 g(&a[10]);
kono
parents:
diff changeset
64 g(&a[11]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
65 g(&a[-30]+10); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
66 g(&a[-30]+30);
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 g(&b[10]);
kono
parents:
diff changeset
69 g(&c.c[10]);
kono
parents:
diff changeset
70 g(&a[11]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
71 g(&b[11]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
72 g(&c.c[11]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 g(&a[0]);
kono
parents:
diff changeset
75 g(&b[0]);
kono
parents:
diff changeset
76 g(&c.c[0]);
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 g(&a[-1]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
79 g(&b[-1]); /* { dg-warning "array subscript" } */
kono
parents:
diff changeset
80 h(sizeof a[-1]);
kono
parents:
diff changeset
81 h(sizeof a[10]);
kono
parents:
diff changeset
82 h(sizeof b[-1]);
kono
parents:
diff changeset
83 h(sizeof b[10]);
kono
parents:
diff changeset
84 h(sizeof c.c[-1]);
kono
parents:
diff changeset
85 h(sizeof c.c[10]);
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 if (10 < 10)
kono
parents:
diff changeset
88 a[10] = 0;
kono
parents:
diff changeset
89 if (10 < 10)
kono
parents:
diff changeset
90 b[10] = 0;
kono
parents:
diff changeset
91 if (-1 >= 0)
kono
parents:
diff changeset
92 c.c[-1] = 0;
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 bar (b);
kono
parents:
diff changeset
95 bar (&c);
kono
parents:
diff changeset
96 return a;
kono
parents:
diff changeset
97 }
kono
parents:
diff changeset
98