equalities = []
inequalities = []
for islconstraint in islconstraints:
- islpr = libisl.isl_printer_to_str(mainctx)
constant = libisl.isl_constraint_get_constant_val(islconstraint)
constant = islhelper.isl_val_to_int(constant)
coefficients = {}
- for dim, symbol in enumerate(symbols):
- coefficient = libisl.isl_constraint_get_coefficient_val(islconstraint, libisl.isl_dim_set, dim)
+ for index, symbol in enumerate(symbols):
+ coefficient = libisl.isl_constraint_get_coefficient_val(islconstraint, libisl.isl_dim_set, index)
coefficient = islhelper.isl_val_to_int(coefficient)
if coefficient != 0:
coefficients[symbol] = coefficient
@classmethod
def _toislbasicset(cls, equalities, inequalities, symbols):
dimension = len(symbols)
+ indices = {symbol: index for index, symbol in enumerate(symbols)}
islsp = libisl.isl_space_set_alloc(mainctx, 0, dimension)
islbset = libisl.isl_basic_set_universe(libisl.isl_space_copy(islsp))
islls = libisl.isl_local_space_from_space(islsp)
for equality in equalities:
isleq = libisl.isl_equality_alloc(libisl.isl_local_space_copy(islls))
for symbol, coefficient in equality.coefficients():
- val = str(coefficient).encode()
- val = libisl.isl_val_read_from_str(mainctx, val)
- sid = symbols.index(symbol)
+ islval = str(coefficient).encode()
+ islval = libisl.isl_val_read_from_str(mainctx, islval)
+ index = indices[symbol]
isleq = libisl.isl_constraint_set_coefficient_val(isleq,
- libisl.isl_dim_set, sid, val)
+ libisl.isl_dim_set, index, islval)
if equality.constant != 0:
- val = str(equality.constant).encode()
- val = libisl.isl_val_read_from_str(mainctx, val)
- isleq = libisl.isl_constraint_set_constant_val(isleq, val)
+ islval = str(equality.constant).encode()
+ islval = libisl.isl_val_read_from_str(mainctx, islval)
+ isleq = libisl.isl_constraint_set_constant_val(isleq, islval)
islbset = libisl.isl_basic_set_add_constraint(islbset, isleq)
for inequality in inequalities:
islin = libisl.isl_inequality_alloc(libisl.isl_local_space_copy(islls))
for symbol, coefficient in inequality.coefficients():
- val = str(coefficient).encode()
- val = libisl.isl_val_read_from_str(mainctx, val)
- sid = symbols.index(symbol)
+ islval = str(coefficient).encode()
+ islval = libisl.isl_val_read_from_str(mainctx, islval)
+ index = indices[symbol]
islin = libisl.isl_constraint_set_coefficient_val(islin,
- libisl.isl_dim_set, sid, val)
+ libisl.isl_dim_set, index, islval)
if inequality.constant != 0:
- val = str(inequality.constant).encode()
- val = libisl.isl_val_read_from_str(mainctx, val)
- islin = libisl.isl_constraint_set_constant_val(islin, val)
+ islval = str(inequality.constant).encode()
+ islval = libisl.isl_val_read_from_str(mainctx, islval)
+ islin = libisl.isl_constraint_set_constant_val(islin, islval)
islbset = libisl.isl_basic_set_add_constraint(islbset, islin)
return islbset