| /* { dg-do compile } */ |
| /* { dg-options "-O1" } */ |
| |
| /* This used to result in an ICE. */ |
| |
| _Decimal64 y[258][258]; |
| _Decimal64 dd[258][258]; |
| _Decimal64 ry[258][258]; |
| _Decimal64 |
| foo (void) |
| { |
| int i; |
| int j; |
| int m; |
| int im; |
| int jm; |
| int ip; |
| int jp; |
| int i2m; |
| int i1p; |
| _Decimal64 a; |
| _Decimal64 b; |
| _Decimal64 c; |
| _Decimal64 qi; |
| _Decimal64 qj; |
| _Decimal64 xx; |
| _Decimal64 yx; |
| _Decimal64 xy; |
| _Decimal64 yy; |
| _Decimal64 rel; |
| _Decimal64 qxx; |
| _Decimal64 qyy; |
| _Decimal64 qxy; |
| do |
| { |
| jp = j + 1; |
| for (i = i1p; i <= i2m; i++) |
| { |
| ip = i + 1; |
| yx = y[ip][j] - y[im][j]; |
| yy = y[i][jp] - y[i][jm]; |
| a = 0.25dd * (xy * xy + yy * yy); |
| b = 0.25dd * (xx * xx + yx * yx); |
| c = 0.125dd * (xx * xy + yx * yy); |
| qj = 0.0dd; |
| dd[i][m] = b + a * rel + b; |
| qxx = y[ip][j] - 2.0dd * y[i][j] + y[im][j]; |
| qyy = y[i][jp] - 2.0dd * y[i][j] + y[i][jm]; |
| qxy = y[ip][jp] - y[ip][jm] - y[im][jp] + y[im][jm]; |
| ry[i][m] = a * qxx + b * qyy - c * qxy + yx * qi + yy * qj; |
| } |
| } |
| while (1); |
| } |