aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite-sese-to-poly.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-12-23 16:26:11 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-12-23 16:26:11 +0000
commitbd29eba228a2d866aac76c013d0425b28e8f08e1 (patch)
treee554feece0bdea8a580635a59a666f5458d2c828 /gcc/graphite-sese-to-poly.c
parent01be8516aa6411606f2629cdc19c6acf62511ca6 (diff)
downloadgcc-bd29eba228a2d866aac76c013d0425b28e8f08e1.zip
gcc-bd29eba228a2d866aac76c013d0425b28e8f08e1.tar.gz
gcc-bd29eba228a2d866aac76c013d0425b28e8f08e1.tar.bz2
Fix PR46758: Do not use int_cst_value.
2010-12-23 Sebastian Pop <sebastian.pop@amd.com> Richard Guenther <rguenther@suse.de> PR tree-optimization/46758 * graphite-sese-to-poly.c (scan_tree_for_params_right_scev): Use tree_int_to_gmp instead of int_cst_value. (scan_tree_for_params_int): Same. (scan_tree_for_params): Same. (pdr_add_data_dimensions): Use ppl_set_inhomogeneous_tree. * gcc.dg/graphite/run-id-pr46758.c: New. Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r168211
Diffstat (limited to 'gcc/graphite-sese-to-poly.c')
-rw-r--r--gcc/graphite-sese-to-poly.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 49250b6..a1373c7 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -612,7 +612,7 @@ scan_tree_for_params_right_scev (sese s, tree e, int var,
gcc_assert (TREE_CODE (e) == INTEGER_CST);
mpz_init (val);
- mpz_set_si (val, int_cst_value (e));
+ tree_int_to_gmp (e, val);
add_value_to_dim (l, expr, val);
mpz_clear (val);
}
@@ -626,16 +626,13 @@ scan_tree_for_params_int (tree cst, ppl_Linear_Expression_t expr, mpz_t k)
{
mpz_t val;
ppl_Coefficient_t coef;
- int v = int_cst_value (cst);
+ tree type = TREE_TYPE (cst);
mpz_init (val);
- mpz_set_si (val, 0);
/* Necessary to not get "-1 = 2^n - 1". */
- if (v < 0)
- mpz_sub_ui (val, val, -v);
- else
- mpz_add_ui (val, val, v);
+ mpz_set_double_int (val, double_int_sext (tree_to_double_int (cst),
+ TYPE_PRECISION (type)), false);
mpz_mul (val, val, k);
ppl_new_Coefficient (&coef);
@@ -713,7 +710,7 @@ scan_tree_for_params (sese s, tree e, ppl_Linear_Expression_t c,
mpz_t val;
gcc_assert (host_integerp (TREE_OPERAND (e, 1), 0));
mpz_init (val);
- mpz_set_si (val, int_cst_value (TREE_OPERAND (e, 1)));
+ tree_int_to_gmp (TREE_OPERAND (e, 1), val);
mpz_mul (val, val, k);
scan_tree_for_params (s, TREE_OPERAND (e, 0), c, val);
mpz_clear (val);
@@ -728,7 +725,7 @@ scan_tree_for_params (sese s, tree e, ppl_Linear_Expression_t c,
mpz_t val;
gcc_assert (host_integerp (TREE_OPERAND (e, 0), 0));
mpz_init (val);
- mpz_set_si (val, int_cst_value (TREE_OPERAND (e, 0)));
+ tree_int_to_gmp (TREE_OPERAND (e, 0), val);
mpz_mul (val, val, k);
scan_tree_for_params (s, TREE_OPERAND (e, 1), c, val);
mpz_clear (val);
@@ -1614,10 +1611,13 @@ pdr_add_data_dimensions (ppl_Polyhedron_t accesses, data_reference_p dr,
/* 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);
@@ -1637,7 +1637,7 @@ pdr_add_data_dimensions (ppl_Polyhedron_t accesses, data_reference_p dr,
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);