summaryrefslogtreecommitdiff
path: root/gcc/graphite-scop-detection.c
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-30 21:18:09 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-30 21:18:09 +0000
commite313585005607d7ad7202f9d5b639ec86c968f1f (patch)
tree6f9f9a1bc759a501b652720c541fa2bed5b5400c /gcc/graphite-scop-detection.c
parenta4a4b66a929c3d836b0e7b6dbb0a6eb69767d0c5 (diff)
downloadgcc-e313585005607d7ad7202f9d5b639ec86c968f1f.tar.gz
Remove outermost loop parameter.
2010-08-18 Vladimir Kargov <kargov@gmail.com> * graphite-scop-detection.c (graphite_can_represent_scev, graphite_can_represent_expr, stmt_has_simple_data_refs_p, graphite_can_represent_loop): Remove outermost_loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164786 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-scop-detection.c')
-rw-r--r--gcc/graphite-scop-detection.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index ce941db4a64..5647d2e0b39 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -202,12 +202,10 @@ graphite_can_represent_init (tree e)
1 i + 20 j + (-2) m + 25
- Something like "i * n" or "n * m" is not allowed.
-
- OUTERMOST_LOOP defines the outermost loop that can variate. */
+ Something like "i * n" or "n * m" is not allowed. */
static bool
-graphite_can_represent_scev (tree scev, int outermost_loop)
+graphite_can_represent_scev (tree scev)
{
if (chrec_contains_undetermined (scev))
return false;
@@ -216,8 +214,8 @@ graphite_can_represent_scev (tree scev, int outermost_loop)
{
case PLUS_EXPR:
case MINUS_EXPR:
- return graphite_can_represent_scev (TREE_OPERAND (scev, 0), outermost_loop)
- && graphite_can_represent_scev (TREE_OPERAND (scev, 1), outermost_loop);
+ return graphite_can_represent_scev (TREE_OPERAND (scev, 0))
+ && graphite_can_represent_scev (TREE_OPERAND (scev, 1));
case MULT_EXPR:
return !CONVERT_EXPR_CODE_P (TREE_CODE (TREE_OPERAND (scev, 0)))
@@ -225,8 +223,8 @@ graphite_can_represent_scev (tree scev, int outermost_loop)
&& !(chrec_contains_symbols (TREE_OPERAND (scev, 0))
&& chrec_contains_symbols (TREE_OPERAND (scev, 1)))
&& graphite_can_represent_init (scev)
- && graphite_can_represent_scev (TREE_OPERAND (scev, 0), outermost_loop)
- && graphite_can_represent_scev (TREE_OPERAND (scev, 1), outermost_loop);
+ && graphite_can_represent_scev (TREE_OPERAND (scev, 0))
+ && graphite_can_represent_scev (TREE_OPERAND (scev, 1));
case POLYNOMIAL_CHREC:
/* Check for constant strides. With a non constant stride of
@@ -253,19 +251,18 @@ graphite_can_represent_scev (tree scev, int outermost_loop)
This means an expression can be represented, if it is linear with
respect to the loops and the strides are non parametric.
- LOOP is the place where the expr will be evaluated and OUTERMOST_LOOP
- defindes the outermost loop that can variate. SCOP_ENTRY defines the
+ LOOP is the place where the expr will be evaluated. SCOP_ENTRY defines the
entry of the region we analyse. */
static bool
graphite_can_represent_expr (basic_block scop_entry, loop_p loop,
- loop_p outermost_loop, tree expr)
+ tree expr)
{
tree scev = analyze_scalar_evolution (loop, expr);
scev = instantiate_scev (scop_entry, loop, scev);
- return graphite_can_represent_scev (scev, outermost_loop->num);
+ return graphite_can_represent_scev (scev);
}
/* Return true if the data references of STMT can be represented by
@@ -278,14 +275,13 @@ stmt_has_simple_data_refs_p (loop_p outermost_loop, gimple stmt)
unsigned i;
int j;
bool res = true;
- int loop = outermost_loop->num;
VEC (data_reference_p, heap) *drs = VEC_alloc (data_reference_p, heap, 5);
graphite_find_data_references_in_stmt (outermost_loop, stmt, &drs);
FOR_EACH_VEC_ELT (data_reference_p, drs, j, dr)
for (i = 0; i < DR_NUM_DIMENSIONS (dr); i++)
- if (!graphite_can_represent_scev (DR_ACCESS_FN (dr, i), loop))
+ if (!graphite_can_represent_scev (DR_ACCESS_FN (dr, i)))
{
res = false;
goto done;
@@ -349,8 +345,7 @@ stmt_simple_for_scop_p (basic_block scop_entry, loop_p outermost_loop,
return false;
FOR_EACH_SSA_TREE_OPERAND (op, stmt, op_iter, SSA_OP_ALL_USES)
- if (!graphite_can_represent_expr (scop_entry, loop, outermost_loop,
- op)
+ if (!graphite_can_represent_expr (scop_entry, loop, op)
/* We can not handle REAL_TYPE. Failed for pr39260. */
|| TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
return false;
@@ -389,12 +384,11 @@ harmful_stmt_in_bb (basic_block scop_entry, loop_p outer_loop, basic_block bb)
}
/* Return true when it is not possible to represent LOOP in the
- polyhedral representation. This is evaluated taking SCOP_ENTRY and
- OUTERMOST_LOOP in mind. */
+ polyhedral representation. This is evaluated taking SCOP_ENTRY
+ in mind. */
static bool
-graphite_can_represent_loop (basic_block scop_entry, loop_p outermost_loop,
- loop_p loop)
+graphite_can_represent_loop (basic_block scop_entry, loop_p loop)
{
tree niter = number_of_latch_executions (loop);
@@ -403,7 +397,7 @@ graphite_can_represent_loop (basic_block scop_entry, loop_p outermost_loop,
return false;
/* Number of iterations not affine. */
- if (!graphite_can_represent_expr (scop_entry, loop, outermost_loop, niter))
+ if (!graphite_can_represent_expr (scop_entry, loop, niter))
return false;
return true;
@@ -476,7 +470,7 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop,
sinfo = build_scops_1 (bb, outermost_loop, &regions, loop);
- if (!graphite_can_represent_loop (entry_block, outermost_loop, loop))
+ if (!graphite_can_represent_loop (entry_block, loop))
result.difficult = true;
result.difficult |= sinfo.difficult;