Commit 4b9d48a1 by Sebastian Pop Committed by Sebastian Pop

tree-scalar-evolution.c (instantiate_scev_bitnot): Renamed instantiate_scev_not.

2009-09-01  Sebastian Pop  <sebastian.pop@amd.com>

	* tree-scalar-evolution.c (instantiate_scev_bitnot): Renamed
	instantiate_scev_not.  Handle NEGATE_EXPR.
	(instantiate_scev_r): Handle NEGATE_EXPR.

From-SVN: r154539
parent 9e5dc77f
2009-09-01 Sebastian Pop <sebastian.pop@amd.com> 2009-09-01 Sebastian Pop <sebastian.pop@amd.com>
* tree-scalar-evolution.c (instantiate_scev_bitnot): Renamed
instantiate_scev_not. Handle NEGATE_EXPR.
(instantiate_scev_r): Handle NEGATE_EXPR.
2009-09-01 Sebastian Pop <sebastian.pop@amd.com>
* tree-scalar-evolution.c (instantiate_scev_1): Renamed * tree-scalar-evolution.c (instantiate_scev_1): Renamed
instantiate_scev_r. instantiate_scev_r.
(instantiate_scev_r): Move code in instantiate_scev_2 (instantiate_scev_r): Move code in instantiate_scev_2
......
...@@ -2341,8 +2341,9 @@ instantiate_scev_convert (basic_block instantiate_below, ...@@ -2341,8 +2341,9 @@ instantiate_scev_convert (basic_block instantiate_below,
/* Analyze all the parameters of the chrec, between INSTANTIATE_BELOW /* Analyze all the parameters of the chrec, between INSTANTIATE_BELOW
and EVOLUTION_LOOP, that were left under a symbolic form. and EVOLUTION_LOOP, that were left under a symbolic form.
CHREC is a BIT_NOT_EXPR expression to be instantiated. CHREC is a BIT_NOT_EXPR or a NEGATE_EXPR expression to be instantiated.
Handle ~X as -1 - X. Handle ~X as -1 - X.
Handle -X as -1 * X.
CACHE is the cache of already instantiated values. CACHE is the cache of already instantiated values.
...@@ -2354,9 +2355,9 @@ instantiate_scev_convert (basic_block instantiate_below, ...@@ -2354,9 +2355,9 @@ instantiate_scev_convert (basic_block instantiate_below,
instantiated, and to stop if it exceeds some limit. */ instantiated, and to stop if it exceeds some limit. */
static tree static tree
instantiate_scev_bitnot (basic_block instantiate_below, instantiate_scev_not (basic_block instantiate_below,
struct loop *evolution_loop, tree chrec, struct loop *evolution_loop, tree chrec,
bool fold_conversions, htab_t cache, int size_expr) bool fold_conversions, htab_t cache, int size_expr)
{ {
tree type = chrec_type (chrec); tree type = chrec_type (chrec);
tree op0 = instantiate_scev_r (instantiate_below, evolution_loop, tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
...@@ -2368,11 +2369,22 @@ instantiate_scev_bitnot (basic_block instantiate_below, ...@@ -2368,11 +2369,22 @@ instantiate_scev_bitnot (basic_block instantiate_below,
if (TREE_OPERAND (chrec, 0) != op0) if (TREE_OPERAND (chrec, 0) != op0)
{ {
op0 = chrec_convert (type, op0, NULL); op0 = chrec_convert (type, op0, NULL);
chrec = chrec_fold_minus (type,
fold_convert (type, switch (TREE_CODE (chrec))
integer_minus_one_node), {
op0); case BIT_NOT_EXPR:
return chrec_fold_minus
(type, fold_convert (type, integer_minus_one_node), op0);
case NEGATE_EXPR:
return chrec_fold_multiply
(type, fold_convert (type, integer_minus_one_node), op0);
default:
gcc_unreachable ();
}
} }
return chrec; return chrec;
} }
...@@ -2543,9 +2555,10 @@ instantiate_scev_r (basic_block instantiate_below, ...@@ -2543,9 +2555,10 @@ instantiate_scev_r (basic_block instantiate_below,
TREE_TYPE (chrec), TREE_OPERAND (chrec, 0), TREE_TYPE (chrec), TREE_OPERAND (chrec, 0),
fold_conversions, cache, size_expr); fold_conversions, cache, size_expr);
case NEGATE_EXPR:
case BIT_NOT_EXPR: case BIT_NOT_EXPR:
return instantiate_scev_bitnot (instantiate_below, evolution_loop, chrec, return instantiate_scev_not (instantiate_below, evolution_loop, chrec,
fold_conversions, cache, size_expr); fold_conversions, cache, size_expr);
case SCEV_NOT_KNOWN: case SCEV_NOT_KNOWN:
return chrec_dont_know; return chrec_dont_know;
......
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