1 /* 2 * Use of this software is governed by the MIT license 3 * 4 * Written by Sven Verdoolaege 5 */ 6 7 #include <isl_multi_macro.h> 8 9 /* Does the multiple expression "multi" depend in any way 10 * on the parameter with identifier "id"? 11 */ 12 isl_bool FN(MULTI(BASE),involves_param_id)(__isl_keep MULTI(BASE) *multi, 13 __isl_keep isl_id *id) 14 { 15 int i; 16 int pos; 17 18 if (!multi || !id) 19 return isl_bool_error; 20 if (multi->n == 0) 21 return isl_bool_false; 22 pos = FN(MULTI(BASE),find_dim_by_id)(multi, isl_dim_param, id); 23 if (pos < 0) 24 return isl_bool_false; 25 26 for (i = 0; i < multi->n; ++i) { 27 isl_bool involved = FN(EL,involves_param_id)(multi->u.p[i], id); 28 if (involved < 0 || involved) 29 return involved; 30 } 31 32 return isl_bool_false; 33 } 34 35 /* Does the multiple expression "multi" depend in any way 36 * on any of the parameters with identifiers in "list"? 37 */ 38 isl_bool FN(MULTI(BASE),involves_param_id_list)(__isl_keep MULTI(BASE) *multi, 39 __isl_keep isl_id_list *list) 40 { 41 int i; 42 isl_size n; 43 44 n = isl_id_list_size(list); 45 if (n < 0) 46 return isl_bool_error; 47 for (i = 0; i < n; ++i) { 48 isl_bool involves; 49 isl_id *id; 50 51 id = isl_id_list_get_at(list, i); 52 involves = FN(MULTI(BASE),involves_param_id)(multi, id); 53 isl_id_free(id); 54 55 if (involves < 0 || involves) 56 return involves; 57 } 58 59 return isl_bool_false; 60 } 61