From 9e9aa0c6b103af51f292baa804390fbd7d613ae2 Mon Sep 17 00:00:00 2001 From: spop Date: Wed, 25 Nov 2009 04:32:07 +0000 Subject: [PATCH] 2009-09-01 Sebastian Pop * tree-scalar-evolution.c (instantiate_scev_binary): Adapted to pass as parameters the operands of the binary expression. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154540 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog.graphite | 5 +++++ gcc/tree-scalar-evolution.c | 22 ++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index e108c395e9c..0e35c8a1dff 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,10 @@ 2009-09-01 Sebastian Pop + * tree-scalar-evolution.c (instantiate_scev_binary): Adapted + to pass as parameters the operands of the binary expression. + +2009-09-01 Sebastian Pop + * tree-scalar-evolution.c (instantiate_scev_bitnot): Renamed instantiate_scev_not. Handle NEGATE_EXPR. (instantiate_scev_r): Handle NEGATE_EXPR. diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 41944972cb8..a6b3e77a08e 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -2235,7 +2235,7 @@ instantiate_scev_poly (basic_block instantiate_below, /* Analyze all the parameters of the chrec, between INSTANTIATE_BELOW and EVOLUTION_LOOP, that were left under a symbolic form. - CHREC is a binary expression to be instantiated. + "C0 CODE C1" is a binary expression of type TYPE to be instantiated. CACHE is the cache of already instantiated values. @@ -2248,31 +2248,30 @@ instantiate_scev_poly (basic_block instantiate_below, static tree instantiate_scev_binary (basic_block instantiate_below, - struct loop *evolution_loop, tree chrec, + struct loop *evolution_loop, tree chrec, enum tree_code code, + tree type, tree c0, tree c1, bool fold_conversions, htab_t cache, int size_expr) { tree op1; tree op0 = instantiate_scev_r (instantiate_below, evolution_loop, - TREE_OPERAND (chrec, 0), fold_conversions, cache, + c0, fold_conversions, cache, size_expr); if (op0 == chrec_dont_know) return chrec_dont_know; op1 = instantiate_scev_r (instantiate_below, evolution_loop, - TREE_OPERAND (chrec, 1), fold_conversions, cache, + c1, fold_conversions, cache, size_expr); if (op1 == chrec_dont_know) return chrec_dont_know; - if (TREE_OPERAND (chrec, 0) != op0 - || TREE_OPERAND (chrec, 1) != op1) + if (c0 != op0 + || c1 != op1) { - tree type = chrec_type (chrec); - op0 = chrec_convert (type, op0, NULL); op1 = chrec_convert_rhs (type, op1, NULL); - switch (TREE_CODE (chrec)) + switch (code) { case POINTER_PLUS_EXPR: case PLUS_EXPR: @@ -2289,7 +2288,7 @@ instantiate_scev_binary (basic_block instantiate_below, } } - return chrec; + return chrec ? chrec : fold_build2 (code, type, c0, c1); } /* Analyze all the parameters of the chrec, between INSTANTIATE_BELOW @@ -2548,6 +2547,9 @@ instantiate_scev_r (basic_block instantiate_below, case MINUS_EXPR: case MULT_EXPR: return instantiate_scev_binary (instantiate_below, evolution_loop, chrec, + TREE_CODE (chrec), chrec_type (chrec), + TREE_OPERAND (chrec, 0), + TREE_OPERAND (chrec, 1), fold_conversions, cache, size_expr); CASE_CONVERT: -- 2.11.0