Fix PR42988: handle unknown_dependence.

2010-02-07  Sebastian Pop  <sebastian.pop@amd.com>

	PR middle-end/42988
	* graphite-dependences.c (dependence_polyhedron): Set PDDR_KIND
	to unknown_dependence.
	(graphite_legal_transform_dr): Handle the unknown_dependence.
	(graphite_carried_dependence_level_k): Same.

	* testsuite/libgomp.graphite/force-parallel-5.c: Un-XFAILed.
	* testsuite/libgomp.graphite/pr41118.c: Renamed from pr4118.

From-SVN: r156582
This commit is contained in:
Sebastian Pop 2010-02-07 19:49:06 +00:00 committed by Sebastian Pop
parent 45489e99d6
commit 8d2220b234
5 changed files with 36 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2010-02-07 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/42988
* graphite-dependences.c (dependence_polyhedron): Set PDDR_KIND
to unknown_dependence.
(graphite_legal_transform_dr): Handle the unknown_dependence.
(graphite_carried_dependence_level_k): Same.
2010-02-07 Sebastian Pop <sebastian.pop@amd.com> 2010-02-07 Sebastian Pop <sebastian.pop@amd.com>
* ChangeLog.graphite: Remove testsuite/ or gcc/testsuite/. * ChangeLog.graphite: Remove testsuite/ or gcc/testsuite/.

View File

@ -603,6 +603,11 @@ dependence_polyhedron (poly_dr_p pdr1, poly_dr_p pdr2,
res = new_poly_ddr (pdr1, pdr2, ddp, original_scattering_p); res = new_poly_ddr (pdr1, pdr2, ddp, original_scattering_p);
if (!(pdr_read_p (pdr1) && pdr_read_p (pdr2))
&& PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2)
&& poly_drs_may_alias_p (pdr1, pdr2))
PDDR_KIND (res) = unknown_dependence;
if (original_scattering_p) if (original_scattering_p)
*x = res; *x = res;
@ -669,7 +674,9 @@ graphite_legal_transform_dr (poly_dr_p pdr1, poly_dr_p pdr2)
i.e. the transform should reverse no dependences, and so PT, the i.e. the transform should reverse no dependences, and so PT, the
reversed transformed PDDR, should have no constraint from PO. */ reversed transformed PDDR, should have no constraint from PO. */
opddr = dependence_polyhedron (pdr1, pdr2, 1, true); opddr = dependence_polyhedron (pdr1, pdr2, 1, true);
tpddr = dependence_polyhedron (pdr1, pdr2, -1, false);
if (PDDR_KIND (opddr) == unknown_dependence)
return false;
/* There are no dependences between PDR1 and PDR2 in the original /* There are no dependences between PDR1 and PDR2 in the original
version of the program, or after the transform, so the version of the program, or after the transform, so the
@ -677,6 +684,14 @@ graphite_legal_transform_dr (poly_dr_p pdr1, poly_dr_p pdr2)
if (pddr_is_empty (opddr)) if (pddr_is_empty (opddr))
return true; return true;
tpddr = dependence_polyhedron (pdr1, pdr2, -1, false);
if (PDDR_KIND (tpddr) == unknown_dependence)
{
free_poly_ddr (tpddr);
return false;
}
if (pddr_is_empty (tpddr)) if (pddr_is_empty (tpddr))
{ {
free_poly_ddr (tpddr); free_poly_ddr (tpddr);
@ -792,6 +807,12 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
bool empty_p; bool empty_p;
poly_ddr_p pddr = dependence_polyhedron (pdr1, pdr2, 1, false); poly_ddr_p pddr = dependence_polyhedron (pdr1, pdr2, 1, false);
if (PDDR_KIND (pddr) == unknown_dependence)
{
free_poly_ddr (pddr);
return true;
}
if (pddr_is_empty (pddr)) if (pddr_is_empty (pddr))
{ {
free_poly_ddr (pddr); free_poly_ddr (pddr);

View File

@ -1,3 +1,8 @@
2010-02-07 Sebastian Pop <sebastian.pop@amd.com>
* testsuite/libgomp.graphite/force-parallel-5.c: Un-XFAILed.
* testsuite/libgomp.graphite/pr41118.c: Renamed from pr4118.
2009-10-09 Sebastian Pop <sebastian.pop@amd.com> 2009-10-09 Sebastian Pop <sebastian.pop@amd.com>
* testsuite/libgomp.graphite/graphite.exp (PARALLEL_CFLAGS): Add * testsuite/libgomp.graphite/graphite.exp (PARALLEL_CFLAGS): Add

View File

@ -34,6 +34,6 @@ int main(void)
/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */ /* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
/* { dg-final { cleanup-tree-dump "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */
/* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */ /* { dg-final { scan-tree-dump-times "loopfn.0" 5 "optimized" } } */
/* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" { xfail *-*-* } } } */ /* { dg-final { scan-tree-dump-times "loopfn.1" 5 "optimized" } } */
/* { dg-final { cleanup-tree-dump "parloops" } } */ /* { dg-final { cleanup-tree-dump "parloops" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */