------- Additional Comments From Tobias dot Schlueter at physik dot 
uni-muenchen dot de  2005-07-09 15:06 -------
Subject: Re:  problem with structure and calling a function

paulthomas2 at wanadoo dot fr wrote:
> I think that your pointer example is another bug.  Whether it should be
> considered to be in gfc_trans_pointer_assignment itself or in
> gfc_conv_expr_descriptor should be thought through.  It seems to me that 
> fixing
> the latter would open the same can of worms that we have discussed for
> gfc_trans_assignment.  This time, I am not sure that there is solution, except
> for the third.  Using temporaries will not work, since the temporary would 
> have
> to be updated each time the target value changed. Modifying the stride will 
> not
> work for the same reasons as for a non-pointer assignment.  If size is used, 
> can
> we be sure that the rest of the compiler will pick it up?

I was a little surprised that the code I gave is allowed at all, given that
this opens all kinds of cans of worms.  Say,
   type a
       real*8 :: x
       integer*1 :: i
   end type
   type(a), target :: v(50)
   real, pointer :: p(:)
   p => v(:)%x
Lovely, now we have to skip something which probably has a different size and
probably alignment.

I don't agree that gfc_trans_pointer_assignment can be made out to be the
culprit -- pointer assignment to an array-valued pointer means assignment of
an array descriptor, so we have to be able to generate correct array
descriptors even in these pathological cases.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18022

Reply via email to