| /* { dg-do compile } */ |
| /* { dg-options "-O2 -mcpu=5475" } */ |
| |
| /* This tickles a problem with reload on the m68k. There's a reasonable |
| chance it will get stale over time. */ |
| |
| int frob; |
| typedef double SplashCoord; |
| void transform (SplashCoord xi, SplashCoord yi); |
| void |
| arf (SplashCoord x0, SplashCoord y0, SplashCoord x1, SplashCoord y1, |
| SplashCoord x2, SplashCoord y2, SplashCoord x3, SplashCoord y3, |
| SplashCoord * matrix, SplashCoord flatness2) |
| { |
| SplashCoord cx[(1 << 10) + 1][3]; |
| SplashCoord cy[(1 << 10) + 1][3]; |
| SplashCoord xl0, xl1, xl2, xr0, xr1, xr2, xr3, xx1, xx2, xh; |
| SplashCoord yl0, yl1, yl2, yr0, yr1, yr2, yr3, yy1, yy2, yh; |
| int p1, p2, p3; |
| while (p1 < (1 << 10)) |
| { |
| xl0 = cx[p1][0]; |
| xx2 = cx[p1][2]; |
| yy2 = cy[p1][2]; |
| transform (xx2, yy2); |
| if (frob) |
| { |
| xl1 = (xl0 + xx1); |
| xh = (xx1 + xx2); |
| yl2 = (yl1 + yh); |
| xr2 = (xx2 + xr3); |
| yr2 = (yy2 + yr3) * 0.5; |
| xr1 = (xh + xr2); |
| yr1 = (yh + yr2); |
| xr0 = (xl2 + xr1); |
| yr0 = (yl2 + yr1); |
| cx[p1][1] = xl1; |
| cy[p1][1] = yl1; |
| cx[p1][2] = xl2; |
| cx[p3][0] = xr0; |
| cy[p3][0] = yr0; |
| } |
| } |
| } |