Commit 765deab7 by Sebastian Pop Committed by Sebastian Pop

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
parent ed91d661
2009-07-30 Sebastian Pop <sebastian.pop@amd.com> 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. * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
* tree-data-ref.h (graphite_find_data_references_in_stmt): Declared. * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
......
...@@ -1411,7 +1411,7 @@ for_each_scev_op (tree *scev, bool (*cbck) (tree *, void *), void *data) ...@@ -1411,7 +1411,7 @@ for_each_scev_op (tree *scev, bool (*cbck) (tree *, void *), void *data)
case 2: case 2:
for_each_scev_op (&TREE_OPERAND (*scev, 1), cbck, data); for_each_scev_op (&TREE_OPERAND (*scev, 1), cbck, data);
case 1: case 1:
for_each_scev_op (&TREE_OPERAND (*scev, 0), cbck, data); for_each_scev_op (&TREE_OPERAND (*scev, 0), cbck, data);
...@@ -1438,6 +1438,7 @@ operator_is_linear (tree scev) ...@@ -1438,6 +1438,7 @@ operator_is_linear (tree scev)
case NEGATE_EXPR: case NEGATE_EXPR:
case SSA_NAME: case SSA_NAME:
case NON_LVALUE_EXPR: case NON_LVALUE_EXPR:
case BIT_NOT_EXPR:
CASE_CONVERT: CASE_CONVERT:
return true; return true;
...@@ -1461,6 +1462,10 @@ scev_is_linear_expression (tree scev) ...@@ -1461,6 +1462,10 @@ scev_is_linear_expression (tree scev)
return !(tree_contains_chrecs (TREE_OPERAND (scev, 0), NULL) return !(tree_contains_chrecs (TREE_OPERAND (scev, 0), NULL)
&& tree_contains_chrecs (TREE_OPERAND (scev, 1), 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))) switch (TREE_CODE_LENGTH (TREE_CODE (scev)))
{ {
case 3: case 3:
...@@ -1471,7 +1476,7 @@ scev_is_linear_expression (tree scev) ...@@ -1471,7 +1476,7 @@ scev_is_linear_expression (tree scev)
case 2: case 2:
return scev_is_linear_expression (TREE_OPERAND (scev, 0)) return scev_is_linear_expression (TREE_OPERAND (scev, 0))
&& scev_is_linear_expression (TREE_OPERAND (scev, 1)); && scev_is_linear_expression (TREE_OPERAND (scev, 1));
case 1: case 1:
return scev_is_linear_expression (TREE_OPERAND (scev, 0)); return scev_is_linear_expression (TREE_OPERAND (scev, 0));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment