[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