[Patch, Fortran] PR fortran/38883: Fix MVBITS for subcomponent-references
Paul Richard Thomas
paul.richard.thomas@gmail.com
Mon Jan 26 23:44:00 GMT 2009
Daniel,
Your patch is fine - OK for trunk.
You might consider the variant that I have attached, which regtests
and bootstraps OK, and the alternative testcase below.
Whichever you choose to implement, note the removal of the now
redundant 'block' and the change to the comment.
I do not believe that your two testcases test anything different from
one another. Mine has the advantage that the code is checked for
correctness; especially since another component is introduced.
Cheers and thanks for the patch
Paul
! { dg-do run }
! PR fortran/38883
! This ICE'd because the temporary-creation in the MVBITS call was wrong.
!
! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
!
type t
integer :: I
character(9) :: chr
end type
type(t) :: x(4,3)
type(t) :: y(4,3)
x = reshape ([((t (i*j, "a"),i = 1,4), j=1,3)], [4,3])
call foo (x)
y = reshape ([((t (i*j*2, "a"),i = 1,4), j=1,3)], [4,3])
call bar(y, 4, 3, 1, -1, -4, -3)
if (any (x%i .ne. y%i)) call abort
contains
SUBROUTINE foo (x)
TYPE(t) x(4, 3) ! No dependency at all
CALL MVBITS (x%i, 0, 6, x%i, 8)
x%i = x%i * 2
END SUBROUTINE
SUBROUTINE bar (x, NF4, NF3, NF1, MF1, MF4, MF3)
TYPE(t) x(NF4, NF3) ! Dependency through variable indices
CALL MVBITS (x(NF4:NF1:MF1, NF1:NF3)%i, 1, &
6, x(-MF4:-MF1:-NF1, -MF1:-MF3)%i, 9)
END SUBROUTINE
end
-------------- next part --------------
A non-text attachment was scrubbed...
Name: submit.diff
Type: application/octet-stream
Size: 1642 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20090126/b554257c/attachment.obj>
More information about the Fortran
mailing list