mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/65677 (Incomplete assignment on deferred-length character variable)
2018-10-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/65677 * trans-expr.c (gfc_trans_assignment_1): Set the 'identical' flag in the call to gfc_check_dependency. 2018-10-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/65677 * gfortran.dg/dependency_52.f90 : Expand the test to check both the call to adjustl and direct assignment of the substring. From-SVN: r264759
This commit is contained in:
parent
fd5c626c68
commit
b093d688da
|
|
@ -1,3 +1,9 @@
|
|||
2018-10-01 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/65677
|
||||
* trans-expr.c (gfc_trans_assignment_1): Set the 'identical'
|
||||
flag in the call to gfc_check_dependency.
|
||||
|
||||
2018-09-30 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/87359
|
||||
|
|
@ -33,7 +39,7 @@
|
|||
|
||||
2018-09-29 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/65667
|
||||
PR fortran/65677
|
||||
* trans-expr.c (gfc_trans_assignment_1): If there is dependency
|
||||
fix the rse stringlength.
|
||||
|
||||
|
|
|
|||
|
|
@ -10208,7 +10208,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
|
|||
string_length = gfc_evaluate_now (rse.string_length, &rse.pre);
|
||||
else if (expr2->ts.type == BT_CHARACTER)
|
||||
{
|
||||
if (expr1->ts.deferred && gfc_check_dependency (expr1, expr2, false))
|
||||
if (expr1->ts.deferred && gfc_check_dependency (expr1, expr2, true))
|
||||
rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre);
|
||||
string_length = rse.string_length;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
2018-10-01 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/65677
|
||||
* gfortran.dg/dependency_52.f90 : Expand the test to check both
|
||||
the call to adjustl and direct assignment of the substring.
|
||||
|
||||
2018-10-01 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/87465
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
! { dg-do run }
|
||||
!
|
||||
! Test the fix for PR65667, in which the dependency was missed and
|
||||
! Test the fix for PR65677, in which the dependency was missed and
|
||||
! the string length of 'text' was decremented twice. The rhs string
|
||||
! length is now fixed after the function call so that the dependency
|
||||
! on the length of 'text' is removed for later evaluations.
|
||||
|
|
@ -10,16 +10,21 @@
|
|||
module mod1
|
||||
implicit none
|
||||
contains
|
||||
subroutine getKeyword(string, keyword, rest)
|
||||
subroutine getKeyword(string, keyword, rest, use_adjustl)
|
||||
character(:), allocatable, intent(IN) :: string
|
||||
character(:), allocatable, intent(OUT) :: keyword, rest
|
||||
integer :: idx
|
||||
character(:), allocatable :: text
|
||||
logical :: use_adjustl
|
||||
|
||||
keyword = ''
|
||||
rest = ''
|
||||
text = string
|
||||
if (use_adjustl) then
|
||||
text = ADJUSTL(text(2:)) ! Note dependency.
|
||||
else
|
||||
text = text(2:) ! Check the old workaround.
|
||||
endif
|
||||
idx = INDEX(text, ' ')
|
||||
|
||||
if (idx == 0) then
|
||||
|
|
@ -38,8 +43,17 @@ end module mod1
|
|||
|
||||
line = '@HERE IT IS'
|
||||
|
||||
call getKeyword(line, keyword, rest)
|
||||
call getKeyword(line, keyword, rest, use_adjustl = .true.)
|
||||
|
||||
if (keyword .ne. 'HERE') stop 1
|
||||
if (rest .ne. 'IT IS') stop 2
|
||||
deallocate (line, keyword, rest)
|
||||
|
||||
line = '@HERE IT IS'
|
||||
|
||||
call getKeyword(line, keyword, rest, use_adjustl = .false.)
|
||||
|
||||
if (keyword .ne. 'HERE') stop 3
|
||||
if (rest .ne. 'IT IS') stop 4
|
||||
deallocate (line, keyword, rest)
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue