dependency.c (gfc_check_element_vs_element): Consider two unordered scalar subscripts as (potentially) equal.

* dependency.c (gfc_check_element_vs_element): Consider two
	unordered scalar subscripts as (potentially) equal.

	* gfortran.dg/dependency_9.f90: New test case.

From-SVN: r111687
This commit is contained in:
Roger Sayle 2006-03-03 21:47:24 +00:00 committed by Roger Sayle
parent 0b8f2ce42d
commit 12de6bc686
4 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -739,8 +739,14 @@ gfc_check_element_vs_element (gfc_ref * lref, gfc_ref * rref, int n)
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;
}

View File

@ -1,3 +1,7 @@
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.

View File

@ -0,0 +1,13 @@
! { 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" } }