1  /* { dg-do compile } */
       2  /* { dg-options "-O3 -Warray-bounds" } */
       3  
       4  extern int block2[7][256];
       5  
       6  static int encode_block(int block2[7][256], unsigned level)
       7  {
       8      int best_score = 0;
       9  
      10      for (unsigned x = 0; x < level; x++) {
      11          int v = block2[1][x];
      12          block2[level][x] = 0;
      13          best_score += v * v;
      14      }
      15  
      16      if (level > 0 && best_score > 64) {
      17          int score = 0;
      18  
      19          score += encode_block(block2, level - 1);
      20          score += encode_block(block2, level - 1);
      21  
      22          if (score < best_score) {
      23              best_score = score;
      24          }
      25      }
      26  
      27      return best_score;
      28  }
      29  
      30  int foo(void)
      31  {
      32      return encode_block(block2, 5);
      33  }