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