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 */
FN(TYPE,drop_unused_params)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