| /* { dg-do run } */ |
| /* { dg-options "-O3" } */ |
| |
| unsigned char b, f; |
| short d[1][8][1], *g = &d[0][3][0]; |
| |
| void __attribute__((noinline)) foo () |
| { |
| int k[256] = { 0, 0, 0, 4, 0, 0 }; |
| for (int c = 252; c >= 0; c--) |
| { |
| b = f; |
| *g = k[c + 3]; |
| k[c + 1] = 0; |
| } |
| for (int i = 0; i < 8; i++) |
| if (d[0][i][0] != 0) |
| __builtin_abort (); |
| } |
| |
| void __attribute__((noinline)) bar () |
| { |
| int k[256] = { 0, 0, 0, 4, 0, 0 }; |
| k[255] = 4; |
| for (int c = 0; c <=252; c++) |
| { |
| b = f; |
| *g = k[c + 3]; |
| k[c + 1] = 0; |
| } |
| for (int i = 0; i < 8; i++) |
| if ((i == 3 && d[0][i][0] != 4) || (i != 3 && d[0][i][0] != 0)) |
| __builtin_abort (); |
| } |
| |
| int main () |
| { |
| foo (); |
| bar (); |
| return 0; |
| } |