Commit 72b03fde by Richard Biener Committed by Richard Biener

graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref): Simplify.

2017-09-18  Richard Biener  <rguenther@suse.de>

	* graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
	Simplify.
	(build_alias_set): Reject aliases with no access function.

From-SVN: r252906
parent 3d07d963
2017-09-18 Richard Biener <rguenther@suse.de> 2017-09-18 Richard Biener <rguenther@suse.de>
* graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
Simplify.
(build_alias_set): Reject aliases with no access function.
2017-09-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/79622 PR tree-optimization/79622
* graphite-scop-detection.c (build_cross_bb_scalars_def): Properly * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
handle PHIs. handle PHIs.
......
...@@ -1338,39 +1338,22 @@ scop_detection::stmt_has_simple_data_refs_p (sese_l scop, gimple *stmt) ...@@ -1338,39 +1338,22 @@ scop_detection::stmt_has_simple_data_refs_p (sese_l scop, gimple *stmt)
{ {
loop_p nest = outermost_loop_in_sese (scop, gimple_bb (stmt)); loop_p nest = outermost_loop_in_sese (scop, gimple_bb (stmt));
loop_p loop = loop_containing_stmt (stmt); loop_p loop = loop_containing_stmt (stmt);
vec<data_reference_p> drs = vNULL; if (!loop_in_sese_p (loop, scop))
loop = nest;
graphite_find_data_references_in_stmt (nest, loop, stmt, &drs); auto_vec<data_reference_p> drs;
if (! graphite_find_data_references_in_stmt (nest, loop, stmt, &drs))
return false;
int j; int j;
data_reference_p dr; data_reference_p dr;
FOR_EACH_VEC_ELT (drs, j, dr) FOR_EACH_VEC_ELT (drs, j, dr)
{ {
int nb_subscripts = DR_NUM_DIMENSIONS (dr); for (unsigned i = 0; i < DR_NUM_DIMENSIONS (dr); ++i)
if (! graphite_can_represent_scev (DR_ACCESS_FN (dr, i)))
if (nb_subscripts < 1)
{
free_data_refs (drs);
return false; return false;
} }
tree ref = DR_REF (dr);
for (int i = nb_subscripts - 1; i >= 0; i--)
{
if (!graphite_can_represent_scev (DR_ACCESS_FN (dr, i))
|| (TREE_CODE (ref) != ARRAY_REF && TREE_CODE (ref) != MEM_REF
&& TREE_CODE (ref) != COMPONENT_REF))
{
free_data_refs (drs);
return false;
}
ref = TREE_OPERAND (ref, 0);
}
}
free_data_refs (drs);
return true; return true;
} }
...@@ -1875,7 +1858,8 @@ build_alias_set (scop_p scop) ...@@ -1875,7 +1858,8 @@ build_alias_set (scop_p scop)
{ {
/* Dependences in the same alias set need to be handled /* Dependences in the same alias set need to be handled
by just looking at DR_ACCESS_FNs. */ by just looking at DR_ACCESS_FNs. */
if (DR_NUM_DIMENSIONS (dr1->dr) != DR_NUM_DIMENSIONS (dr2->dr) if (DR_NUM_DIMENSIONS (dr1->dr) == 0
|| DR_NUM_DIMENSIONS (dr1->dr) != DR_NUM_DIMENSIONS (dr2->dr)
|| ! operand_equal_p (DR_BASE_OBJECT (dr1->dr), || ! operand_equal_p (DR_BASE_OBJECT (dr1->dr),
DR_BASE_OBJECT (dr2->dr), DR_BASE_OBJECT (dr2->dr),
OEP_ADDRESS_OF) OEP_ADDRESS_OF)
......
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