1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mcpu=5475" } */
3
4 /* This tickles a problem with reload on the m68k. There's a reasonable
5 chance it will get stale over time. */
6
7 int frob;
8 typedef double SplashCoord;
9 void transform (SplashCoord xi, SplashCoord yi);
10 void
arf(SplashCoord x0,SplashCoord y0,SplashCoord x1,SplashCoord y1,SplashCoord x2,SplashCoord y2,SplashCoord x3,SplashCoord y3,SplashCoord * matrix,SplashCoord flatness2)11 arf (SplashCoord x0, SplashCoord y0, SplashCoord x1, SplashCoord y1,
12 SplashCoord x2, SplashCoord y2, SplashCoord x3, SplashCoord y3,
13 SplashCoord * matrix, SplashCoord flatness2)
14 {
15 SplashCoord cx[(1 << 10) + 1][3];
16 SplashCoord cy[(1 << 10) + 1][3];
17 SplashCoord xl0, xl1, xl2, xr0, xr1, xr2, xr3, xx1, xx2, xh;
18 SplashCoord yl0, yl1, yl2, yr0, yr1, yr2, yr3, yy1, yy2, yh;
19 int p1, p2, p3;
20 while (p1 < (1 << 10))
21 {
22 xl0 = cx[p1][0];
23 xx2 = cx[p1][2];
24 yy2 = cy[p1][2];
25 transform (xx2, yy2);
26 if (frob)
27 {
28 xl1 = (xl0 + xx1);
29 xh = (xx1 + xx2);
30 yl2 = (yl1 + yh);
31 xr2 = (xx2 + xr3);
32 yr2 = (yy2 + yr3) * 0.5;
33 xr1 = (xh + xr2);
34 yr1 = (yh + yr2);
35 xr0 = (xl2 + xr1);
36 yr0 = (yl2 + yr1);
37 cx[p1][1] = xl1;
38 cy[p1][1] = yl1;
39 cx[p1][2] = xl2;
40 cx[p3][0] = xr0;
41 cy[p3][0] = yr0;
42 }
43 }
44 }
45