1 /* Various examples of safe array access for which -Warray-bounds
2 shouldn't issue a warning at any optimization level
3 (PR tree-optimization/83510). */
5 /* { dg-options "-Warray-bounds" } */
7 extern int get_flag (void);
15 extern void wfm(struct xyz
*, int, unsigned int);
17 static unsigned int f(struct xyz
* ctx
, unsigned int number
)
23 case 0xC: case 0xD: case 0xE: case 0xF:
24 case 0x10: case 0x11: case 0x12: case 0x13:
25 return arr
[number
- 0xa];
30 int g(struct xyz
* ctx
) {
33 for (i
= 0; i
< 10; i
++) {
34 wfm(ctx
, i
, f(ctx
, i
));
40 static unsigned int f_signed(struct xyz
* ctx
, int number
)
46 case 0xC: case 0xD: case 0xE: case 0xF:
47 case 0x10: case 0x11: case 0x12: case 0x13:
53 int g_signed(struct xyz
* ctx
) {
56 for (i
= 0; i
< 10; i
++) {
57 wfm(ctx
, i
, f(ctx
, i
));
63 void test_2 (struct xyz
* ctx
)
67 for (i
= 0; i
< 10; i
++) {
69 wfm(ctx
, i
, f(ctx
, i
));
73 void test_2_signed (struct xyz
* ctx
)
77 for (i
= 0; i
< 10; i
++) {
79 wfm(ctx
, i
, f_signed(ctx
, i
));
83 void test_3 (struct xyz
* ctx
)
87 for (i
= 0; i
< 10; i
++) {
93 case 0xC: case 0xD: case 0xE: case 0xF:
94 case 0x10: case 0x11: case 0x12: case 0x13:
96 wfm(ctx
, i
, arr
[i
- 0xa]);
102 void test_3_signed (struct xyz
* ctx
)
106 for (i
= 0; i
< 10; i
++) {
109 wfm(ctx
, i
, ctx
->a0
);
112 case 0xC: case 0xD: case 0xE: case 0xF:
113 case 0x10: case 0x11: case 0x12: case 0x13:
121 void test_4 (struct xyz
* ctx
)
125 for (i
= 0; i
< 10; i
++) {
128 wfm(ctx
, i
, ctx
->a0
);
131 case 0xC: case 0xD: case 0xE: case 0xF:
132 case 0x10: case 0x11: case 0x12: case 0x13:
133 for (j
= 0; j
< 5; j
++)
134 wfm(ctx
, i
, arr
[i
- 0xa]);
139 void test_4_signed (struct xyz
* ctx
)
143 for (i
= 0; i
< 10; i
++) {
146 wfm(ctx
, i
, ctx
->a0
);
149 case 0xC: case 0xD: case 0xE: case 0xF:
150 case 0x10: case 0x11: case 0x12: case 0x13:
151 for (j
= 0; j
< 5; j
++)
158 void test_5 (struct xyz
* ctx
)
161 for (i
= 10; i
< 20; i
++) {
162 wfm(ctx
, i
, arr
[i
- 10]);
166 void test_5_signed (struct xyz
* ctx
)
169 for (i
= 10; i
< 20; i
++) {
170 wfm(ctx
, i
, arr
[i
- 10]);