re PR fortran/56867 (Missing temporary with string array assignment)

2014-12-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56867
	* trans-array.c (gfc_conv_resolve_dependencies):  Also check
	dependencies when there may be substrings of character arrays.

2014-12-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56867
	* gfortran.dg/dependency_45.f90:  New test.

From-SVN: r219089
This commit is contained in:
Thomas Koenig 2014-12-28 12:03:02 +00:00
parent 85a1cdffa2
commit 502b97e4d4
4 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2014-12-28 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/56867
* trans-array.c (gfc_conv_resolve_dependencies): Also check
dependencies when there may be substrings of character arrays.
2014-12-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/54756

View File

@ -4355,6 +4355,13 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop, gfc_ss * dest,
&& ss_expr->rank)
nDepend = gfc_check_dependency (dest_expr, ss_expr, true);
/* Check for cases like c(:)(1:2) = c(2)(2:3) */
if (!nDepend && dest_expr->rank > 0
&& dest_expr->ts.type == BT_CHARACTER
&& ss_expr->expr_type == EXPR_VARIABLE)
nDepend = gfc_check_dependency (dest_expr, ss_expr, false);
continue;
}

View File

@ -1,3 +1,8 @@
2014-12-28 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/56867
* gfortran.dg/dependency_45.f90: New test.
2014-12-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/54756

View File

@ -0,0 +1,12 @@
! { dg-do run }
! { dg-options "-Warray-temporaries" }
! PR 56867 - substrings were not checked for dependency.
program main
character(len=4) :: a
character(len=4) :: c(3)
c(1) = 'abcd'
c(2) = '1234'
c(3) = 'wxyz'
c(:)(1:2) = c(2)(2:3) ! { dg-warning "array temporary" }
if (c(3) .ne. '23yz') call abort
end program main