/* { dg-do compile } */ /* { dg-options "-Ofast" } */ typedef struct { double x, y; } PointInfo; typedef struct { PointInfo point; } PrimitiveInfo; int TraceBezier_alpha, TraceBezier_i; double TraceBezier_weight; PointInfo *TraceBezier_points; PrimitiveInfo *TraceBezier_primitive_info; void TracePath() { double *coefficients; PointInfo point; long j; for (; TraceBezier_i; TraceBezier_i++) { point.x = point.y = TraceBezier_alpha = 1.0; j = 0; for (; j < 4; j++) { point.x += TraceBezier_alpha * coefficients[j] * TraceBezier_primitive_info->point.x; point.y += TraceBezier_alpha * TraceBezier_primitive_info->point.y; TraceBezier_alpha *= TraceBezier_weight; TraceBezier_primitive_info++; } TraceBezier_points[TraceBezier_i] = point; TraceBezier_weight += 1.0; } }