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

     1  typedef struct descriptor_dimension
     2  {
     3    int stride;
     4    int lbound;
     5    int ubound;
     6  } descriptor_dimension;
     7  typedef struct {
     8      int *data;
     9      int dtype;
    10      descriptor_dimension dim[7];
    11  } gfc_array_i4;
    12  
    13  void
    14  msum_i4 (gfc_array_i4 * const retarray,
    15  	 gfc_array_i4 * const array,
    16  	 const int * const pdim)
    17  {
    18    int count[7];
    19    int extent[7];
    20    int * dest;
    21    const int * base;
    22    int dim;
    23    int n;
    24    int len;
    25  
    26    dim = (*pdim) - 1;
    27    len = array->dim[dim].ubound + 1 - array->dim[dim].lbound;
    28  
    29    for (n = 0; n < dim; n++)
    30      {
    31        extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
    32        count[n] = 0;
    33      }
    34  
    35    dest = retarray->data;
    36    base = array->data;
    37  
    38    do
    39      {
    40        int result = 0;
    41  
    42        for (n = 0; n < len; n++, base++)
    43  	result += *base;
    44        *dest = result;
    45  
    46        count[0]++;
    47        dest += 1;
    48      }
    49    while (count[0] != extent[0]);
    50  }
    51  
    52  int main()
    53  {
    54    int rdata[3];
    55    int adata[9];
    56    gfc_array_i4 retarray = { rdata, 265, { { 1, 1, 3 } } };
    57    gfc_array_i4 array = { adata, 266, { { 1, 1, 3 }, { 3, 1, 3 } } };
    58    int dim = 2;
    59    msum_i4 (&retarray, &array, &dim);
    60    return 0;
    61  }