Polly 19.0.0git
isl_ilp_opt_val_templ.c
Go to the documentation of this file.
1/*
2 * Copyright 2017 Sven Verdoolaege
3 *
4 * Use of this software is governed by the MIT license
5 *
6 * Written by Sven Verdoolaege
7 */
8
9#define xCAT(A,B) A ## B
10#define CAT(A,B) xCAT(A,B)
11#undef TYPE
12#define TYPE CAT(isl_,BASE)
13#define xBFN(BASE,NAME) isl_ ## BASE ## _ ## NAME
14#define BFN(BASE,NAME) xBFN(BASE,NAME)
15
16/* Return the minimal (maximal if "max" is set) value attained
17 * by the given set dimension,
18 * independently of the parameter values and of any other dimensions.
19 *
20 * Return infinity or negative infinity if the optimal value is unbounded and
21 * NaN if "set" is empty.
22 */
23static __isl_give isl_val *BFN(BASE,dim_opt_val)(__isl_take TYPE *set, int max,
24 int pos)
25{
27 isl_aff *obj;
28 isl_val *v;
29
30 if (BFN(BASE,check_range)(set, isl_dim_set, pos, 1) < 0)
31 goto error;
32 ls = isl_local_space_from_space(BFN(BASE,get_space)(set));
34 v = BFN(BASE,opt_val)(set, max, obj);
36 BFN(BASE,free)(set);
37
38 return v;
39error:
40 BFN(BASE,free)(set);
41 return NULL;
42}
__isl_null isl_aff * isl_aff_free(__isl_take isl_aff *aff)
Definition: isl_aff.c:390
__isl_give isl_aff * isl_aff_var_on_domain(__isl_take isl_local_space *ls, enum isl_dim_type type, unsigned pos)
Definition: isl_aff.c:311
#define __isl_take
Definition: ctx.h:22
#define __isl_give
Definition: ctx.h:19
#define BASE
Definition: flow_cmp.c:49
#define BFN(BASE, NAME)
#define TYPE
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_map.c:70
const char * set
Definition: isl_test.c:1356
const char * obj
Definition: isl_test.c:3316
__isl_give isl_local_space * isl_local_space_from_space(__isl_take isl_space *space)
@ isl_dim_set
Definition: space_type.h:18