gcc_assert (TREE_CODE (e) == INTEGER_CST);
value_init (val);
- value_set_si (val, int_cst_value (e));
+ tree_int_to_gmp (e, val);
add_value_to_dim (l, expr, val);
value_clear (val);
}
{
Value val;
ppl_Coefficient_t coef;
- int v = int_cst_value (cst);
+ tree type = TREE_TYPE (cst);
value_init (val);
- value_set_si (val, 0);
/* Necessary to not get "-1 = 2^n - 1". */
- if (v < 0)
- value_sub_int (val, val, -v);
- else
- value_add_int (val, val, v);
+ mpz_set_double_int (val, double_int_sext (tree_to_double_int (cst),
+ TYPE_PRECISION (type)), false);
value_multiply (val, val, k);
ppl_new_Coefficient (&coef);
Value val;
gcc_assert (host_integerp (TREE_OPERAND (e, 1), 0));
value_init (val);
- value_set_si (val, int_cst_value (TREE_OPERAND (e, 1)));
+ tree_int_to_gmp (TREE_OPERAND (e, 1), val);
value_multiply (val, val, k);
scan_tree_for_params (s, TREE_OPERAND (e, 0), c, val);
value_clear (val);
Value val;
gcc_assert (host_integerp (TREE_OPERAND (e, 0), 0));
value_init (val);
- value_set_si (val, int_cst_value (TREE_OPERAND (e, 0)));
+ tree_int_to_gmp (TREE_OPERAND (e, 0), val);
value_multiply (val, val, k);
scan_tree_for_params (s, TREE_OPERAND (e, 1), c, val);
value_clear (val);
/* subscript - low >= 0 */
if (host_integerp (low, 0))
{
+ tree minus_low;
+
ppl_new_Linear_Expression_with_dimension (&expr, accessp_nb_dims);
ppl_set_coef (expr, subscript, 1);
- ppl_set_inhomogeneous (expr, -int_cst_value (low));
+ minus_low = fold_build1 (NEGATE_EXPR, TREE_TYPE (low), low);
+ ppl_set_inhomogeneous_tree (expr, minus_low);
ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
ppl_Polyhedron_add_constraint (accesses, cstr);
ppl_new_Linear_Expression_with_dimension (&expr, accessp_nb_dims);
ppl_set_coef (expr, subscript, -1);
- ppl_set_inhomogeneous (expr, int_cst_value (high));
+ ppl_set_inhomogeneous_tree (expr, high);
ppl_new_Constraint (&cstr, expr, PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
ppl_Polyhedron_add_constraint (accesses, cstr);