Merged with mainline at revision 128810.
[official-gcc.git] / gcc / testsuite / g++.dg / warn / Warray-bounds.C
blob0385516abd4e215467d9358c8dfce053c0c1fe6e
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -Warray-bounds" } */
4 int a[10];
6 static inline int n(void) {
7     __SIZE_TYPE__ strlen(const char *s);
8     return strlen("12345");
11 void g(int *p);
12 void h(int p);
14 int* f(void) {
15     int b[10];
16     int i;
17     struct {
18        int c[10];
19     } c;
21     a[-1] = 0;             /* { dg-warning "array subscript" } */
22     a[ 0] = 0;
23     a[ 1] = 0;
26     a[ 9] = 0;
27     a[10] = 0;             /* { dg-warning "array subscript" } */
28     a[11] = 0;             /* { dg-warning "array subscript" } */
29     a[2 * n() - 11] = 0;    /* { dg-warning "array subscript" } */
30     a[2 * n() - 10] = 0;
31     a[2 * n() -  1] = 0;
32     a[2 * n() -  0] = 0;    /* { dg-warning "array subscript" } */
34     b[-1] = 0;             /* { dg-warning "array subscript" } */
35     b[ 0] = 0;
36     b[ 1] = 0;
37     b[ 9] = 0;
38     b[10] = 0;             /* { dg-warning "array subscript" } */
39     b[11] = 0;             /* { dg-warning "array subscript" } */
40     b[2 * n() - 11] = 0;    /* { dg-warning "array subscript" } */
41     b[2 * n() - 10] = 0;
42     b[2 * n() -  1] = 0;
43     b[2 * n() -  0] = 0;    /* { dg-warning "array subscript" } */
45     c.c[-1] = 0;           /* { dg-warning "array subscript" } */
46     c.c[ 0] = 0;
47     c.c[ 1] = 0;
48     c.c[ 9] = 0;
49     c.c[10] = 0;           /* { dg-warning "array subscript" } */
50     c.c[11] = 0;           /* { dg-warning "array subscript" } */
51     c.c[2 * n() - 11] = 0;  /* { dg-warning "array subscript" } */
52     c.c[2 * n() - 10] = 0;
53     c.c[2 * n() -  1] = 0;
54     c.c[2 * n() -  0] = 0;  /* { dg-warning "array subscript" } */
56     g(&a[8]);
57     g(&a[9]);
58     g(&a[10]);
59     g(&a[11]);             /* { dg-warning "array subscript" } */
60     g(&a[-30]+10);             /* { dg-warning "array subscript" } */
61     g(&a[-30]+30);
63     g(&b[10]);
64     g(&c.c[10]);
65     g(&a[11]);             /* { dg-warning "array subscript" } */
66     g(&b[11]);             /* { dg-warning "array subscript" } */
67     g(&c.c[11]);           /* { dg-warning "array subscript" } */
69     g(&a[0]);
70     g(&b[0]);
71     g(&c.c[0]);
73     g(&a[-1]);             /* { dg-warning "array subscript" } */
74     g(&b[-1]);             /* { dg-warning "array subscript" } */ 
75     h(sizeof a[-1]);
76     h(sizeof a[10]);
77     h(sizeof b[-1]);
78     h(sizeof b[10]);
79     h(sizeof c.c[-1]);
80     h(sizeof c.c[10]);
82     if (10 < 10)
83        a[10] = 0;
84     if (10 < 10)
85        b[10] = 0;
86     if (-1 >= 0)
87        c.c[-1] = 0;
89     return a;