/* { dg-do compile } */ /* { dg-options "-O3 -Warray-bounds" } */ extern int block2[7][256]; static int encode_block(int block2[7][256], unsigned level) { int best_score = 0; for (unsigned x = 0; x < level; x++) { int v = block2[1][x]; block2[level][x] = 0; best_score += v * v; } if (level > 0 && best_score > 64) { int score = 0; score += encode_block(block2, level - 1); score += encode_block(block2, level - 1); if (score < best_score) { best_score = score; } } return best_score; } int foo(void) { return encode_block(block2, 5); }