Home | History | Annotate | Line # | Download | only in dist
      1 /*
      2  * Use of this software is governed by the MIT license
      3  */
      4 
      5 #define xFN(TYPE,NAME) TYPE ## _ ## NAME
      6 #define FN(TYPE,NAME) xFN(TYPE,NAME)
      7 
      8 /* Drop all parameters not referenced by "obj".
      9  */
     10 __isl_give TYPE *FN(TYPE,drop_unused_params)(__isl_take TYPE *obj)
     11 {
     12 	int i;
     13 	isl_size n;
     14 
     15 	n = FN(TYPE,dim)(obj, isl_dim_param);
     16 	if (n < 0 || FN(TYPE,check_named_params)(obj) < 0)
     17 		return FN(TYPE,free)(obj);
     18 
     19 	for (i = n - 1; i >= 0; i--) {
     20 		isl_bool involves;
     21 
     22 		involves = FN(TYPE,involves_dims)(obj, isl_dim_param, i, 1);
     23 		if (involves < 0)
     24 			return FN(TYPE,free)(obj);
     25 		if (!involves)
     26 			obj = FN(TYPE,drop_dims)(obj, isl_dim_param, i, 1);
     27 	}
     28 
     29 	return obj;
     30 }
     31