1 /* { dg-require-effective-target alloca } */
2 typedef const int cint;
3 typedef struct {
4 } Bounds;
5 int ndim_, ncomp_, selectedcomp_, nregions_;
6 void *voidregion_;
7 typedef struct {
8     double diff, err, spread;
9 } Errors;
10 typedef const Errors cErrors;
Split(int iregion,int depth,int xregion)11 void Split(int iregion, int depth, int xregion)
12 {
13   typedef struct {
14       double avg, err, spread, chisq;
15       double xmin[ndim_], xmax[ndim_];
16   } Result;
17   typedef struct region {
18       Result result[ncomp_];
19   } Region;
20   Errors errors[ncomp_];
21   int comp, ireg, xreg;
22   for( ireg = iregion, xreg = xregion; ireg < nregions_; ireg = xreg++ )
23     {
24       Result *result = ((Region *)voidregion_)[ireg].result;
25       for( comp = 0; comp < ncomp_; ++comp )
26 	{
27 	  Result *r = &result[comp];
28 	  cErrors *e = &errors[comp];
29 	  double c = e->diff;
30 	  if( r->err > 0 ) r->err = r->err*e->err + c;
31 	}
32     }
33 }
34 
35