diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-02-07 19:49:06 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2010-02-07 19:49:06 +0000 |
commit | 53535f450b6fb1babd7bb1ba88aca7c57955c137 (patch) | |
tree | ec6a88273f1d129e7ba908783a4e5ad0d9624922 /gcc/graphite-dependences.c | |
parent | 8f5d6b6e37038cee46a996dfe3ada598b38b67f6 (diff) |
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.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@156582 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-dependences.c')
-rw-r--r-- | gcc/graphite-dependences.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index 4dc5854b3f9..bd83e15ca62 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -603,6 +603,11 @@ dependence_polyhedron (poly_dr_p pdr1, poly_dr_p pdr2, 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) *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 reversed transformed PDDR, should have no constraint from PO. */ 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 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)) 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)) { free_poly_ddr (tpddr); @@ -792,6 +807,12 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2, bool empty_p; 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)) { free_poly_ddr (pddr); |