This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, Fortran] PR fortran/38883: Fix MVBITS for subcomponent-references
- From: Paul Richard Thomas <paul dot richard dot thomas at gmail dot com>
- To: Daniel Kraft <d at domob dot eu>
- Cc: Fortran List <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 27 Jan 2009 06:59:16 +0100
- Subject: Re: [Patch, Fortran] PR fortran/38883: Fix MVBITS for subcomponent-references
- References: <497E23E6.9070200@domob.eu> <339c37f20901261422w64480accta8ccd2ad34a9dbf9@mail.gmail.com>
Daniel,
BTW - I do not mind which version of the fix that you use but please
commit it as soon as possible. We must be coming to the end of stage
3.......
Cheers
Paul
On Mon, Jan 26, 2009 at 11:22 PM, Paul Richard Thomas
<paul.richard.thomas@gmail.com> wrote:
> 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
>
--
The knack of flying is learning how to throw yourself at the ground and miss.
--Hitchhikers Guide to the Galaxy