mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 20:46:20 +08:00
Make scev_is_linear_expression return false if the evolution is not affine multivariate.
2009-07-30 Sebastian Pop <sebastian.pop@amd.com> * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR. (scev_is_linear_expression): Return false if the evolution is not affine multivariate. From-SVN: r150298
This commit is contained in:
parent
ed91d6616c
commit
765deab7d0
@ -1,3 +1,9 @@
|
||||
2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
* tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
|
||||
(scev_is_linear_expression): Return false if the evolution is not
|
||||
affine multivariate.
|
||||
|
||||
2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
* tree-data-ref.c (graphite_find_data_references_in_stmt): New.
|
||||
|
@ -1411,7 +1411,7 @@ for_each_scev_op (tree *scev, bool (*cbck) (tree *, void *), void *data)
|
||||
|
||||
case 2:
|
||||
for_each_scev_op (&TREE_OPERAND (*scev, 1), cbck, data);
|
||||
|
||||
|
||||
case 1:
|
||||
for_each_scev_op (&TREE_OPERAND (*scev, 0), cbck, data);
|
||||
|
||||
@ -1438,6 +1438,7 @@ operator_is_linear (tree scev)
|
||||
case NEGATE_EXPR:
|
||||
case SSA_NAME:
|
||||
case NON_LVALUE_EXPR:
|
||||
case BIT_NOT_EXPR:
|
||||
CASE_CONVERT:
|
||||
return true;
|
||||
|
||||
@ -1461,6 +1462,10 @@ scev_is_linear_expression (tree scev)
|
||||
return !(tree_contains_chrecs (TREE_OPERAND (scev, 0), NULL)
|
||||
&& tree_contains_chrecs (TREE_OPERAND (scev, 1), NULL));
|
||||
|
||||
if (TREE_CODE (scev) == POLYNOMIAL_CHREC
|
||||
&& !evolution_function_is_affine_multivariate_p (scev, CHREC_VARIABLE (scev)))
|
||||
return false;
|
||||
|
||||
switch (TREE_CODE_LENGTH (TREE_CODE (scev)))
|
||||
{
|
||||
case 3:
|
||||
@ -1471,7 +1476,7 @@ scev_is_linear_expression (tree scev)
|
||||
case 2:
|
||||
return scev_is_linear_expression (TREE_OPERAND (scev, 0))
|
||||
&& scev_is_linear_expression (TREE_OPERAND (scev, 1));
|
||||
|
||||
|
||||
case 1:
|
||||
return scev_is_linear_expression (TREE_OPERAND (scev, 0));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user