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