This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: transfer_array_intrinsic testcase failures (take 2)
- From: Paul Thomas <paulthomas2 at wanadoo dot fr>
- To: Dominique Dhumieres <dominiq at lps dot ens dot fr>
- Cc: fortran at gcc dot gnu dot org, paul dot richard dot thomas at cea dot fr
- Date: Mon, 27 Mar 2006 21:04:50 +0200
- Subject: Re: transfer_array_intrinsic testcase failures (take 2)
- References: <4427F910.mail1J51OGO85@tournesol.lps.ens.fr>
Dominique,
Paul,
I think the two tests:
ch = transfer (y(2:4:2), ch)
and
ch = transfer (y(4:2:-2), ch)
fall in the category:
If the physical representation of the result is longer
than that of SOURCE, the physical representation of the leading part is
that of SOURCE and the remainder is processor dependent.
The source is two integer*4, while the length of TRANSFER is that of
ch, i.e., four character*4, then the first 8 bytes come from y while the
remaining ones are "processor dependent". Apparently gfortran takes them
from ch (and this is assumed in the test case), a non-processor dependent
test case could be:
if (any (ch(1:2) .ne. (/"EFGH","MNOP"/))) call abort ()
and
if (any (ch(1:2) .ne. (/"MNOP","EFGH"/))) call abort ()
Thank you - you are right.
I think that I should withdraw the two testcases tomorrow morning and
resubmit corrected versions with a patch that applies the compliance
requirements. I have something partially working already - I am
scratching my head over why it does not work in all circumstances but I
am sure that reason will come to me.
The intrinsic function itself can remain, I think. It does the right
thing with the right parameter values and is much better than no
functionality at all. I will give it a very thorough looking over,
though, whilst I am applying the standard correctly.
Paul