modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20000605-1.c (about)

     1  typedef struct _RenderInfo RenderInfo;
     2  struct _RenderInfo
     3  {
     4      int y;
     5      float scaley;
     6      int src_y;
     7  };
     8  
     9  static void bar(void) { }
    10  
    11  static int
    12  render_image_rgb_a (RenderInfo * info)
    13  {
    14    int y, ye;
    15    float error;
    16    float step;
    17  
    18    y = info->y;
    19    ye = 256;
    20  
    21    step = 1.0 / info->scaley;
    22  
    23    error = y * step;
    24    error -= ((int) error) - step;
    25  
    26    for (; y < ye; y++) {
    27        if (error >= 1.0) {
    28  	  info->src_y += (int) error;
    29  	  error -= (int) error;
    30  	  bar();
    31        }
    32        error += step;
    33    }
    34    return info->src_y;
    35  }
    36  
    37  int main (void)
    38  {
    39      RenderInfo info;
    40  
    41      info.y = 0;
    42      info.src_y = 0;
    43      info.scaley = 1.0;
    44  
    45      if (render_image_rgb_a(&info) != 256)
    46         abort ();
    47      exit(0);
    48  }