1 /* PR middle-end/63477 - Bogus warning with -O3 -Warray-bounds: array
2    subscript is above array bounds
3    { dg-do compile }
4    { dg-options "-O3 -Warray-bounds" }  */
5 
6 #define MAX_VAL 16
7 
8 typedef struct
9 {
10   int itemList[MAX_VAL + 1];
11   unsigned int numItems;
12 } ItemList;
13 
FrobList(ItemList * l)14 void FrobList (ItemList *l)
15 {
16   unsigned int i;
17 
18   for (i = 0; i < l->numItems - 1; i++)
19     {
20       int minVal = l->itemList[i];
21 
22       unsigned int minIdx = i;
23       unsigned int idx;
24 
25       for (idx = i + 1; idx < l->numItems; ++idx) {
26 
27 	if (l->itemList[idx] < minVal)  /* { dg-bogus "\\\[-Warray-bounds]" } */
28 	  {
29 	    minVal = l->itemList[idx];
30 	    minIdx = idx;
31 	  }
32       }
33 
34       l->itemList[i] = l->itemList[minIdx];
35     }
36 }
37