[Fortran] Another array reference dependency improvement
Roger Sayle
roger@eyesopen.com
Sat Mar 4 02:56:00 GMT 2006
On Fri, 3 Mar 2006, Paul Thomas wrote:
> I have looked through both patches; I more or less understand what's
> going on... the patches are fine stylistically, apply and eliminate
> temporaries all over the place. I have yet to regtest because I assume
> that your regtest is good.
My post-commit bootstrap and regression test revealed that applying
both of these two patches introduces a problem that inexplicably I didn't
notice during previous testing. The combination causes forall_4.f90 and
forall_7.f90 to fail. My sincere apologies, my only explanation is
that I confused directory names when checking the results of patch #1,
the results of patch #2, and results of patch #1 and patch #2 together,
or that the number of unexpected failures exactly matched the number of
unsupported tests.
To prevent the conflict between these two changes from affecting
anyone else, I've now reverted the second patch. Sorry again for
any inconvenience.
I think it'd be best if I slow down for a while.
2006-03-03 Roger Sayle <roger@eyesopen.com>
* dependency.c (gfc_check_element_vs_element): Revert last change.
* gfortran.dg/check_dependency_9.f90: Remove for the time being.
Index: dependency.c
===================================================================
*** dependency.c (revision 111702)
--- dependency.c (working copy)
*************** gfc_check_element_vs_element (gfc_ref *
*** 739,752 ****
i = gfc_dep_compare_expr (r_start, l_start);
if (i == 0)
return GFC_DEP_EQUAL;
- /* Treat two scalar variables as potentially equal. This allows
- us to prove that a(i,:) and a(j,:) have no dependency. See
- Gerald Roth, "Evaluation of Array Syntax Dependence Analysis",
- Proceedings of the International Conference on Parallel and
- Distributed Processing Techniques and Applications (PDPTA2001),
- Las Vegas, Nevada, June 2001. This used to be GFC_DEP_OVERLAP. */
if (i == -2)
! return GFC_DEP_EQUAL;
return GFC_DEP_NODEP;
}
--- 739,746 ----
i = gfc_dep_compare_expr (r_start, l_start);
if (i == 0)
return GFC_DEP_EQUAL;
if (i == -2)
! return GFC_DEP_OVERLAP;
return GFC_DEP_NODEP;
}
Roger
--
More information about the Fortran
mailing list