+2006-03-03 Roger Sayle <roger@eyesopen.com>
+
+ * dependency.c (gfc_check_element_vs_element): Consider two
+ unordered scalar subscripts as (potentially) equal.
+
2006-03-03 Roger Sayle <roger@eyesopen.com>
* dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
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_OVERLAP;
+ return GFC_DEP_EQUAL;
return GFC_DEP_NODEP;
}
+2006-03-03 Roger Sayle <roger@eyesopen.com>
+
+ * gfortran.dg/dependency_9.f90: New test case.
+
2006-03-03 Roger Sayle <roger@eyesopen.com>
* gfortran.dg/dependency_4.f90: New test case.
--- /dev/null
+! { dg-do compile }
+! { dg-options "-O2 -fdump-tree-original" }
+subroutine foo(a,i,j)
+ integer, dimension (4,4) :: a
+ integer :: i
+ integer :: j
+
+ where (a(i,:) .ne. 0)
+ a(j,:) = 1
+ endwhere
+end subroutine
+! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }