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