This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/18022] problem with structure and calling a function


------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]