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