xref: /netbsd-src/external/mit/isl/dist/isl_drop_unused_params_templ.c (revision 5971e316fdea024efff6be8f03536623db06833e)
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